Quantcast
Channel: Experiencing Adobe Experience Manager (AEM, CQ)
Viewing all articles
Browse latest Browse all 525

AEM 6 - Classic UI Starting Workflow From Asset Editor

$
0
0

Goal


This post is for AEM users who wish to Start Workflow on assets from Asset Editor after adding or modifying metadata

Demo | Package Install

Starting a Workflow




If the Asset is already in Workflow




Solution


1) Login to CRXDE Lite (http://localhost:4502/crx/de) and create folder /apps/asset-editor-start-workflow

2) Create node /apps/asset-editor-start-workflow/clientlib of type cq:ClientLibraryFolder and add a String property categories with value cq.dam.admin

3) Create file (nt:file) /apps/asset-editor-start-workflow/clientlib/js.txt and add

                       add-workflow.js

4) Create file (nt:file) /apps/asset-editor-start-workflow/clientlib/add-workflow.js and add the following code. The dialog config for workflow was copied from \libs\cq\ui\widgets\source\widgets\wcm\SiteAdmin.Actions.js

(function(){
var isAlreadyInWorkflow = function(pagePath){
var url = CQ.HTTP.noCaching("/bin/workflow.json");
url = CQ.HTTP.addParameter(url, "isInWorkflow", pagePath);
url = CQ.HTTP.addParameter(url, "_charset_", "UTF-8");

var response = CQ.HTTP.get(url);
var isInWorkflow = false;

if (CQ.HTTP.isOk(response)) {
var data = CQ.Util.eval(response);
isInWorkflow = data.status;
}

return isInWorkflow;
};

var showWorkflowDialog = function(pagePath){
var id = CQ.Util.createId("cq-workflowdialog");

//this dialog config was copied from \libs\cq\ui\widgets\source\widgets\wcm\SiteAdmin.Actions.js
var startWorkflowDialog = {
"jcr:primaryType": "cq:Dialog",
"title":CQ.I18n.getMessage("Start Workflow"),
"id": id,
"formUrl":"/etc/workflow/instances",
"params": {
"_charset_":"utf-8",
"payloadType":"JCR_PATH"
},
"items": {
"jcr:primaryType": "cq:Panel",
"items": {
"jcr:primaryType": "cq:WidgetCollection",
"model": {
"xtype":"combo",
"name":"model",
"id": id + "-model",
"hiddenName":"model",
"fieldLabel":CQ.I18n.getMessage("Workflow"),
"displayField":"label",
"valueField":"wid",
"title":CQ.I18n.getMessage("Available Workflows"),
"selectOnFocus":true,
"triggerAction":"all",
"allowBlank":false,
"editable":false,
"store":new CQ.Ext.data.Store({
"proxy":new CQ.Ext.data.HttpProxy({
"url":"/libs/cq/workflow/content/console/workflows.json",
"method":"GET"
}),
"baseParams": { tags: 'wcm' },
"reader":new CQ.Ext.data.JsonReader({
"totalProperty":"results",
"root":"workflows"
},
[ {"name":"wid"}, {"name":"label"}, {"name": CQ.shared.XSS.getXSSPropertyName("label")} ]
)
}),
"tpl": new CQ.Ext.XTemplate(
'<tpl for=".">',
'<div class="x-combo-list-item">',
'{[CQ.I18n.getVarMessage(CQ.shared.XSS.getXSSTablePropertyValue(values, \"label\"))]}',
'</div>',
'</tpl>'
)
},
"comment": {
"jcr:primaryType": "cq:TextArea",
"fieldLabel":CQ.I18n.getMessage("Comment"),
"name":"startComment",
"height":200
},
"title": {
xtype: 'textfield',
name:'workflowTitle',
fieldLabel:CQ.I18n.getMessage('Workflow Title')
}
}
},
"okText":CQ.I18n.getMessage("Start")
};

var dialog = CQ.WCM.getDialog(startWorkflowDialog);

dialog.addHidden({ "payload": pagePath } );

dialog.success = function(){
CQ.Ext.Msg.alert("Workflow","Workflow started on asset - " + pagePath);
};

dialog.show();
};

var addWorkflowButton = function(bbar, pagePath){
var wButton = new CQ.Ext.Button({
"text": "Start Workflow",
"cls": "cq-btn-save",
"handler": function() {
var isInWorkflow = isAlreadyInWorkflow(pagePath);

if (isInWorkflow) {
CQ.Ext.Msg.alert("Workflow", CQ.I18n.getMessage("Asset is already subject to a workflow!"));
return;
}

showWorkflowDialog(pagePath);
}
});

bbar.insertButton(1, wButton);
};

var INTERVAL = setInterval(function(){
var tabPanel = CQ.Ext.getCmp("cq-damadmin-tabpanel");

if(tabPanel){
clearInterval(INTERVAL);

tabPanel.on("add", function(t, assetEditor){
addWorkflowButton(assetEditor.formPanel.getBottomToolbar(), assetEditor.path);
});
}
}, 250);
})();




Viewing all articles
Browse latest Browse all 525

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>