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();

File diff suppressed because it is too large Load Diff

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>

File diff suppressed because it is too large Load Diff

View File

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

File diff suppressed because it is too large Load Diff

View File

@@ -48,6 +48,9 @@
$template->assign( 'ADD_UNASSIGNEDUSER', G::loadTranslation("ID_UNASSIGNED_USERS") );
$htmlDpto = lookforchildren( '' , 0);
print_r($htmlDpto);
die;
$content = $template->getOutputContent();
print $content;