BUG 0000 BUG 0000 User Inbox Simplified (second commit)

This commit is contained in:
Erik Amaru Ortiz
2012-01-26 09:33:01 -04:00
parent f5f4b527f5
commit 5599ca8b96
22 changed files with 900 additions and 229 deletions

View File

@@ -27,6 +27,7 @@
require_once 'classes/model/om/BaseGroupUser.php'; require_once 'classes/model/om/BaseGroupUser.php';
require_once 'classes/model/Content.php'; require_once 'classes/model/Content.php';
require_once 'classes/model/Users.php'; require_once 'classes/model/Users.php';
require_once 'classes/model/Groupwf.php';
/** /**
* Skeleton subclass for representing a row from the 'GROUP_USER' table. * Skeleton subclass for representing a row from the 'GROUP_USER' table.
@@ -45,7 +46,7 @@ class GroupUser extends BaseGroupUser {
* Create the application document registry * Create the application document registry
* @param array $aData * @param array $aData
* @return string * @return string
**/ */
public function create($aData) public function create($aData)
{ {
$oConnection = Propel::getConnection(GroupUserPeer::DATABASE_NAME); $oConnection = Propel::getConnection(GroupUserPeer::DATABASE_NAME);
@@ -78,7 +79,7 @@ class GroupUser extends BaseGroupUser {
* @param string $sGrpUid * @param string $sGrpUid
* @param string $sUserUid * @param string $sUserUid
* @return string * @return string
**/ */
public function remove($sGrpUid, $sUserUid) public function remove($sGrpUid, $sUserUid)
{ {
$oConnection = Propel::getConnection(GroupUserPeer::DATABASE_NAME); $oConnection = Propel::getConnection(GroupUserPeer::DATABASE_NAME);
@@ -101,7 +102,8 @@ class GroupUser extends BaseGroupUser {
} }
} }
function getCountAllUsersByGroup(){ function getCountAllUsersByGroup()
{
$oCriteria = new Criteria('workflow'); $oCriteria = new Criteria('workflow');
$oCriteria->addSelectColumn(GroupUserPeer::GRP_UID); $oCriteria->addSelectColumn(GroupUserPeer::GRP_UID);
$oCriteria->addSelectColumn('COUNT(*) AS CNT'); $oCriteria->addSelectColumn('COUNT(*) AS CNT');
@@ -118,4 +120,28 @@ class GroupUser extends BaseGroupUser {
return $aRows; return $aRows;
} }
function getAllUserGroups($usrUid)
{
$oCriteria = new Criteria('workflow');
// $oCriteria->addSelectColumn(GroupUserPeer::GRP_UID);
// $oCriteria->addSelectColumn('COUNT(*) AS CNT');
// $oCriteria->addJoin(GroupUserPeer::USR_UID, UsersPeer::USR_UID, Criteria::INNER_JOIN);
$oCriteria->add(GroupUserPeer::USR_UID, $usrUid);
//$oCriteria->add(UsersPeer::USR_STATUS, 'CLOSED', Criteria::NOT_EQUAL);
//$oCriteria->addGroupByColumn(GroupUserPeer::GRP_UID);
$oDataset = GroupUserPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode (ResultSet::FETCHMODE_ASSOC);
$g = new Groupwf();
$rows = Array();
while ($oDataset->next()) {
$row = $oDataset->getRow();
$grpRow = $g->load($row['GRP_UID']);
$row = array_merge($row, $grpRow);
$rows[] = $row;
}
return $rows;
}
} // GroupUser } // GroupUser

View File

@@ -188,8 +188,11 @@ class UsersProperties extends BaseUsersProperties {
} }
return $aErrors; return $aErrors;
} }
public function redirectTo($sUserUID, $sLanguage = 'en') {
public function redirectTo($sUserUID, $sLanguage = 'en')
{
global $RBAC; global $RBAC;
//get the plugins, and check if there is redirectLogins //get the plugins, and check if there is redirectLogins
//if yes, then redirect goes according his Role //if yes, then redirect goes according his Role
if ( class_exists('redirectDetail')) { if ( class_exists('redirectDetail')) {
@@ -209,6 +212,36 @@ class UsersProperties extends BaseUsersProperties {
} }
//end plugin //end plugin
/**
* New feature - User Experience Redirector
* @author Erik Amaru Ortiz <erik@colosa.com>
*/
require_once 'classes/model/Users.php';
$u = UsersPeer::retrieveByPK($sUserUID);
$uxType = $u->getUsrUx();
// find a group setting
if ($uxType == '' || $uxType == 'NORMAL') {
require_once 'classes/model/GroupUser.php';
$gu = new GroupUser();
$ugList = $gu->getAllUserGroups($sUserUID);
foreach ($ugList as $row) {
if ($row['GRP_UX'] != 'NORMAL' && $row['GRP_UX'] != '') {
$uxType = $row['GRP_UX'];
break;
}
}
}
switch ($uxType) {
case 'SIMPLIFIED':
return '/sys' . SYS_SYS . '/' . $sLanguage . '/' . SYS_SKIN . '/' . 'home';
break;
}
#New feature by Erik erik@colosa.com> #New feature by Erik erik@colosa.com>
#get user preferences for default redirect #get user preferences for default redirect
#verifying if it has any preferences on the configurations table #verifying if it has any preferences on the configurations table

View File

@@ -70,6 +70,8 @@ class GroupwfMapBuilder {
$tMap->addColumn('GRP_LDAP_DN', 'GrpLdapDn', 'string', CreoleTypes::VARCHAR, true, 255); $tMap->addColumn('GRP_LDAP_DN', 'GrpLdapDn', 'string', CreoleTypes::VARCHAR, true, 255);
$tMap->addColumn('GRP_UX', 'GrpUx', 'string', CreoleTypes::VARCHAR, false, 128);
$tMap->addValidator('GRP_STATUS', 'validValues', 'propel.validator.ValidValuesValidator', 'ACTIVE|INACTIVE', 'Please select a valid status.'); $tMap->addValidator('GRP_STATUS', 'validValues', 'propel.validator.ValidValuesValidator', 'ACTIVE|INACTIVE', 'Please select a valid status.');
$tMap->addValidator('GRP_STATUS', 'required', 'propel.validator.RequiredValidator', '', 'Application Document UID is required.'); $tMap->addValidator('GRP_STATUS', 'required', 'propel.validator.RequiredValidator', '', 'Application Document UID is required.');

View File

@@ -114,6 +114,8 @@ class UsersMapBuilder {
$tMap->addColumn('USR_REPLACED_BY', 'UsrReplacedBy', 'string', CreoleTypes::VARCHAR, false, 32); $tMap->addColumn('USR_REPLACED_BY', 'UsrReplacedBy', 'string', CreoleTypes::VARCHAR, false, 32);
$tMap->addColumn('USR_UX', 'UsrUx', 'string', CreoleTypes::VARCHAR, false, 128);
$tMap->addValidator('USR_STATUS', 'validValues', 'propel.validator.ValidValuesValidator', 'ACTIVE|INACTIVE|VACATION|CLOSED', 'Please select a valid type.'); $tMap->addValidator('USR_STATUS', 'validValues', 'propel.validator.ValidValuesValidator', 'ACTIVE|INACTIVE|VACATION|CLOSED', 'Please select a valid type.');
$tMap->addValidator('USR_STATUS', 'required', 'propel.validator.RequiredValidator', '', 'Type is required.'); $tMap->addValidator('USR_STATUS', 'required', 'propel.validator.RequiredValidator', '', 'Type is required.');

View File

@@ -48,6 +48,13 @@ abstract class BaseGroupwf extends BaseObject implements Persistent {
*/ */
protected $grp_ldap_dn = ''; protected $grp_ldap_dn = '';
/**
* The value for the grp_ux field.
* @var string
*/
protected $grp_ux = 'NORMAL';
/** /**
* Flag to prevent endless save loop, if this object is referenced * Flag to prevent endless save loop, if this object is referenced
* by another object which falls in this transaction. * by another object which falls in this transaction.
@@ -95,6 +102,17 @@ abstract class BaseGroupwf extends BaseObject implements Persistent {
return $this->grp_ldap_dn; return $this->grp_ldap_dn;
} }
/**
* Get the [grp_ux] column value.
*
* @return string
*/
public function getGrpUx()
{
return $this->grp_ux;
}
/** /**
* Set the value of [grp_uid] column. * Set the value of [grp_uid] column.
* *
@@ -161,6 +179,28 @@ abstract class BaseGroupwf extends BaseObject implements Persistent {
} // setGrpLdapDn() } // setGrpLdapDn()
/**
* Set the value of [grp_ux] column.
*
* @param string $v new value
* @return void
*/
public function setGrpUx($v)
{
// Since the native PHP type for this column is string,
// we will cast the input to a string (if it is not).
if ($v !== null && !is_string($v)) {
$v = (string) $v;
}
if ($this->grp_ux !== $v || $v === 'NORMAL') {
$this->grp_ux = $v;
$this->modifiedColumns[] = GroupwfPeer::GRP_UX;
}
} // setGrpUx()
/** /**
* Hydrates (populates) the object variables with values from the database resultset. * Hydrates (populates) the object variables with values from the database resultset.
* *
@@ -184,12 +224,14 @@ abstract class BaseGroupwf extends BaseObject implements Persistent {
$this->grp_ldap_dn = $rs->getString($startcol + 2); $this->grp_ldap_dn = $rs->getString($startcol + 2);
$this->grp_ux = $rs->getString($startcol + 3);
$this->resetModified(); $this->resetModified();
$this->setNew(false); $this->setNew(false);
// FIXME - using NUM_COLUMNS may be clearer. // FIXME - using NUM_COLUMNS may be clearer.
return $startcol + 3; // 3 = GroupwfPeer::NUM_COLUMNS - GroupwfPeer::NUM_LAZY_LOAD_COLUMNS). return $startcol + 4; // 4 = GroupwfPeer::NUM_COLUMNS - GroupwfPeer::NUM_LAZY_LOAD_COLUMNS).
} catch (Exception $e) { } catch (Exception $e) {
throw new PropelException("Error populating Groupwf object", $e); throw new PropelException("Error populating Groupwf object", $e);
@@ -401,6 +443,9 @@ abstract class BaseGroupwf extends BaseObject implements Persistent {
case 2: case 2:
return $this->getGrpLdapDn(); return $this->getGrpLdapDn();
break; break;
case 3:
return $this->getGrpUx();
break;
default: default:
return null; return null;
break; break;
@@ -424,6 +469,7 @@ abstract class BaseGroupwf extends BaseObject implements Persistent {
$keys[0] => $this->getGrpUid(), $keys[0] => $this->getGrpUid(),
$keys[1] => $this->getGrpStatus(), $keys[1] => $this->getGrpStatus(),
$keys[2] => $this->getGrpLdapDn(), $keys[2] => $this->getGrpLdapDn(),
$keys[3] => $this->getGrpUx(),
); );
return $result; return $result;
} }
@@ -464,6 +510,9 @@ abstract class BaseGroupwf extends BaseObject implements Persistent {
case 2: case 2:
$this->setGrpLdapDn($value); $this->setGrpLdapDn($value);
break; break;
case 3:
$this->setGrpUx($value);
break;
} // switch() } // switch()
} }
@@ -490,6 +539,7 @@ abstract class BaseGroupwf extends BaseObject implements Persistent {
if (array_key_exists($keys[0], $arr)) $this->setGrpUid($arr[$keys[0]]); if (array_key_exists($keys[0], $arr)) $this->setGrpUid($arr[$keys[0]]);
if (array_key_exists($keys[1], $arr)) $this->setGrpStatus($arr[$keys[1]]); if (array_key_exists($keys[1], $arr)) $this->setGrpStatus($arr[$keys[1]]);
if (array_key_exists($keys[2], $arr)) $this->setGrpLdapDn($arr[$keys[2]]); if (array_key_exists($keys[2], $arr)) $this->setGrpLdapDn($arr[$keys[2]]);
if (array_key_exists($keys[3], $arr)) $this->setGrpUx($arr[$keys[3]]);
} }
/** /**
@@ -504,6 +554,7 @@ abstract class BaseGroupwf extends BaseObject implements Persistent {
if ($this->isColumnModified(GroupwfPeer::GRP_UID)) $criteria->add(GroupwfPeer::GRP_UID, $this->grp_uid); if ($this->isColumnModified(GroupwfPeer::GRP_UID)) $criteria->add(GroupwfPeer::GRP_UID, $this->grp_uid);
if ($this->isColumnModified(GroupwfPeer::GRP_STATUS)) $criteria->add(GroupwfPeer::GRP_STATUS, $this->grp_status); if ($this->isColumnModified(GroupwfPeer::GRP_STATUS)) $criteria->add(GroupwfPeer::GRP_STATUS, $this->grp_status);
if ($this->isColumnModified(GroupwfPeer::GRP_LDAP_DN)) $criteria->add(GroupwfPeer::GRP_LDAP_DN, $this->grp_ldap_dn); if ($this->isColumnModified(GroupwfPeer::GRP_LDAP_DN)) $criteria->add(GroupwfPeer::GRP_LDAP_DN, $this->grp_ldap_dn);
if ($this->isColumnModified(GroupwfPeer::GRP_UX)) $criteria->add(GroupwfPeer::GRP_UX, $this->grp_ux);
return $criteria; return $criteria;
} }
@@ -562,6 +613,8 @@ abstract class BaseGroupwf extends BaseObject implements Persistent {
$copyObj->setGrpLdapDn($this->grp_ldap_dn); $copyObj->setGrpLdapDn($this->grp_ldap_dn);
$copyObj->setGrpUx($this->grp_ux);
$copyObj->setNew(true); $copyObj->setNew(true);

View File

@@ -24,7 +24,7 @@ abstract class BaseGroupwfPeer {
const CLASS_DEFAULT = 'classes.model.Groupwf'; const CLASS_DEFAULT = 'classes.model.Groupwf';
/** The total number of columns. */ /** The total number of columns. */
const NUM_COLUMNS = 3; const NUM_COLUMNS = 4;
/** The number of lazy-loaded columns. */ /** The number of lazy-loaded columns. */
const NUM_LAZY_LOAD_COLUMNS = 0; const NUM_LAZY_LOAD_COLUMNS = 0;
@@ -39,6 +39,9 @@ abstract class BaseGroupwfPeer {
/** the column name for the GRP_LDAP_DN field */ /** the column name for the GRP_LDAP_DN field */
const GRP_LDAP_DN = 'GROUPWF.GRP_LDAP_DN'; const GRP_LDAP_DN = 'GROUPWF.GRP_LDAP_DN';
/** the column name for the GRP_UX field */
const GRP_UX = 'GROUPWF.GRP_UX';
/** The PHP to DB Name Mapping */ /** The PHP to DB Name Mapping */
private static $phpNameMap = null; private static $phpNameMap = null;
@@ -50,10 +53,10 @@ abstract class BaseGroupwfPeer {
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id' * e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
*/ */
private static $fieldNames = array ( private static $fieldNames = array (
BasePeer::TYPE_PHPNAME => array ('GrpUid', 'GrpStatus', 'GrpLdapDn', ), BasePeer::TYPE_PHPNAME => array ('GrpUid', 'GrpStatus', 'GrpLdapDn', 'GrpUx', ),
BasePeer::TYPE_COLNAME => array (GroupwfPeer::GRP_UID, GroupwfPeer::GRP_STATUS, GroupwfPeer::GRP_LDAP_DN, ), BasePeer::TYPE_COLNAME => array (GroupwfPeer::GRP_UID, GroupwfPeer::GRP_STATUS, GroupwfPeer::GRP_LDAP_DN, GroupwfPeer::GRP_UX, ),
BasePeer::TYPE_FIELDNAME => array ('GRP_UID', 'GRP_STATUS', 'GRP_LDAP_DN', ), BasePeer::TYPE_FIELDNAME => array ('GRP_UID', 'GRP_STATUS', 'GRP_LDAP_DN', 'GRP_UX', ),
BasePeer::TYPE_NUM => array (0, 1, 2, ) BasePeer::TYPE_NUM => array (0, 1, 2, 3, )
); );
/** /**
@@ -63,10 +66,10 @@ abstract class BaseGroupwfPeer {
* e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0 * e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0
*/ */
private static $fieldKeys = array ( private static $fieldKeys = array (
BasePeer::TYPE_PHPNAME => array ('GrpUid' => 0, 'GrpStatus' => 1, 'GrpLdapDn' => 2, ), BasePeer::TYPE_PHPNAME => array ('GrpUid' => 0, 'GrpStatus' => 1, 'GrpLdapDn' => 2, 'GrpUx' => 3, ),
BasePeer::TYPE_COLNAME => array (GroupwfPeer::GRP_UID => 0, GroupwfPeer::GRP_STATUS => 1, GroupwfPeer::GRP_LDAP_DN => 2, ), BasePeer::TYPE_COLNAME => array (GroupwfPeer::GRP_UID => 0, GroupwfPeer::GRP_STATUS => 1, GroupwfPeer::GRP_LDAP_DN => 2, GroupwfPeer::GRP_UX => 3, ),
BasePeer::TYPE_FIELDNAME => array ('GRP_UID' => 0, 'GRP_STATUS' => 1, 'GRP_LDAP_DN' => 2, ), BasePeer::TYPE_FIELDNAME => array ('GRP_UID' => 0, 'GRP_STATUS' => 1, 'GRP_LDAP_DN' => 2, 'GRP_UX' => 3, ),
BasePeer::TYPE_NUM => array (0, 1, 2, ) BasePeer::TYPE_NUM => array (0, 1, 2, 3, )
); );
/** /**
@@ -173,6 +176,8 @@ abstract class BaseGroupwfPeer {
$criteria->addSelectColumn(GroupwfPeer::GRP_LDAP_DN); $criteria->addSelectColumn(GroupwfPeer::GRP_LDAP_DN);
$criteria->addSelectColumn(GroupwfPeer::GRP_UX);
} }
const COUNT = 'COUNT(GROUPWF.GRP_UID)'; const COUNT = 'COUNT(GROUPWF.GRP_UID)';

View File

@@ -202,6 +202,13 @@ abstract class BaseUsers extends BaseObject implements Persistent {
*/ */
protected $usr_replaced_by = ''; protected $usr_replaced_by = '';
/**
* The value for the usr_ux field.
* @var string
*/
protected $usr_ux = 'NORMAL';
/** /**
* Flag to prevent endless save loop, if this object is referenced * Flag to prevent endless save loop, if this object is referenced
* by another object which falls in this transaction. * by another object which falls in this transaction.
@@ -571,6 +578,17 @@ abstract class BaseUsers extends BaseObject implements Persistent {
return $this->usr_replaced_by; return $this->usr_replaced_by;
} }
/**
* Get the [usr_ux] column value.
*
* @return string
*/
public function getUsrUx()
{
return $this->usr_ux;
}
/** /**
* Set the value of [usr_uid] column. * Set the value of [usr_uid] column.
* *
@@ -1129,6 +1147,28 @@ abstract class BaseUsers extends BaseObject implements Persistent {
} // setUsrReplacedBy() } // setUsrReplacedBy()
/**
* Set the value of [usr_ux] column.
*
* @param string $v new value
* @return void
*/
public function setUsrUx($v)
{
// Since the native PHP type for this column is string,
// we will cast the input to a string (if it is not).
if ($v !== null && !is_string($v)) {
$v = (string) $v;
}
if ($this->usr_ux !== $v || $v === 'NORMAL') {
$this->usr_ux = $v;
$this->modifiedColumns[] = UsersPeer::USR_UX;
}
} // setUsrUx()
/** /**
* Hydrates (populates) the object variables with values from the database resultset. * Hydrates (populates) the object variables with values from the database resultset.
* *
@@ -1196,12 +1236,14 @@ abstract class BaseUsers extends BaseObject implements Persistent {
$this->usr_replaced_by = $rs->getString($startcol + 24); $this->usr_replaced_by = $rs->getString($startcol + 24);
$this->usr_ux = $rs->getString($startcol + 25);
$this->resetModified(); $this->resetModified();
$this->setNew(false); $this->setNew(false);
// FIXME - using NUM_COLUMNS may be clearer. // FIXME - using NUM_COLUMNS may be clearer.
return $startcol + 25; // 25 = UsersPeer::NUM_COLUMNS - UsersPeer::NUM_LAZY_LOAD_COLUMNS). return $startcol + 26; // 26 = UsersPeer::NUM_COLUMNS - UsersPeer::NUM_LAZY_LOAD_COLUMNS).
} catch (Exception $e) { } catch (Exception $e) {
throw new PropelException("Error populating Users object", $e); throw new PropelException("Error populating Users object", $e);
@@ -1479,6 +1521,9 @@ abstract class BaseUsers extends BaseObject implements Persistent {
case 24: case 24:
return $this->getUsrReplacedBy(); return $this->getUsrReplacedBy();
break; break;
case 25:
return $this->getUsrUx();
break;
default: default:
return null; return null;
break; break;
@@ -1524,6 +1569,7 @@ abstract class BaseUsers extends BaseObject implements Persistent {
$keys[22] => $this->getUsrRole(), $keys[22] => $this->getUsrRole(),
$keys[23] => $this->getUsrReportsTo(), $keys[23] => $this->getUsrReportsTo(),
$keys[24] => $this->getUsrReplacedBy(), $keys[24] => $this->getUsrReplacedBy(),
$keys[25] => $this->getUsrUx(),
); );
return $result; return $result;
} }
@@ -1630,6 +1676,9 @@ abstract class BaseUsers extends BaseObject implements Persistent {
case 24: case 24:
$this->setUsrReplacedBy($value); $this->setUsrReplacedBy($value);
break; break;
case 25:
$this->setUsrUx($value);
break;
} // switch() } // switch()
} }
@@ -1678,6 +1727,7 @@ abstract class BaseUsers extends BaseObject implements Persistent {
if (array_key_exists($keys[22], $arr)) $this->setUsrRole($arr[$keys[22]]); if (array_key_exists($keys[22], $arr)) $this->setUsrRole($arr[$keys[22]]);
if (array_key_exists($keys[23], $arr)) $this->setUsrReportsTo($arr[$keys[23]]); if (array_key_exists($keys[23], $arr)) $this->setUsrReportsTo($arr[$keys[23]]);
if (array_key_exists($keys[24], $arr)) $this->setUsrReplacedBy($arr[$keys[24]]); if (array_key_exists($keys[24], $arr)) $this->setUsrReplacedBy($arr[$keys[24]]);
if (array_key_exists($keys[25], $arr)) $this->setUsrUx($arr[$keys[25]]);
} }
/** /**
@@ -1714,6 +1764,7 @@ abstract class BaseUsers extends BaseObject implements Persistent {
if ($this->isColumnModified(UsersPeer::USR_ROLE)) $criteria->add(UsersPeer::USR_ROLE, $this->usr_role); if ($this->isColumnModified(UsersPeer::USR_ROLE)) $criteria->add(UsersPeer::USR_ROLE, $this->usr_role);
if ($this->isColumnModified(UsersPeer::USR_REPORTS_TO)) $criteria->add(UsersPeer::USR_REPORTS_TO, $this->usr_reports_to); if ($this->isColumnModified(UsersPeer::USR_REPORTS_TO)) $criteria->add(UsersPeer::USR_REPORTS_TO, $this->usr_reports_to);
if ($this->isColumnModified(UsersPeer::USR_REPLACED_BY)) $criteria->add(UsersPeer::USR_REPLACED_BY, $this->usr_replaced_by); if ($this->isColumnModified(UsersPeer::USR_REPLACED_BY)) $criteria->add(UsersPeer::USR_REPLACED_BY, $this->usr_replaced_by);
if ($this->isColumnModified(UsersPeer::USR_UX)) $criteria->add(UsersPeer::USR_UX, $this->usr_ux);
return $criteria; return $criteria;
} }
@@ -1816,6 +1867,8 @@ abstract class BaseUsers extends BaseObject implements Persistent {
$copyObj->setUsrReplacedBy($this->usr_replaced_by); $copyObj->setUsrReplacedBy($this->usr_replaced_by);
$copyObj->setUsrUx($this->usr_ux);
$copyObj->setNew(true); $copyObj->setNew(true);

View File

@@ -24,7 +24,7 @@ abstract class BaseUsersPeer {
const CLASS_DEFAULT = 'classes.model.Users'; const CLASS_DEFAULT = 'classes.model.Users';
/** The total number of columns. */ /** The total number of columns. */
const NUM_COLUMNS = 25; const NUM_COLUMNS = 26;
/** The number of lazy-loaded columns. */ /** The number of lazy-loaded columns. */
const NUM_LAZY_LOAD_COLUMNS = 0; const NUM_LAZY_LOAD_COLUMNS = 0;
@@ -105,6 +105,9 @@ abstract class BaseUsersPeer {
/** the column name for the USR_REPLACED_BY field */ /** the column name for the USR_REPLACED_BY field */
const USR_REPLACED_BY = 'USERS.USR_REPLACED_BY'; const USR_REPLACED_BY = 'USERS.USR_REPLACED_BY';
/** the column name for the USR_UX field */
const USR_UX = 'USERS.USR_UX';
/** The PHP to DB Name Mapping */ /** The PHP to DB Name Mapping */
private static $phpNameMap = null; private static $phpNameMap = null;
@@ -116,10 +119,10 @@ abstract class BaseUsersPeer {
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id' * e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
*/ */
private static $fieldNames = array ( private static $fieldNames = array (
BasePeer::TYPE_PHPNAME => array ('UsrUid', 'UsrUsername', 'UsrPassword', 'UsrFirstname', 'UsrLastname', 'UsrEmail', 'UsrDueDate', 'UsrCreateDate', 'UsrUpdateDate', 'UsrStatus', 'UsrCountry', 'UsrCity', 'UsrLocation', 'UsrAddress', 'UsrPhone', 'UsrFax', 'UsrCellular', 'UsrZipCode', 'DepUid', 'UsrPosition', 'UsrResume', 'UsrBirthday', 'UsrRole', 'UsrReportsTo', 'UsrReplacedBy', ), BasePeer::TYPE_PHPNAME => array ('UsrUid', 'UsrUsername', 'UsrPassword', 'UsrFirstname', 'UsrLastname', 'UsrEmail', 'UsrDueDate', 'UsrCreateDate', 'UsrUpdateDate', 'UsrStatus', 'UsrCountry', 'UsrCity', 'UsrLocation', 'UsrAddress', 'UsrPhone', 'UsrFax', 'UsrCellular', 'UsrZipCode', 'DepUid', 'UsrPosition', 'UsrResume', 'UsrBirthday', 'UsrRole', 'UsrReportsTo', 'UsrReplacedBy', 'UsrUx', ),
BasePeer::TYPE_COLNAME => array (UsersPeer::USR_UID, UsersPeer::USR_USERNAME, UsersPeer::USR_PASSWORD, UsersPeer::USR_FIRSTNAME, UsersPeer::USR_LASTNAME, UsersPeer::USR_EMAIL, UsersPeer::USR_DUE_DATE, UsersPeer::USR_CREATE_DATE, UsersPeer::USR_UPDATE_DATE, UsersPeer::USR_STATUS, UsersPeer::USR_COUNTRY, UsersPeer::USR_CITY, UsersPeer::USR_LOCATION, UsersPeer::USR_ADDRESS, UsersPeer::USR_PHONE, UsersPeer::USR_FAX, UsersPeer::USR_CELLULAR, UsersPeer::USR_ZIP_CODE, UsersPeer::DEP_UID, UsersPeer::USR_POSITION, UsersPeer::USR_RESUME, UsersPeer::USR_BIRTHDAY, UsersPeer::USR_ROLE, UsersPeer::USR_REPORTS_TO, UsersPeer::USR_REPLACED_BY, ), BasePeer::TYPE_COLNAME => array (UsersPeer::USR_UID, UsersPeer::USR_USERNAME, UsersPeer::USR_PASSWORD, UsersPeer::USR_FIRSTNAME, UsersPeer::USR_LASTNAME, UsersPeer::USR_EMAIL, UsersPeer::USR_DUE_DATE, UsersPeer::USR_CREATE_DATE, UsersPeer::USR_UPDATE_DATE, UsersPeer::USR_STATUS, UsersPeer::USR_COUNTRY, UsersPeer::USR_CITY, UsersPeer::USR_LOCATION, UsersPeer::USR_ADDRESS, UsersPeer::USR_PHONE, UsersPeer::USR_FAX, UsersPeer::USR_CELLULAR, UsersPeer::USR_ZIP_CODE, UsersPeer::DEP_UID, UsersPeer::USR_POSITION, UsersPeer::USR_RESUME, UsersPeer::USR_BIRTHDAY, UsersPeer::USR_ROLE, UsersPeer::USR_REPORTS_TO, UsersPeer::USR_REPLACED_BY, UsersPeer::USR_UX, ),
BasePeer::TYPE_FIELDNAME => array ('USR_UID', 'USR_USERNAME', 'USR_PASSWORD', 'USR_FIRSTNAME', 'USR_LASTNAME', 'USR_EMAIL', 'USR_DUE_DATE', 'USR_CREATE_DATE', 'USR_UPDATE_DATE', 'USR_STATUS', 'USR_COUNTRY', 'USR_CITY', 'USR_LOCATION', 'USR_ADDRESS', 'USR_PHONE', 'USR_FAX', 'USR_CELLULAR', 'USR_ZIP_CODE', 'DEP_UID', 'USR_POSITION', 'USR_RESUME', 'USR_BIRTHDAY', 'USR_ROLE', 'USR_REPORTS_TO', 'USR_REPLACED_BY', ), BasePeer::TYPE_FIELDNAME => array ('USR_UID', 'USR_USERNAME', 'USR_PASSWORD', 'USR_FIRSTNAME', 'USR_LASTNAME', 'USR_EMAIL', 'USR_DUE_DATE', 'USR_CREATE_DATE', 'USR_UPDATE_DATE', 'USR_STATUS', 'USR_COUNTRY', 'USR_CITY', 'USR_LOCATION', 'USR_ADDRESS', 'USR_PHONE', 'USR_FAX', 'USR_CELLULAR', 'USR_ZIP_CODE', 'DEP_UID', 'USR_POSITION', 'USR_RESUME', 'USR_BIRTHDAY', 'USR_ROLE', 'USR_REPORTS_TO', 'USR_REPLACED_BY', 'USR_UX', ),
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, ) BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, )
); );
/** /**
@@ -129,10 +132,10 @@ abstract class BaseUsersPeer {
* e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0 * e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0
*/ */
private static $fieldKeys = array ( private static $fieldKeys = array (
BasePeer::TYPE_PHPNAME => array ('UsrUid' => 0, 'UsrUsername' => 1, 'UsrPassword' => 2, 'UsrFirstname' => 3, 'UsrLastname' => 4, 'UsrEmail' => 5, 'UsrDueDate' => 6, 'UsrCreateDate' => 7, 'UsrUpdateDate' => 8, 'UsrStatus' => 9, 'UsrCountry' => 10, 'UsrCity' => 11, 'UsrLocation' => 12, 'UsrAddress' => 13, 'UsrPhone' => 14, 'UsrFax' => 15, 'UsrCellular' => 16, 'UsrZipCode' => 17, 'DepUid' => 18, 'UsrPosition' => 19, 'UsrResume' => 20, 'UsrBirthday' => 21, 'UsrRole' => 22, 'UsrReportsTo' => 23, 'UsrReplacedBy' => 24, ), BasePeer::TYPE_PHPNAME => array ('UsrUid' => 0, 'UsrUsername' => 1, 'UsrPassword' => 2, 'UsrFirstname' => 3, 'UsrLastname' => 4, 'UsrEmail' => 5, 'UsrDueDate' => 6, 'UsrCreateDate' => 7, 'UsrUpdateDate' => 8, 'UsrStatus' => 9, 'UsrCountry' => 10, 'UsrCity' => 11, 'UsrLocation' => 12, 'UsrAddress' => 13, 'UsrPhone' => 14, 'UsrFax' => 15, 'UsrCellular' => 16, 'UsrZipCode' => 17, 'DepUid' => 18, 'UsrPosition' => 19, 'UsrResume' => 20, 'UsrBirthday' => 21, 'UsrRole' => 22, 'UsrReportsTo' => 23, 'UsrReplacedBy' => 24, 'UsrUx' => 25, ),
BasePeer::TYPE_COLNAME => array (UsersPeer::USR_UID => 0, UsersPeer::USR_USERNAME => 1, UsersPeer::USR_PASSWORD => 2, UsersPeer::USR_FIRSTNAME => 3, UsersPeer::USR_LASTNAME => 4, UsersPeer::USR_EMAIL => 5, UsersPeer::USR_DUE_DATE => 6, UsersPeer::USR_CREATE_DATE => 7, UsersPeer::USR_UPDATE_DATE => 8, UsersPeer::USR_STATUS => 9, UsersPeer::USR_COUNTRY => 10, UsersPeer::USR_CITY => 11, UsersPeer::USR_LOCATION => 12, UsersPeer::USR_ADDRESS => 13, UsersPeer::USR_PHONE => 14, UsersPeer::USR_FAX => 15, UsersPeer::USR_CELLULAR => 16, UsersPeer::USR_ZIP_CODE => 17, UsersPeer::DEP_UID => 18, UsersPeer::USR_POSITION => 19, UsersPeer::USR_RESUME => 20, UsersPeer::USR_BIRTHDAY => 21, UsersPeer::USR_ROLE => 22, UsersPeer::USR_REPORTS_TO => 23, UsersPeer::USR_REPLACED_BY => 24, ), BasePeer::TYPE_COLNAME => array (UsersPeer::USR_UID => 0, UsersPeer::USR_USERNAME => 1, UsersPeer::USR_PASSWORD => 2, UsersPeer::USR_FIRSTNAME => 3, UsersPeer::USR_LASTNAME => 4, UsersPeer::USR_EMAIL => 5, UsersPeer::USR_DUE_DATE => 6, UsersPeer::USR_CREATE_DATE => 7, UsersPeer::USR_UPDATE_DATE => 8, UsersPeer::USR_STATUS => 9, UsersPeer::USR_COUNTRY => 10, UsersPeer::USR_CITY => 11, UsersPeer::USR_LOCATION => 12, UsersPeer::USR_ADDRESS => 13, UsersPeer::USR_PHONE => 14, UsersPeer::USR_FAX => 15, UsersPeer::USR_CELLULAR => 16, UsersPeer::USR_ZIP_CODE => 17, UsersPeer::DEP_UID => 18, UsersPeer::USR_POSITION => 19, UsersPeer::USR_RESUME => 20, UsersPeer::USR_BIRTHDAY => 21, UsersPeer::USR_ROLE => 22, UsersPeer::USR_REPORTS_TO => 23, UsersPeer::USR_REPLACED_BY => 24, UsersPeer::USR_UX => 25, ),
BasePeer::TYPE_FIELDNAME => array ('USR_UID' => 0, 'USR_USERNAME' => 1, 'USR_PASSWORD' => 2, 'USR_FIRSTNAME' => 3, 'USR_LASTNAME' => 4, 'USR_EMAIL' => 5, 'USR_DUE_DATE' => 6, 'USR_CREATE_DATE' => 7, 'USR_UPDATE_DATE' => 8, 'USR_STATUS' => 9, 'USR_COUNTRY' => 10, 'USR_CITY' => 11, 'USR_LOCATION' => 12, 'USR_ADDRESS' => 13, 'USR_PHONE' => 14, 'USR_FAX' => 15, 'USR_CELLULAR' => 16, 'USR_ZIP_CODE' => 17, 'DEP_UID' => 18, 'USR_POSITION' => 19, 'USR_RESUME' => 20, 'USR_BIRTHDAY' => 21, 'USR_ROLE' => 22, 'USR_REPORTS_TO' => 23, 'USR_REPLACED_BY' => 24, ), BasePeer::TYPE_FIELDNAME => array ('USR_UID' => 0, 'USR_USERNAME' => 1, 'USR_PASSWORD' => 2, 'USR_FIRSTNAME' => 3, 'USR_LASTNAME' => 4, 'USR_EMAIL' => 5, 'USR_DUE_DATE' => 6, 'USR_CREATE_DATE' => 7, 'USR_UPDATE_DATE' => 8, 'USR_STATUS' => 9, 'USR_COUNTRY' => 10, 'USR_CITY' => 11, 'USR_LOCATION' => 12, 'USR_ADDRESS' => 13, 'USR_PHONE' => 14, 'USR_FAX' => 15, 'USR_CELLULAR' => 16, 'USR_ZIP_CODE' => 17, 'DEP_UID' => 18, 'USR_POSITION' => 19, 'USR_RESUME' => 20, 'USR_BIRTHDAY' => 21, 'USR_ROLE' => 22, 'USR_REPORTS_TO' => 23, 'USR_REPLACED_BY' => 24, 'USR_UX' => 25, ),
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, ) BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, )
); );
/** /**
@@ -283,6 +286,8 @@ abstract class BaseUsersPeer {
$criteria->addSelectColumn(UsersPeer::USR_REPLACED_BY); $criteria->addSelectColumn(UsersPeer::USR_REPLACED_BY);
$criteria->addSelectColumn(UsersPeer::USR_UX);
} }
const COUNT = 'COUNT(USERS.USR_UID)'; const COUNT = 'COUNT(USERS.USR_UID)';

View File

@@ -437,6 +437,7 @@
<column name="GRP_UID" type="VARCHAR" size="32" required="true" primaryKey="true" default=""/> <column name="GRP_UID" type="VARCHAR" size="32" required="true" primaryKey="true" default=""/>
<column name="GRP_STATUS" type="CHAR" size="8" required="true" default="ACTIVE"/> <column name="GRP_STATUS" type="CHAR" size="8" required="true" default="ACTIVE"/>
<column name="GRP_LDAP_DN" type="VARCHAR" size="255" required="true" default=""/> <column name="GRP_LDAP_DN" type="VARCHAR" size="255" required="true" default=""/>
<column name="GRP_UX" type="VARCHAR" size="128" default="NORMAL"/>
<validator column="GRP_STATUS"> <validator column="GRP_STATUS">
<rule name="validValues" value="ACTIVE|INACTIVE" message="Please select a valid status."/> <rule name="validValues" value="ACTIVE|INACTIVE" message="Please select a valid status."/>
<rule name="required" message="Application Document UID is required."/> <rule name="required" message="Application Document UID is required."/>
@@ -1389,6 +1390,7 @@
<column name="USR_ROLE" type="VARCHAR" size="32" default="PROCESSMAKER_ADMIN"/> <column name="USR_ROLE" type="VARCHAR" size="32" default="PROCESSMAKER_ADMIN"/>
<column name="USR_REPORTS_TO" type="VARCHAR" size="32" default=""/> <column name="USR_REPORTS_TO" type="VARCHAR" size="32" default=""/>
<column name="USR_REPLACED_BY" type="VARCHAR" size="32" default=""/> <column name="USR_REPLACED_BY" type="VARCHAR" size="32" default=""/>
<column name="USR_UX" type="VARCHAR" size="128" default="NORMAL"/>
<validator column="USR_STATUS"> <validator column="USR_STATUS">
<rule name="validValues" value="ACTIVE|INACTIVE|VACATION|CLOSED" message="Please select a valid type."/> <rule name="validValues" value="ACTIVE|INACTIVE|VACATION|CLOSED" message="Please select a valid type."/>
<rule name="required" message="Type is required."/> <rule name="required" message="Type is required."/>

View File

@@ -1,29 +1,53 @@
<?php <?php
/** /**
* pmTables controller * Admin controller
* @author Douglas Medrano <douglas@colosa.com, douglas.medrano@live.com>
* @New Calendar
* @access public * @access public
*/ */
class Admin extends Controller class Admin extends Controller
{ {
/** /**
* UX - User experience
*/
public function uxList()
{
$this->includeExtJS('admin/uxUsersList');
//$this->setView('admin/calendarEdit');
//$this->setJSVar('fields',$fields);ç
G::LoadClass('configuration');
$c = new Configurations();
$configPage = $c->getConfiguration('usersList', 'pageSize','',$_SESSION['USER_LOGGED']);
$Config['pageSize'] = isset($configPage['pageSize']) ? $configPage['pageSize'] : 20;
$this->setJSVar('CONFIG', $Config);
$this->setJSVar('FORMATS',$c->getFormats());
G::RenderPage('publish', 'extJs');
}
/**
* CALENDAR
* getting default list * getting default list
* @param string $httpData->PRO_UID (opional) * @param string $httpData->PRO_UID (opional)
*/ */
public function calendarEdit($httpData) public function calendarEdit($httpData)
{ {
global $RBAC; global $RBAC;
//$RBAC->requirePermissions('PM_SETUP_ADVANCE');
G::LoadClass('configuration');
G::LoadClass('calendar');
$CalendarUid = str_replace ( '"', '', isset ( $_GET ['id'] ) ? $_GET ['id'] : G::GenerateUniqueID () ); $CalendarUid = str_replace ( '"', '', isset ( $_GET ['id'] ) ? $_GET ['id'] : G::GenerateUniqueID () );
G::LoadClass ( 'calendar' );
$calendarObj = new calendar ( ); $calendarObj = new calendar ( );
if ((isset ( $_GET ['id'] )) && ($_GET ['id'] != "")) { if ((isset ( $_GET ['id'] )) && ($_GET ['id'] != "")) {
$fields = $calendarObj->getCalendarInfoE ( $CalendarUid ); $fields = $calendarObj->getCalendarInfoE ( $CalendarUid );
$fields ['OLD_NAME'] = $fields['CALENDAR_NAME']; $fields ['OLD_NAME'] = $fields['CALENDAR_NAME'];
} }
if (! (isset ( $fields ['CALENDAR_UID'] ))) { //For a new Calendar if (!isset($fields['CALENDAR_UID'])) { //For a new Calendar
$fields ['CALENDAR_UID'] = $CalendarUid; $fields ['CALENDAR_UID'] = $CalendarUid;
$fields ['OLD_NAME'] = ''; $fields ['OLD_NAME'] = '';
@@ -37,25 +61,18 @@ class Admin extends Controller
$fields ['CALENDAR_NAME'] = G::LoadTranslation ( "ID_COPY_OF" ) . " " . $fields ['CALENDAR_NAME']; $fields ['CALENDAR_NAME'] = G::LoadTranslation ( "ID_COPY_OF" ) . " " . $fields ['CALENDAR_NAME'];
} }
$RBAC->requirePermissions('PM_SETUP_ADVANCE');
G::LoadClass('configuration');
$c = new Configurations(); $c = new Configurations();
$configPage = $c->getConfiguration('additionalTablesList', 'pageSize','',$_SESSION['USER_LOGGED']); $configPage = $c->getConfiguration('additionalTablesList', 'pageSize','',$_SESSION['USER_LOGGED']);
$Config['pageSize'] = isset($configPage['pageSize']) ? $configPage['pageSize'] : 20; $Config['pageSize'] = isset($configPage['pageSize']) ? $configPage['pageSize'] : 20;
$this->includeExtJS('admin/calendarEdit'); $this->includeExtJS('admin/calendarEdit');
$this->setView('admin/calendarEdit'); $this->setView('admin/calendarEdit');
$variableArray = array();
$variableArray[0] = 'uno';
$variableArray[1] = 'dos';
$businessDayArray = array(); $businessDayArray = array();
for($i=0;$i<sizeof($fields['BUSINESS_DAY']);$i++) {
$businessDayArray[$i] = $fields['BUSINESS_DAY'][$i+1]; for($i=0;$i<sizeof($fields['BUSINESS_DAY']);$i++) {
$businessDayArray[$i] = $fields['BUSINESS_DAY'][$i+1];
} }
$fields['BUSINESS_DAY'] = $businessDayArray; $fields['BUSINESS_DAY'] = $businessDayArray;
//validating if the calendar is new, it means that we don't have the $_GET array //validating if the calendar is new, it means that we don't have the $_GET array
$fields['HOLIDAY']=(isset ( $_GET['id'] )&&$_GET['id']!='')?$fields['HOLIDAY']:array(); $fields['HOLIDAY']=(isset ( $_GET['id'] )&&$_GET['id']!='')?$fields['HOLIDAY']:array();

View File

@@ -22,9 +22,55 @@
* Coral Gables, FL, 33134, USA, or email info@colosa.com. * Coral Gables, FL, 33134, USA, or email info@colosa.com.
* *
*/ */
class adminProxy extends HttpProxyController class adminProxy extends HttpProxyController
{ {
function calendarSave() { function uxUserUpdate($httpData)
{
require_once 'classes/model/Users.php';
$data = (array) json_decode($httpData->users);
$user = UsersPeer::retrieveByPK($data['USR_UID']);
$user->setUsrUx($data['USR_UX']);
$user->save();
$row = $user->toArray(BasePeer::TYPE_FIELDNAME);
$uxList = self::getUxTypesList();
$row['USR_UX'] = $uxList[$user->getUsrUx()];
return array('success' => true, 'message'=>'done', 'users'=>$row);
}
function uxGroupUpdate($httpData)
{
require_once 'classes/model/Groupwf.php';
$data = (array) json_decode($httpData->groups);
$group = GroupwfPeer::retrieveByPK($data['GRP_UID']);
$group->setGrpUx($data['GRP_UX']);
$group->save();
$g = new Groupwf();
//$row = $group->toArray(BasePeer::TYPE_FIELDNAME);
$row = $g->Load($group->getGrpUid());
$row['CON_VALUE'] = $row['GRP_TITLE'];
$uxList = self::getUxTypesList();
$row['GRP_UX'] = $uxList[$group->getGrpUx()];
return array('success' => true, 'message'=>'done', 'groups'=>$row);
}
function getUxTypesList()
{
return Array(
'NORMAL' => 'Normal',
'SIMPLIFIED' => 'Simplified'
);
}
function calendarSave()
{
//{ $_POST['BUSINESS_DAY'] //{ $_POST['BUSINESS_DAY']
$businessDayArray = G::json_decode($_POST['BUSINESS_DAY']); $businessDayArray = G::json_decode($_POST['BUSINESS_DAY']);
$businessDayFixArray = array(); $businessDayFixArray = array();
@@ -86,7 +132,7 @@ class adminProxy extends HttpProxyController
}// end testingOption function }// end testingOption function
/** /**
* saving the authentication source data * saving the authentication source data
* @param object $params * @param object $params
* @return array $data * @return array $data

View File

@@ -1,6 +1,7 @@
<?php <?php
/** /**
* Application controller * Home controller
*
* @author Erik Amaru Ortiz <erik@colosa.com, aortiz.erik@gmail.com> * @author Erik Amaru Ortiz <erik@colosa.com, aortiz.erik@gmail.com>
* @inherits Controller * @inherits Controller
* @access public * @access public
@@ -15,13 +16,14 @@ class Home extends Controller
public function __construct() public function __construct()
{ {
$_SESSION['user_experience'] = 'simplified';
if (isset($_SESSION['USER_LOGGED']) && !empty($_SESSION['USER_LOGGED'])) { if (isset($_SESSION['USER_LOGGED']) && !empty($_SESSION['USER_LOGGED'])) {
$this->userID = isset($_SESSION['USER_LOGGED']) ? $_SESSION['USER_LOGGED'] : null; $this->userID = isset($_SESSION['USER_LOGGED']) ? $_SESSION['USER_LOGGED'] : null;
$this->userName = isset($_SESSION['USR_USERNAME']) ? $_SESSION['USR_USERNAME'] : ''; $this->userName = isset($_SESSION['USR_USERNAME']) ? $_SESSION['USR_USERNAME'] : '';
$this->userFullName = isset($_SESSION['USR_FULLNAME']) ? $_SESSION['USR_FULLNAME'] : ''; $this->userFullName = isset($_SESSION['USR_FULLNAME']) ? $_SESSION['USR_FULLNAME'] : '';
$this->userRolName = isset($_SESSION['USR_ROLENAME']) ? $_SESSION['USR_ROLENAME'] : ''; $this->userRolName = isset($_SESSION['USR_ROLENAME']) ? $_SESSION['USR_ROLENAME'] : '';
} }
} }
/** /**
@@ -37,14 +39,6 @@ class Home extends Controller
$process = new Process(); $process = new Process();
$case = new Cases(); $case = new Cases();
/**
* Getting the user's processes that can start
*/
if (!$case->canStartCase($_SESSION ['USER_LOGGED'])) {
//throw new Exception("User can not start a cases");
}
//Get ProcessStatistics Info //Get ProcessStatistics Info
$start = 0; $start = 0;
$limit = ''; $limit = '';
@@ -53,32 +47,16 @@ class Home extends Controller
$processList = $case->getStartCasesPerType ( $_SESSION ['USER_LOGGED'], 'category' ); $processList = $case->getStartCasesPerType ( $_SESSION ['USER_LOGGED'], 'category' );
unset($processList[0]); unset($processList[0]);
//$processList = array();
// foreach ( $processListInitial as $key => $procInfo ) {
// if (isset ( $procInfo ['pro_uid'] )) {
// if (trim ( $procInfo ['cat'] ) == "")
// $procInfo ['cat'] = "_OTHER_";
// $processList [$procInfo ['catname']] [$procInfo ['value']] = $procInfo;
// }
// }
//ksort($processList);
//g::pr($processList); die;
$this->setView('home/index'); $this->setView('home/index');
$this->setVar('usrUid', $this->userID); $this->setVar('usrUid', $this->userID);
$this->setVar('userName', $this->userName); $this->setVar('userName', $this->userName);
$this->setVar('processList', $processList); $this->setVar('processList', $processList);
$this->setVar('canStartCase', $case->canStartCase($_SESSION ['USER_LOGGED']));
G::RenderPage('publish', 'mvc'); G::RenderPage('publish', 'mvc');
} }
public function init($httpData) public function appList($httpData)
{ {
require_once ( "classes/model/AppCacheView.php" ); require_once ( "classes/model/AppCacheView.php" );
require_once ( "classes/model/Application.php" ); require_once ( "classes/model/Application.php" );
@@ -98,11 +76,10 @@ class Home extends Controller
/** /**
* Getting the user's applications list * Getting the user's applications list
*/ */
//TODO validate user id //TODO validate user id
// getting user's cases on inbox
// getting user's cases on inbox
switch ($httpData->t) { switch ($httpData->t) {
case 'in': case 'in':
$criteria = $appCache->getToDoListCriteria($this->userID); $criteria = $appCache->getToDoListCriteria($this->userID);
@@ -115,16 +92,10 @@ class Home extends Controller
break; break;
} }
//$criteriac = $oAppCache->getToDoCountCriteria($this->userID); //$criteriac = $oAppCache->getToDoCountCriteria($this->userID);
//$criteria->setLimit($limit); //$criteria->setLimit($limit);
//$criteria->setOffset($start); //$criteria->setOffset($start);
//$this->setView('home/index4');
$this->setView('home/index2');
$criteria->addDescendingOrderByColumn(AppCacheViewPeer::APP_NUMBER); $criteria->addDescendingOrderByColumn(AppCacheViewPeer::APP_NUMBER);
$dataset = AppCacheViewPeer::doSelectRS($criteria); $dataset = AppCacheViewPeer::doSelectRS($criteria);
$dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
@@ -161,7 +132,10 @@ class Home extends Controller
$cases[] = $row; $cases[] = $row;
} }
//g::pr($cases); die;
// settings html template
$this->setView('home/appList');
// settings vars and rendering // settings vars and rendering
$this->setVar('cases', $cases); $this->setVar('cases', $cases);
$this->setVar('title', $title); $this->setVar('title', $title);
@@ -169,48 +143,6 @@ class Home extends Controller
G::RenderPage('publish', 'mvc'); G::RenderPage('publish', 'mvc');
} }
/**
* getting default list
* @param string $httpData (opional)
*/
public function start($httpData)
{
$this->setView('home/index5');
//$this->setVar('id', $httpData->a);
//$this->setVar('index', $httpData->i);
$this->setVar('action', 'todo');
G::RenderPage('publish', 'mvc');
}
public function iframe_3($httpData)
{
$this->setView('home/iframe_3');
//$this->setVar('id', $httpData->a);
//$this->setVar('index', $httpData->i);
$this->setVar('action', 'todo');
G::RenderPage('publish', 'mvc');
}
public function iframe_4($httpData)
{
$this->setView('home/iframe_4');
//$this->setVar('id', $httpData->a);
//$this->setVar('index', $httpData->i);
$this->setVar('action', 'todo');
G::RenderPage('publish', 'mvc');
}
/**
* Private functions
*/
public function startCase($httpData) public function startCase($httpData)
{ {
G::LoadClass('case'); G::LoadClass('case');

View File

@@ -211,6 +211,7 @@ CREATE TABLE `GROUPWF`
`GRP_UID` VARCHAR(32) default '' NOT NULL, `GRP_UID` VARCHAR(32) default '' NOT NULL,
`GRP_STATUS` CHAR(8) default 'ACTIVE' NOT NULL, `GRP_STATUS` CHAR(8) default 'ACTIVE' NOT NULL,
`GRP_LDAP_DN` VARCHAR(255) default '' NOT NULL, `GRP_LDAP_DN` VARCHAR(255) default '' NOT NULL,
`GRP_UX` VARCHAR(128) default 'NORMAL',
PRIMARY KEY (`GRP_UID`) PRIMARY KEY (`GRP_UID`)
)ENGINE=MyISAM DEFAULT CHARSET='utf8'; )ENGINE=MyISAM DEFAULT CHARSET='utf8';
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
@@ -664,6 +665,7 @@ CREATE TABLE `USERS`
`USR_ROLE` VARCHAR(32) default 'PROCESSMAKER_ADMIN', `USR_ROLE` VARCHAR(32) default 'PROCESSMAKER_ADMIN',
`USR_REPORTS_TO` VARCHAR(32) default '', `USR_REPORTS_TO` VARCHAR(32) default '',
`USR_REPLACED_BY` VARCHAR(32) default '', `USR_REPLACED_BY` VARCHAR(32) default '',
`USR_UX` VARCHAR(128) default 'NORMAL',
PRIMARY KEY (`USR_UID`) PRIMARY KEY (`USR_UID`)
)ENGINE=MyISAM DEFAULT CHARSET='utf8' COMMENT='Users'; )ENGINE=MyISAM DEFAULT CHARSET='utf8' COMMENT='Users';
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
@@ -1391,14 +1393,8 @@ CREATE TABLE `DASHLET_INSTANCE`
( (
`DAS_INS_UID` VARCHAR(32) default '' NOT NULL, `DAS_INS_UID` VARCHAR(32) default '' NOT NULL,
`DAS_UID` VARCHAR(32) default '' NOT NULL, `DAS_UID` VARCHAR(32) default '' NOT NULL,
`DAS_INS_TYPE` VARCHAR(20) default '' NOT NULL,
`DAS_INS_CONTEXT_TIME` VARCHAR(20) default '' NOT NULL,
`DAS_INS_START_DATE` DATETIME,
`DAS_INS_END_DATE` DATETIME,
`DAS_INS_OWNER_TYPE` VARCHAR(20) default '' NOT NULL, `DAS_INS_OWNER_TYPE` VARCHAR(20) default '' NOT NULL,
`DAS_INS_OWNER_UID` VARCHAR(32) default '', `DAS_INS_OWNER_UID` VARCHAR(32) default '',
`DAS_INS_PROCESSES` MEDIUMTEXT,
`DAS_INS_TASKS` MEDIUMTEXT,
`DAS_INS_ADDITIONAL_PROPERTIES` MEDIUMTEXT, `DAS_INS_ADDITIONAL_PROPERTIES` MEDIUMTEXT,
`DAS_INS_CREATE_DATE` DATETIME NOT NULL, `DAS_INS_CREATE_DATE` DATETIME NOT NULL,
`DAS_INS_UPDATE_DATE` DATETIME, `DAS_INS_UPDATE_DATE` DATETIME,

View File

@@ -79,3 +79,4 @@ if ($RBAC->userCanAccess('PM_SETUP_ADVANCE') == 1) {
$G_TMP_MENU->AddIdRawOption('AUTHSOURCES', '../authSources/authSources_List', G::LoadTranslation('ID_AUTH_SOURCES'), '', '', 'users'); $G_TMP_MENU->AddIdRawOption('AUTHSOURCES', '../authSources/authSources_List', G::LoadTranslation('ID_AUTH_SOURCES'), '', '', 'users');
} }
$G_TMP_MENU->AddIdRawOption('UX', '../admin/uxList', 'User experience (UX)', '', '', 'users');

View File

@@ -27,16 +27,16 @@
/* Permissions */ /* Permissions */
switch ($RBAC->userCanAccess('PM_CASES')) switch ($RBAC->userCanAccess('PM_CASES'))
{ {
case -2: case -2:
G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_SYSTEM', 'error', 'labels'); G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_SYSTEM', 'error', 'labels');
G::header('location: ../login/login'); G::header('location: ../login/login');
die; die;
break; break;
case -1: case -1:
G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels'); G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels');
G::header('location: ../login/login'); G::header('location: ../login/login');
die; die;
break; break;
} }
/* Includes */ /* Includes */
@@ -53,75 +53,75 @@ foreach ($_POST['form']['TASKS'] as $aValues){
} }
try { try {
//load data //load data
$oCase = new Cases (); $oCase = new Cases ();
//warning: we are not using the result value of function thisIsTheCurrentUser, so I'm commenting to optimize speed. //warning: we are not using the result value of function thisIsTheCurrentUser, so I'm commenting to optimize speed.
//$oCase->thisIsTheCurrentUser( $_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['USER_LOGGED'], 'REDIRECT', 'cases_List'); //$oCase->thisIsTheCurrentUser( $_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['USER_LOGGED'], 'REDIRECT', 'cases_List');
$appFields = $oCase->loadCase( $_SESSION['APPLICATION'] ); $appFields = $oCase->loadCase( $_SESSION['APPLICATION'] );
$appFields['APP_DATA'] = array_merge($appFields['APP_DATA'], G::getSystemConstants()); $appFields['APP_DATA'] = array_merge($appFields['APP_DATA'], G::getSystemConstants());
//cleaning debug variables //cleaning debug variables
$_SESSION['TRIGGER_DEBUG']['DATA'] = Array(); $_SESSION['TRIGGER_DEBUG']['DATA'] = Array();
$_SESSION['TRIGGER_DEBUG']['TRIGGERS_NAMES'] = Array(); $_SESSION['TRIGGER_DEBUG']['TRIGGERS_NAMES'] = Array();
$_SESSION['TRIGGER_DEBUG']['TRIGGERS_VALUES'] = Array(); $_SESSION['TRIGGER_DEBUG']['TRIGGERS_VALUES'] = Array();
$triggers = $oCase->loadTriggers( $_SESSION['TASK'], 'ASSIGN_TASK', -2, 'BEFORE'); $triggers = $oCase->loadTriggers( $_SESSION['TASK'], 'ASSIGN_TASK', -2, 'BEFORE');
//if there are some triggers to execute //if there are some triggers to execute
if( sizeof($triggers) > 0) { if( sizeof($triggers) > 0) {
//Execute triggers before derivation //Execute triggers before derivation
$appFields['APP_DATA'] = $oCase->ExecuteTriggers ( $_SESSION['TASK'], 'ASSIGN_TASK', -2, 'BEFORE', $appFields['APP_DATA'] ); $appFields['APP_DATA'] = $oCase->ExecuteTriggers ( $_SESSION['TASK'], 'ASSIGN_TASK', -2, 'BEFORE', $appFields['APP_DATA'] );
//save trigger variables for debugger //save trigger variables for debugger
$_SESSION['TRIGGER_DEBUG']['info'][0]['NUM_TRIGGERS'] = sizeof($triggers); $_SESSION['TRIGGER_DEBUG']['info'][0]['NUM_TRIGGERS'] = sizeof($triggers);
$_SESSION['TRIGGER_DEBUG']['info'][0]['TIME'] = 'BEFORE'; $_SESSION['TRIGGER_DEBUG']['info'][0]['TIME'] = 'BEFORE';
$_SESSION['TRIGGER_DEBUG']['info'][0]['TRIGGERS_NAMES'] = $oCase->getTriggerNames($triggers); $_SESSION['TRIGGER_DEBUG']['info'][0]['TRIGGERS_NAMES'] = $oCase->getTriggerNames($triggers);
$_SESSION['TRIGGER_DEBUG']['info'][0]['TRIGGERS_VALUES'] = $triggers; $_SESSION['TRIGGER_DEBUG']['info'][0]['TRIGGERS_VALUES'] = $triggers;
} }
$appFields['DEL_INDEX'] = $_SESSION['INDEX']; $appFields['DEL_INDEX'] = $_SESSION['INDEX'];
$appFields['TAS_UID'] = $_SESSION['TASK']; $appFields['TAS_UID'] = $_SESSION['TASK'];
$oCase->updateCase ( $_SESSION['APPLICATION'], $appFields); //Save data $oCase->updateCase ( $_SESSION['APPLICATION'], $appFields); //Save data
//derivate case //derivate case
$oDerivation = new Derivation(); $oDerivation = new Derivation();
$aCurrentDerivation = array( $aCurrentDerivation = array(
'APP_UID' => $_SESSION['APPLICATION'], 'APP_UID' => $_SESSION['APPLICATION'],
'DEL_INDEX' => $_SESSION['INDEX'], 'DEL_INDEX' => $_SESSION['INDEX'],
'APP_STATUS' => $sStatus, 'APP_STATUS' => $sStatus,
'TAS_UID' => $_SESSION['TASK'], 'TAS_UID' => $_SESSION['TASK'],
'ROU_TYPE' => $_POST['form']['ROU_TYPE'] 'ROU_TYPE' => $_POST['form']['ROU_TYPE']
); );
$oDerivation->derivate( $aCurrentDerivation, $_POST['form']['TASKS'] ); $oDerivation->derivate( $aCurrentDerivation, $_POST['form']['TASKS'] );
$appFields = $oCase->loadCase( $_SESSION['APPLICATION'] ); //refresh appFields, because in derivations should change some values $appFields = $oCase->loadCase( $_SESSION['APPLICATION'] ); //refresh appFields, because in derivations should change some values
$triggers = $oCase->loadTriggers( $_SESSION['TASK'], 'ASSIGN_TASK', -2, 'AFTER'); //load the triggers after derivation $triggers = $oCase->loadTriggers( $_SESSION['TASK'], 'ASSIGN_TASK', -2, 'AFTER'); //load the triggers after derivation
if( sizeof($triggers) > 0 ) { if( sizeof($triggers) > 0 ) {
$appFields['APP_DATA'] = $oCase->ExecuteTriggers ( $_SESSION['TASK'], 'ASSIGN_TASK', -2, 'AFTER', $appFields['APP_DATA'] ); //Execute triggers after derivation $appFields['APP_DATA'] = $oCase->ExecuteTriggers ( $_SESSION['TASK'], 'ASSIGN_TASK', -2, 'AFTER', $appFields['APP_DATA'] ); //Execute triggers after derivation
$_SESSION['TRIGGER_DEBUG']['info'][1]['NUM_TRIGGERS'] = sizeof($triggers); $_SESSION['TRIGGER_DEBUG']['info'][1]['NUM_TRIGGERS'] = sizeof($triggers);
$_SESSION['TRIGGER_DEBUG']['info'][1]['TIME'] = 'AFTER'; $_SESSION['TRIGGER_DEBUG']['info'][1]['TIME'] = 'AFTER';
$_SESSION['TRIGGER_DEBUG']['info'][1]['TRIGGERS_NAMES'] = $oCase->getTriggerNames($triggers); $_SESSION['TRIGGER_DEBUG']['info'][1]['TRIGGERS_NAMES'] = $oCase->getTriggerNames($triggers);
$_SESSION['TRIGGER_DEBUG']['info'][1]['TRIGGERS_VALUES'] = $triggers; $_SESSION['TRIGGER_DEBUG']['info'][1]['TRIGGERS_VALUES'] = $triggers;
} }
$oCase->updateCase ( $_SESSION['APPLICATION'], $appFields); $oCase->updateCase ( $_SESSION['APPLICATION'], $appFields);
// Send notifications - Start // Send notifications - Start
$oUser = new Users(); $oUser = new Users();
$aUser = $oUser->load($_SESSION['USER_LOGGED']); $aUser = $oUser->load($_SESSION['USER_LOGGED']);
$sFromName = '"' . $aUser['USR_FIRSTNAME'] . ' ' . $aUser['USR_LASTNAME'] . '"'; $sFromName = '"' . $aUser['USR_FIRSTNAME'] . ' ' . $aUser['USR_LASTNAME'] . '"';
try { try {
$oCase->sendNotifications($_SESSION['TASK'], $_POST['form']['TASKS'], $appFields['APP_DATA'], $_SESSION['APPLICATION'], $_SESSION['INDEX'], $sFromName); $oCase->sendNotifications($_SESSION['TASK'], $_POST['form']['TASKS'], $appFields['APP_DATA'], $_SESSION['APPLICATION'], $_SESSION['INDEX'], $sFromName);
} catch(Exception $e){ } catch(Exception $e){
G::SendTemporalMessage(G::loadTranslation('ID_NOTIFICATION_ERROR').' - '. $e->getMessage(), 'warning', 'string', null, '100%'); G::SendTemporalMessage(G::loadTranslation('ID_NOTIFICATION_ERROR').' - '. $e->getMessage(), 'warning', 'string', null, '100%');
} }
// Send notifications - End // Send notifications - End
// Events - Start // Events - Start
$oEvent = new Event(); $oEvent = new Event();
$oEvent->closeAppEvents($_SESSION['PROCESS'], $_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['TASK']); $oEvent->closeAppEvents($_SESSION['PROCESS'], $_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['TASK']);
$oCurrentAppDel = AppDelegationPeer::retrieveByPk($_SESSION['APPLICATION'], $_SESSION['INDEX']+1 ); $oCurrentAppDel = AppDelegationPeer::retrieveByPk($_SESSION['APPLICATION'], $_SESSION['INDEX']+1 );
$multipleDelegation = false; $multipleDelegation = false;
// check if there are multiple derivations // check if there are multiple derivations
@@ -143,20 +143,31 @@ try {
} }
} }
} }
//Events - End //Events - End
$debuggerAvailable = true;
$aNextStep['PAGE'] = 'casesListExtJsRedirector'; if (isset($_SESSION['user_experience']) && $_SESSION['user_experience'] == 'simplified') {
if( isset($_SESSION['PMDEBUGGER']) && $_SESSION['PMDEBUGGER'] ){ $aNextStep['PAGE'] = '../home/appList';
$_SESSION['TRIGGER_DEBUG']['BREAKPAGE'] = $aNextStep['PAGE']; $debuggerAvailable = false;
G::header('location: ' . 'cases_Step?' .'breakpoint=triggerdebug'); }
} else { else {
G::header('location: casesListExtJsRedirector'); $aNextStep['PAGE'] = 'casesListExtJsRedirector';
} }
if (isset($_SESSION['PMDEBUGGER']) && $_SESSION['PMDEBUGGER'] && $debuggerAvailable) {
$_SESSION['TRIGGER_DEBUG']['BREAKPAGE'] = $aNextStep['PAGE'];
$loc = 'cases_Step?' .'breakpoint=triggerdebug';
}
else {
$loc = $aNextStep['PAGE'];
}
G::header("location: $loc");
} }
catch ( Exception $e ){ catch ( Exception $e ) {
$aMessage = array(); $aMessage = array();
$aMessage['MESSAGE'] = $e->getMessage() . '<br>'.$e->getTraceAsString(); $aMessage['MESSAGE'] = $e->getMessage() . '<br>'.$e->getTraceAsString();
$G_PUBLISH = new Publisher; $G_PUBLISH = new Publisher;
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showMessage', '', $aMessage ); $G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showMessage', '', $aMessage );
G::RenderPage( 'publish', 'blank'); G::RenderPage( 'publish', 'blank');
} }

