Departments Manager Ext JS Migration Complete

This commit is contained in:
Enrique Ponce de Leon
2011-02-11 14:23:15 +00:00
parent 002578ad06
commit 111fcec9f5
9 changed files with 1214 additions and 307 deletions

View File

@@ -670,6 +670,19 @@ class RBAC
return $this->rolesObj->getAllUsersByRole();
}
/**
* this function gets the number of users by department
*
*
* @access public
* @author: Enrique Ponce de Leon <enrique@colosa.com>
*
* @return $this->rolesObj->getAllUsersByRole
*/
function getAllUsersByDepartment(){
return $this->rolesObj->getAllUsersByDepartment();
}
/**
* this function gets roles code
*

View File

@@ -359,6 +359,23 @@ class Roles extends BaseRoles {
return $aRoles;
}
//Added by Enrique at Feb 10th, 2011
//Gets number of users by department
function getAllUsersByDepartment(){
$oCriteria = new Criteria('rbac');
$oCriteria->addSelectColumn(UsersPeer::DEP_UID);
$oCriteria->addSelectColumn('COUNT(*) AS CNT');
$oCriteria->addGroupByColumn(UsersPeer::DEP_UID);
$oDataset = UsersPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$aDepts = array();
while ($oDataset->next()){
$row = $oDataset->getRow();
$aDepts[$row['DEP_UID']] = $row['CNT'];
}
return $aDepts;
}
function getRoleUsers($ROL_UID, $filter='') {
try {
$criteria = new Criteria();

View File

@@ -22,6 +22,8 @@
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
*
*/
G::LoadClass('configuration');
$c = new Configurations();
$access = $RBAC->userCanAccess('PM_USERS');
if( $access != 1 ){
@@ -52,311 +54,17 @@ if (($RBAC_Response=$RBAC->userCanAccess("PM_USERS"))!=1) return $RBAC_Response;
$G_ID_SUB_MENU_SELECTED = 'DEPARTMENTS';
$G_PUBLISH = new Publisher;
$oHeadPublisher =& headPublisher::getSingleton();
//$oHeadPublisher->addScriptFile('/jscore/departments/departments.js');
$G_PUBLISH->AddContent('view', 'departments/departments_Tree' );
$G_PUBLISH->AddContent('smarty', 'departments/departments_userList', '', '', array());
//$oHeadPublisher->usingExtJs('ux/Ext.ux.fileUploadField');
$oHeadPublisher->addExtJsScript('departments/departmentList', false); //adding a javascript file .js
$oHeadPublisher->addContent('departments/departmentList'); //adding a html file .html.
G::RenderPage( "publish-treeview",'blank' );
$departments_New = G::encryptlink('departments_New');
$departments_Edit = G::encryptlink('departments_Edit');
$departments_Delete = G::encryptlink('departments_Delete');
$departments_List = G::encryptlink('departments_List');
$departments_AddUser = G::encryptlink('departments_AddUser');
$departments_AddManager = G::encryptlink('departments_AddManager');
$subdep_Edit = G::encryptlink('subdep_Edit');
$subdep_Delete = G::encryptlink('subdep_Delete');
//$labels = G::getTranslations(Array('ID_DEPARTMENTS','ID_DELETE','ID_EDIT','ID_USERS','ID_ACTIVE','ID_INACTIVE','ID_SELECT_STATUS',
// 'ID_CLOSE','ID_SAVE','ID_DEPARTMENT_NAME','ID_STATUS'));
//
//$oHeadPublisher->assign('TRANSLATIONS', $labels);
$oHeadPublisher->assign('FORMATS',$c->getFormats());
G::RenderPage('publish', 'extJs');
?>
<script>
var oAux = document.getElementById("publisherContent[0]");
oAux.id = "publisherContent[666]";
var currentGroup=false;
function saveUserGroup(sUser) {
var oRPC = new leimnud.module.rpc.xmlhttp({
url : '../groups/groups_Ajax',
async : false,
method: 'POST',
args : 'action=assignUser&GRP_UID=' + currentGroup + '&USR_UID=' + sUser
});
oRPC.make();
currentPopupWindow.remove();
selectGroup(currentGroup);
}
function saveUsers(){
if( checks_selected_ids.length == 0 ){
new leimnud.module.app.alert().make({label: G_STRINGS.ID_MSG_GROUPS_ADDCONFIRM});
return 0;
}
//alert('action=assignAllUsers&DEP_UID=' + currentGroup + '&aUsers=' + checks_selected_ids);return;
var oRPC = new leimnud.module.rpc.xmlhttp({
url : '../departments/departments_Ajax',
async : false,
method: 'POST',
args : 'action=assignAllUsers&DEP_UID=' + currentGroup + '&aUsers=' + checks_selected_ids
});
resetChecks();
oRPC.make();
currentPopupWindow.remove();
selectDpto(currentGroup);
}
function resetChecks(){
checks_selected_ids.length = 0;
}
function selectDpto( uid ){
currentGroup = uid;
var oRPC = new leimnud.module.rpc.xmlhttp({
url : 'departments_Ajax',
args : 'action=showUsers&sDptoUID=' + uid
});
oRPC.callback = function(rpc) {
var scs = rpc.xmlhttp.responseText.extractScript();
document.getElementById('spanUsersList').innerHTML = rpc.xmlhttp.responseText;
scs.evalScript();
}.extend(this);
oRPC.make();
}
function addDepto() {
popupWindow('' , '<?=$departments_New?>' , 500 , 200 );
}
function addSubDepto(depUid){
popupWindow('' , '<?= $departments_New ?>?DEP_UID=' + encodeURIComponent( depUid ) , 500 , 200 );
}
function deleteDpto( uid ){
new leimnud.module.app.confirm().make({
label:"<?=G::LoadTranslation('ID_MSG_CONFIRM_DELETE_DEPARTMENT')?>",
action:function()
{
ajax_function('<?=$departments_Delete?>', 'empty', 'DEP_UID='+uid, "POST" );
refreshTree();
document.getElementById('spanUsersList').innerHTML = '';
}.extend(this)
});
}
function addUserDpto( uid ) {
oPanel = new leimnud.module.panel();
oPanel.options = {
size :{w:400,h:512},
position:{x:0,y:0,center:true},
title : 'Add users to department ' + groupname,
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 : '<?=$departments_AddUser?>?UID='+uid,
args: ''
});
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; i<inputs.length; i++){
if( inputs[i].type == "checkbox" ){
try{
inputs[i].onclick = function(){
if(this.checked){
checks_selected_ids.push(this.value);
} else {
checks_selected_ids.deleteByValue(this.value);
}
};
}catch(e){alert(e)}
}
}
}.extend(this);
oRPC.make();
}
function addDepManager(suid, sDepParent){
var k = new leimnud.module.rpc.xmlhttp({
url : '../departments/departments_Ajax',
async : true,
method: 'POST',
args : 'action=getDepManager&sDptoUID=' + suid
});
k.callback = function(rpc){
if(rpc.xmlhttp.responseText>0){
msgBox("this department has its manager","alert");return false;
}else{
popupWindow('' , '<?=$departments_AddManager?>?SUID=' + encodeURIComponent( suid )+'&SDEPPARENT=' + encodeURIComponent( sDepParent )+ '+&nobug' , 500 , 200 );
}
}.extend(this);
k.make();
}
function savedepto( form ) {
var actionform='departments_Save';
ajax_post( actionform, form, 'POST' );
currentPopupWindow.remove();
refreshTree();
}
function savedeptomain( form ) {//alert(form.action);return;
var formAction ='departments_Save';
ajax_post( formAction, form, 'POST' );
selectDpto(getField('DEP_UID').value);
refreshTree();
}
function savedeptoManager( form ) {
var oRPC = new leimnud.module.rpc.xmlhttp({
url : '../departments/departments_Ajax',
async : false,
method: 'POST',
args : 'action=assignAllUsers&DEP_UID=' + getField('DEP_UID').value + '&aUsers=' + getField('DEP_MANAGER').value
});
//resetChecks();
oRPC.make();
ajax_post( form.action, form, 'POST' );
currentPopupWindow.remove();
//refreshTree();
selectDpto(getField('DEP_UID').value);
}
function savesubdepto( form ) {
ajax_post( form.action, form, 'POST' );
currentPopupWindow.remove();
refreshSubTree();
}
function AddUnassignedUser( uid ){//alert(uid);
var oRPC = new leimnud.module.rpc.xmlhttp({
url : 'departments_Ajax',
args : 'action=showUnAssignedUsers&UID=' + uid
});
oRPC.callback = function(rpc) {
var scs = rpc.xmlhttp.responseText.extractScript();
document.getElementById('spanUsersList').innerHTML = rpc.xmlhttp.responseText;
scs.evalScript();
}.extend(this);
oRPC.make();
}
function sselectDpto( suid, sDepParent ) {
currentGroup = suid;
var oRPC = new leimnud.module.rpc.xmlhttp({
url : 'departments_Ajax',
args : 'action=subshowUsers&sDptoUID=' + suid +'&sDepParent=' + sDepParent
});
oRPC.callback = function(rpc) {
var scs = rpc.xmlhttp.responseText.extractScript();
document.getElementById('spanUsersList').innerHTML = rpc.xmlhttp.responseText;
scs.evalScript();
}.extend(this);
oRPC.make();
}
function sdeleteDpto( suid, sDepParent ){
new leimnud.module.app.confirm().make({
label:"<?=G::LoadTranslation('ID_MSG_CONFIRM_DELETE_DEPARTMENT')?>",
action:function()
{
ajax_function('<?=$subdep_Delete?>', 'asdxxx', 'DEP_UID=' +suid+ '&DEP_PARENT=' +sDepParent, "POST" );
refreshTree();
document.getElementById('spanUsersList').innerHTML = '';
}.extend(this)
});
}
function refreshTree(){
tree.refresh( document.getElementById("publisherContent[666]") , '<?=$departments_List?>');
}
function refreshSubTree(){
tree.refresh( document.getElementById("publisherContent[666]") , '<?=$departments_List?>');
}
var removeUserFromDepartment = function(sDpto, sUser)
{
new leimnud.module.app.confirm().make({
label:"<?=G::LoadTranslation('ID_MSG_CONFIRM_REMOVE_USER')?>",
action:function()
{
var oRPC = new leimnud.module.rpc.xmlhttp({
url : '../departments/departments_Ajax',
async : false,
method: 'POST',
args : 'action=removeUserFromDepartment&DEP_UID=' + sDpto + '&USR_UID=' + sUser
});
oRPC.make();
currentDept = sDpto;
selectDpto(currentDept);
}.extend(this)
});
};
var removeUserManager = function(sDpto, sUser)
{
new leimnud.module.app.confirm().make({
label:"<?=G::LoadTranslation('ID_MSG_CONFIRM_REMOVE_USER')?>",
action:function()
{
var oRPC = new leimnud.module.rpc.xmlhttp({
url : '../departments/departments_Ajax',
async : false,
method: 'POST',
args : 'action=removeUserManager&DEP_UID=' + sDpto + '&USR_UID=' + sUser
});
oRPC.make();
currentGroup = sDpto;
selectDpto(currentGroup);
}.extend(this)
});
};
function DeleteManager(suid, sDepParent){
var k = new leimnud.module.rpc.xmlhttp({
url : '../departments/departments_Ajax',
async : true,
method: 'POST',
args : 'action=getDepManageruid&sDptoUID=' + suid
});
k.callback = function(rpc){
sUser= rpc.xmlhttp.responseText;
if(rpc.xmlhttp.responseText!=''){
removeUserManager(suid, sUser);
}else{
msgBox("this department doesn't has its manager","alert");return false;
}
}.extend(this);
k.make();
}
</script>

