Added "USER" and "GROUP" options for the assignment of the dashboards

This commit is contained in:
Julio Cesar Laura
2011-11-09 18:56:59 -04:00
parent f7add8444d
commit c40a625c18
4 changed files with 206 additions and 154 deletions

View File

@@ -243,7 +243,21 @@ class Groups
}
}
function getGroupsForUser($usrUid) {
$criteria = $this->getAssignedGroupsCriteria($usrUid);
$criteria->addAscendingOrderByColumn(ContentPeer::CON_VALUE);
$dataset = GroupwfPeer::doSelectRS($criteria);
$dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$dataset->next();
$groups = array();
while ($row = $dataset->getRow()) {
if (!isset($groups[$row['GRP_UID']])) {
$groups[$row['GRP_UID']] = $row;
}
$dataset->next();
}
return $groups;
}
/**
* Remove a user from all groups

View File

@@ -55,12 +55,24 @@ class PMDashlet extends DashletInstance implements DashletInterface {
while ($row = $dataset->getRow()) {
$row['DAS_INS_STATUS_LABEL'] = ($row['DAS_INS_STATUS'] == '1' ? G::LoadTranslation('ID_ACTIVE') : G::LoadTranslation('ID_INACTIVE'));
switch ($row['DAS_INS_OWNER_TYPE']) {
case 'USER':
require_once 'classes/model/Users.php';
$userInstance = new Users();
$user = $userInstance->load($row['DAS_INS_OWNER_UID']);
$row['DAS_INS_OWNER_TITLE'] = $user['USR_FIRSTNAME'] . ' ' . $user['USR_LASTNAME'];
break;
case 'DEPARTMENT':
require_once 'classes/model/Department.php';
$departmentInstance = new Department();
$department = $departmentInstance->load($row['DAS_INS_OWNER_UID']);
$row['DAS_INS_OWNER_TITLE'] = $department['DEPO_TITLE'];
break;
case 'GROUP':
require_once 'classes/model/Groupwf.php';
$groupInstance = new Groupwf();
$group = $groupInstance->load($row['DAS_INS_OWNER_UID']);
$row['DAS_INS_OWNER_TITLE'] = $group['GRP_TITLE'];
break;
default:
$row['DAS_INS_OWNER_TITLE'] = $row['DAS_INS_OWNER_TYPE'];
break;
@@ -125,11 +137,28 @@ class PMDashlet extends DashletInstance implements DashletInterface {
// Check for "public" dashlets
// ToDo: Next release
// Check for the direct assignments
// ToDo: Next release
require_once 'classes/model/Users.php';
$usersInstance = new Users();
$criteria = new Criteria('workflow');
$criteria->addSelectColumn(DashletInstancePeer::DAS_INS_UID);
$criteria->addSelectColumn(DashletPeer::DAS_TITLE);
$criteria->addSelectColumn(DashletInstancePeer::DAS_INS_CONTEXT_TIME);
$criteria->add(DashletInstancePeer::DAS_INS_OWNER_TYPE, 'USER');
$criteria->add(DashletInstancePeer::DAS_INS_OWNER_UID, $userUid);
$dataset = DashletInstancePeer::doSelectRS($criteria);
$dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$dataset->next();
while ($row = $dataset->getRow()) {
if (!isset($dashletsInstances[$row['DAS_INS_UID']])) {
$row['DAS_TITLE'] .= ' (' . $row['DAS_INS_CONTEXT_TIME'] . ')';
$dashletsInstances[$row['DAS_INS_UID']] = $row;
}
$dataset->next();
}
// Check for department assigments
$departmentInstance = new Department();
$departments = $departmentInstance->getDepartmentsForUser($userUid);
foreach ($departments as $depUid => $department) {
foreach ($departments as $depUid => $department) {
$criteria = new Criteria('workflow');
$criteria->addSelectColumn(DashletInstancePeer::DAS_INS_UID);
$criteria->addSelectColumn(DashletPeer::DAS_TITLE);
@@ -148,7 +177,27 @@ class PMDashlet extends DashletInstance implements DashletInterface {
}
}
// Check for group assignments
// ToDo: Next release
G::LoadClass('groups');
$groupsInstance = new Groups();
$groups = $groupsInstance->getGroupsForUser($userUid);
foreach ($groups as $grpUid => $group) {
$criteria = new Criteria('workflow');
$criteria->addSelectColumn(DashletInstancePeer::DAS_INS_UID);
$criteria->addSelectColumn(DashletPeer::DAS_TITLE);
$criteria->addSelectColumn(DashletInstancePeer::DAS_INS_CONTEXT_TIME);
$criteria->add(DashletInstancePeer::DAS_INS_OWNER_TYPE, 'GROUP');
$criteria->add(DashletInstancePeer::DAS_INS_OWNER_UID, $grpUid);
$dataset = DashletInstancePeer::doSelectRS($criteria);
$dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$dataset->next();
while ($row = $dataset->getRow()) {
if (!isset($dashletsInstances[$row['DAS_INS_UID']])) {
$row['DAS_TITLE'] .= ' (' . $row['DAS_INS_CONTEXT_TIME'] . ')';
$dashletsInstances[$row['DAS_INS_UID']] = $row;
}
$dataset->next();
}
}
// Check for role assigments
// ToDo: Next release
// Check for permission assigments

View File

@@ -157,12 +157,91 @@ class Dashboard extends Controller {
return $result;
}
public function getOwnersByType($type) {
public function getOwnersByType($data) {
$this->setResponseType('json');
$result = new stdclass();
$result->status = 'OK';
try {
//ToDo: For the next release
switch ($data->type) {
case 'USER':
require_once 'classes/model/Users.php';
$users = array();
$usersInstance = new Users();
$allUsers = $usersInstance->getAll();
foreach ($allUsers->data as $user) {
$users[] = array('OWNER_UID' => $user['USR_UID'], 'OWNER_NAME' => $user['USR_FIRSTNAME'] . ' ' . $user['USR_LASTNAME']);
}
$result->total = $allUsers->totalCount;
$result->owners = $users;
break;
case 'DEPARTMENT':
require_once 'classes/model/Department.php';
require_once 'classes/model/Content.php';
$departments = array();
//SELECT
$criteria = new Criteria('workflow');
$criteria->setDistinct();
$criteria->addSelectColumn(DepartmentPeer::DEP_UID);
$criteria->addSelectColumn(ContentPeer::CON_VALUE);
//FROM
$conditions = array();
$conditions[] = array(DepartmentPeer::DEP_UID, ContentPeer::CON_ID);
$conditions[] = array(ContentPeer::CON_CATEGORY, DBAdapter::getStringDelimiter() . 'DEPO_TITLE' . DBAdapter::getStringDelimiter());
$conditions[] = array(ContentPeer::CON_LANG, DBAdapter::getStringDelimiter() . 'en' . DBAdapter::getStringDelimiter());
$criteria->addJoinMC($conditions, Criteria::LEFT_JOIN);
//WHERE
$criteria->add(DepartmentPeer::DEP_STATUS, 'ACTIVE');
//ORDER BY
$criteria->addAscendingOrderByColumn(ContentPeer::CON_VALUE);
$dataset = DepartmentPeer::doSelectRS($criteria);
$dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$dataset->next();
while ($row = $dataset->getRow()) {
$departments[] = array('OWNER_UID' => $row['DEP_UID'], 'OWNER_NAME' => $row['CON_VALUE']);
$dataset->next();
}
$result->total = DepartmentPeer::doCount($criteria);
$result->owners = $departments;
break;
case 'GROUP':
require_once 'classes/model/Groupwf.php';
require_once 'classes/model/Content.php';
$groups = array();
//SELECT
$criteria = new Criteria('workflow');
$criteria->setDistinct();
$criteria->addSelectColumn(GroupwfPeer::GRP_UID);
$criteria->addSelectColumn(ContentPeer::CON_VALUE);
//FROM
$conditions = array();
$conditions[] = array(GroupwfPeer::GRP_UID, ContentPeer::CON_ID);
$conditions[] = array(ContentPeer::CON_CATEGORY, DBAdapter::getStringDelimiter() . 'GRP_TITLE' . DBAdapter::getStringDelimiter());
$conditions[] = array(ContentPeer::CON_LANG, DBAdapter::getStringDelimiter() . 'en' . DBAdapter::getStringDelimiter());
$criteria->addJoinMC($conditions, Criteria::LEFT_JOIN);
//WHERE
$criteria->add(GroupwfPeer::GRP_STATUS, 'ACTIVE');
//ORDER BY
$criteria->addAscendingOrderByColumn(ContentPeer::CON_VALUE);
$dataset = GroupwfPeer::doSelectRS($criteria);
$dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$dataset->next();
while ($row = $dataset->getRow()) {
$groups[] = array('OWNER_UID' => $row['GRP_UID'], 'OWNER_NAME' => $row['CON_VALUE']);
$dataset->next();
}
$result->total = GroupwfPeer::doCount($criteria);
$result->owners = $groups;
break;
}
}
catch (Exception $error) {
$result->status = 'ERROR';
@@ -171,130 +250,38 @@ class Dashboard extends Controller {
return $result;
}
public function getDashlets($data) {
$this->setResponseType('json');
$result = new stdclass();
$result->status = 'OK';
try {
require_once 'classes/model/Dashlet.php';
$dashlets = array();
//SELECT
$criteria = new Criteria('workflow');
$criteria->addSelectColumn(DashletPeer::DAS_UID);
$criteria->addSelectColumn(DashletPeer::DAS_TITLE);
//ORDER BY
$criteria->addAscendingOrderByColumn(DashletPeer::DAS_TITLE);
$dataset = DashletPeer::doSelectRS($criteria);
$dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$dataset->next();
while ($row = $dataset->getRow()) {
$dashlets[] = array('DAS_UID' => $row['DAS_UID'], 'DAS_TITLE' => $row['DAS_TITLE']);
$dataset->next();
}
$result->total = DashletPeer::doCount($criteria);
$result->dashlets = $dashlets;
}
catch (Exception $oException) {
$result->status = 'ERROR';
$result->message = $error->getMessage();
}
return $result;
}
// Functions for the dasboards administration module - End
public function ownerData($data)
{ try {
require_once ("classes/model/Content.php");
require_once ("classes/model/Users.php");
require_once ("classes/model/Department.php");
G::LoadInclude("ajax");
//$option = $_POST["option"];
//$option = get_ajax_value("option");
$type = $data->type;
switch ($type) {
case "USER": //
break;
case "DEPARTMENT": $department = array();
$oCriteria = new Criteria("workflow");
$del = DBAdapter::getStringDelimiter();
/*
SELECT
DISTINCT
DEPARTMENT.DEP_UID,
CONTENT.CON_VALUE
FROM
DEPARTMENT AS DEP
LEFT JOIN CONTENT ON (DEPARTMENT.DEP_UID = CONTENT.CON_ID AND CONTENT.CON_CATEGORY = 'DYN_TITLE' AND CONTENT.CON_LANG = 'en')
WHERE
DEPARTMENT.DEP_STATUS = 'ACTIVE'
ORDER BY CONTENT.CON_VALUE ASC
*/
//SELECT
$oCriteria->setDistinct();
$oCriteria->addSelectColumn(DepartmentPeer::DEP_UID);
$oCriteria->addSelectColumn(ContentPeer::CON_VALUE);
//FROM
$aConditions = array();
$aConditions[] = array(DepartmentPeer::DEP_UID, ContentPeer::CON_ID);
$aConditions[] = array(ContentPeer::CON_CATEGORY, $del . "DEPO_TITLE" . $del);
$aConditions[] = array(ContentPeer::CON_LANG, $del . "en" . $del);
$oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN);
//WHERE
$oCriteria->add(DepartmentPeer::DEP_STATUS, "ACTIVE");
//ORDER BY X ASC
$oCriteria->addAscendingOrderByColumn(ContentPeer::CON_VALUE);
$departmentNumRows = DepartmentPeer::doCount($oCriteria);
$oDataset = DepartmentPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
while ($oDataset->next()) {
$row = $oDataset->getRow();
$departmentUID = $row["DEP_UID"];
$depName = $row["CON_VALUE"];
$department[] = array("TABLE_UID" => $departmentUID, "TABLE_NAME" => $depName);
}
echo G::json_encode(array("success" => true, "resultTotal" => $departmentNumRows, "resultRoot" => $department));
break;
}
}
catch (Exception $oException) {
echo $oException->getMessage();
exit(0);
}
}
public function dashletData($data)
{ try {
require_once ("classes/model/Dashlet.php");
G::LoadInclude("ajax");
//$option = $_POST["option"];
//$option = get_ajax_value("option");
$dashlet = array();
$oCriteria = new Criteria("workflow");
//SELECT
//$oCriteria->setDistinct();
$oCriteria->addSelectColumn(DashletPeer::DAS_UID);
$oCriteria->addSelectColumn(DashletPeer::DAS_TITLE);
//FROM
//WHERE
//ORDER BY X ASC
$oCriteria->addAscendingOrderByColumn(DashletPeer::DAS_TITLE);
//echo "<hr />" . $oCriteria->toString() . "<hr />";
//query
//doCount(Criteria $criteria, $distinct = false, $con = null)
$dashletNumRows = DashletPeer::doCount($oCriteria);
$oDataset = DashletPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
while ($oDataset->next()) {
$row = $oDataset->getRow();
$dashletUID = $row["DAS_UID"];
$dashTitle = $row["DAS_TITLE"];
$dashlet[] = array("DAS_UID" => $dashletUID, "DAS_TITLE" => $dashTitle);
}
//echo "{users: " . G::json_encode($rows) . ", total_users: " . $totalRows . "}";
//echo json_encode(array("success" => true, "resultTotal" => $dashletNumRows, "resultRoot" => $dashlet));
echo G::json_encode(array("success" => true, "resultTotal" => $dashletNumRows, "resultRoot" => $dashlet));
}
catch (Exception $oException) {
echo $oException->getMessage();
exit(0);
}
}
}