View File

@@ -234,11 +234,16 @@ try {
G::header ( 'location: ' . $_SERVER ['HTTP_REFERER'] ); G::header ( 'location: ' . $_SERVER ['HTTP_REFERER'] );
die (); die ();
} }
$_SESSION ['STEP_POSITION'] = $aNextStep ['POSITION']; $_SESSION ['STEP_POSITION'] = $aNextStep ['POSITION'];
$_SESSION['BREAKSTEP']['NEXT_STEP'] = $aNextStep ['PAGE']; $_SESSION['BREAKSTEP']['NEXT_STEP'] = $aNextStep ['PAGE'];
$debuggerAvailable = true;
if ($trigger_debug_session) { if (isset($_SESSION['user_experience']) && $_SESSION['user_experience'] == 'simplified') {
$debuggerAvailable = false;
}
if ($trigger_debug_session && $debuggerAvailable) {
$_SESSION ['TRIGGER_DEBUG'] ['BREAKPAGE'] = $aNextStep ['PAGE']; $_SESSION ['TRIGGER_DEBUG'] ['BREAKPAGE'] = $aNextStep ['PAGE'];
$aNextStep ['PAGE'] = $aNextStep ['PAGE'] . '&breakpoint=triggerdebug'; $aNextStep ['PAGE'] = $aNextStep ['PAGE'] . '&breakpoint=triggerdebug';
} }

