Page tree
Skip to end of metadata
Go to start of metadata

Overview

As Plugins Developer, your will find here, some details on how to implement :

  • your custom Meta-Attribute
  • your own Meta-Attribute Editor dedicated to your custom Meta-Attribute

How to extend Meta-Attributes Editors

To append a new Meta-Attributes Editors, you will have to implement ...

A Velocity template

It will be to render the Attribute Editor

See below the Boolean editor

<td class="fieldLabelArea">$i18n.getText("minyaa.workflows.attribute.booleanValue")</td>
<td class="fieldValueArea">
	<input type="radio" name="metaAttributeBooleanValue" id="attributeRadioValue1" size="30" value="true" /><label for="attributeRadioValue1"> $i18n.getText("admin.common.words.true")</label>
	<input type="radio" name="metaAttributeBooleanValue" id="attributeRadioValue2" size="30" value="false" /><label for="attributeRadioValue2"> $i18n.getText("admin.common.words.false")</label><br />
</td>

A Javascript

It will complete the Velocity Template on edit process. The final goal is to apply the edited value into the Input field.

... always for Boolean editor

jQuery(document).ready(function(){
	MYAAWA.namespace("MYAAWA.Editors.editMetaBoolean");
	MYAAWA.Editors.editMetaBoolean.init = function(inputValue) {
		var editedValue = AJS.$("[name='metaAttributeBooleanValue']");
		var onChanged = function(event) {
			inputValue.val(event.target.value);
		};
		MYAAWA.Editors.editMetaBoolean.onChanged = onChanged; 
		editedValue.change(MYAAWA.Editors.editMetaBoolean.onChanged);
	};
});

A Web Resource

This Web-Resource definition will have to be added in the atlassian-plugin.xml of your plugin, and is required to inject you Javacript file. It has to be in dependency with MYAA_WorkflowsAttribute.jsWorkflowsMetaAttributes-global

... again for Boolean editor

<web-resource key="MYAA_editMetaBoolean" name="MYAA-editMetaBoolean">
	<dependency>jira.plugin.minyaa.workflows.attributes:MYAA_WorkflowsAttributes</dependency>
	<resource type="download" name="editMetaBoolean.js" location="com/minyaa/workflows/js/MYAA.editMetaBoolean.js">
		<property key="content-type" value="text/javascript"/>
	</resource>
	<context>atl.admin</context>
</web-resource>

A Meta-editor module

and finally, A meta-editor module has to be defined in order to specifying the your Velocity template

... a last one for Boolean editor

<meta-editor key="editMetaBoolean" name="Edit Meta Attribute as Boolean">
	<resource type="velocity" name="edit" location="com/minyaa/workflows/templates/meta-attributes-edit-boolean.vm"/>
</meta-editor>


How to extend Meta-Attributes

To extend the list of displayed Meta-Attributes in the editor of Workflow Attributes Management , you can process :

  • through the meta-attribute module type
  • or through the Java API

... by "meta-attribute" module type

Use the custom plugin module-type meta-attribute .

<meta-attribute key="sampleAttribute" name="sample.attribute" isUnique="false"  valueEditorKey="jira.plugin.minyaa.workflows.attributes:editMetaBoolean" >
    <description key="sample.attribute.desc">Do nothing !.</description>
	<scope 	initialAction="true" 
		globalAction="true"
		commonAction="true"
		stepAction="true"
		initialStep="true"
		normalStep="true"
		finalStep="true"
	/>
</meta-attribute>

Where ...

  • isUnique specifies if the attribute may be use more than one time by Step of Transition (Not yet completely supported),
  • valueEditorKey specifies the editor to use. Use the complete key.
  • scope specifies if the attribute can be use as Step Meta-Attribute or Transition Meta-Attribute


... by Java API

Meta-Attributes may be also added through a Plugin Component. The Component will have to implement the interface MetaAttributesProvider as follow ...

public class YourMetaAttributesProvider implements MetaAttributesProvider {

	private MetaAttributeManager metaAttributeManager;
	
	public WorkflowMetaAttributesProvider(MetaAttributeManager metaAttributeManager) {
		this.metaAttributeManager = metaAttributeManager;
		metaAttributeManager.addMetaAttributesProvider(this);
	}
	
	public void refresh() {
		MetaAttributeModule metaAttributeModule; 
		
		metaAttributeModule = new MetaAttributeModule("sample.step.attribute");
		metaAttributeModule.appendDescription("Do nothing special").appendScopes(metaAttributeManager.getAllAvailableStepScopes());
		metaAttributeModule.appendValueEditorKey("jira.plugin.minyaa.workflows.attributes:editMetaBoolean");
		metaAttributeManager.addMetaAttributes(metaAttributeModule);

		metaAttributeModule = new MetaAttributeModule("new.boolean.action.attribute");
		metaAttributeModule.appendDescription("Define if it is True or False !!!").appendScopes(metaAttributeManager.getAllAvailableActionScopes());
		metaAttributeModule.appendValueEditorKey(MetaAttributeManager.META_VALUE_EDITOR_BOOLEAN_KEY);
		metaAttributeManager.addMetaAttributes(metaAttributeModule);
	}
}



  • No labels