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); } }