added form for Process permission part EXTJS

This commit is contained in:
safan
2010-12-20 15:04:33 +00:00
parent 69cc3bd032
commit b3854b6b3d
3 changed files with 593 additions and 2 deletions

View File

@@ -3097,6 +3097,133 @@ class processMap {
return $oCriteria;
}
function getExtObjectsPermissions($sProcessUID) {
G::LoadClass('case');
Cases::verifyTable ();
$aObjectsPermissions = array();
//$aObjectsPermissions [] = array('OP_UID' => 'char', 'TASK_TARGET' => 'char', 'GROUP_USER' => 'char', 'TASK_SOURCE' => 'char', 'OBJECT_TYPE' => 'char', 'OBJECT' => 'char', 'PARTICIPATED' => 'char', 'ACTION' => 'char', 'OP_CASE_STATUS' => 'char');
$oCriteria = new Criteria('workflow');
$oCriteria->addSelectColumn(ObjectPermissionPeer::OP_UID);
$oCriteria->addSelectColumn(ObjectPermissionPeer::TAS_UID);
$oCriteria->addSelectColumn(ObjectPermissionPeer::USR_UID);
$oCriteria->addSelectColumn(ObjectPermissionPeer::OP_USER_RELATION);
$oCriteria->addSelectColumn(ObjectPermissionPeer::OP_TASK_SOURCE);
$oCriteria->addSelectColumn(ObjectPermissionPeer::OP_PARTICIPATE);
$oCriteria->addSelectColumn(ObjectPermissionPeer::OP_OBJ_TYPE);
$oCriteria->addSelectColumn(ObjectPermissionPeer::OP_OBJ_UID);
$oCriteria->addSelectColumn(ObjectPermissionPeer::OP_ACTION);
$oCriteria->addSelectColumn(ObjectPermissionPeer::OP_CASE_STATUS);
$oCriteria->add(ObjectPermissionPeer::PRO_UID, $sProcessUID);
$oDataset = ObjectPermissionPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
while ($aRow = $oDataset->getRow()) {
//Obtain task target
if (($aRow ['TAS_UID'] != '') && ($aRow ['TAS_UID'] != '0')) {
try {
$oTask = new Task ( );
$aFields = $oTask->load($aRow ['TAS_UID']);
$sTaskTarget = $aFields ['TAS_TITLE'];
} catch (Exception $oError) {
$sTaskTarget = 'All Tasks';
}
} else {
$sTaskTarget = G::LoadTranslation('ID_ANY_TASK');
}
//Obtain user or group
if ($aRow ['OP_USER_RELATION'] == 1) {
$oUser = new Users ( );
$aFields = $oUser->load($aRow ['USR_UID']);
$sUserGroup = $aFields ['USR_FIRSTNAME'] . ' ' . $aFields ['USR_LASTNAME'] . ' (' . $aFields ['USR_USERNAME'] . ')';
} else {
$oGroup = new Groupwf ( );
if ($aRow ['USR_UID'] != '') {
try {
$aFields = $oGroup->load($aRow ['USR_UID']);
$sUserGroup = $aFields ['GRP_TITLE'];
} catch (Exception $oError) {
$sUserGroup = '(GROUP DELETED)';
}
} else {
$sUserGroup = G::LoadTranslation('ID_ANY');
}
}
//Obtain task source
if (($aRow ['OP_TASK_SOURCE'] != '') && ($aRow ['OP_TASK_SOURCE'] != '0')) {
try {
$oTask = new Task ( );
$aFields = $oTask->load($aRow ['OP_TASK_SOURCE']);
$sTaskSource = $aFields ['TAS_TITLE'];
} catch (Exception $oError) {
$sTaskSource = 'All Tasks';
}
} else {
$sTaskSource = G::LoadTranslation('ID_ANY_TASK');
}
//Obtain object and type
switch ($aRow ['OP_OBJ_TYPE']) {
case 'ANY' :
$sObjectType = G::LoadTranslation('ID_ALL');
$sObject = G::LoadTranslation('ID_ALL');
break;
/* case 'ANY_DYNAFORM':
$sObjectType = G::LoadTranslation('ID_ANY_DYNAFORM');
$sObject = G::LoadTranslation('ID_ALL');
break;
case 'ANY_INPUT':
$sObjectType = G::LoadTranslation('ID_ANY_INPUT');
$sObject = G::LoadTranslation('ID_ALL');
break;
case 'ANY_OUTPUT':
$sObjectType = G::LoadTranslation('ID_ANY_OUTPUT');
$sObject = G::LoadTranslation('ID_ALL');
break; */
case 'DYNAFORM' :
$sObjectType = G::LoadTranslation('ID_DYNAFORM');
if (($aRow ['OP_OBJ_UID'] != '') && ($aRow ['OP_OBJ_UID'] != '0')) {
$oDynaform = new Dynaform ( );
$aFields = $oDynaform->load($aRow ['OP_OBJ_UID']);
$sObject = $aFields ['DYN_TITLE'];
} else {
$sObject = G::LoadTranslation('ID_ALL');
}
break;
case 'INPUT' :
$sObjectType = G::LoadTranslation('ID_INPUT_DOCUMENT');
if (($aRow ['OP_OBJ_UID'] != '') && ($aRow ['OP_OBJ_UID'] != '0')) {
$oInputDocument = new InputDocument ( );
$aFields = $oInputDocument->load($aRow ['OP_OBJ_UID']);
$sObject = $aFields ['INP_DOC_TITLE'];
} else {
$sObject = G::LoadTranslation('ID_ALL');
}
break;
case 'OUTPUT' :
$sObjectType = G::LoadTranslation('ID_OUTPUT_DOCUMENT');
if (($aRow ['OP_OBJ_UID'] != '') && ($aRow ['OP_OBJ_UID'] != '0')) {
$oOutputDocument = new OutputDocument ( );
$aFields = $oOutputDocument->load($aRow ['OP_OBJ_UID']);
$sObject = $aFields ['OUT_DOC_TITLE'];
} else {
$sObject = G::LoadTranslation('ID_ALL');
}
break;
}
//Participated
if ($aRow ['OP_PARTICIPATE'] == 0) {
$sParticipated = G::LoadTranslation('ID_NO');
} else {
$sParticipated = G::LoadTranslation('ID_YES');
}
//Obtain action (permission)
$sAction = G::LoadTranslation('ID_' . $aRow ['OP_ACTION']);
//Add to array
$aObjectsPermissions [] = array('OP_UID' => $aRow ['OP_UID'], 'TASK_TARGET' => $sTaskTarget, 'GROUP_USER' => $sUserGroup, 'TASK_SOURCE' => $sTaskSource, 'OBJECT_TYPE' => $sObjectType, 'OBJECT' => $sObject, 'PARTICIPATED' => $sParticipated, 'ACTION' => $sAction, 'OP_CASE_STATUS' => $aRow ['OP_CASE_STATUS']);
$oDataset->next();
}
return $aObjectsPermissions;
}
/**
* objectsPermissionsList
*
@@ -5357,5 +5484,90 @@ class processMap {
throw ($e);
}
}
function newExtObjectPermission($sProcessUID)
{
$aUsersGroups = array();
$aUsersGroups [] = array('UID' => 'char', 'LABEL' => 'char');
$oCriteria = new Criteria('workflow');
$oCriteria->addSelectColumn(GroupwfPeer::GRP_UID);
$oCriteria->addAsColumn('GRP_TITLE', ContentPeer::CON_VALUE);
$aConditions = array();
$aConditions [] = array(GroupwfPeer::GRP_UID, ContentPeer::CON_ID);
$aConditions [] = array(ContentPeer::CON_CATEGORY, DBAdapter::getStringDelimiter () . 'GRP_TITLE' . DBAdapter::getStringDelimiter ());
$aConditions [] = array(ContentPeer::CON_LANG, DBAdapter::getStringDelimiter () . SYS_LANG . DBAdapter::getStringDelimiter ());
$oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN);
$oCriteria->add(GroupwfPeer::GRP_STATUS, 'ACTIVE');
$oDataset = GroupwfPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
while ($aRow = $oDataset->getRow()) {
$aUsersGroups [] = array('UID' => '2|' . $aRow ['GRP_UID'], 'LABEL' => $aRow ['GRP_TITLE'] . ' (' . G::LoadTranslation('ID_GROUP') . ')');
$oDataset->next();
}
$oCriteria = new Criteria('workflow');
$oCriteria->addSelectColumn(UsersPeer::USR_UID);
$oCriteria->addSelectColumn(UsersPeer::USR_USERNAME);
$oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME);
$oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME);
$oCriteria->add(UsersPeer::USR_STATUS, 'ACTIVE');
$oDataset = UsersPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
while ($aRow = $oDataset->getRow()) {
$aUsersGroups [] = array('UID' => '1|' . $aRow ['USR_UID'], 'LABEL' => $aRow ['USR_FIRSTNAME'] . ' ' . $aRow ['USR_LASTNAME'] . ' (' . $aRow ['USR_USERNAME'] . ')');
$oDataset->next();
}
$aAllObjects = array();
$aAllObjects [] = array('UID' => 'char', 'LABEL' => 'char');
$aAllDynaforms = array();
$aAllDynaforms [] = array('UID' => 'char', 'LABEL' => 'char');
$aAllInputs = array();
$aAllInputs [] = array('UID' => 'char', 'LABEL' => 'char');
$aAllOutputs = array();
$aAllOutputs [] = array('UID' => 'char', 'LABEL' => 'char');
$oCriteria = $this->getDynaformsCriteria($sProcessUID);
$oCriteria->add(DynaformPeer::DYN_TYPE, 'XMLFORM');
$oDataset = DynaformPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
while ($aRow = $oDataset->getRow()) {
$aRow ['DYN_TITLE'] = (isset($aRow ['DYN_TITLE'])) ? $aRow ['DYN_TITLE'] : '';
$aAllObjects [] = array('UID' => 'DYNAFORM|' . $aRow ['DYN_UID'],
'LABEL' => $aRow ['DYN_TITLE'] . ' (' . G::LoadTranslation('ID_DYNAFORM') . ')');
$aAllDynaforms [] = array('UID' => $aRow ['DYN_UID'],
'LABEL' => $aRow ['DYN_TITLE']);
$oDataset->next();
}
G::LoadClass('ArrayPeer');
$oDataset = ArrayBasePeer::doSelectRS($this->getInputDocumentsCriteria($sProcessUID));
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
while ($aRow = $oDataset->getRow()) {
$aAllObjects [] = array('UID' => 'INPUT_DOCUMENT|' . $aRow ['INP_DOC_UID'],
'LABEL' => $aRow ['INP_DOC_TITLE'] . ' (' . G::LoadTranslation('ID_INPUT_DOCUMENT') . ')');
$aAllInputs [] = array('UID' => $aRow ['INP_DOC_UID'],
'LABEL' => $aRow ['INP_DOC_TITLE']);
$oDataset->next();
}
G::LoadClass('ArrayPeer');
$oDataset = ArrayBasePeer::doSelectRS($this->getOutputDocumentsCriteria($sProcessUID));
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
while ($aRow = $oDataset->getRow()) {
$aAllObjects [] = array('UID' => 'OUTPUT_DOCUMENT|' . $aRow ['OUT_DOC_UID'], 'LABEL' => $aRow ['OUT_DOC_TITLE'] . ' (' . G::LoadTranslation('ID_OUTPUT_DOCUMENT') . ')');
$aAllOutputs [] = array('UID' => $aRow ['OUT_DOC_UID'], 'LABEL' => $aRow ['OUT_DOC_TITLE']);
$oDataset->next();
}
global $_DBArray;
$_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : '');
$_DBArray ['usersGroups'] = $aUsersGroups;
$_DBArray ['allObjects'] = $aAllObjects;
$_DBArray ['allDynaforms'] = $aAllDynaforms;
$_DBArray ['allInputs'] = $aAllInputs;
$_DBArray ['allOutputs'] = $aAllOutputs;
$_SESSION ['_DBArray'] = $_DBArray;
return($_SESSION['_DBArray']);
}
}

View File

@@ -0,0 +1,19 @@
<?php
G::LoadClass('processMap');
$oProcessMap = new processMap(new DBConnection);
if ( isset($_GET['pid'] ) && !isset($_GET ['t']))
{
$rows = $oProcessMap->getExtObjectsPermissions($_GET['pid']);
}
if ( isset($_GET['pid'] )&& isset($_GET['t']) )
{
$rows = $oProcessMap->newExtObjectPermission($_GET['pid']);
}
$result['totalCount'] = count($rows);
$result['data'] = $rows;
print json_encode($result);
?>

View File

@@ -322,7 +322,367 @@ ProcessMapContext.prototype.delLines= function()
ProcessMapContext.prototype.processPermission= function()
{
Ext.MessageBox.alert('Status','Process Permission');
var pro_uid = workflow.getUrlVars();
//Database store code starts here
var dbConnFields = Ext.data.Record.create([
{ name: 'OP_UID',type: 'string'},
{ name: 'TASK_TARGET',type: 'string'},
{ name: 'GROUP_USER',type: 'string'},
{ name: 'TASK_SOURCE',type: 'string'},
{ name: 'PARTICIPATED',type: 'string'},
{ name: 'OBJECT_TYPE',type: 'string'},
{ name: 'OBJECT',type: 'string'},
{ name: 'ACTION',type: 'string'},
{ name: 'OP_CASE_STATUS',type: 'string'}
]);
var PermissionStore = new Ext.data.JsonStore({
root : 'data',
totalProperty: 'totalCount',
idProperty : 'gridIndex',
remoteSort : true,
fields : dbConnFields,
proxy: new Ext.data.HttpProxy({
url: 'proxyObjectPermissions.php?pid='+pro_uid
})
});
PermissionStore.load();
var PermissionGridColumn = new Ext.grid.ColumnModel({
columns: [
new Ext.grid.RowNumberer(),
{
id: 'TASK_TARGET',
header: 'Target Task',
dataIndex: 'TASK_TARGET',
//width: 100,
editable: false,
sortable: true,
editor: new Ext.form.TextField({
//allowBlank: false
})
},{
id: 'GROUP_USER',
header: 'Group or Users',
dataIndex: 'GROUP_USER',
//width: 100,
sortable: true,
editor: new Ext.form.TextField({
//allowBlank: false
})
},{
id: 'TASK_SOURCE',
header: 'Origin Task',
dataIndex: 'TASK_SOURCE',
//width: 100,
sortable: true,
editor: new Ext.form.TextField({
//allowBlank: false
})
},{
id: 'PARTICIPATED',
header: 'Participation',
dataIndex: 'PARTICIPATED',
width: 100,
sortable: true,
editor: new Ext.form.TextField({
//allowBlank: false
})
},{
id: 'OBJECT_TYPE',
header: 'Type',
dataIndex: 'OBJECT_TYPE',
//width: 100,
editable: false,
sortable: true,
editor: new Ext.form.TextField({
//allowBlank: false
})
},{
id: 'OBJECT',
header: 'Object',
dataIndex: 'OBJECT',
//width: 100,
sortable: true,
editor: new Ext.form.TextField({
//allowBlank: false
})
},{
id: 'ACTION',
header: 'Permission',
dataIndex: 'ACTION',
//width: 100,
sortable: true,
editor: new Ext.form.TextField({
//allowBlank: false
})
},{
id: 'OP_CASE_STATUS',
header: 'Status',
dataIndex: 'OP_CASE_STATUS',
width: 100,
sortable: true,
editor: new Ext.form.TextField({
//allowBlank: false
})
}
]
});
var PermissionGrid = new Ext.grid.GridPanel({
store: PermissionStore,
id : 'mygrid',
loadMask: true,
loadingText: 'Loading...',
renderTo: 'cases-grid',
frame: false,
autoHeight:false,
clicksToEdit: 1,
width:450,
minHeight:400,
height :400,
layout: 'fit',
cm: PermissionGridColumn,
stripeRows: true,
//tbar: tb,
viewConfig: {forceFit: true}
});
var gridWindow = new Ext.Window({
title: 'Process Permissions',
collapsible: false,
maximizable: true,
width: 600,
//autoHeight: true,
height: 450,
layout: 'fit',
plain: true,
bodyStyle: 'padding:5px;',
buttonAlign: 'center',
items: PermissionGrid
});
var btnNew = new Ext.Button({
id: 'btnNew',
text: 'New',
iconCls: 'application_add',
handler: function () {
formWindow.show();
}
})
var PermissionForm =new Ext.FormPanel({
// title:"Add new Database Source",
collapsible: false,
maximizable: true,
width:450,
frame:true,
plain: true,
bodyStyle: 'padding:5px;',
buttonAlign: 'center',
items:[{
width :150,
xtype :'combo',
mode :'local',
editable :false,
fieldLabel :'Status Case',
triggerAction :'all',
forceSelection : true,
name :'OP_CASE_STATUS',
displayField :'name',
value :'ALL',
valueField :'value',
store :new Ext.data.JsonStore({
fields : ['name', 'value'],
data : [
{name : 'ALL', value: '0'},
{name : 'DRAFTS', value: '1'},
{name : 'TO DO', value: '2'},
{name : 'PAUSED', value: '3'},
{name : 'COMPLETED', value: '4'}]})
},{
width :150,
xtype :'combo',
mode :'local',
editable :false,
fieldLabel :'Target Task',
triggerAction :'all',
forceSelection : true,
name :'TASK_TARGET',
displayField :'name',
value :'All Tasks',
valueField :'value',
store :new Ext.data.JsonStore({
fields : ['name', 'value'],
data : [
{name : 'All tasks', value: '0'},
{name : 'Apply for leave', value: '1'},
{name : 'HR approval', value: '2'},
{name : 'Supervisor Approval', value: '3'}]})
},{
width :150,
xtype :'combo',
mode :'local',
editable :false,
fieldLabel :'Group or Users',
triggerAction :'all',
forceSelection : true,
name :'GROUP_USER',
displayField :'name',
value :'Administrator(Admin)',
valueField :'value',
store :new Ext.data.JsonStore({
fields : ['name', 'value'],
data : [
{name : 'Administrator(Admin)', value: '0'}]})
},{
width :150,
xtype :'combo',
mode :'local',
editable :false,
fieldLabel :'Origin Task',
triggerAction :'all',
forceSelection : true,
name :'TASK_SOURCE',
displayField :'name',
value :'All Tasks',
valueField :'value',
store :new Ext.data.JsonStore({
fields : ['name', 'value'],
data : [
{name : 'All tasks', value: '0'},
{name : 'Apply for leave', value: '1'},
{name : 'HR approval', value: '2'},
{name : 'Supervisor Approval', value: '3'}]})
},{
width :150,
xtype :'combo',
mode :'local',
editable :false,
fieldLabel :'Participation Required?',
triggerAction :'all',
forceSelection : true,
name :'PARTICIPATED',
displayField :'name',
value :'Yes',
valueField :'value',
store :new Ext.data.JsonStore({
fields : ['name', 'value'],
data : [
{name : 'Yes', value: '0'},
{name : 'No', value: '1'}]})
},{
width :150,
xtype :'combo',
mode :'local',
editable :false,
fieldLabel :'Type',
triggerAction :'all',
forceSelection : true,
name :'OBJECT_TYPE',
displayField :'name',
value :'All',
valueField :'value',
store :new Ext.data.JsonStore({
fields : ['name', 'value'],
data : [
{name : 'All', value: '0'},
{name : 'Dynaform', value: '1'},
{name : 'Input Document', value: '2'},
{name : 'Output Document', value: '3'}]})
},{
width :150,
xtype :'combo',
mode :'local',
editable :false,
fieldLabel :'Permission',
triggerAction :'all',
forceSelection : true,
name :'ACTION',
displayField :'name',
value :'View',
valueField :'value',
store :new Ext.data.JsonStore({
fields : ['name', 'value'],
data : [
{name : 'View', value: '0'},
{name : 'Block', value: '1'}]})
}
]
})
var formStore = new Ext.data.JsonStore({
root : 'data',
totalProperty: 'totalCount',
idProperty : 'gridIndex',
remoteSort : true,
fields : dbConnFields,
proxy: new Ext.data.HttpProxy({
url: 'proxyObjectPermissions.php?pid='+pro_uid+'&t=1'
})
});
formStore.load();
var formWindow = new Ext.Window({
title: 'New specific Permission',
collapsible: false,
maximizable: true,
width: 450,
//autoHeight: true,
height: 400,
//layout: 'fit',
plain: true,
bodyStyle: 'padding:5px;',
buttonAlign: 'center',
items: PermissionForm,
buttons: [{
text: 'Create',
handler: function(){
var getForm = PermissionForm.getForm().getValues();
var Status = getForm.OP_CASE_STATUS;
var TargetTask = getForm.TASK_TARGET;
var GroupUser = getForm.GROUP_USER;
var OriginTask = getForm.TASK_SOURCE;
var Participation = getForm.PARTICIPATED;
var Type = getForm.OBJECT_TYPE;
var Permission = getForm.ACTION;
Ext.Ajax.request({
url : '../bpmn/processes_Ajax.php',
method: 'POST',
params:{
type :Type,
2625 :Server,
db_name :DatabaseName,
user :Username ,
passwd :Password,
port :Port,
desc :Description,
action :'newObjectPermission'
},
success: function(response) {
Ext.MessageBox.alert ('Status','Connection Saved Successfully.');
}
});
//var getData = getstore.data.items;
//taskExtObj.saveTaskUsers(getData);
formWindow.close();
dbStore.reload();
}
},{
text: 'Cancel',
handler: function(){
// when this button clicked,
formWindow.close();
}
}]
});
gridWindow.show();
}
ProcessMapContext.prototype.processSupervisors= function()
@@ -1041,4 +1401,4 @@ ProcessMapContext.prototype.processFileManager= function()
}]
});
window.show();
}
}