Added "USER" and "GROUP" options for the assignment of the dashboards
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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,7 +137,24 @@ 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);
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user