From 285c7a0e3e9e29a03f1af15bd7ee5f25efdb36ef Mon Sep 17 00:00:00 2001
From: Brad Shuttleworth
Date: Thu, 7 Sep 2006 14:17:51 +0000
Subject: [PATCH] re-add transition-effects (aka transition action triggers)
---
plugins/ktcore/KTWorkflowTriggers.inc.php | 2 +-
plugins/ktcore/admin/workflowsv2.php | 217 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
templates/ktcore/workflow/admin/effects_overview.smarty | 5 +++++
templates/ktcore/workflow/admin/transition_actions_edit.smarty | 32 ++++++++++++++++++++++++++++++++
templates/ktcore/workflow/admin/transition_effects_overview.smarty | 23 +++++++++++++++++++++++
5 files changed, 278 insertions(+), 1 deletion(-)
create mode 100644 templates/ktcore/workflow/admin/transition_actions_edit.smarty
create mode 100644 templates/ktcore/workflow/admin/transition_effects_overview.smarty
diff --git a/plugins/ktcore/KTWorkflowTriggers.inc.php b/plugins/ktcore/KTWorkflowTriggers.inc.php
index 6694a91..f49817f 100644
--- a/plugins/ktcore/KTWorkflowTriggers.inc.php
+++ b/plugins/ktcore/KTWorkflowTriggers.inc.php
@@ -477,7 +477,7 @@ class CopyActionTrigger extends KTWorkflowTrigger {
$qsFrag = array();
foreach ($args as $k => $v) {
- if ($k == 'action') { $v = 'editTrigger'; } // horrible hack - we really need iframe embedding.
+ if ($k == 'action') { $v = 'editactiontrigger'; } // horrible hack - we really need iframe embedding.
$qsFrag[] = sprintf("%s=%s",urlencode($k), urlencode($v));
}
$qs = implode('&',$qsFrag);
diff --git a/plugins/ktcore/admin/workflowsv2.php b/plugins/ktcore/admin/workflowsv2.php
index 6870839..fe5f0bd 100644
--- a/plugins/ktcore/admin/workflowsv2.php
+++ b/plugins/ktcore/admin/workflowsv2.php
@@ -1379,6 +1379,223 @@ class KTWorkflowAdminV2 extends KTAdminDispatcher {
));
return $oTemplate->render();
}
+
+
+ function form_addtransitionaction() {
+ $oForm = new KTForm;
+ $oForm->setOptions(array(
+ 'identifier' => 'ktcore.admin.workflow.addaction',
+ 'label' => _kt("Add New Transition Action"),
+ 'action' => 'addactiontrigger',
+ 'cancel_action' => 'managetransitionactions',
+ 'fail_action' => 'managetransitionactions',
+ 'submit_label' => _kt("Add Action"),
+ 'context' => $this,
+ ));
+
+ $oTriggerSingleton =& KTWorkflowTriggerRegistry::getSingleton();
+ $aTriggerList = $oTriggerSingleton->listWorkflowTriggers();
+ $vocab = array();
+ foreach ($aTriggerList as $ns => $aTriggerInfo) {
+ $aInfo = $aTriggerInfo; // i am lazy.
+ //var_dump($aInfo);
+ $actions = array();
+ if ($aInfo['guard']) {
+ $actions[] = _kt('Guard');
+ }
+ if ($aInfo['action']) {
+ $actions[] = _kt('Action');
+ } else {
+ continue;
+ }
+ $sActStr = implode(', ', $actions);
+ $vocab[$ns] = sprintf(_kt("%s (%s)"), $aInfo['name'], $sActStr);
+ }
+
+ $oForm->setWidgets(array(
+ array('ktcore.widgets.selection', array(
+ 'label' => _kt("Action/Effect Type"),
+ 'name' => 'action_name',
+ 'vocab' => $vocab,
+ 'simple_select' => false,
+ 'required' => true,
+ )),
+ ));
+
+ $oForm->setValidators(array(
+ array('ktcore.validators.string', array(
+ 'test' => 'action_name',
+ 'output' => 'action_name',
+ )),
+ ));
+ return $oForm;
+ }
+
+ function do_transitionactions() {
+ $oTemplate = $this->oValidator->validateTemplate('ktcore/workflow/admin/transition_effects_overview');
+ $this->oPage->setBreadcrumbDetails(_kt("Transition Effects"));
+
+ $aTransitions = KTWorkflowTransition::getByWorkflow($this->oWorkflow);
+
+ $oTemplate->setData(array(
+ 'context' => $this,
+ 'transitions' => $aTransitions,
+ ));
+ return $oTemplate->render();
+ }
+
+
+ // helper
+ function describeTransitionActions($oTransition) {
+ $actions = KTWorkflowUtil::getActionTriggersForTransition($oTransition);
+
+ if (empty($actions)) {
+ return '—';
+ }
+
+ $action_text = array();
+ foreach ($actions as $oAction) {
+ $action_text[] = $oAction->getConfigDescription();
+ }
+
+ return implode('. ', $action_text);
+ }
+
+
+ function do_managetransitionactions() {
+ $oTemplate = $this->oValidator->validateTemplate('ktcore/workflow/admin/transition_actions_edit');
+ $this->oPage->setBreadcrumbDetails(_kt("Actions"));
+
+ $actions = KTWorkflowUtil::getActionTriggersForTransition($this->oTransition);
+ $add_form = $this->form_addtransitionaction();
+
+ $oTemplate->setData(array(
+ 'context' => $this,
+ 'add_form' => $add_form,
+ 'aActionTriggers' => $actions,
+ ));
+ return $oTemplate->render();
+ }
+
+ function do_addactiontrigger() {
+ $oForm = $this->form_addtransitionaction();
+ $res = $oForm->validate();
+ $data = $res['results'];
+ $errors = $res['errors'];
+
+ if (!empty($errors)) {
+ return $oForm->handleError();
+ }
+
+ $KTWFTriggerReg =& KTWorkflowTriggerRegistry::getSingleton();
+
+ $this->startTransaction();
+
+ $oTrigger = $KTWFTriggerReg->getWorkflowTrigger(KTUtil::arrayGet($data, 'action_name'));
+ if (PEAR::isError($oTrigger)) {
+ return $oForm->handleError(_kt('Unable to add trigger.'));
+ }
+
+ $oTriggerConfig = KTWorkflowTriggerInstance::createFromArray(array(
+ 'transitionid' => KTUtil::getId($this->oTransition),
+ 'namespace' => KTUtil::arrayGet($data, 'action_name'),
+ 'config' => array(),
+ ));
+
+ if (PEAR::isError($oTriggerConfig)) {
+ return $oForm->handleError(_kt('Unable to add trigger.') . $oTriggerConfig->getMessage());
+ }
+
+ // now, if the trigger is editable...
+ $oTrigger->loadConfig($oTriggerConfig);
+ if ($oTrigger->bIsConfigurable) {
+ $this->successRedirectTo('editactiontrigger', _kt("New action added. This action requires configuration: please specify this below."), array('fTriggerInstanceId' => $oTriggerConfig->getId()));
+ } else {
+ $this->successRedirectTo('managetransitionactions', _kt("New restriction added."));
+ }
+ exit(0);
+ }
+
+
+ function do_editactiontrigger() {
+ $this->oPage->setBreadcrumbDetails(_kt('editing restriction'));
+ $oTriggerInstance =& KTWorkflowTriggerInstance::get($_REQUEST['fTriggerInstanceId']);
+ if (PEAR::isError($oTriggerInstance)) {
+ return $this->errorRedirectTo('managetransitionactions', _kt('Unable to load trigger.'));
+ }
+
+ // grab the transition ns from the request.
+ $KTWFTriggerReg =& KTWorkflowTriggerRegistry::getSingleton();
+
+ $this->startTransaction();
+
+ $oTrigger = $KTWFTriggerReg->getWorkflowTrigger($oTriggerInstance->getNamespace());
+ if (PEAR::isError($oTrigger)) {
+ $this->errorRedirectTo('managetransitionactions', _kt('Unable to add trigger.'), 'fWorkflowId=' . $oWorkflow->getId() . '&fTransitionId=' . $oTransition->getId());
+ exit(0);
+ }
+ $oTrigger->loadConfig($oTriggerInstance);
+
+ return $oTrigger->displayConfiguration($this->meldPersistQuery(array('fTriggerInstanceId' => $oTriggerInstance->getId()), 'saveactiontrigger', true));
+ }
+
+ // }}}
+
+ function do_saveactiontrigger() {
+ $oTriggerInstance =& KTWorkflowTriggerInstance::get($_REQUEST['fTriggerInstanceId']);
+ if (PEAR::isError($oTriggerInstance)) {
+ $this->errorRedirectTo('managetransitionactions', _kt('Unable to load trigger.'));
+ exit(0);
+ }
+
+ $KTWFTriggerReg =& KTWorkflowTriggerRegistry::getSingleton();
+
+ $this->startTransaction();
+
+ $oTrigger = $KTWFTriggerReg->getWorkflowTrigger($oTriggerInstance->getNamespace());
+ if (PEAR::isError($oTrigger)) {
+ $this->errorRedirectTo('managetransitionactions', _kt('Unable to load trigger.'));
+ exit(0);
+ }
+ $oTrigger->loadConfig($oTriggerInstance);
+
+ $res = $oTrigger->saveConfiguration();
+ if (PEAR::isError($res)) {
+ $this->errorRedirectTo('managetransitionactions', _kt('Unable to save trigger: ') . $res->getMessage());
+ exit(0);
+ }
+
+ $this->successRedirectTo('managetransitionactions', _kt('Trigger saved.'));
+ exit(0);
+ }
+
+ function do_deleteactiontrigger() {
+ $oTriggerInstance =& KTWorkflowTriggerInstance::get($_REQUEST['fTriggerInstanceId']);
+ if (PEAR::isError($oTriggerInstance)) {
+ return $this->errorRedirectTo('managetransitionactions', _kt('Unable to load trigger.'));
+ }
+
+ // grab the transition ns from the request.
+ $KTWFTriggerReg =& KTWorkflowTriggerRegistry::getSingleton();
+ $this->startTransaction();
+
+ $oTrigger = $KTWFTriggerReg->getWorkflowTrigger($oTriggerInstance->getNamespace());
+ if (PEAR::isError($oTrigger)) {
+ $this->errorRedirectTo('managetransitionactions', _kt('Unable to load trigger.'));
+ exit(0);
+ }
+ $oTrigger->loadConfig($oTriggerInstance);
+
+ $res = $oTriggerInstance->delete();
+ if (PEAR::isError($res)) {
+ $this->errorRedirectTo('managetransitionactions', _kt('Unable to delete trigger: ') . $res->getMessage(), 'fWorkflowId=' . $oWorkflow->getId() . '&fTransitionId=' . $oTransition->getId());
+ exit(0);
+ }
+
+ $this->successRedirectTo('managetransitionactions', _kt('Trigger deleted.'));
+ exit(0);
+ }
+
}
?>
diff --git a/templates/ktcore/workflow/admin/effects_overview.smarty b/templates/ktcore/workflow/admin/effects_overview.smarty
index 0bc61ff..518618f 100644
--- a/templates/ktcore/workflow/admin/effects_overview.smarty
+++ b/templates/ktcore/workflow/admin/effects_overview.smarty
@@ -5,3 +5,8 @@ varies other actions to occur. For example, you can attach a "Move" action to a
which will cause any document moving through that workflow to be moved to a particular folder.
Or you can specify that when a document reaches the "Pending Review" state, users
with the role "Reviewer" on that document are informed.
+
+
diff --git a/templates/ktcore/workflow/admin/transition_actions_edit.smarty b/templates/ktcore/workflow/admin/transition_actions_edit.smarty
new file mode 100644
index 0000000..e1f06ad
--- /dev/null
+++ b/templates/ktcore/workflow/admin/transition_actions_edit.smarty
@@ -0,0 +1,32 @@
+{i18n}Transition Effects{/i18n}
+
+{$add_form->render()}
+
+
+
+{if empty($aActionTriggers)}
+ {i18n}This transition has no actions associated with it..{/i18n}
+{else}
+
+
+
+
+ | {i18n}Action{/i18n} |
+ {i18n}Edit{/i18n} |
+ {i18n}Delete{/i18n} |
+ {i18n}Configuration{/i18n} |
+
+
+
+ {foreach from=$aActionTriggers item=oTrigger}
+
+ | {$oTrigger->getName()} |
+ {if $oTrigger->bIsConfigurable}edit{else}—{/if} |
+ delete |
+ {$oTrigger->getConfigDescription()} |
+
+ {/foreach}
+
+
+
+ {/if}
diff --git a/templates/ktcore/workflow/admin/transition_effects_overview.smarty b/templates/ktcore/workflow/admin/transition_effects_overview.smarty
new file mode 100644
index 0000000..c4332ee
--- /dev/null
+++ b/templates/ktcore/workflow/admin/transition_effects_overview.smarty
@@ -0,0 +1,23 @@
+Transition Actions Overview
+
+Please note that the plugins that are installed
+will affect the available options
+
+
+
+ | Transition |
+ Edit |
+ Effects |
+
+
+
+ {foreach from=$transitions item=oTransition}
+ {assign value=$oTransition->getId() var=transition_id}
+
+ | {$oTransition->getName()} |
+ |
+ {$context->describeTransitionActions($oTransition)} |
+
+ {/foreach}
+
+
--
libgit2 0.21.4