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