View File

@@ -52,6 +52,8 @@
$oHeadPublisher->assign( 'defaultOption', $defaultOption); // user menu permissions $oHeadPublisher->assign( 'defaultOption', $defaultOption); // user menu permissions
$oHeadPublisher->assign( '_nodeId', isset($confDefaultOption)?$confDefaultOption:'PM_USERS'); // user menu permissions $oHeadPublisher->assign( '_nodeId', isset($confDefaultOption)?$confDefaultOption:'PM_USERS'); // user menu permissions
$_SESSION['user_experience'] = 'normal';
G::RenderPage('publish', 'extJs'); G::RenderPage('publish', 'extJs');

View File

@@ -122,6 +122,7 @@ switch ($_POST['action'])
$oCriteria->addSelectColumn(GroupwfPeer::GRP_UID); $oCriteria->addSelectColumn(GroupwfPeer::GRP_UID);
$oCriteria->addSelectColumn(GroupwfPeer::GRP_STATUS); $oCriteria->addSelectColumn(GroupwfPeer::GRP_STATUS);
$oCriteria->addSelectColumn(GroupwfPeer::GRP_UX);
$oCriteria->addSelectColumn(ContentPeer::CON_VALUE); $oCriteria->addSelectColumn(ContentPeer::CON_VALUE);
$oCriteria->addAsColumn('GRP_TASKS', 0); $oCriteria->addAsColumn('GRP_TASKS', 0);
$oCriteria->addAsColumn('GRP_USERS', 0); $oCriteria->addAsColumn('GRP_USERS', 0);
@@ -142,6 +143,9 @@ switch ($_POST['action'])
$members = new GroupUser(); $members = new GroupUser();
$aMembers = $members->getCountAllUsersByGroup(); $aMembers = $members->getCountAllUsersByGroup();
require_once PATH_CONTROLLERS . 'adminProxy.php';
$uxList = adminProxy::getUxTypesList();
$arrData = Array(); $arrData = Array();
while ($oDataset->next()){ while ($oDataset->next()){
@@ -149,8 +153,10 @@ switch ($_POST['action'])
$row['GRP_TASKS'] = isset($aTask[$row['GRP_UID']]) ? $aTask[$row['GRP_UID']] : 0; $row['GRP_TASKS'] = isset($aTask[$row['GRP_UID']]) ? $aTask[$row['GRP_UID']] : 0;
$row['GRP_USERS'] = isset($aMembers[$row['GRP_UID']]) ? $aMembers[$row['GRP_UID']] : 0; $row['GRP_USERS'] = isset($aMembers[$row['GRP_UID']]) ? $aMembers[$row['GRP_UID']] : 0;
$group = GroupwfPeer::retrieveByPK($row['GRP_UID']); $group = GroupwfPeer::retrieveByPK($row['GRP_UID']);
$row['CON_VALUE']= $group->getGrpTitle(); $row['CON_VALUE'] = $group->getGrpTitle();
$arrData[] = $row; $row['GRP_UX'] = isset($uxList[$row['GRP_UX']]) ? $uxList[$row['GRP_UX']] : $uxList['NORMAL'];
$arrData[] = $row;
} }
echo '{success: true, groups: '.G::json_encode($arrData).', total_groups: '.$totalRows.'}'; echo '{success: true, groups: '.G::json_encode($arrData).', total_groups: '.$totalRows.'}';

