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)); print (G::json_encode($oData));
break; break;
case 'usersList': case 'usersList':
require_once 'classes/model/Users.php'; $filter = (isset($_POST['filter']))? $_POST['filter'] : '';
$oCriteria = new Criteria();
$oCriteria->addSelectColumn(UsersPeer::USR_UID); $arrayUser = [];
$oCriteria->addSelectColumn(UsersPeer::USR_USERNAME);
$oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); $user = new \ProcessMaker\BusinessModel\User();
$oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); $conf = new Configurations();
$oCriteria->addSelectColumn(UsersPeer::USR_EMAIL);
$oCriteria->add(UsersPeer::USR_STATUS, array('ACTIVE', 'VACATION'), Criteria::IN); $arrayConfFormat = $conf->getFormats();
$oCriteria->addAscendingOrderByColumn(UsersPeer::USR_USERNAME);
$arrayCondition = [[UsersPeer::USR_STATUS, ['ACTIVE', 'VACATION'], Criteria::IN]];
if (isset($_POST['USR_UID'])) { 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'); $result = $user->getUsers(['condition' => $arrayCondition, 'filter' => $filter], null, null, null, 25);
$oConf = new Configurations();
$oConf->loadConfig($obj, 'ENVIRONMENT_SETTINGS', '');
$defaultOption = isset($oConf->aConfig['format']) ? $oConf->aConfig['format'] : ''; foreach ($result['data'] as $record) {
$arrayUser[] = [
$aUserInfo = array(); 'USR_UID' => $record['USR_UID'],
if (isset($_POST['addNone']) && $_POST['addNone'] == '1') { 'USER_FULLNAME' => G::getFormatUserList($arrayConfFormat['format'], $record)
$aUserInfo[] = array('USR_UID' => '', 'USER_FULLNAME' => '- ' . G::LoadTranslation('ID_NONE') . ' -'); ];
} }
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; break;
case 'availableCalendars': case 'availableCalendars':
G::LoadClass('calendar'); G::LoadClass('calendar');
@@ -164,6 +156,8 @@ switch ($_POST['action']) {
$form['USR_LOGGED_NEXT_TIME'] = 0; $form['USR_LOGGED_NEXT_TIME'] = 0;
} }
$user = new \ProcessMaker\BusinessModel\User();
$firstName = $form['USR_FIRSTNAME'] ? " - First Name: ". $form['USR_FIRSTNAME'] : ""; $firstName = $form['USR_FIRSTNAME'] ? " - First Name: ". $form['USR_FIRSTNAME'] : "";
$lastName = $form['USR_LASTNAME'] ? " - Last Name: ". $form['USR_LASTNAME'] : ""; $lastName = $form['USR_LASTNAME'] ? " - Last Name: ". $form['USR_LASTNAME'] : "";
$email = $form['USR_EMAIL'] ? " - Email: ". $form['USR_EMAIL'] : ""; $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_COST_BY_HOUR'] = $form['USR_COST_BY_HOUR'];
$aData['USR_UNIT_COST'] = $form['USR_UNIT_COST']; $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']; $aData['USR_TIME_ZONE'] = $form['USR_TIME_ZONE'];
require_once 'classes/model/Users.php'; require_once 'classes/model/Users.php';
@@ -411,7 +406,8 @@ switch ($_POST['action']) {
} }
/*----------------------------------********---------------------------------*/ /*----------------------------------********---------------------------------*/
if (isset($form['USR_REPLACED_BY'])) { 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'])) { if (isset($form['USR_AUTH_USER_DN'])) {
$aData['USR_AUTH_USER_DN'] = $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'] = ''; $aFields['USR_REPLACED_BY'] = '';
} else { } else {
$c = new Configurations(); $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 { } else {
$replaced_by = ''; $replaced_by = '';

View File

@@ -548,7 +548,9 @@ try {
$user = new Users(); $user = new Users();
$u = $user->load($data['USR_REPLACED_BY']); $u = $user->load($data['USR_REPLACED_BY']);
$c = new Configurations(); $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 { } else {
$replaced_by = ''; $replaced_by = '';
} }

View File

@@ -361,13 +361,13 @@ class User
} }
/** /**
* Get data of a from a record * Get custom record
* *
* @param array $record 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 { try {
//Get Calendar //Get Calendar
@@ -803,7 +803,7 @@ class User
$row = $rsCriteria->getRow(); $row = $rsCriteria->getRow();
//Return //Return
return (!$flagGetRecord)? $this->getUserDataFromRecord($row) : $row; return (!$flagGetRecord)? $this->__getUserCustomRecordFromRecord($row) : $row;
} catch (\Exception $e) { } catch (\Exception $e) {
throw $e; throw $e;
} }
@@ -1079,47 +1079,72 @@ class User
/** /**
* Get all Users * Get all Users
* *
* @param array $arrayFilterData Data of the filters * @param array $arrayWhere Where (Condition and filters)
* @param string $sortField Field name to sort * @param string $sortField Field name to sort
* @param string $sortDir Direction of sorting (ASC, DESC) * @param string $sortDir Direction of sorting (ASC, DESC)
* @param int $start Start * @param int $start Start
* @param int $limit Limit * @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 { try {
$arrayUser = array(); $arrayUser = array();
$numRecTotal = 0; $numRecTotal = 0;
//Verify data //Verify data and Set variables
$process = new \ProcessMaker\BusinessModel\Process(); $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 //Set variables
$filterName = "filter"; $filterName = "filter";
if (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"])) { if ($flagFilter) {
$arrayAux = array( $arrayAux = array(
"" => "filter", "" => "filter",
"LEFT" => "lfilter", "LEFT" => "lfilter",
"RIGHT" => "rfilter" "RIGHT" => "rfilter"
); );
$filterName = $arrayAux[(isset($arrayFilterData["filterOption"]))? $arrayFilterData["filterOption"] : ""]; $filterName = $arrayAux[
(isset($arrayWhere['filterOption']))? $arrayWhere['filterOption'] : ''
];
} }
//Get data //Get data
if (!is_null($limit) && $limit . "" == "0") { if (!is_null($limit) && (string)($limit) == '0') {
//Return //Return
return array( return array(
"total" => $numRecTotal, "total" => $numRecTotal,
"start" => (int)((!is_null($start))? $start : 0), "start" => (int)((!is_null($start))? $start : 0),
"limit" => (int)((!is_null($limit))? $limit : 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 "data" => $arrayUser
); );
} }
@@ -1127,14 +1152,24 @@ class User
//Query //Query
$criteria = $this->getUserCriteria(); $criteria = $this->getUserCriteria();
if (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]) && trim($arrayFilterData["filter"]) != "") { if ($flagCondition && !empty($arrayWhere['condition'])) {
$arraySearch = array( foreach ($arrayWhere['condition'] as $value) {
"" => "%" . $arrayFilterData["filter"] . "%", $criteria->add($value[0], $value[1], $value[2]);
"LEFT" => $arrayFilterData["filter"] . "%", }
"RIGHT" => "%" . $arrayFilterData["filter"] } 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->add(
$criteria->getNewCriterion(\UsersPeer::USR_USERNAME, $search, \Criteria::LIKE)->addOr( $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 //Number records total
$criteriaCount = clone $criteria; $numRecTotal = \UsersPeer::doCount($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"]);
//Query //Query
$conf = new \Configurations();
$sortFieldDefault = \UsersPeer::TABLE_NAME . '.' . $conf->userNameFormatGetFirstFieldByUsersTable();
if (!is_null($sortField) && trim($sortField) != "") { if (!is_null($sortField) && trim($sortField) != "") {
$sortField = strtoupper($sortField); $sortField = strtoupper($sortField);
if (in_array(\UsersPeer::TABLE_NAME . "." . $sortField, $criteria->getSelectColumns())) { if (in_array(\UsersPeer::TABLE_NAME . "." . $sortField, $criteria->getSelectColumns())) {
$sortField = \UsersPeer::TABLE_NAME . "." . $sortField; $sortField = \UsersPeer::TABLE_NAME . "." . $sortField;
} else { } else {
$sortField = \UsersPeer::USR_FIRSTNAME; $sortField = $sortFieldDefault;
} }
} else { } else {
$sortField = \UsersPeer::USR_FIRSTNAME; $sortField = $sortFieldDefault;
} }
if (!is_null($sortDir) && trim($sortDir) != "" && strtoupper($sortDir) == "DESC") { if (!is_null($sortDir) && trim($sortDir) != "" && strtoupper($sortDir) == "DESC") {
@@ -1190,9 +1215,9 @@ class User
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
while ($rsCriteria->next()) { while ($rsCriteria->next()) {
$row = $rsCriteria->getRow(); $record = $rsCriteria->getRow();
$arrayUser[] = $this->getUserDataFromRecord($row); $arrayUser[] = ($flagRecord)? $record : $this->__getUserCustomRecordFromRecord($record);
} }
//Return //Return
@@ -1200,7 +1225,7 @@ class User
"total" => $numRecTotal, "total" => $numRecTotal,
"start" => (int)((!is_null($start))? $start : 0), "start" => (int)((!is_null($start))? $start : 0),
"limit" => (int)((!is_null($limit))? $limit : 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 "data" => $arrayUser
); );
} catch (\Exception $e) { } 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" : "")) "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); return \ProcessMaker\Util\DateTime::convertUtcToIso8601($response['data'], $this->arrayFieldIso8601);
} catch (\Exception $e) { } catch (\Exception $e) {

View File

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