diff --git a/workflow/engine/classes/model/Users.php b/workflow/engine/classes/model/Users.php index d1639df03..9c43736ce 100644 --- a/workflow/engine/classes/model/Users.php +++ b/workflow/engine/classes/model/Users.php @@ -224,6 +224,22 @@ class Users extends BaseUsers { throw $oException; } } + function getAvailableUsersCriteria($sGroupUID = '') + { + try { + + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(UsersPeer::USR_UID); + $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); + $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); + $oCriteria->add(UsersPeer::USR_STATUS, 'ACTIVE'); + + return $oCriteria; + } + catch (exception $oError) { + throw ($oError); + } + } } // Users ?> diff --git a/workflow/engine/methods/roles/roles_AddUser.php b/workflow/engine/methods/roles/roles_AddUser.php new file mode 100755 index 000000000..bfd4bc612 --- /dev/null +++ b/workflow/engine/methods/roles/roles_AddUser.php @@ -0,0 +1,34 @@ +. + * + * For more information, contact Colosa Inc, 2566 Le Jeune Rd., + * Coral Gables, FL, 33134, USA, or email info@colosa.com. + * + */ + + $G_PUBLISH = new Publisher; + + require_once 'classes/model/Users.php'; + $oUser = new Users(); + $aData = Array('ROL_UID'=>$_GET['ROL_UID']); + $G_PUBLISH->AddContent('propeltable', 'roles/paged-table', 'roles/roles_ListUsers', $oUser->getAvailableUsersCriteria($_GET['ROL_UID']),$aData); + + G::RenderPage('publish', 'raw'); +die; diff --git a/workflow/engine/methods/roles/roles_Ajax.php b/workflow/engine/methods/roles/roles_Ajax.php index 4c4cd8a2b..883e86e32 100644 --- a/workflow/engine/methods/roles/roles_Ajax.php +++ b/workflow/engine/methods/roles/roles_Ajax.php @@ -156,16 +156,20 @@ switch ($REQUEST) { break; case 'assignUserToRole': - $USR_UID = $_POST['USR_UID']; - $ROL_UID = $_POST['ROL_UID']; - $sData['USR_UID'] = $USR_UID; - $sData['ROL_UID'] = $ROL_UID; - $RBAC->assignUserToRole($sData); + + $ROL_UID = $_POST['ROL_UID']; + $aUserIuds = explode(",",$_POST['aUsers']); + foreach($aUserIuds as $key=>$val){ + $sData['USR_UID'] = $val; + $sData['ROL_UID'] = $ROL_UID; + $RBAC->assignUserToRole($sData); + } + $_GET['ROL_UID'] = $ROL_UID; - $G_PUBLISH = new Publisher; - $G_PUBLISH->AddContent('view', 'roles/roles_Tree' ); - G::RenderPage('publish', 'raw'); + $G_PUBLISH = new Publisher; + $G_PUBLISH->AddContent('view', 'roles/roles_Tree' ); + G::RenderPage('publish', 'raw'); break; case 'assignPermissionToRole': diff --git a/workflow/engine/templates/roles/roles_Tree.php b/workflow/engine/templates/roles/roles_Tree.php index 091992ddb..a71498919 100644 --- a/workflow/engine/templates/roles/roles_Tree.php +++ b/workflow/engine/templates/roles/roles_Tree.php @@ -51,7 +51,7 @@
- '; + '; $tree->showSign = false; diff --git a/workflow/engine/xmlform/roles/roles_ListUsers.xml b/workflow/engine/xmlform/roles/roles_ListUsers.xml new file mode 100755 index 000000000..c77731f0f --- /dev/null +++ b/workflow/engine/xmlform/roles/roles_ListUsers.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + Firstname + + + + Lastname + + + + + + +function pagedTableFilter( form ) { + @#PAGED_TABLE_ID.doFilter( form ); +} + + + diff --git a/workflow/engine/xmlform/roles/roles_Options.xml b/workflow/engine/xmlform/roles/roles_Options.xml index bf4ea7c12..208b579b7 100644 --- a/workflow/engine/xmlform/roles/roles_Options.xml +++ b/workflow/engine/xmlform/roles/roles_Options.xml @@ -17,6 +17,7 @@ PROCESS_REQUEST_FILE = '../roles/roles_Ajax'; +PROCESS_REQUEST_FILE_USER = '../roles/roles_AddUser'; function newRol() { popupWindow('', '../roles/roles_Ajax?request=newRole', 350, 225); @@ -182,10 +183,11 @@ function deleteRole(ROL_UID) { ajax.send(uri); }; + function usersIntoRole(ROL_UID) { var uri = 'request=usersIntoRole&ROL_UID='+ROL_UID; - popupWindow('', '../roles/roles_Ajax?'+uri, 500, 450); + myRoleWindow = popupWindow('', '../roles/roles_Ajax?'+uri, 500, 450); } function deleteUserRole(ROL_UID, USR_UID){ @@ -208,8 +210,29 @@ function deleteUserRole(ROL_UID, USR_UID){ function showUsers(ROL_UID) { +oPanel = new leimnud.module.panel(); + oPanel.options = { + size :{w:400,h:512}, + position:{x:0,y:0,center:true}, + title : 'Roles', + theme :"processmaker", + statusBar:false, + control :{resize:false,roll:false,drag:true}, + fx :{modal:true,opacity:true,blinkToFront:false,fadeIn:false,drag:true} + }; + oPanel.events = { + remove: function() { + delete(oPanel); + resetChecks(); + }.extend(this) + }; + oPanel.make(); + oPanel.loader.show(); + currentPopupWindow = oPanel; + + var oRPC = new leimnud.module.rpc.xmlhttp({ - url : PROCESS_REQUEST_FILE, + url : PROCESS_REQUEST_FILE_USER, async : false, method: 'POST', args : 'request=showUsers&ROL_UID=' + ROL_UID @@ -218,11 +241,63 @@ function showUsers(ROL_UID) currentPopupWindow.clearContent(); currentPopupWindow.addContent(oRPC.xmlhttp.responseText); } +var checks_selected_Rolid = new Array(); +function showUsersLoad( ROL_UID ){ + currentPopupWindow.remove(); + oPanel = new leimnud.module.panel(); + oPanel.options = { + size :{w:500,h:512}, + position:{x:0,y:0,center:true}, + title : 'Roles', + theme :"processmaker", + statusBar:false, + control :{resize:false,roll:false,drag:true}, + fx :{modal:true,opacity:true,blinkToFront:false,fadeIn:false,drag:true} + }; + oPanel.events = { + remove: function() { + delete(oPanel); + resetChecks(); + }.extend(this) + }; + oPanel.make(); + oPanel.loader.show(); + currentPopupWindow = oPanel; + var oRPC = new leimnud.module.rpc.xmlhttp({ + url : '../roles/roles_AddUser?ROL_UID='+ROL_UID, + args: '' + }); + //currentPopupWindow.clearContent(); + //currentPopupWindow.addContent(oRPC.xmlhttp.responseText); + checks_selected_Rolid.push(ROL_UID); + oRPC.callback = function(rpc) { + oPanel.loader.hide(); + var scs=rpc.xmlhttp.responseText.extractScript(); + oPanel.addContent(rpc.xmlhttp.responseText); + scs.evalScript(); + var inputs = document.getElementsByTagName("input"); + for(i=0; i1){ + rolUid = checks_selected_Rolid[1]; + }else{ + rolUid = checks_selected_Rolid; + } + + if( checks_selected_ids.length == 0 ){ + new leimnud.module.app.alert().make({label: G_STRINGS.ID_MSG_GROUPS_ADDCONFIRM}); + return 0; + } + var oRPC = new leimnud.module.rpc.xmlhttp({ + url : PROCESS_REQUEST_FILE, + async : false, + method: 'POST', + args : 'request=assignUserToRole&ROL_UID=' + rolUid + '&aUsers=' + checks_selected_ids + }); + resetChecks(); + oRPC.make(); + currentPopupWindow.remove(); + + usersIntoRole(rolUid); +} + +function resetChecks(){ + checks_selected_ids.length = 0; +} ]]> - \ No newline at end of file + diff --git a/workflow/engine/xmlform/roles/roles_userSearch.xml b/workflow/engine/xmlform/roles/roles_userSearch.xml new file mode 100755 index 000000000..5c43145c9 --- /dev/null +++ b/workflow/engine/xmlform/roles/roles_userSearch.xml @@ -0,0 +1,9 @@ + + + + + + + \ No newline at end of file