View File

@@ -354,6 +354,7 @@ try {
$oCriteria->addSelectColumn(UsersPeer::USR_ROLE); $oCriteria->addSelectColumn(UsersPeer::USR_ROLE);
$oCriteria->addSelectColumn(UsersPeer::USR_DUE_DATE); $oCriteria->addSelectColumn(UsersPeer::USR_DUE_DATE);
$oCriteria->addSelectColumn(UsersPeer::USR_STATUS); $oCriteria->addSelectColumn(UsersPeer::USR_STATUS);
$oCriteria->addSelectColumn(UsersPeer::USR_UX);
$oCriteria->addSelectColumn(UsersPeer::DEP_UID); $oCriteria->addSelectColumn(UsersPeer::DEP_UID);
$oCriteria->addAsColumn('LAST_LOGIN', 0); $oCriteria->addAsColumn('LAST_LOGIN', 0);
$oCriteria->addAsColumn('DEP_TITLE', 0); $oCriteria->addAsColumn('DEP_TITLE', 0);
@@ -396,15 +397,20 @@ try {
$aDepart = $Department->getAllDepartmentsByUser(); $aDepart = $Department->getAllDepartmentsByUser();
$aAuthSources = $RBAC->getAllAuthSourcesByUser(); $aAuthSources = $RBAC->getAllAuthSourcesByUser();
require_once PATH_CONTROLLERS . 'adminProxy.php';
$uxList = adminProxy::getUxTypesList();
$rows = Array(); $rows = Array();
while($oDataset->next()){ while($oDataset->next()){
$rows[] = $oDataset->getRow(); $row = $oDataset->getRow();
$index = sizeof($rows) - 1; $row['DUE_DATE_OK'] = (date('Y-m-d')>date('Y-m-d',strtotime($row['USR_DUE_DATE'])))? 0 : 1;
$rows[$index]['DUE_DATE_OK'] = (date('Y-m-d')>date('Y-m-d',strtotime($rows[$index]['USR_DUE_DATE'])))? 0 : 1; $row['LAST_LOGIN'] = isset($aLogin[$row['USR_UID']]) ? $aLogin[$row['USR_UID']] : '';
$rows[$index]['LAST_LOGIN'] = isset($aLogin[$rows[$index]['USR_UID']]) ? $aLogin[$rows[$index]['USR_UID']] : ''; $row['TOTAL_CASES'] = isset($aCases[$row['USR_UID']]) ? $aCases[$row['USR_UID']] : 0;
$rows[$index]['TOTAL_CASES'] = isset($aCases[$rows[$index]['USR_UID']]) ? $aCases[$rows[$index]['USR_UID']] : 0; $row['DEP_TITLE'] = isset($aDepart[$row['USR_UID']]) ? $aDepart[$row['USR_UID']] : '';
$rows[$index]['DEP_TITLE'] = isset($aDepart[$rows[$index]['USR_UID']]) ? $aDepart[$rows[$index]['USR_UID']] : ''; $row['USR_UX'] = isset($uxList[$row['USR_UX']]) ? $uxList[$row['USR_UX']] : $uxList['NORMAL'];
$rows[$index]['USR_AUTH_SOURCE'] = isset($aAuthSources[$rows[$index]['USR_UID']]) ? $aAuthSources[$rows[$index]['USR_UID']] : 'ProcessMaker (MYSQL)'; $row['USR_AUTH_SOURCE'] = isset($aAuthSources[$row['USR_UID']]) ? $aAuthSources[$row['USR_UID']] : 'ProcessMaker (MYSQL)';
$rows[] = $row;
} }
echo '{users: '.G::json_encode($rows).', total_users: '.$totalRows.'}'; echo '{users: '.G::json_encode($rows).', total_users: '.$totalRows.'}';
break; break;

View File

@@ -0,0 +1,468 @@
/**
* @author: Erik Amaru O. <erik@colosa.com>
*/
var store;
var cmodel;
var usersGrid;
var groupsGrid;
var smodel;
var searchButton;
var searchText;
var user_admin = '00000000000000000000000000000001';
var pageSize;
var fullNameFormat;
var dateFormat;
Ext.onReady(function(){
Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
Ext.QuickTips.init();
fullNameFormat = CONFIG.fullNameFormat;
dateFormat = CONFIG.dateFormat;
pageSize = parseInt(CONFIG.pageSize);
searchButton = new Ext.Action({
text: _('ID_SEARCH'),
handler: DoSearch
});
searchText = new Ext.form.TextField ({
id: 'searchTxt',
ctCls:'pm_search_text_field',
allowBlank: true,
width: 150,
emptyText: _('ID_ENTER_SEARCH_TERM'),//'enter search term',
listeners: {
specialkey: function(f,e){
if (e.getKey() == e.ENTER) {
DoSearch();
}
},
focus: function(f,e) {
var row = usersGrid.getSelectionModel().getSelected();
usersGrid.getSelectionModel().deselectRow(usersGrid.getStore().indexOf(row));
}
}
});
clearTextButton = new Ext.Action({
text: 'X',
ctCls:'pm_search_x_button',
handler: GridByDefault
});
smodel = new Ext.grid.RowSelectionModel({
singleSelect: true,
listeners:{
rowselect: function(sm){
//editButton.enable();
},
rowdeselect: function(sm){
//editButton.disable();
}
}
});
var reader = new Ext.data.JsonReader( {
root: 'users',
totalProperty: 'total_users',
idProperty: 'USR_UID',
fields : [
{name : 'USR_UID'},
{name : 'USR_USERNAME'},
{name : 'USR_FIRSTNAME'},
{name : 'USR_LASTNAME'},
{name : 'USR_EMAIL'},
{name : 'USR_ROLE'},
{name : 'USR_DUE_DATE'},
{name : 'DEP_TITLE'},
{name : 'LAST_LOGIN'},
{name : 'USR_STATUS'},
{name : 'USR_UX'},
{name : 'TOTAL_CASES',type:'int'},
{name : 'DUE_DATE_OK'},
{name : 'USR_AUTH_SOURCE'}
]
});
var proxy = new Ext.data.HttpProxy({
api: {
read : '../users/users_Ajax?function=usersList',
//create : 'app.php/users/create',
update: '../adminProxy/uxUserUpdate'//,
//destroy: 'app.php/users/destroy'
}
});
// The new DataWriter component.
var writer = new Ext.data.JsonWriter({
encode: true,
writeAllFields: false
});
store = new Ext.data.GroupingStore( {
// proxy: new Ext.data.HttpProxy({
// url: '../users/users_Ajax?function=usersList'
// }),
proxy: proxy,
reader: reader,
writer: writer, // <-- plug a DataWriter into the store just as you would a Reader
autoSave: true // <-- false would delay executing create, update, destroy requests until specifically told to do so with some [save] buton.
});
comboPageSize = new Ext.form.ComboBox({
typeAhead : false,
mode : 'local',
triggerAction : 'all',
store: new Ext.data.SimpleStore({
fields: ['size'],
data: [['20'],['30'],['40'],['50'],['100']],
autoLoad: true
}),
valueField: 'size',
displayField: 'size',
width: 50,
editable: false,
listeners:{
select: function(c,d,i){
//UpdatePageConfig(d.data['size']);
bbarpaging.pageSize = parseInt(d.data['size']);
bbarpaging.moveFirst();
}
}
});
comboPageSize.setValue(pageSize);
bbarpaging = new Ext.PagingToolbar({
pageSize: pageSize,
store: store,
displayInfo: true,
displayMsg: _('ID_GRID_PAGE_DISPLAYING_USERS_MESSAGE') + '&nbsp; &nbsp; ',
emptyMsg: _('ID_GRID_PAGE_NO_USERS_MESSAGE'),
items: ['-',_('ID_PAGE_SIZE')+':',comboPageSize]
});
cmodel = new Ext.grid.ColumnModel({
columns: [
{id:'USR_UID', dataIndex: 'USR_UID', hidden:true, hideable:false},
//{header: '', dataIndex: 'USR_UID', width: 30, align:'center', sortable: false, renderer: photo_user},
{header: _('ID_USER_NAME'), dataIndex: 'USR_USERNAME', width: 90, hidden:false, align:'left'},
{header: _('ID_FULL_NAME'), dataIndex: 'USR_USERNAME', width: 50, align:'left', renderer: full_name},
{header: _('ID_ROLE'), dataIndex: 'USR_ROLE', width: 50, hidden:false, align:'left'},
{header: _('ID_STATUS'), dataIndex: 'USR_STATUS', width: 50, hidden: true, align: 'center', renderer: render_status},
{
header: 'User experience',
dataIndex: 'USR_UX',
width: 50,
editor: new Ext.form.ComboBox({
listClass: 'x-combo-list-small',
mode: 'local',
displayField:'name',
lazyRender: true,
triggerAction: 'all',
valueField:'id',
editable: false,
store: new Ext.data.ArrayStore({
fields: ['id', 'name'],
data : [['NORMAL', 'Normal'], ['SIMPLIFIED', 'Simplified']]
}),
listeners: {
select: function(a, b) {
var row = usersGrid.getSelectionModel().getSelected();
role = row.get('USR_ROLE');
//console.log(role)
if (role == 'PROCESSMAKER_ADMIN') {
PMExt.warning(_('ID_ERROR'), 'You can\'t assign this User Experience UI for users that have PROCESSMAKER_ADMIN role.');
this.setValue('NORMAL');
}
}
}
})
}
]
});
usersGrid = new Ext.grid.EditorGridPanel({
title: 'Users',
//region: 'center',
layout: 'fit',
id: 'usersGrid',
height:100,
autoWidth : true,
stateful : true,
stateId : 'grid',
enableColumnResize: true,
enableHdMenu: true,
frame:false,
columnLines: false,
viewConfig: {
forceFit:true
},
clicksToEdit: 1,
store: store,
cm: cmodel,
sm: smodel,
tbar: [{xtype: 'tbfill'}, searchText,clearTextButton,searchButton],
bbar: bbarpaging,
listeners: {
rowdblclick: function(){
}
},
view: new Ext.grid.GroupingView({
forceFit:true,
groupTextTpl: '{text}'
})
});
// GROUPS
var proxyGroups = new Ext.data.HttpProxy({
api: {
read : '../groups/groups_Ajax?action=groupsList',
//create : 'app.php/users/create',
update: '../adminProxy/uxGroupUpdate'//,
//destroy: 'app.php/users/destroy'
}
});
var readerGroups = new Ext.data.JsonReader( {
root: 'groups',
totalProperty: 'total_groups',
idProperty: 'GRP_UID',
fields : [
{name : 'GRP_UID'},
{name : 'GRP_STATUS'},
{name : 'CON_VALUE'},
{name : 'GRP_TASKS', type: 'int'},
{name : 'GRP_USERS', type: 'int'},
{name : 'GRP_UX'}
]
});
// The new DataWriter component.
var writerGroups = new Ext.data.JsonWriter({
encode: true,
writeAllFields: false
});
storeGroups = new Ext.data.GroupingStore( {
// proxy: new Ext.data.HttpProxy({
// url: '../groups/groups_Ajax?action=groupsList'
// }),
proxy: proxyGroups,
reader: readerGroups,
writer: writerGroups, // <-- plug a DataWriter into the store just as you would a Reader
autoSave: true // <-- false would delay executing create, update, destroy requests until specifically told to do so with some [save] buton.
});
cmodelGroups = new Ext.grid.ColumnModel({
viewConfig: {
cls:"x-grid-empty",
emptyText: (TRANSLATIONS.ID_NO_RECORDS_FOUND)
}
,
columns: [
{id:'GRP_UID', dataIndex: 'USR_UID', hidden:true, hideable:false},
{header: _('ID_GROUP_NAME'), dataIndex: 'CON_VALUE', width: 100, align:'left'},
{header: _('ID_STATUS'), dataIndex: 'GRP_STATUS', width: 100, align:'center', renderer: render_status},
{
header: 'User experience',
dataIndex: 'GRP_UX',
width: 50,
editor: new Ext.form.ComboBox({
listClass: 'x-combo-list-small',
mode: 'local',
displayField:'name',
lazyRender: true,
triggerAction: 'all',
valueField:'id',
editable: false,
store: new Ext.data.ArrayStore({
fields: ['id', 'name'],
data : [['NORMAL', 'Normal'], ['SIMPLIFIED', 'Simplified']]
})
})
}
]
});
comboPageSizeGroups = new Ext.form.ComboBox({
typeAhead : false,
mode : 'local',
triggerAction : 'all',
store: new Ext.data.SimpleStore({
fields: ['size'],
data: [['20'],['30'],['40'],['50'],['100']],
autoLoad: true
}),
valueField: 'size',
displayField: 'size',
width: 50,
editable: false,
listeners:{
select: function(c,d,i){
//UpdatePageConfig(d.data['size']);
bbarpaging.pageSize = parseInt(d.data['size']);
bbarpaging.moveFirst();
}
}
});
comboPageSizeGroups.setValue(pageSize);
bbarpagingGroups = new Ext.PagingToolbar({
pageSize: pageSize,
store: storeGroups,
displayInfo: true,
displayMsg: _('ID_GRID_PAGE_DISPLAYING_GROUPS_MESSAGE') + '&nbsp; &nbsp; ',
emptyMsg: _('ID_GRID_PAGE_NO_GROUPS_MESSAGE'),
items: ['-',_('ID_PAGE_SIZE')+':',comboPageSizeGroups]
});
var searchButtonGroups = new Ext.Action({
text: _('ID_SEARCH'),
handler: DoSearchGroups
});
var searchTextGroups = new Ext.form.TextField ({
id: 'searchTxtGroups',
ctCls:'pm_search_text_field',
allowBlank: true,
width: 150,
emptyText: _('ID_ENTER_SEARCH_TERM'),//'enter search term',
listeners: {
specialkey: function(f,e){
if (e.getKey() == e.ENTER) {
DoSearchGroups();
}
}
}
});
var clearTextButtonGroups = new Ext.Action({
text: 'X',
ctCls:'pm_search_x_button',
handler: GridByDefaultGroups
});
groupsGrid = new Ext.grid.EditorGridPanel({
title : _('ID_GROUPS'),
//region: 'center',
layout: 'fit',
id: 'groupsGrid',
height:100,
autoWidth : true,
stateful : true,
stateId : 'grid',
enableColumnResize: true,
enableHdMenu: true,
frame:false,
columnLines: false,
viewConfig: {
forceFit:true
},
clicksToEdit: 1,
store: storeGroups,
cm: cmodelGroups,
//sm: smodel,
tbar: [{xtype: 'tbfill'}, searchTextGroups,clearTextButtonGroups,searchButtonGroups],
bbar: bbarpagingGroups,
// listeners: {
// rowdblclick: EditGroupWindow
// },
view: new Ext.grid.GroupingView({
forceFit:true,
groupTextTpl: '{text}',
cls:"x-grid-empty",
emptyText: _('ID_NO_RECORDS_FOUND')
})
});
store.load();
storeGroups.load();
viewport = new Ext.Viewport({
layout: 'fit',
autoScroll: false,
items: [{
xtype: 'tabpanel',
region: 'center',
activeTab: 0,
items : [
usersGrid,
groupsGrid
]
}]
});
});
//Render Full Name
full_name = function(v,x,s){
return _FNF(v, s.data.USR_FIRSTNAME, s.data.USR_LASTNAME);
};
//Render Status
render_status = function(v){
switch(v){
case 'ACTIVE': return '<font color="green">' + _('ID_ACTIVE') + '</font>'; break;
case 'INACTIVE': return '<font color="red">' + _('ID_INACTIVE') + '</font>';; break;
case 'VACATION': return '<font color="blue">' + _('ID_VACATION') + '</font>';; break;
}
};
//Render Due Date
render_duedate = function(v,x,s){
if (s.data.DUE_DATE_OK)
return _DF(v);
else
return '<font color="red">' + _DF(v) + '</font>';
};
render_lastlogin = function(v){
return _DF(v);
};
//Load Grid By Default
GridByDefault = function(){
searchText.reset();
usersGrid.store.load();
};
//Do Search Function
DoSearch = function(){
usersGrid.store.load({params: {textFilter: searchText.getValue()}});
};
GridByDefaultGroups = function(){
searchText.reset();
groupsGrid.store.load();
};
//Do Search Function
DoSearchGroups = function(){
groupsGrid.store.load({params: {textFilter: Ext.getCmp('searchTxtGroups').getValue()}});
};
//Update Page Size Configuration
UpdatePageConfig = function(pageSize){
Ext.Ajax.request({
url: 'users_Ajax',
params: {'function':'updatePageSize', size: pageSize}
});
};
//Update Authentication Source Filter
UpdateAuthSource = function(index){
searchText.reset();
usersGrid.store.load({params: {auths: index}});
};

View File

@@ -4,7 +4,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=2.0, user-scalable=yes" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=2.0, user-scalable=yes" />
<link rel="shortcut icon" href="/images/favicon.ico" type="image/x-icon"/> <link rel="shortcut icon" href="/images/favicon.ico" type="image/x-icon"/>
<link rel="stylesheet" href="/js/jquery/css/esmothness/jquery-ui-1.8.17.custom.css" type="text/css"> <link rel="stylesheet" href="/js/jquery/css/smoothness/jquery-ui-1.8.17.custom.css" type="text/css">
<link rel="stylesheet" href="/css/simplified.css" media="screen" rel="stylesheet" type="text/css" /> <link rel="stylesheet" href="/css/simplified.css" media="screen" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="/js/jquery/jquery-1.7.1.min.js"></script> <script type="text/javascript" src="/js/jquery/jquery-1.7.1.min.js"></script>
@@ -68,19 +68,19 @@
<ul class="nav primary-nav"> <ul class="nav primary-nav">
<li class="account"> <li class="account">
<a class="menu user-actions" href="#" onclick="redirect('home/init?t=in')" title="My Inbox"> <a class="menu user-actions" href="#" onclick="redirect('home/appList?t=in')" title="My Inbox">
<img alt="A99679add21e8b0704ea5f0fb569572c_mini" src="/images/simplified/in-set-grey.png" /> <img alt="A99679add21e8b0704ea5f0fb569572c_mini" src="/images/simplified/in-set-grey.png" />
<!-- <span class="menu-label screen-name">new cases</span> --> <!-- <span class="menu-label screen-name">new cases</span> -->
</a> </a>
</li> </li>
<li class="account"> <li class="account">
<a class="menu user-actions" href="#" onclick="redirect('home/init?t=draft')" title="My Drafts"> <a class="menu user-actions" href="#" onclick="redirect('home/appList?t=draft')" title="My Drafts">
<img alt="A99679add21e8b0704ea5f0fb569572c_mini" src="/images/simplified/folder-grey.png" /> <img alt="A99679add21e8b0704ea5f0fb569572c_mini" src="/images/simplified/folder-grey.png" />
<!-- <span class="menu-label screen-name">new cases</span> --> <!-- <span class="menu-label screen-name">new cases</span> -->
</a> </a>
</li> </li>
{if $canStartCase neq false}
<li class="account"> <li class="account">
<a class="menu user-actions" href="#"> <a class="menu user-actions" href="#">
<img alt="A99679add21e8b0704ea5f0fb569572c_mini" src="/images/simplified/plus-set-grey.png" title="Start a new Application"/> <img alt="A99679add21e8b0704ea5f0fb569572c_mini" src="/images/simplified/plus-set-grey.png" title="Start a new Application"/>
@@ -95,7 +95,7 @@
{/foreach} {/foreach}
</ul> </ul>
</li> </li>
{/if}
</ul> </ul>
<ul class="nav secondary-nav"> <ul class="nav secondary-nav">
@@ -120,7 +120,7 @@
<!-- end topbar --> <!-- end topbar -->
</div> </div>
<iframe id="iframex" name="iframex" src="home/init" width="100%" height="200" scrolling="yes" frameborder="0"></iframe> <iframe id="iframex" name="iframex" src="home/appList" width="100%" height="200" scrolling="yes" frameborder="0"></iframe>
{literal} {literal}