View File

@@ -22,6 +22,47 @@
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
*
*/
function LookForChildren($parent, $level,$aDepUsers){
G::LoadClass('configuration');
$conf = new Configurations();
$oDept = new Department();
$allDepartments = $oDept->getDepartments ( $parent );
$level++;
$rows = Array();
foreach($allDepartments as $department){
unset($depto);
$depto['DEP_TITLE'] = $department['DEP_TITLE'];
$depto['DEP_STATUS'] = $department['DEP_STATUS'];
if ($department['DEP_MANAGER_USERNAME']!=''){
$depto['DEP_MANAGER_NAME'] = $conf->usersNameFormat($department['DEP_MANAGER_USERNAME'], $department['DEP_MANAGER_FIRSTNAME'], $department['DEP_MANAGER_LASTNAME']);
}else{
$depto['DEP_MANAGER_NAME'] = '';
}
$depto['DEP_TOTAL_USERS'] = isset($aDepUsers[$department['DEP_UID']])? $aDepUsers[$department['DEP_UID']] : 0;
$depto['DEP_UID'] = $department['DEP_UID'];
$depto['DEP_MANAGER'] = $department['DEP_MANAGER'];
$depto['DEP_PARENT'] = $department['DEP_PARENT'];
if ($department['HAS_CHILDREN'] > 0){
$depto['children'] = LookForChildren($department['DEP_UID'], $level, $aDepUsers);
$depto['iconCls'] = 'ss_sprite ss_chart_organisation';
$depto['expanded'] = true;
}else{
$depto['leaf'] = true;
if ($level==1){
$depto['iconCls'] = 'ss_sprite ss_chart_organisation';
}else{
$depto['iconCls'] = 'ss_sprite ss_plugin';
}
}
$rows[] = $depto;
}
return $rows;
}
if (($RBAC_Response=$RBAC->userCanAccess("PM_USERS"))!=1) return $RBAC_Response;
G::LoadInclude('ajax');
$_POST['action'] = get_ajax_value('action');
@@ -110,5 +151,210 @@ switch ($_POST['action'])
G::RenderPage('publish', 'raw');
break;
case 'departmentList':
global $RBAC;
$aDEPTS = $RBAC->getAllUsersByDepartment();
$tree_depart = LookForChildren('', 0,$aDEPTS);
echo G::json_encode($tree_depart);
break;
case 'checkDepartmentName':
$parent = $_REQUEST['parent'];
$dep_name = $_REQUEST['name'];
$oCriteria = new Criteria('workflow');
$oCriteria->clearSelectColumns();
$oCriteria->addSelectColumn( ContentPeer::CON_CATEGORY );
$oCriteria->addSelectColumn( ContentPeer::CON_VALUE );
$oCriteria->addSelectColumn(DepartmentPeer::DEP_PARENT);
$oCriteria->add(ContentPeer::CON_CATEGORY, 'DEPO_TITLE');
$oCriteria->addJoin(ContentPeer::CON_ID, DepartmentPeer::DEP_UID, Criteria::LEFT_JOIN);
$oCriteria->add(ContentPeer::CON_VALUE, $dep_name);
$oCriteria->add(ContentPeer::CON_LANG, SYS_LANG );
$oCriteria->add(DepartmentPeer::DEP_PARENT,$parent);
$oDataset = DepartmentPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
$aRow = $oDataset->getRow();
echo (!$aRow) ? 'true' : 'false';
break;
case 'checkEditDepartmentName':
$parent = $_REQUEST['parent'];
$dep_name = $_REQUEST['name'];
$dep_uid = $_REQUEST['uid'];
$oCriteria = new Criteria('workflow');
$oCriteria->clearSelectColumns();
$oCriteria->addSelectColumn( ContentPeer::CON_CATEGORY );
$oCriteria->addSelectColumn( ContentPeer::CON_VALUE );
$oCriteria->addSelectColumn(DepartmentPeer::DEP_PARENT);
$oCriteria->add(ContentPeer::CON_CATEGORY, 'DEPO_TITLE');
$oCriteria->addJoin(ContentPeer::CON_ID, DepartmentPeer::DEP_UID, Criteria::LEFT_JOIN);
$oCriteria->add(ContentPeer::CON_VALUE, $dep_name);
$oCriteria->add(DepartmentPeer::DEP_UID,$dep_uid,Criteria::NOT_EQUAL);
$oCriteria->add(ContentPeer::CON_LANG, SYS_LANG );
$oCriteria->add(DepartmentPeer::DEP_PARENT,$parent);
$oDataset = DepartmentPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
$aRow = $oDataset->getRow();
echo (!$aRow) ? 'true' : 'false';
break;
case 'saveDepartment':
$parent = $_REQUEST['parent'];
$dep_name = $_REQUEST['name'];
$newDepartment['DEP_PARENT'] = $parent;
$newDepartment['DEP_TITLE'] = $dep_name;
$oDept = new Department();
$oDept->create($newDepartment);
echo '{success: true}';
break;
case 'usersByDepartment':
G::LoadClass ( 'configuration' );
$sDepUid = $_REQUEST['DEP_UID'];
$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->addSelectColumn(UsersPeer::USR_REPORTS_TO);
$oCriteria->add(UsersPeer::USR_STATUS, 'CLOSED', Criteria::NOT_EQUAL);
$oCriteria->add(UsersPeer::DEP_UID, $sDepUid);
$oDataset = DepartmentPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$rows = Array();
$conf = new Configurations();
while ($oDataset->next()){
$aRow = $oDataset->getRow();
$user['USR_UID'] = $aRow['USR_UID'];
$user['USR_VALUE'] = $conf->usersNameFormat($aRow['USR_USERNAME'], $aRow['USR_FIRSTNAME'], $aRow['USR_LASTNAME']);
$rows[] = $user;
}
echo '{users: '.G::json_encode($rows).'}';
break;
case 'updateDepartment':
try{
$dep_name = $_REQUEST['name'];
echo $dep_name;
$dep_uid = $_REQUEST['uid'];
$dep_manager = $_REQUEST['manager'];
$dep_status = $_REQUEST['status'];
$editDepartment['DEP_UID'] = $dep_uid;
$editDepartment['DEPO_TITLE'] = $dep_name;
$editDepartment['DEP_STATUS'] = $dep_status;
$editDepartment['DEP_MANAGER'] = $dep_manager;
$oDept = new Department();
$oDept->update($editDepartment);
$oDept->updateDepartmentManager($dep_uid);
echo '{success: true}';
}catch(exception $e){
echo '{success: false}';
}
break;
case 'canDeleteDepartment':
global $RBAC;
$aDEPTS = $RBAC->getAllUsersByDepartment();
if (isset($aDEPTS[$_POST['dep_uid']])){
echo '{success: false, users: '.$aDEPTS[$_POST['dep_uid']].'}';
}else{
echo '{success: true}';
}
break;
case 'deleteDepartment':
$DEP_UID = $_POST['DEP_UID'];
$oDept = new Department();
$oDept->remove($DEP_UID);
echo '{success: true}';
break;
case 'assignedUsers':
$filter = isset($_POST['textFilter']) ? $_POST['textFilter'] : '';
$dep_uid = $_REQUEST['dUID'];
$oCriteria = new Criteria('workflow');
$oCriteria->addSelectColumn(UsersPeer::USR_UID);
$oCriteria->addSelectColumn(UsersPeer::USR_USERNAME);
$oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME);
$oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME);
if ($filter!=''){
$oCriteria->add(
$oCriteria->getNewCriterion(UsersPeer::USR_USERNAME, '%'.$filter.'%',Criteria::LIKE)->addOr(
$oCriteria->getNewCriterion(UsersPeer::USR_FIRSTNAME, '%'.$filter.'%',Criteria::LIKE)->addOr(
$oCriteria->getNewCriterion(UsersPeer::USR_LASTNAME, '%'.$filter.'%',Criteria::LIKE)))
);
}
$oCriteria->add(UsersPeer::DEP_UID,$dep_uid);
$oDataset = UsersPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$aUsers = array();
while ($oDataset->next()){
$aUsers[] = $oDataset->getRow();
}
echo '{users:'.G::json_encode($aUsers).'}';
break;
case 'availableUsers':
$filter = isset($_POST['textFilter']) ? $_POST['textFilter'] : '';
$dep_uid = $_REQUEST['dUID'];
$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::DEP_UID,'');
$oCriteria->add(UsersPeer::USR_STATUS,'CLOSED',Criteria::NOT_EQUAL);
if ($filter!=''){
$oCriteria->add(
$oCriteria->getNewCriterion(UsersPeer::USR_USERNAME, '%'.$filter.'%',Criteria::LIKE)->addOr(
$oCriteria->getNewCriterion(UsersPeer::USR_FIRSTNAME, '%'.$filter.'%',Criteria::LIKE)->addOr(
$oCriteria->getNewCriterion(UsersPeer::USR_LASTNAME, '%'.$filter.'%',Criteria::LIKE)))
);
}
$oDataset = UsersPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$aUsers = array();
while ($oDataset->next()){
$aUsers[] = $oDataset->getRow();
}
echo '{users:'.G::json_encode($aUsers).'}';
break;
case 'assignDepartmentToUserMultiple':
$DEP_UID = $_REQUEST['DEP_UID'];
$uSERS = $_REQUEST['USR_UID'];
$aUsers = explode(',',$uSERS);
$dep = new Department();
$dep->Load($DEP_UID);
$dep_manager = $dep->getDepManager();
$manager = ($dep_manager=='')? true : false;
foreach ($aUsers as $USR_UID){
$dep->addUserToDepartment($DEP_UID, $USR_UID, $manager, false);
$manager = false;
}
$dep->updateDepartmentManager($DEP_UID);
break;
case 'deleteDepartmentToUserMultiple':
$DEP_UID = $_REQUEST['DEP_UID'];
$uSERS = $_REQUEST['USR_UID'];
$aUsers = explode(',',$uSERS);
$dep = new Department();
$dep->Load($DEP_UID);
$manager = $dep->getDepManager();
foreach ($aUsers as $USR_UID){
$dep->removeUserFromDepartment($DEP_UID, $USR_UID);
if ($USR_UID==$manager){
$editDepto['DEP_UID'] = $DEP_UID;
$editDepto['DEP_MANAGER'] = '';
$dep->update($editDepto);
$dep->updateDepartmentManager($DEP_UID);
}
}
break;
}