View File

@@ -57,15 +57,15 @@ dashletInstance.form = {
//------------------------------------------------------------------------------------------------------------------
var storeDasUID = new Ext.data.Store({
proxy: new Ext.data.HttpProxy({
url: "dashletData",
url: "getDashlets",
method: "POST"
}),
baseParams: {"option": "DASHLST"},
reader: new Ext.data.JsonReader({
totalProperty: "resultTotal",
root: "resultRoot",
totalProperty: "total",
root: "dashlets",
fields:[{name: "DAS_UID", type: "string"},
{name: "DAS_TITLE", type: "string"}
]
@@ -107,22 +107,23 @@ dashletInstance.form = {
var storeDasInsOwnerType = new Ext.data.ArrayStore({
idIndex: 0,
fields: ["id", "value"],
data: [//["USER", "User"],
["DEPARTMENT", "Department"]
data: [["USER", "User"],
["DEPARTMENT", "Department"],
["GROUP", "Group"]
]
});
var storeDasInsOwnerUID = new Ext.data.Store({
proxy: new Ext.data.HttpProxy({
url: "ownerData",
url: "getOwnersByType",
method: "POST"
}),
reader: new Ext.data.JsonReader({
totalProperty: "resultTotal",
root: "resultRoot",
fields:[{name: "TABLE_UID", type: "string"},
{name: "TABLE_NAME", type: "string"}
totalProperty: "total",
root: "owners",
fields:[{name: "OWNER_UID", type: "string"},
{name: "OWNER_NAME", type: "string"}
]
}),
@@ -257,13 +258,14 @@ dashletInstance.form = {
editable: false,
width: 200,
fieldLabel: "Owner Type",
fieldLabel: "Assign To",
listeners: {
select: function (combo, record, index) {
storeDasInsOwnerUID.baseParams = {"option": "OWNERTYPE",
"type": combo.getValue()
};
cboDasInsOwnerUID.store.removeAll();
cboDasInsOwnerUID.store.load();
}
}
@@ -273,8 +275,8 @@ dashletInstance.form = {
id: "cboDasInsOwnerUID",
name: "DAS_INS_OWNER_UID",
valueField: "TABLE_UID",
displayField: "TABLE_NAME",
valueField: "OWNER_UID",
displayField: "OWNER_NAME",
store: storeDasInsOwnerUID,
triggerAction: "all",
@@ -282,7 +284,7 @@ dashletInstance.form = {
editable: false,
width: 200,
fieldLabel: "Assign To"
fieldLabel: "Name"
});
var cboProcess = new Ext.form.ComboBox({
@@ -340,7 +342,7 @@ dashletInstance.form = {
cboDasInsContextTime,
//txtDasInsStartDate,
//txtDasInsEndDate,
//cboDasInsOwnerType,
cboDasInsOwnerType,
cboDasInsOwnerUID
//,
//cboProcess,