newworkflow.inc.php.tmp
来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· TMP 代码 · 共 410 行 · 第 1/2 页
TMP
410 行
<?php/** * $Id$ * * KnowledgeTree Community Edition * Document Management Made Simple * Copyright (C) 2008 KnowledgeTree Inc. * Portions copyright The Jam Warehouse Software (Pty) Limited * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License version 3 as published by the * Free Software Foundation. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * * You can contact KnowledgeTree Inc., PO Box 7775 #87847, San Francisco, * California 94120-7775, or email info@knowledgetree.com. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU General Public License version 3. * * In accordance with Section 7(b) of the GNU General Public License version 3, * these Appropriate Legal Notices must retain the display of the "Powered by * KnowledgeTree" logo and retain the original copyright notice. If the display of the * logo is not reasonably feasible for technical reasons, the Appropriate Legal Notices * must display the words "Powered by KnowledgeTree" and retain the original * copyright notice. * Contributor( s): ______________________________________ */// corerequire_once(KT_LIB_DIR . "/dispatcher.inc.php");// workflowrequire_once(KT_LIB_DIR . '/workflow/workflow.inc.php');require_once(KT_LIB_DIR . '/workflow/workflowstate.inc.php');require_once(KT_LIB_DIR . '/workflow/workflowtransition.inc.php');require_once(KT_LIB_DIR . '/workflow/workflowstatepermissionsassignment.inc.php');require_once(KT_LIB_DIR . '/workflow/workflowutil.inc.php');require_once(KT_LIB_DIR . '/workflow/workflowadminutil.inc.php');// otherrequire_once(KT_LIB_DIR . '/permissions/permission.inc.php');require_once(KT_LIB_DIR . '/actions/documentaction.inc.php');require_once(KT_LIB_DIR . '/widgets/portlet.inc.php');require_once(KT_LIB_DIR . '/users/User.inc');require_once(KT_LIB_DIR . '/groups/Group.inc');require_once(KT_LIB_DIR . '/roles/Role.inc');require_once(KT_LIB_DIR . '/widgets/portlet.inc.php');require_once(KT_LIB_DIR . '/widgets/forms.inc.php');class KTNewWorkflowWizard extends KTAdminDispatcher { function predispatch() { $this->persistParams(array('fWizardKey')); } function &form_step1() { $oForm = new KTForm; $oForm->setOptions(array( 'action' => 'process_step1', 'cancel_url' => KTUtil::addQueryStringSelf(''), // NBM: is there a cleaner way to reference the parent? 'fail_action' => 'main', 'label' => _kt('Workflow Details'), 'submit_label' => _kt('Next'), 'description' => _kt('This first step requires that you provide basic details about the workflow: its name, etc.'), 'context' => $this, )); $oForm->setWidgets(array( array('ktcore.widgets.string',array( 'label' => _kt('Workflow Name'), 'description' => _kt('Each workflow must have a unique name.'), 'required' => true, 'name' => 'workflow_name', )), array('ktcore.widgets.text',array( 'label' => _kt('States'), 'description' => _kt('As documents progress through their lifecycle, they pass through a number of <strong>states</strong>. These states describe a step in the process the document must follow. Examples of states include "reviewed","submitted" or "pending". Please enter a list of states, one per line. State names must be unique.'), 'important_description' => _kt('Note that the first state you list is the one in which documents will start the workflow - this can be changed later on. '), 'required' => true, 'name' => 'states', 'rows' => 15, )), array('ktcore.widgets.text',array( 'label' => _kt('Transitions'), 'description' => _kt('In order to move between states, users will cause "transitions" to occur. These transitions represent processes followed, e.g. "review document", "distribute invoice" or "publish". Please enter a list of transitions, one per line. Transition names must be unique. You\'ll assign transitions to states in the next step.'), 'required' => false, 'name' => 'transitions', )), array('ktcore.widgets.hidden',array( 'required' => false, 'name' => 'fWizardKey', 'value' => KTUtil::randomString() )), )); $oForm->setValidators(array( array('ktcore.validators.string', array( 'test' => 'workflow_name', 'output' => 'workflow_name', )), array('ktcore.validators.string', array( 'test' => 'fWizardKey', 'output' => 'fWizardKey', )), array('ktcore.validators.string', array( 'test' => 'states', 'output' => 'states', 'max_length' => 9999, )), array('ktcore.validators.string', array( 'test' => 'transitions', 'output' => 'transitions', 'max_length' => 9999, )), )); return $oForm; } function do_main() { $oTemplate =& $this->oValidator->validateTemplate('ktcore/workflow/admin/new_wizard_step1'); $oForm =& $this->form_step1(); $oTemplate->setData(array( 'context' => $this, 'form' => $oForm, )); return $oTemplate->render(); } function do_process_step1() { $fWizardKey = KTUtil::arrayGet($_REQUEST, 'fWizardKey'); if (!empty($fWizardKey)) { $this->errorRedirectToMain(_kt("Could not create workflow.") ); exit; } $oForm =& $this->form_step1(); $res = $oForm->validate(); $data = $res['results']; // perform additional validation. $extra_errors = array(); $data['workflow_name'] = str_replace(array(' ', ' '), array(' ', ' '), $data['workflow_name']); $oWorkflow = KTWorkflow::getByName($data['workflow_name']); if (!PEAR::isError($oWorkflow)) { $extra_errors['workflow_name'][] = _kt("A workflow with that name already exists. Please choose a different name for this workflow."); } $initial_states = (array) explode("\n", $data['states']); // must be there, we validated it. $failed = array(); $states = array(); $is_first = true; $initial_state = ''; foreach ($initial_states as $sInitialStateName) { $state_name = trim($sInitialStateName); if (empty($state_name)) { continue; } if ($states[$state_name]) { $failed[] = $state_name; continue; } if ($is_first) { $is_first = false; $initial_state = $state_name; } $states[$state_name] = $state_name; } if (empty($states)) { $extra_errors['states'][] = _kt('You must provide at least one state name.'); } if (!empty($failed)) { $extra_errors['states'] = sprintf(_kt("You cannot have duplicate state names: %s"), implode(', ', $failed)); } $data['states'] = $states; $data['initial_state'] = $initial_state; $initial_transitions = (array) explode("\n", $data['transitions']); // must be there, we validated it. $failed = array(); $transitions = array(); foreach ($initial_transitions as $sInitialTransitionName) { $transition_name = trim($sInitialTransitionName); if (empty($transition_name)) { continue; } if ($transitions[$transition_name]) { $failed[] = $transition_name; continue; } $transitions[$transition_name] = $transition_name;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?