HOR-850 "Admin -> Users -> Edit User -> Replaced By..." SOLVED

Issue:
    Admin -> Users -> Edit User -> Replaced By, cambiar el tipo de control a suggest
Cause:
    Requerimiento de cambio de componente
Solution:
    Se implemento el componente suggest en el modulo especificado
This commit is contained in:
Victor Saisa Lopez
2016-04-26 15:17:18 -04:00
parent 51e5bcd88c
commit bca207b891
5 changed files with 147 additions and 111 deletions

View File

@@ -60,39 +60,31 @@ switch ($_POST['action']) {
print (G::json_encode($oData));
break;
case 'usersList':
require_once 'classes/model/Users.php';
$oCriteria = new Criteria();
$oCriteria->addSelectColumn(UsersPeer::USR_UID);
$oCriteria->addSelectColumn(UsersPeer::USR_USERNAME);
$oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME);
$oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME);
$oCriteria->addSelectColumn(UsersPeer::USR_EMAIL);
$oCriteria->add(UsersPeer::USR_STATUS, array('ACTIVE', 'VACATION'), Criteria::IN);
$oCriteria->addAscendingOrderByColumn(UsersPeer::USR_USERNAME);
$filter = (isset($_POST['filter']))? $_POST['filter'] : '';
$arrayUser = [];
$user = new \ProcessMaker\BusinessModel\User();
$conf = new Configurations();
$arrayConfFormat = $conf->getFormats();
$arrayCondition = [[UsersPeer::USR_STATUS, ['ACTIVE', 'VACATION'], Criteria::IN]];
if (isset($_POST['USR_UID'])) {
$oCriteria->add(UsersPeer::USR_UID, $_POST['USR_UID'], Criteria::NOT_EQUAL);
$arrayCondition[] = [UsersPeer::USR_UID, $_POST['USR_UID'], Criteria::NOT_EQUAL];
}
$oDataset = UsersPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
G::loadClass('configuration');
$oConf = new Configurations();
$oConf->loadConfig($obj, 'ENVIRONMENT_SETTINGS', '');
$result = $user->getUsers(['condition' => $arrayCondition, 'filter' => $filter], null, null, null, 25);
$defaultOption = isset($oConf->aConfig['format']) ? $oConf->aConfig['format'] : '';
$aUserInfo = array();
if (isset($_POST['addNone']) && $_POST['addNone'] == '1') {
$aUserInfo[] = array('USR_UID' => '', 'USER_FULLNAME' => '- ' . G::LoadTranslation('ID_NONE') . ' -');
foreach ($result['data'] as $record) {
$arrayUser[] = [
'USR_UID' => $record['USR_UID'],
'USER_FULLNAME' => G::getFormatUserList($arrayConfFormat['format'], $record)
];
}
while ($oDataset->next()) {
$aRow1 = $oDataset->getRow();
$infoUser = G::getFormatUserList($defaultOption, $aRow1);
$aUserInfo[] = array('USR_UID' => $aRow1['USR_UID'], 'USER_FULLNAME' => $infoUser);
}
print (G::json_encode($aUserInfo));
echo G::json_encode($arrayUser);
break;
case 'availableCalendars':
G::LoadClass('calendar');
@@ -164,6 +156,8 @@ switch ($_POST['action']) {
$form['USR_LOGGED_NEXT_TIME'] = 0;
}
$user = new \ProcessMaker\BusinessModel\User();
$firstName = $form['USR_FIRSTNAME'] ? " - First Name: ". $form['USR_FIRSTNAME'] : "";
$lastName = $form['USR_LASTNAME'] ? " - Last Name: ". $form['USR_LASTNAME'] : "";
$email = $form['USR_EMAIL'] ? " - Email: ". $form['USR_EMAIL'] : "";
@@ -227,7 +221,8 @@ switch ($_POST['action']) {
$aData['USR_COST_BY_HOUR'] = $form['USR_COST_BY_HOUR'];
$aData['USR_UNIT_COST'] = $form['USR_UNIT_COST'];
/*----------------------------------********---------------------------------*/
$aData['USR_REPLACED_BY'] = $form['USR_REPLACED_BY'];
$aData['USR_REPLACED_BY'] = ($user->getUserRecordByPk($form['USR_REPLACED_BY'], [], false) !== false)?
$form['USR_REPLACED_BY'] : '';
$aData['USR_TIME_ZONE'] = $form['USR_TIME_ZONE'];
require_once 'classes/model/Users.php';
@@ -411,7 +406,8 @@ switch ($_POST['action']) {
}
/*----------------------------------********---------------------------------*/
if (isset($form['USR_REPLACED_BY'])) {
$aData['USR_REPLACED_BY'] = $form['USR_REPLACED_BY'];
$aData['USR_REPLACED_BY'] = ($user->getUserRecordByPk($form['USR_REPLACED_BY'], [], false) !== false)?
$form['USR_REPLACED_BY'] : '';
}
if (isset($form['USR_AUTH_USER_DN'])) {
$aData['USR_AUTH_USER_DN'] = $form['USR_AUTH_USER_DN'];
@@ -535,7 +531,9 @@ switch ($_POST['action']) {
$aFields['USR_REPLACED_BY'] = '';
} else {
$c = new Configurations();
$replaced_by = $c->usersNameFormat($u['USR_USERNAME'], $u['USR_FIRSTNAME'], $u['USR_LASTNAME']);
$arrayConfFormat = $c->getFormats();
$replaced_by = G::getFormatUserList($arrayConfFormat['format'], $u);
}
} else {
$replaced_by = '';

View File

@@ -28,7 +28,7 @@ try {
$_GET = $filter->xssFilterHard($_GET);
$_POST = $filter->xssFilterHard($_POST);
$_REQUEST = $filter->xssFilterHard($_REQUEST);
global $RBAC;
switch ($RBAC->userCanAccess('PM_LOGIN')) {
case - 2:
@@ -98,7 +98,7 @@ try {
echo $oTasks->assignGroup($_POST['TAS_UID'], $_POST['USR_UID'], $_POST['TU_TYPE']);
G::auditlog("AssignGroupTask","Assign a Group to a Task -> ".$_POST['TAS_UID'].' User UID -> '.$_POST['USR_UID']);
break;
}
}
break;
case 'ofToAssign':
G::LoadClass('tasks');
@@ -112,7 +112,7 @@ try {
echo $oTasks->ofToAssignGroup($_POST['TAS_UID'], $_POST['USR_UID'], $_POST['TU_TYPE']);
G::auditlog("DeleteGroupTask","Delete a Group from a Task -> ".$_POST['TAS_UID'].' User UID -> '.$_POST['USR_UID']);
break;
}
}
break;
case 'changeView':
$_SESSION['iType'] = $_POST['TU_TYPE'];
@@ -197,7 +197,7 @@ try {
break;
case 'deleteUser':
$UID = $_POST['USR_UID'];
//process permissions
$criteria = new Criteria("workflow");
$criteria->addSelectColumn(ObjectPermissionPeer::USR_UID);
@@ -267,7 +267,7 @@ try {
$userData = $userInstance->load($_REQUEST['USR_UID']);
$userData['USR_STATUS'] = $_REQUEST['NEW_USR_STATUS'];
$userInstance->update($userData);
$msg = $_REQUEST['NEW_USR_STATUS'] == 'ACTIVE'? "EnableUser" : "DisableUser";
G::auditLog($msg, "User Name: ".$userData['USR_USERNAME']." User ID: (".$userData['USR_UID'].") ");
$response->status = 'OK';
@@ -548,7 +548,9 @@ try {
$user = new Users();
$u = $user->load($data['USR_REPLACED_BY']);
$c = new Configurations();
$replaced_by = $c->usersNameFormat($u['USR_USERNAME'], $u['USR_FIRSTNAME'], $u['USR_LASTNAME']);
$arrayConfFormat = $c->getFormats();
$replaced_by = G::getFormatUserList($arrayConfFormat['format'], $u);
} else {
$replaced_by = '';
}

View File

@@ -361,13 +361,13 @@ class User
}
/**
* Get data of a from a record
* Get custom record
*
* @param array $record Record
*
* return array Return an array with data User
* @return array Return an array with custom record
*/
public function getUserDataFromRecord(array $record)
private function __getUserCustomRecordFromRecord(array $record)
{
try {
//Get Calendar
@@ -803,7 +803,7 @@ class User
$row = $rsCriteria->getRow();
//Return
return (!$flagGetRecord)? $this->getUserDataFromRecord($row) : $row;
return (!$flagGetRecord)? $this->__getUserCustomRecordFromRecord($row) : $row;
} catch (\Exception $e) {
throw $e;
}
@@ -1079,47 +1079,72 @@ class User
/**
* Get all Users
*
* @param array $arrayFilterData Data of the filters
* @param string $sortField Field name to sort
* @param string $sortDir Direction of sorting (ASC, DESC)
* @param int $start Start
* @param int $limit Limit
* @param array $arrayWhere Where (Condition and filters)
* @param string $sortField Field name to sort
* @param string $sortDir Direction of sorting (ASC, DESC)
* @param int $start Start
* @param int $limit Limit
* @param bool $flagRecord Flag that set the "getting" of record
* @param bool $throwException Flag to throw the exception (This only if the parameters are invalid)
* (TRUE: throw the exception; FALSE: returns FALSE)
*
* return array Return an array with all Users
* @return array Return an array with all Users, ThrowTheException/FALSE otherwise
*/
public function getUsers($arrayFilterData = null, $sortField = null, $sortDir = null, $start = null, $limit = null)
{
public function getUsers(
array $arrayWhere = null,
$sortField = null,
$sortDir = null,
$start = null,
$limit = null,
$flagRecord = true,
$throwException = true
) {
try {
$arrayUser = array();
$numRecTotal = 0;
//Verify data
$process = new \ProcessMaker\BusinessModel\Process();
//Verify data and Set variables
$flag = !is_null($arrayWhere) && is_array($arrayWhere);
$flagCondition = $flag && isset($arrayWhere['condition']);
$flagFilter = $flag && isset($arrayWhere['filter']);
$process->throwExceptionIfDataNotMetPagerVarDefinition(array("start" => $start, "limit" => $limit), array("start" => "start", "limit" => "limit"));
$result = \ProcessMaker\BusinessModel\Validator::validatePagerDataByPagerDefinition(
['$start' => $start, '$limit' => $limit],
['$start' => '$start', '$limit' => '$limit']
);
if ($result !== true) {
if ($throwException) {
throw new \Exception($result);
} else {
return false;
}
}
//Set variables
$filterName = "filter";
if (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"])) {
if ($flagFilter) {
$arrayAux = array(
"" => "filter",
"LEFT" => "lfilter",
"RIGHT" => "rfilter"
);
$filterName = $arrayAux[(isset($arrayFilterData["filterOption"]))? $arrayFilterData["filterOption"] : ""];
$filterName = $arrayAux[
(isset($arrayWhere['filterOption']))? $arrayWhere['filterOption'] : ''
];
}
//Get data
if (!is_null($limit) && $limit . "" == "0") {
if (!is_null($limit) && (string)($limit) == '0') {
//Return
return array(
"total" => $numRecTotal,
"start" => (int)((!is_null($start))? $start : 0),
"limit" => (int)((!is_null($limit))? $limit : 0),
$filterName => (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]))? $arrayFilterData["filter"] : "",
$filterName => ($flagFilter)? $arrayWhere['filter'] : '',
"data" => $arrayUser
);
}
@@ -1127,14 +1152,24 @@ class User
//Query
$criteria = $this->getUserCriteria();
if (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]) && trim($arrayFilterData["filter"]) != "") {
$arraySearch = array(
"" => "%" . $arrayFilterData["filter"] . "%",
"LEFT" => $arrayFilterData["filter"] . "%",
"RIGHT" => "%" . $arrayFilterData["filter"]
);
if ($flagCondition && !empty($arrayWhere['condition'])) {
foreach ($arrayWhere['condition'] as $value) {
$criteria->add($value[0], $value[1], $value[2]);
}
} else {
$criteria->add(\UsersPeer::USR_STATUS, 'ACTIVE', \Criteria::EQUAL);
}
$search = $arraySearch[(isset($arrayFilterData["filterOption"]))? $arrayFilterData["filterOption"] : ""];
if ($flagFilter && trim($arrayWhere['filter']) != '') {
$arraySearch = [
'' => '%' . $arrayWhere['filter'] . '%',
'LEFT' => $arrayWhere['filter'] . '%',
'RIGHT' => '%' . $arrayWhere['filter']
];
$search = $arraySearch[
(isset($arrayWhere['filterOption']))? $arrayWhere['filterOption'] : ''
];
$criteria->add(
$criteria->getNewCriterion(\UsersPeer::USR_USERNAME, $search, \Criteria::LIKE)->addOr(
@@ -1143,33 +1178,23 @@ class User
);
}
$criteria->add(\UsersPeer::USR_STATUS, "ACTIVE", \Criteria::EQUAL);
//Number records total
$criteriaCount = clone $criteria;
$criteriaCount->clearSelectColumns();
$criteriaCount->addSelectColumn("COUNT(" . \UsersPeer::USR_UID . ") AS NUM_REC");
$rsCriteriaCount = \UsersPeer::doSelectRS($criteriaCount);
$rsCriteriaCount->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
$result = $rsCriteriaCount->next();
$row = $rsCriteriaCount->getRow();
$numRecTotal = (int)($row["NUM_REC"]);
$numRecTotal = \UsersPeer::doCount($criteria);
//Query
$conf = new \Configurations();
$sortFieldDefault = \UsersPeer::TABLE_NAME . '.' . $conf->userNameFormatGetFirstFieldByUsersTable();
if (!is_null($sortField) && trim($sortField) != "") {
$sortField = strtoupper($sortField);
if (in_array(\UsersPeer::TABLE_NAME . "." . $sortField, $criteria->getSelectColumns())) {
$sortField = \UsersPeer::TABLE_NAME . "." . $sortField;
} else {
$sortField = \UsersPeer::USR_FIRSTNAME;
$sortField = $sortFieldDefault;
}
} else {
$sortField = \UsersPeer::USR_FIRSTNAME;
$sortField = $sortFieldDefault;
}
if (!is_null($sortDir) && trim($sortDir) != "" && strtoupper($sortDir) == "DESC") {
@@ -1190,9 +1215,9 @@ class User
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
while ($rsCriteria->next()) {
$row = $rsCriteria->getRow();
$record = $rsCriteria->getRow();
$arrayUser[] = $this->getUserDataFromRecord($row);
$arrayUser[] = ($flagRecord)? $record : $this->__getUserCustomRecordFromRecord($record);
}
//Return
@@ -1200,7 +1225,7 @@ class User
"total" => $numRecTotal,
"start" => (int)((!is_null($start))? $start : 0),
"limit" => (int)((!is_null($limit))? $limit : 0),
$filterName => (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]))? $arrayFilterData["filter"] : "",
$filterName => ($flagFilter)? $arrayWhere['filter'] : '',
"data" => $arrayUser
);
} catch (\Exception $e) {
@@ -1385,3 +1410,4 @@ class User
}
}
}

View File

@@ -50,7 +50,7 @@ class User extends Api
"filterOption" => (!is_null($filter))? "" : ((!is_null($lfilter))? "LEFT" : ((!is_null($rfilter))? "RIGHT" : ""))
);
$response = $user->getUsers($arrayFilterData, null, null, $start, $limit);
$response = $user->getUsers($arrayFilterData, null, null, $start, $limit, false);
return \ProcessMaker\Util\DateTime::convertUtcToIso8601($response['data'], $this->arrayFieldIso8601);
} catch (\Exception $e) {

View File

@@ -39,6 +39,7 @@ var flagValidateUsername = false;
var userRoleLoad = '';
var PROCESSMAKER_ADMIN = 'PROCESSMAKER_ADMIN';
var usertmp;
global.IC_UID = '';
global.IS_UID = '';
@@ -279,7 +280,10 @@ Ext.onReady(function () {
method: "POST"
}),
baseParams: {"action": "usersList", "USR_UID": USR_UID, "addNone": 1},
baseParams: {
"action": "usersList",
"USR_UID": USR_UID
},
reader: new Ext.data.JsonReader({
fields: [
@@ -290,19 +294,23 @@ Ext.onReady(function () {
});
comboReplacedBy = new Ext.form.ComboBox({
fieldLabel : _("ID_REPLACED_BY"),
hiddenName : "USR_REPLACED_BY",
id : "USR_REPLACED_BY",
readOnly : readMode,
store : storeReplacedBy,
valueField : "USR_UID",
displayField : "USER_FULLNAME",
emptyText : (readMode)? ' ': TRANSLATIONS.ID_SELECT,
width : 180,
selectOnFocus : true,
editable : false,
triggerAction: "all",
mode: "local"
id: "USR_REPLACED_BY",
hiddenName: "USR_REPLACED_BY",
store: storeReplacedBy,
valueField: "USR_UID",
displayField: "USER_FULLNAME",
queryParam: "filter",
fieldLabel: _("ID_REPLACED_BY"),
emptyText: "- " + _("ID_NONE") + " -",
readOnly: readMode,
minChars: 1,
hideTrigger: true,
width: 260,
triggerAction: "all"
});
var dateField = new Ext.form.DateField({
@@ -1155,6 +1163,12 @@ function editUser()
frmDetails.render('users-panel');
frmSumary.hide();
if (typeof(usertmp) != "undefined") {
frmDetails.getForm().findField("USR_REPLACED_BY").setValue(usertmp.USR_REPLACED_BY);
frmDetails.getForm().findField("USR_REPLACED_BY").setRawValue(usertmp.REPLACED_NAME);
}
frmDetails.show();
if (window.canEditCalendar === true) {
comboCalendar.setReadOnly(false);
@@ -1201,6 +1215,13 @@ function validateUserName() {
function userFrmEditSubmit()
{
if (typeof(usertmp) != "undefined" &&
usertmp.REPLACED_NAME == frmDetails.getForm().findField("USR_REPLACED_BY").getRawValue()
) {
frmDetails.getForm().findField("USR_REPLACED_BY").setValue(usertmp.USR_REPLACED_BY);
frmDetails.getForm().findField("USR_REPLACED_BY").setRawValue(usertmp.REPLACED_NAME);
}
Ext.getCmp("USR_STATUS").setDisabled(readMode);
Ext.getCmp("frmDetails").getForm().submit({
url : "usersAjax",
@@ -1382,19 +1403,8 @@ function saveUser()
//Load data
function loadData()
{
comboCountry.store.load();
//comboRegion
//comboLocation
comboReplacedBy.store.load();
comboCalendar.store.on("load", function (store) {
comboCalendar.setValue(store.getAt(0).get("CALENDAR_UID"));
});
@@ -1439,6 +1449,8 @@ function loadUserData()
success: function (r, o) {
var data = Ext.util.JSON.decode(r.responseText);
usertmp = data.user;
Ext.getCmp("frmDetails").getForm().setValues({
USR_FIRSTNAME : data.user.USR_FIRSTNAME,
USR_LASTNAME : data.user.USR_LASTNAME,
@@ -1506,10 +1518,10 @@ function loadUserData()
comboLocation.setValue(data.user.USR_LOCATION);
});
comboReplacedBy.store.on("load", function (store) {
if (data.user.USR_REPLACED_BY != "") {
comboReplacedBy.setValue(data.user.USR_REPLACED_BY);
comboReplacedBy.setRawValue(data.user.REPLACED_NAME);
});
}
comboCalendar.store.on("load", function (store) {
comboCalendar.setValue(data.user.USR_CALENDAR);
@@ -1568,8 +1580,6 @@ function loadUserData()
}
});
storeReplacedBy.load();
storeCalendar.load();
storeRole.load();