View File

@@ -0,0 +1,3 @@
<div style="padding: 15px">
<div id="list-panel"></div>
</div>

View File

@@ -0,0 +1,435 @@
/*
* @author: Qennix
* Jan 31th, 2011
*/
//Keyboard Events
new Ext.KeyMap(document, {
key: Ext.EventObject.F5,
fn: function(keycode, e) {
if (! e.ctrlKey) {
if (Ext.isIE) {
// IE6 doesn't allow cancellation of the F5 key, so trick it into
// thinking some other key was pressed (backspace in this case)
e.browserEvent.keyCode = 8;
}
e.stopEvent();
document.location = document.location;
}else{
Ext.Msg.alert('Refresh', 'You clicked: CTRL-F5');
}
}
}
//,
//{
// key: Ext.EventObject.DELETE,
// fn: function(k,e){
// var dep_node = Ext.getCmp('treePanel').getSelectionModel().getSelectedNode();
// //if (typeof dep_node != 'undefined')
// //if(dep_node.attributes.leaf){
// DeleteDepartmentAction();
// //}
// }
//}
);
var treePanel;
var rootNode;
Ext.onReady(function() {
Ext.QuickTips.init();
newButton = new Ext.Action({
text: _('ID_NEW_DEPARTMENT'),
iconCls: ' button_menu_ext ss_sprite ss_add',
handler: NewRootDepartment
});
newSubButton = new Ext.Action({
text: _('ID_NEW_SUB_DEPARTMENT'),
iconCls: ' button_menu_ext ss_sprite ss_add',
handler: NewSubDepartment,
disabled: true
});
editButton = new Ext.Action({
text: _('ID_EDIT'),
iconCls: 'button_menu_ext ss_sprite ss_pencil',
handler: EditDepartmentAction,
disabled: true
});
deleteButton = new Ext.Action({
text: _('ID_DELETE'),
iconCls: 'button_menu_ext ss_sprite ss_delete',
handler: DeleteDepartmentAction,
disabled: true
});
usersButton = new Ext.Action({
text: _('ID_USERS'),
iconCls: 'button_menu_ext ss_sprite ss_user_add',
handler: UsersButtonAction,
disabled: true
});
contextMenu = new Ext.menu.Menu({
items: [newSubButton,'-',editButton, deleteButton,'-',usersButton]
});
smodel = new Ext.tree.DefaultSelectionModel({
listeners:{
selectionchange: function(sm, node){
editButton.enable();
newSubButton.enable();
usersButton.enable();
if (!node){
deleteButton.disable();
}else{
if (node.attributes.leaf){
deleteButton.enable();
}else{
deleteButton.disable();
}
}
//var tree = Ext.getCmp('treePanel');
//alert(treePanel.getRootNode());
}
}
});
comboStatusStore = new Ext.data.SimpleStore({
fields: ['id','value'],
data: [['ACTIVE',_('ID_ACTIVE')],['INACTIVE',_('ID_INACTIVE')]]
});
comboDepManager = new Ext.data.GroupingStore( {
proxy : new Ext.data.HttpProxy({
url: 'departments_Ajax?action=usersByDepartment'
}),
reader : new Ext.data.JsonReader( {
root: 'users',
fields : [
{name : 'USR_UID'},
{name : 'USR_VALUE'}
]
})
});
newForm = new Ext.FormPanel({
url: 'departments_Ajax?request=saveNewDepartment',
frame: true,
items:[
{xtype: 'textfield', name: 'parent', hidden: true},
{xtype: 'textfield', fieldLabel: _('ID_DEPARTMENT_NAME'), name: 'dep_name', width: 230, allowBlank: false}
],
buttons: [
{text: _('ID_SAVE'), handler: SaveNewDepartment},
{text: _('ID_CANCEL'), handler: CloseWindow}
],
labelWidth: 120
});
editForm = new Ext.FormPanel({
url: 'departments_Ajax?request=saveEditDepartment',
frame: true,
items:[
{xtype: 'textfield', name: 'dep_uid', hidden: true},
{xtype: 'textfield', name: 'dep_parent', hidden: true},
{xtype: 'textfield', fieldLabel: _('ID_DEPARTMENT_NAME'), name: 'dep_name', width: 230, allowBlank: false},
{
xtype: 'combo',
fieldLabel: _('ID_STATUS'),
hiddenName: 'status',
typeAhead: true,
mode: 'local',
store: comboStatusStore,
displayField: 'value',
valueField:'id',
allowBlank: false,
triggerAction: 'all',
emptyText: _('ID_SELECT_STATUS'),
selectOnFocus:true
}
,
{
xtype: 'combo',
fieldLabel: 'Manager',
hiddenName: 'manager',
typeAhead: true,
mode: 'local',
store: comboDepManager,
displayField: 'USR_VALUE',
valueField:'USR_UID',
allowBlank: true,
triggerAction: 'all',
emptyText: '',
selectOnFocus:true
}
],
buttons: [
{text: _('ID_SAVE'), handler: SaveEditDepartment},
{text: _('ID_CANCEL'), handler: CloseWindow}
],
labelWidth: 120
});
rootNode = new Ext.tree.AsyncTreeNode({
text:'Departments'
});
treePanel = new Ext.ux.tree.TreeGrid({
title: _('ID_DEPARTMENTS'),
autoScroll: true,
width: 720,
height: 300,
id: 'treePanel',
columns:[{
header: _('ID_DEPARTMENT_NAME'),
dataIndex: 'DEP_TITLE',
width: 320
},{
header: _('ID_STATUS'),
width: 100,
dataIndex: 'DEP_STATUS',
align: 'center',
tpl: new Ext.XTemplate('{DEP_STATUS:this.formatStatus}', {
formatStatus: function(v) {
switch(v){
case 'ACTIVE': return '<font color="green">' + _('ID_ACTIVE') + '</font>'; break;
case 'INACTIVE': return '<font color="red">' + _('ID_INACTIVE') + '</font>'; break;
}
}
})
},{
header: _('ID_MANAGER'),
width: 220,
dataIndex: 'DEP_MANAGER_NAME'
},{
header: _('ID_USERS'),
width: 80,
dataIndex: 'DEP_TOTAL_USERS',
align: 'center',
sortType: 'asFloat'
}
],
selModel: smodel,
tbar: [newButton,'-',newSubButton,'-',editButton, deleteButton,'-',usersButton],
dataUrl:'departments_Ajax?action=departmentList',
root: rootNode
});
treePanel.on('contextmenu', treeContextHandler);
viewport = new Ext.Viewport({
layout: 'fit',
autoScroll: false,
items: [treePanel]
});
});
//Funtion Handles Context Menu Opening
treeContextHandler = function(node, evt){
node.select();
var coords = evt.getXY();
contextMenu.showAt([coords[0], coords[1]]);
};
//Do Nothing Function
DoNothing = function(){};
//Call New Department at Root
NewRootDepartment = function(){
newForm.getForm().findField('parent').setValue('');
w = new Ext.Window({
title: _('ID_NEW_DEPARTMENT'),
autoHeight: true,
modal: true,
closable: false,
width: 420,
items: [newForm]
});
w.show();
};
//Call New Sub Department at Parent
NewSubDepartment = function(){
var dep_node = Ext.getCmp('treePanel').getSelectionModel().getSelectedNode();
newForm.getForm().findField('parent').setValue(dep_node.attributes.DEP_UID);
w = new Ext.Window({
title: _('ID_NEW_SUB_DEPARTMENT'),
autoHeight: true,
modal: true,
closable: false,
width: 420,
items: [newForm]
});
w.show();
};
//Close PopUp Window
CloseWindow = function(){
w.hide();
};
SaveNewDepartment = function(){
var dep_node = Ext.getCmp('treePanel').getSelectionModel().getSelectedNode();
if (dep_node) dep_node.unselect();
var dep_name = newForm.getForm().findField('dep_name').getValue();
var dep_parent = newForm.getForm().findField('parent').getValue();
Ext.Ajax.request({
url: 'departments_Ajax',
params: {action: 'checkDepartmentName', name: dep_name, parent: dep_parent},
success: function(resp, opt){
var res_ok = eval(resp.responseText);
if (res_ok){
Ext.Ajax.request({
url: 'departments_Ajax',
params: {action: 'saveDepartment', name: dep_name, parent: dep_parent},
success: function(r,o){
var xtree = Ext.getCmp('treePanel');
treePanel.getLoader().load(rootNode);
newSubButton.disable();
editButton.disable();
deleteButton.disable();
usersButton.disable();
newForm.getForm().findField('dep_name').reset();
w.hide();
PMExt.notify(_('ID_DEPARTMENTS'), _('ID_DEPARTMENT_SUCCESS_NEW'));
},
failure: function(r,o){
DoNothing();
}
});
}else{
PMExt.error(_('ID_DEPARTMENTS'), _('ID_DEPARTMENT_EXISTS'));
}
},
failure: function(resp, opt){
DoNothing();
}
});
};
SaveEditDepartment = function(){
var dep_name = editForm.getForm().findField('dep_name').getValue();
var dep_parent = editForm.getForm().findField('dep_parent').getValue();
var dep_uid = editForm.getForm().findField('dep_uid').getValue();
var dep_status = editForm.getForm().findField('status').getValue();
var dep_manager = editForm.getForm().findField('manager').getValue();
var dep_node = Ext.getCmp('treePanel').getSelectionModel().getSelectedNode();
if (dep_node) dep_node.unselect();
Ext.Ajax.request({
url: 'departments_Ajax',
params: {action: 'checkEditDepartmentName', name: dep_name, parent: dep_parent, uid: dep_uid},
success: function(resp, opt){
var res_ok = eval(resp.responseText);
if (res_ok){
Ext.Ajax.request({
url: 'departments_Ajax',
params: {action: 'updateDepartment', uid: dep_uid, name: dep_name, status: dep_status, manager: dep_manager},
success: function(r,o){
var xtree = Ext.getCmp('treePanel');
xtree.getLoader().load(xtree.root);
newSubButton.disable();
editButton.disable();
deleteButton.disable();
usersButton.disable();
newForm.getForm().findField('dep_name').reset();
w.hide();
PMExt.notify(_('ID_DEPARTMENTS'), _('ID_DEPARTMENT_SUCCESS_UPDATE'));
},
failure: function(r,o){
DoNothing();
}
});
}else{
PMExt.error(_('ID_DEPARTMENTS'), _('ID_DEPARTMENT_EXISTS'));
}
},
failure: function(resp, opt){
DoNothing();
}
});
};
//Edit Department Action
EditDepartmentAction = function(){
var dep_node = Ext.getCmp('treePanel').getSelectionModel().getSelectedNode();
editForm.getForm().findField('dep_uid').setValue(dep_node.attributes.DEP_UID);
editForm.getForm().findField('dep_parent').setValue(dep_node.attributes.DEP_PARENT);
editForm.getForm().findField('dep_name').setValue(dep_node.attributes.DEP_TITLE);
editForm.getForm().findField('status').setValue(dep_node.attributes.DEP_STATUS);
editForm.getForm().findField('manager').getStore().addListener('load',function(s,r,o){
editForm.getForm().findField('manager').setValue(dep_node.attributes.DEP_MANAGER);
});
editForm.getForm().findField('manager').store.load({params: {DEP_UID: dep_node.attributes.DEP_UID }});
w = new Ext.Window({
title: _('ID_EDIT_DEPARTMENT'),
autoHeight: true,
modal: true,
closable: false,
width: 420,
items: [editForm]
});
w.show();
};
//Delete Department Action
DeleteDepartmentAction = function(){
var dep_node = Ext.getCmp('treePanel').getSelectionModel().getSelectedNode();
var DEP_UID = dep_node.attributes.DEP_UID;
if (dep_node) dep_node.unselect();
viewport.getEl().mask(_('ID_PROCESSING'));
Ext.Ajax.request({
url: 'departments_Ajax',
params: {action: 'canDeleteDepartment', dep_uid: DEP_UID },
success: function(r,o){
viewport.getEl().unmask();
var response = Ext.util.JSON.decode(r.responseText);
if (response.success){
Ext.Msg.confirm(_('ID_DEPARTMENTS'), _('ID_CONFIRM_DELETE_DEPARTMENT'),
function(btn, text){
if (btn=='yes'){
viewport.getEl().mask(_('ID_PROCESSING'));
Ext.Ajax.request({
url: 'departments_Ajax',
params: {action: 'deleteDepartment', DEP_UID: DEP_UID},
success: function(r,o){
viewport.getEl().unmask();
treePanel.getRootNode().reload();
newSubButton.disable();
editButton.disable();
deleteButton.disable();
usersButton.disable();
PMExt.notify(_('ID_DEPARTMENTS'), _('ID_DEPARTMENT_SUCCESS_DELETE'));
},
failure: function(r,o){
viewport.getEl().unmask();
}
});
}
});
}else{
PMExt.error(_('ID_DEPARTMENTS'),_('ID_MSG_CANNOT_DELETE_DEPARTMENT'));
}
},
failure: function(r,o){
viewport.getEl().unmask();
}
});
};
//User Assined Action
UsersButtonAction = function(){
var dep_node = Ext.getCmp('treePanel').getSelectionModel().getSelectedNode();
var DEP_UID = dep_node.attributes.DEP_UID;
location.href= 'departmentUsers?dUID=' + DEP_UID;
};

