added new process user interface
This commit is contained in:
@@ -458,6 +458,21 @@ class Process extends BaseProcess {
|
|||||||
$oPro = ProcessPeer::retrieveByPk( $ProUid );
|
$oPro = ProcessPeer::retrieveByPk( $ProUid );
|
||||||
return (is_object ($oPro) && get_class ($oPro) == 'Process' );
|
return (is_object ($oPro) && get_class ($oPro) == 'Process' );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function existsByProTitle($PRO_TITLE)
|
||||||
|
{
|
||||||
|
$oCriteria = new Criteria('workflow');
|
||||||
|
$oCriteria->addSelectColumn('COUNT(*) AS PROCESS');
|
||||||
|
$oCriteria->add(ContentPeer::CON_CATEGORY, 'PRO_TITLE');
|
||||||
|
$oCriteria->add(ContentPeer::CON_LANG, SYS_LANG);
|
||||||
|
$oCriteria->add(ContentPeer::CON_VALUE, $PRO_TITLE);
|
||||||
|
$oDataset = ContentPeer::doSelectRS($oCriteria);
|
||||||
|
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||||
|
$oDataset->next();
|
||||||
|
$aRow = $oDataset->getRow();
|
||||||
|
|
||||||
|
return $aRow['PROCESS'] ? true : false;
|
||||||
|
}
|
||||||
|
|
||||||
//new functions
|
//new functions
|
||||||
function getAllProcessesCount(){
|
function getAllProcessesCount(){
|
||||||
@@ -651,4 +666,4 @@ function ordProcessByProTitle($a, $b){
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,13 +3,17 @@
|
|||||||
if( ! isset($_GET['PRO_UID']) )
|
if( ! isset($_GET['PRO_UID']) )
|
||||||
throw new Exception('The Process ID was not set!');
|
throw new Exception('The Process ID was not set!');
|
||||||
|
|
||||||
|
require_once 'classes/model/Process.php';
|
||||||
|
$process = ProcessPeer::retrieveByPK( $_GET['PRO_UID'] );
|
||||||
|
|
||||||
|
if( get_class($process) != 'Process' ) {
|
||||||
|
throw new Exception("The Process with UID: {$_GET['PRO_UID']} doesn't exist!");
|
||||||
|
}
|
||||||
|
|
||||||
$processUID = $_GET['PRO_UID'];
|
$processUID = $_GET['PRO_UID'];
|
||||||
$_SESSION['PROCESS'] = $processUID;
|
$_SESSION['PROCESS'] = $processUID;
|
||||||
$_SESSION['PROCESSMAP'] = 'BPMN';
|
$_SESSION['PROCESSMAP'] = 'BPMN';
|
||||||
|
|
||||||
require_once 'classes/model/Process.php';
|
|
||||||
$process = ProcessPeer::retrieveByPK( $processUID );
|
|
||||||
|
|
||||||
$oHeadPublisher =& headPublisher::getSingleton();
|
$oHeadPublisher =& headPublisher::getSingleton();
|
||||||
$oHeadPublisher->usingExtJs('ux/miframe');
|
$oHeadPublisher->usingExtJs('ux/miframe');
|
||||||
|
|
||||||
@@ -17,7 +21,7 @@
|
|||||||
$oHeadPublisher->addExtJsScript('bpmn/MyWorkflow',true ); //adding a javascript file .js
|
$oHeadPublisher->addExtJsScript('bpmn/MyWorkflow',true ); //adding a javascript file .js
|
||||||
$oHeadPublisher->addExtJsScript('bpmn/pmosExt', true ); //adding a javascript file .js
|
$oHeadPublisher->addExtJsScript('bpmn/pmosExt', true ); //adding a javascript file .js
|
||||||
$oHeadPublisher->addExtJsScript('bpmn/TaskContext', true ); //adding a javascript file .js
|
$oHeadPublisher->addExtJsScript('bpmn/TaskContext', true ); //adding a javascript file .js
|
||||||
$oHeadPublisher->addExtJsScript('bpmn/ProcessMapContext', true ); //adding a javascript file .js
|
$oHeadPublisher->addExtJsScript('bpmn/ProcessMapContext', false ); //adding a javascript file .js
|
||||||
$oHeadPublisher->addExtJsScript('bpmn/processmap', true ); //adding a javascript file .js
|
$oHeadPublisher->addExtJsScript('bpmn/processmap', true ); //adding a javascript file .js
|
||||||
$oHeadPublisher->addExtJsScript('bpmn/Annotation' );
|
$oHeadPublisher->addExtJsScript('bpmn/Annotation' );
|
||||||
$oHeadPublisher->addExtJsScript('bpmn/FlowConnector');
|
$oHeadPublisher->addExtJsScript('bpmn/FlowConnector');
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
<?
|
<?
|
||||||
|
|
||||||
$request = $_POST['request'];
|
$request = isset($_GET['request']) ? $_GET['request'] : $_POST['request'];
|
||||||
|
|
||||||
switch($request){
|
switch($request)
|
||||||
|
{
|
||||||
case 'categoriesList':
|
case 'categoriesList':
|
||||||
require_once "classes/model/ProcessCategory.php";
|
require_once "classes/model/ProcessCategory.php";
|
||||||
|
|
||||||
@@ -13,7 +14,78 @@ switch($request){
|
|||||||
|
|
||||||
$response->rows = array_merge($defaultOption, $processCategory->getAll('array'));
|
$response->rows = array_merge($defaultOption, $processCategory->getAll('array'));
|
||||||
|
|
||||||
echo G::json_encode($response);
|
echo G::json_encode($response);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
|
case 'processCategories':
|
||||||
|
require_once "classes/model/ProcessCategory.php";
|
||||||
|
|
||||||
|
$processCategory = new ProcessCategory;
|
||||||
|
$defaultOption = Array();
|
||||||
|
$defaultOption[] = Array('CATEGORY_UID'=>'', 'CATEGORY_NAME'=>G::LoadTranslation('ID_PROCESS_NO_CATEGORY'));
|
||||||
|
|
||||||
|
$response->rows = array_merge($defaultOption, $processCategory->getAll('array'));
|
||||||
|
|
||||||
|
echo G::json_encode($response);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'saveProcess':
|
||||||
|
try{
|
||||||
|
require_once 'classes/model/Task.php';
|
||||||
|
G::LoadClass('processMap');
|
||||||
|
$oProcessMap = new ProcessMap();
|
||||||
|
|
||||||
|
if( ! isset($_POST['PRO_UID']) ) {
|
||||||
|
|
||||||
|
if( Process::existsByProTitle($_POST['PRO_TITLE']) ) {
|
||||||
|
$result = array(
|
||||||
|
'success' => false,
|
||||||
|
'msg' => 'Process Save Error',
|
||||||
|
'errors' => array(
|
||||||
|
'PRO_TITLE' => G::LoadTranslation('ID_PROCESSTITLE_ALREADY_EXISTS', SYS_LANG, $_POST)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
print G::json_encode($result);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
$processData['USR_UID'] = $_SESSION['USER_LOGGED'];
|
||||||
|
$processData['PRO_TITLE'] = $_POST['PRO_TITLE'];
|
||||||
|
$processData['PRO_DESCRIPTION'] = $_POST['PRO_DESCRIPTION'];
|
||||||
|
$processData['PRO_CATEGORY'] = $_POST['PRO_CATEGORY'];
|
||||||
|
|
||||||
|
$sProUid = $oProcessMap->createProcess($processData);
|
||||||
|
|
||||||
|
//call plugins
|
||||||
|
$oData['PRO_UID'] = $sProUid;
|
||||||
|
$oData['PRO_TEMPLATE'] = ( isset($_POST['PRO_TEMPLATE']) && $_POST['PRO_TEMPLATE'] != '' ) ? $_POST['form']['PRO_TEMPLATE'] : '';
|
||||||
|
$oData['PROCESSMAP'] = $oProcessMap;
|
||||||
|
|
||||||
|
$oPluginRegistry =& PMPluginRegistry::getSingleton();
|
||||||
|
$oPluginRegistry->executeTriggers ( PM_NEW_PROCESS_SAVE , $oData );
|
||||||
|
|
||||||
|
} else {
|
||||||
|
//$oProcessMap->updateProcess($_POST['form']);
|
||||||
|
$sProUid = $_POST['PRO_UID'];
|
||||||
|
}
|
||||||
|
|
||||||
|
//Save Calendar ID for this process
|
||||||
|
if( isset($_POST['PRO_CALENDAR']) ){
|
||||||
|
G::LoadClass("calendar");
|
||||||
|
$calendarObj=new Calendar();
|
||||||
|
$calendarObj->assignCalendarTo($sProUid, $_POST['PRO_CALENDAR'], 'PROCESS');
|
||||||
|
}
|
||||||
|
|
||||||
|
$result->success = true;
|
||||||
|
$result->PRO_UID = $sProUid;
|
||||||
|
$result->msg = G::LoadTranslation('ID_CREATE_PROCESS_SUCCESS');
|
||||||
|
} catch(Exception $e){
|
||||||
|
$result->success = false;
|
||||||
|
$result->msg = $e->getMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
print G::json_encode($result);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -27,20 +27,11 @@
|
|||||||
G::loadClass('configuration');
|
G::loadClass('configuration');
|
||||||
$conf = new Configurations;
|
$conf = new Configurations;
|
||||||
|
|
||||||
$oHeadPublisher->addExtJsScript('processes/main', false ); //adding a javascript file .js
|
$oHeadPublisher->addExtJsScript('processes/main', true ); //adding a javascript file .js
|
||||||
$oHeadPublisher->addContent('processes/main'); //adding a html file .html.
|
$oHeadPublisher->addContent('processes/main'); //adding a html file .html.
|
||||||
|
|
||||||
$translations = G::getTranslations(Array(
|
|
||||||
'ID_NEW', 'ID_EDIT', 'ID_STATUS', 'ID_DELETE', 'ID_IMPORT', 'ID_BROWSE_LIBRARY', 'ID_CATEGORY', 'ID_SELECT',
|
|
||||||
'ID_PRO_DESCRIPTION', 'ID_PRO_TITLE', 'ID_CATEGORY', 'ID_STATUS', 'ID_PRO_USER', 'ID_PRO_CREATE_DATE', 'ID_PRO_DEBUG', 'ID_INBOX', 'ID_DRAFT',
|
|
||||||
'ID_COMPLETED', 'ID_CANCELLED', 'ID_TOTAL_CASES', 'ID_ENTER_SEARCH_TERM', 'ID_ACTIVATE', 'ID_DEACTIVATE',
|
|
||||||
'ID_SELECT', 'ID_SEARCH', 'ID_NO_SELECTION_WARNING', 'ID_PROCESS_DELETE_LABEL', 'ID_PROCESS_DELETE_ALL_LABEL',
|
|
||||||
'ID_PROCESS_CANT_DELETE', 'ID_EDIT_BPMN'
|
|
||||||
));
|
|
||||||
|
|
||||||
$oHeadPublisher->assign('pageSize', $conf->getEnvSetting('casesListRowNumber'));
|
$oHeadPublisher->assign('pageSize', $conf->getEnvSetting('casesListRowNumber'));
|
||||||
|
|
||||||
$oHeadPublisher->assign('TRANSLATIONS', $translations);
|
|
||||||
G::RenderPage('publish', 'extJs');
|
G::RenderPage('publish', 'extJs');
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -349,7 +349,142 @@ Ext.onReady(function(){
|
|||||||
|
|
||||||
|
|
||||||
function newProcess(){
|
function newProcess(){
|
||||||
window.location = 'processes_New';
|
// window.location = 'processes_New';
|
||||||
|
|
||||||
|
var ProcessCategories = new Ext.form.ComboBox({
|
||||||
|
fieldLabel : 'Category',
|
||||||
|
hiddenName : 'PRO_CATEGORY',
|
||||||
|
valueField : 'CATEGORY_UID',
|
||||||
|
displayField : 'CATEGORY_NAME',
|
||||||
|
triggerAction : 'all',
|
||||||
|
// emptyText : 'Select a category',
|
||||||
|
selectOnFocus : true,
|
||||||
|
editable : false,
|
||||||
|
width: 180,
|
||||||
|
allowBlank : true,
|
||||||
|
|
||||||
|
store : new Ext.data.Store( {
|
||||||
|
proxy : new Ext.data.HttpProxy( {
|
||||||
|
url : 'mainAjax',
|
||||||
|
method : 'POST'
|
||||||
|
}),
|
||||||
|
baseParams : {
|
||||||
|
request : 'processCategories'
|
||||||
|
},
|
||||||
|
reader : new Ext.data.JsonReader( {
|
||||||
|
root : 'rows',
|
||||||
|
fields : [ {
|
||||||
|
name : 'CATEGORY_UID'
|
||||||
|
}, {
|
||||||
|
name : 'CATEGORY_NAME'
|
||||||
|
} ]
|
||||||
|
}),
|
||||||
|
listeners:{
|
||||||
|
load: function(){
|
||||||
|
//i = cmbUsernameFormats.store.findExact('id', default_format, 0);
|
||||||
|
//cmbUsernameFormats.setValue(cmbUsernameFormats.store.getAt(i).data.id);
|
||||||
|
//cmbUsernameFormats.setRawValue(cmbUsernameFormats.store.getAt(i).data.name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
listeners:{
|
||||||
|
afterrender:function(){
|
||||||
|
ProcessCategories.store.load();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var fieldset = {
|
||||||
|
xtype : 'fieldset',
|
||||||
|
autoHeight : true,
|
||||||
|
defaults : {
|
||||||
|
labelStyle : 'padding: 0px;',
|
||||||
|
style: 'font-weight: bold'
|
||||||
|
},
|
||||||
|
items : [ {
|
||||||
|
id: 'PRO_TITLE',
|
||||||
|
fieldLabel: 'Title',
|
||||||
|
xtype:'textfield',
|
||||||
|
vtype: 'processName',
|
||||||
|
width: 260
|
||||||
|
}, {
|
||||||
|
id: 'PRO_DESCRIPTION',
|
||||||
|
fieldLabel: 'Description',
|
||||||
|
xtype:'textarea',
|
||||||
|
width: 260
|
||||||
|
},
|
||||||
|
ProcessCategories
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
var frm = new Ext.FormPanel( {
|
||||||
|
id: 'newProcessForm',
|
||||||
|
labelAlign : 'right',
|
||||||
|
bodyStyle : 'padding:5px 5px 0',
|
||||||
|
width : 400,
|
||||||
|
items : [ {
|
||||||
|
id: 'PRO_TITLE',
|
||||||
|
fieldLabel: _('ID_TITLE'),
|
||||||
|
xtype:'textfield',
|
||||||
|
width: 260
|
||||||
|
}, {
|
||||||
|
id: 'PRO_DESCRIPTION',
|
||||||
|
fieldLabel: _('ID_DESCRIPTION'),
|
||||||
|
xtype:'textarea',
|
||||||
|
width: 260
|
||||||
|
},
|
||||||
|
ProcessCategories,
|
||||||
|
{
|
||||||
|
id: 'editor',
|
||||||
|
xtype: 'radiogroup',
|
||||||
|
fieldLabel: _('ID_OPEN_WITH'),
|
||||||
|
items: [
|
||||||
|
{boxLabel: _('ID_CLASSIC_EDITOR'), name: 'editor', inputValue: 'classic', checked: true},
|
||||||
|
{boxLabel: _('ID_BPMN_EDITOR'), name: 'editor', inputValue: 'bpmn'}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
buttons : [{
|
||||||
|
text : _('ID_CREATE'),
|
||||||
|
handler : saveProcess
|
||||||
|
},{
|
||||||
|
text : _('ID_CANCEL'),
|
||||||
|
handler : function() {
|
||||||
|
win.close();
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
});
|
||||||
|
|
||||||
|
var win = new Ext.Window({
|
||||||
|
title: 'Create Process',
|
||||||
|
width: 450,
|
||||||
|
height: 220,
|
||||||
|
layout:'fit',
|
||||||
|
autoScroll:true,
|
||||||
|
modal: true,
|
||||||
|
maximizable: false,
|
||||||
|
items: [frm]
|
||||||
|
});
|
||||||
|
win.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
function saveProcess()
|
||||||
|
{
|
||||||
|
Ext.getCmp('newProcessForm').getForm().submit( {
|
||||||
|
url : 'mainAjax?request=saveProcess',
|
||||||
|
waitMsg : 'Creating Process...',
|
||||||
|
timeout : 36000,
|
||||||
|
success : function(obj, resp) {
|
||||||
|
var editor = Ext.getCmp('editor').getValue().getGroupValue();
|
||||||
|
if( editor == 'classic')
|
||||||
|
location.href = 'processes_Map?PRO_UID='+resp.result.PRO_UID;
|
||||||
|
else
|
||||||
|
location.href = '../bpmn/processmap?PRO_UID='+resp.result.PRO_UID;
|
||||||
|
},
|
||||||
|
failure: function(obj, result) {
|
||||||
|
Ext.Msg.alert( _('ID_ERROR'), resp.result.PRO_UID);
|
||||||
|
},
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function doSearch(){
|
function doSearch(){
|
||||||
@@ -542,3 +677,78 @@ capitalize = function(s){
|
|||||||
s = s.toLowerCase();
|
s = s.toLowerCase();
|
||||||
return s.replace( /(^|\s)([a-z])/g , function(m,p1,p2){ return p1+p2.toUpperCase(); } );
|
return s.replace( /(^|\s)([a-z])/g , function(m,p1,p2){ return p1+p2.toUpperCase(); } );
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// Add the additional 'advanced' VTypes
|
||||||
|
Ext.apply(Ext.form.VTypes, {
|
||||||
|
daterange : function(val, field) {
|
||||||
|
var date = field.parseDate(val);
|
||||||
|
|
||||||
|
if(!date){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (field.startDateField) {
|
||||||
|
var start = Ext.getCmp(field.startDateField);
|
||||||
|
if (!start.maxValue || (date.getTime() != start.maxValue.getTime())) {
|
||||||
|
start.setMaxValue(date);
|
||||||
|
start.validate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (field.endDateField) {
|
||||||
|
var end = Ext.getCmp(field.endDateField);
|
||||||
|
if (!end.minValue || (date.getTime() != end.minValue.getTime())) {
|
||||||
|
end.setMinValue(date);
|
||||||
|
end.validate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* Always return true since we're only using this vtype to set the
|
||||||
|
* min/max allowed values (these are tested for after the vtype test)
|
||||||
|
*/
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
|
processName : function(val, field) {
|
||||||
|
//if (field.initialPassField) {
|
||||||
|
|
||||||
|
Ext.Ajax.request({
|
||||||
|
url : 'mainAjax' ,
|
||||||
|
params : {request:'verifyProcessName', PRO_TITLE : val },
|
||||||
|
method: 'POST',
|
||||||
|
success: function ( result, request ) {
|
||||||
|
var data = Ext.util.JSON.decode(result.responseText);
|
||||||
|
return data.success;
|
||||||
|
},
|
||||||
|
failure: function ( result, request) {
|
||||||
|
Ext.MessageBox.alert('Failed', result.responseText);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
//}
|
||||||
|
//return true;
|
||||||
|
},
|
||||||
|
|
||||||
|
processNameText : 'Process Name Already exists!'
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
function valProcess(){
|
||||||
|
var val = Ext.getCmp('PRO_TITLE').getValue();
|
||||||
|
|
||||||
|
return Ext.Ajax.request({
|
||||||
|
url : 'mainAjax' ,
|
||||||
|
params : {request:'verifyProcessName', PRO_TITLE : val },
|
||||||
|
method: 'POST',
|
||||||
|
success: function ( result, request ) {
|
||||||
|
var data = Ext.util.JSON.decode(result.responseText);
|
||||||
|
//if( data.success )
|
||||||
|
return 'sssssssss';
|
||||||
|
// else
|
||||||
|
// return true;
|
||||||
|
},
|
||||||
|
failure: function ( result, request) {
|
||||||
|
Ext.MessageBox.alert('Failed', result.responseText);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
@@ -307,4 +307,4 @@ Ext.apply(Ext.form.VTypes, {
|
|||||||
decNum: function(v) {
|
decNum: function(v) {
|
||||||
return this.decNumRe.test(v);
|
return this.decNumRe.test(v);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user