View File

@@ -0,0 +1,4 @@
<div style="padding: 15px">
<div id="list-panel"></div>
</div>

View File

@@ -0,0 +1,478 @@
/*
* @author: Qennix
* Feb 10th, 2011
*/
//Keyboard Events
new Ext.KeyMap(document, {
key: Ext.EventObject.F5,
fn: function(keycode, e) {
if (! e.ctrlKey) {
if (Ext.isIE) {
// IE6 doesn't allow cancellation of the F5 key, so trick it into
// thinking some other key was pressed (backspace in this case)
e.browserEvent.keyCode = 8;
}
e.stopEvent();
document.location = document.location;
}else{
Ext.Msg.alert('Refresh', 'You clicked: CTRL-F5');
}
}
});
var storeP;
var storeA;
var cmodelP;
var smodelA;
var smodelP;
var availableGrid;
var assignedGrid;
var GroupsPanel;
var AuthenticationPanel;
var northPanel;
var tabsPanel;
var viewport;
var assignButton;
var assignAllButton;
var removeButton;
var removeAllButton;
var backButton;
var discardChangesButton;
var saveChangesButton;
var sw_func_groups;
//var sw_func_reassign;
var sw_func_auth;
var sw_form_changed;
var sw_user_summary;
Ext.onReady(function(){
sw_func_groups = false;
//sw_func_reassign = false;
sw_func_auth = false;
sw_user_summary = false;
editMembersButton = new Ext.Action({
text: _('ID_EDIT_USERS'),
iconCls: 'button_menu_ext ss_sprite ss_user_add',
handler: EditMembersAction
});
cancelEditMembersButton = new Ext.Action({
text: _('ID_FINISH_EDITION'),
iconCls: 'button_menu_ext ss_sprite ss_cancel',
handler: CancelEditMembersAction,
hidden: true
});
backButton = new Ext.Action({
text : _('ID_BACK'),
iconCls: 'button_menu_ext ss_sprite ss_arrow_redo',
handler: BackToUsers
});
// saveChangesButton = new Ext.Action({
// text: _('ID_SAVE_CHANGES'),
// //iconCls: 'button_menu_ext ss_sprite ss_arrow_redo',
// handler: SaveChangesAuthForm,
// disabled: true
// });
// discardChangesButton = new Ext.Action({
// text: _('ID_DISCARD_CHANGES'),
// //iconCls: 'button_menu_ext ss_sprite ss_arrow_redo',
// handler: LoadAuthForm,
// disabled: true
// });
storeP = new Ext.data.GroupingStore( {
proxy : new Ext.data.HttpProxy({
url: 'departments_Ajax?action=assignedUsers&dUID=' + DEPARTMENT.DEP_UID
}),
reader : new Ext.data.JsonReader( {
root: 'users',
fields : [
{name : 'USR_UID'},
{name : 'USR_USERNAME'},
{name : 'USR_FIRSTNAME'},
{name : 'USR_LASTNAME'}
]
})
});
storeA = new Ext.data.GroupingStore( {
proxy : new Ext.data.HttpProxy({
url: 'departments_Ajax?action=availableUsers&dUID=' + DEPARTMENT.DEP_UID
}),
reader : new Ext.data.JsonReader( {
root: 'users',
fields : [
{name : 'USR_UID'},
{name : 'USR_USERNAME'},
{name : 'USR_FIRSTNAME'},
{name : 'USR_LASTNAME'}
]
})
});
cmodelP = new Ext.grid.ColumnModel({
defaults: {
width: 50,
sortable: true
},
columns: [
{id:'USR_UID', dataIndex: 'USR_UID', hidden:true, hideable:false},
{header: _('ID_FULL_NAME'), dataIndex: 'USR_USERNAME', width: 60, align:'left', renderer: show_user}
]
});
smodelA = new Ext.grid.RowSelectionModel({
selectSingle: false,
listeners:{
selectionchange: function(sm){
switch(sm.getCount()){
case 0: Ext.getCmp('assignButton').disable(); break;
default: Ext.getCmp('assignButton').enable(); break;
}
}
}
});
smodelP = new Ext.grid.RowSelectionModel({
selectSingle: false,
listeners:{
selectionchange: function(sm){
switch(sm.getCount()){
case 0: Ext.getCmp('removeButton').disable(); break;
default: Ext.getCmp('removeButton').enable(); break;
}
}
}
});
searchTextA = new Ext.form.TextField ({
id: 'searchTextA',
ctCls:'pm_search_text_field',
allowBlank: true,
width: 110,
emptyText: _('ID_ENTER_SEARCH_TERM'),
listeners: {
specialkey: function(f,e){
if (e.getKey() == e.ENTER) {
DoSearchA();
}
}
}
});
clearTextButtonA = new Ext.Action({
text: 'X',
ctCls:'pm_search_x_button',
handler: GridByDefaultA
});
searchTextP = new Ext.form.TextField ({
id: 'searchTextP',
ctCls:'pm_search_text_field',
allowBlank: true,
width: 110,
emptyText: _('ID_ENTER_SEARCH_TERM'),
listeners: {
specialkey: function(f,e){
if (e.getKey() == e.ENTER) {
DoSearchP();
}
}
}
});
clearTextButtonP = new Ext.Action({
text: 'X',
ctCls:'pm_search_x_button',
handler: GridByDefaultP
});
availableGrid = new Ext.grid.GridPanel({
layout : 'fit',
region : 'center',
ddGroup : 'assignedGridDDGroup',
store : storeA,
cm : cmodelP,
sm : smodelA,
enableDragDrop : true,
stripeRows : true,
autoExpandColumn: 'CON_VALUE',
iconCls : 'icon-grid',
id : 'availableGrid',
height : 100,
autoWidth : true,
stateful : true,
stateId : 'grid',
enableColumnResize : true,
enableHdMenu : true,
frame : false,
columnLines : false,
viewConfig : {forceFit:true},
tbar: [_('ID_AVAILABLE_USERS'),{xtype: 'tbfill'},'-',searchTextA,clearTextButtonA],
//bbar: [{xtype: 'tbfill'}, cancelEditMembersButton],
listeners: {rowdblclick: AssignGroupsAction},
hidden: true
});
assignedGrid = new Ext.grid.GridPanel({
layout : 'fit',
ddGroup : 'availableGridDDGroup',
store : storeP,
cm : cmodelP,
sm : smodelP,
enableDragDrop : true,
stripeRows : true,
autoExpandColumn: 'CON_VALUE',
iconCls : 'icon-grid',
id : 'assignedGrid',
height : 100,
autoWidth : true,
stateful : true,
stateId : 'grid',
enableColumnResize : true,
enableHdMenu : true,
frame : false,
columnLines : false,
viewConfig : {forceFit:true},
tbar: [_('ID_ASSIGNED_USERS'),{xtype: 'tbfill'},'-',searchTextP,clearTextButtonP],
//bbar: [{xtype: 'tbfill'},editMembersButton],
listeners: {rowdblclick: function(){
(availableGrid.hidden)? DoNothing() : RemoveGroupsAction();
}}
});
buttonsPanel = new Ext.Panel({
width : 40,
layout : {
type:'vbox',
padding:'0',
pack:'center',
align:'center'
},
defaults:{margins:'0 0 35 0'},
items:[
{xtype:'button',text: '>', handler: AssignGroupsAction, id: 'assignButton', disabled: true},
{xtype:'button',text: '<', handler: RemoveGroupsAction, id: 'removeButton', disabled: true},
{xtype:'button',text: '>>', handler: AssignAllGroupsAction, id: 'assignButtonAll', disabled: false},
{xtype:'button',text: '<<', handler: RemoveAllGroupsAction, id: 'removeButtonAll', disabled: false}
],
hidden: true
});
//GROUPS DRAG AND DROP PANEL
UsersPanel = new Ext.Panel({
region: 'center',
//title : _('ID_USERS'),
autoWidth : true,
layout : 'hbox',
defaults : { flex : 1 }, //auto stretch
layoutConfig : { align : 'stretch' },
items : [availableGrid,buttonsPanel,assignedGrid],
viewConfig : {forceFit:true},
bbar: [{xtype: 'tbfill'},editMembersButton, cancelEditMembersButton]
});
//NORTH PANEL WITH TITLE AND ROLE DETAILS
northPanel = new Ext.Panel({
region: 'north',
xtype: 'panel',
tbar: ['<b>'+_('ID_DEPARTMENT') + ' : ' + DEPARTMENT.DEP_TITLE + '</b>',{xtype: 'tbfill'},backButton]
});
//LOAD ALL PANELS
viewport = new Ext.Viewport({
layout: 'border',
items: [northPanel, UsersPanel]
});
RefreshUsers();
DDLoadUsers();
});
//Do Nothing Function
DoNothing = function(){};
//Return to Roles Main Page
BackToUsers = function(){
location.href = 'departments';
};
//Loads Drag N Drop Functionality for Permissions
DDLoadUsers = function(){
//GROUPS DRAG N DROP AVAILABLE
var availableGridDropTargetEl = availableGrid.getView().scroller.dom;
var availableGridDropTarget = new Ext.dd.DropTarget(availableGridDropTargetEl, {
ddGroup : 'availableGridDDGroup',
notifyDrop : function(ddSource, e, data){
var records = ddSource.dragData.selections;
var arrAux = new Array();
for (var r=0; r < records.length; r++){
arrAux[r] = records[r].data['USR_UID'];
}
DeleteDepartmentUser(arrAux,RefreshUsers,FailureProcess);
return true;
}
});
//GROUPS DRAG N DROP ASSIGNED
var assignedGridDropTargetEl = assignedGrid.getView().scroller.dom;
var assignedGridDropTarget = new Ext.dd.DropTarget(assignedGridDropTargetEl, {
ddGroup : 'assignedGridDDGroup',
notifyDrop : function(ddSource, e, data){
var records = ddSource.dragData.selections;
var arrAux = new Array();
for (var r=0; r < records.length; r++){
arrAux[r] = records[r].data['USR_UID'];
}
SaveDepartmentUser(arrAux,RefreshUsers,FailureProcess);
return true;
}
});
sw_func_groups = true;
};
//REFRESH GROUPS GRIDS
RefreshUsers = function(){
DoSearchA();
DoSearchP();
};
//FAILURE AJAX FUNCTION
FailureProcess = function(){
Ext.Msg.alert(_('ID_DEPARTMENTS'), _('ID_MSG_AJAX_FAILURE'));
};
//ASSIGN USERS TO A DEPARTMENT
SaveDepartmentUser = function(arr_usr, function_success, function_failure){
var sw_response;
viewport.getEl().mask(_('ID_PROCESSING'));
Ext.Ajax.request({
url: 'departments_Ajax',
params: {action: 'assignDepartmentToUserMultiple', DEP_UID: DEPARTMENT.DEP_UID, USR_UID: arr_usr.join(',')},
success: function(){
function_success();
viewport.getEl().unmask();
},
failure: function(){
function_failure();
viewport.getEl().unmask();
}
});
};
//REMOVE USERS FROM A DEPARTMENT
DeleteDepartmentUser = function(arr_usr, function_success, function_failure){
var sw_response;
viewport.getEl().mask(_('ID_PROCESSING'));
Ext.Ajax.request({
url: 'departments_Ajax',
params: {action: 'deleteDepartmentToUserMultiple', DEP_UID: DEPARTMENT.DEP_UID, USR_UID: arr_usr.join(',')},
success: function(){
function_success();
viewport.getEl().unmask();
},
failure: function(){
function_failure();
viewport.getEl().unmask();
}
});
};
//AssignButton Functionality
AssignGroupsAction = function(){
rowsSelected = availableGrid.getSelectionModel().getSelections();
var arrAux = new Array();
for(var a=0; a < rowsSelected.length; a++){
arrAux[a] = rowsSelected[a].get('USR_UID');
}
SaveDepartmentUser(arrAux,RefreshUsers,FailureProcess);
};
//RemoveButton Functionality
RemoveGroupsAction = function(){
rowsSelected = assignedGrid.getSelectionModel().getSelections();
var arrAux = new Array();
for(var a=0; a < rowsSelected.length; a++){
arrAux[a] = rowsSelected[a].get('USR_UID');
}
DeleteDepartmentUser(arrAux,RefreshUsers,FailureProcess);
};
//AssignALLButton Functionality
AssignAllGroupsAction = function(){
var allRows = availableGrid.getStore();
var arrAux = new Array();
if (allRows.getCount()>0){
for (var r=0; r < allRows.getCount(); r++){
row = allRows.getAt(r);
arrAux[r] = row.data['USR_UID'];
}
SaveDepartmentUser(arrAux,RefreshUsers,FailureProcess);
}
};
//RevomeALLButton Functionality
RemoveAllGroupsAction = function(){
var allRows = assignedGrid.getStore();
var arrAux = new Array();
if (allRows.getCount()>0){
for (var r=0; r < allRows.getCount(); r++){
row = allRows.getAt(r);
arrAux[r] = row.data['USR_UID'];
}
DeleteDepartmentUser(arrAux,RefreshUsers,FailureProcess);
}
};
//Function DoSearch Available
DoSearchA = function(){
availableGrid.store.load({params: {textFilter: searchTextA.getValue()}});
};
//Function DoSearch Assigned
DoSearchP = function(){
assignedGrid.store.load({params: {textFilter: searchTextP.getValue()}});
};
//Load Grid By Default Available Members
GridByDefaultA = function(){
searchTextA.reset();
availableGrid.store.load();
};
//Load Grid By Default Assigned Members
GridByDefaultP = function(){
searchTextP.reset();
assignedGrid.store.load();
};
//edit members action
EditMembersAction = function(){
availableGrid.show();
buttonsPanel.show();
editMembersButton.hide();
cancelEditMembersButton.show();
UsersPanel.doLayout();
};
//CancelEditMenbers Function
CancelEditMembersAction = function(){
availableGrid.hide();
buttonsPanel.hide();
editMembersButton.show();
cancelEditMembersButton.hide();
UsersPanel.doLayout();
};
//Render Full User Name
show_user = function(v,i,s){
return _FNF(v,s.data.USR_FIRSTNAME, s.data.USR_LASTNAME);
};

View File

@@ -49,6 +49,9 @@
$htmlDpto = lookforchildren( '' , 0);
print_r($htmlDpto);
die;
$content = $template->getOutputContent();
print $content;