fix merge conflicts
This commit is contained in:
19
workflow/engine/classes/model/UserExtendedAttributes.php
Normal file
19
workflow/engine/classes/model/UserExtendedAttributes.php
Normal file
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
require_once 'classes/model/om/BaseUserExtendedAttributes.php';
|
||||
|
||||
|
||||
/**
|
||||
* Skeleton subclass for representing a row from the 'USER_EXTENDED_ATTRIBUTES' table.
|
||||
*
|
||||
*
|
||||
*
|
||||
* You should add additional methods to this class to meet the
|
||||
* application requirements. This class will only be generated as
|
||||
* long as it does not already exist in the output directory.
|
||||
*
|
||||
* @package classes.model
|
||||
*/
|
||||
class UserExtendedAttributes extends BaseUserExtendedAttributes {
|
||||
|
||||
} // UserExtendedAttributes
|
||||
23
workflow/engine/classes/model/UserExtendedAttributesPeer.php
Normal file
23
workflow/engine/classes/model/UserExtendedAttributesPeer.php
Normal file
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
// include base peer class
|
||||
require_once 'classes/model/om/BaseUserExtendedAttributesPeer.php';
|
||||
|
||||
// include object class
|
||||
include_once 'classes/model/UserExtendedAttributes.php';
|
||||
|
||||
|
||||
/**
|
||||
* Skeleton subclass for performing query and update operations on the 'USER_EXTENDED_ATTRIBUTES' table.
|
||||
*
|
||||
*
|
||||
*
|
||||
* You should add additional methods to this class to meet the
|
||||
* application requirements. This class will only be generated as
|
||||
* long as it does not already exist in the output directory.
|
||||
*
|
||||
* @package classes.model
|
||||
*/
|
||||
class UserExtendedAttributesPeer extends BaseUserExtendedAttributesPeer {
|
||||
|
||||
} // UserExtendedAttributesPeer
|
||||
@@ -0,0 +1,90 @@
|
||||
<?php
|
||||
|
||||
require_once 'propel/map/MapBuilder.php';
|
||||
include_once 'creole/CreoleTypes.php';
|
||||
|
||||
|
||||
/**
|
||||
* This class adds structure of 'USER_EXTENDED_ATTRIBUTES' table to 'workflow' DatabaseMap object.
|
||||
*
|
||||
*
|
||||
*
|
||||
* These statically-built map classes are used by Propel to do runtime db structure discovery.
|
||||
* For example, the createSelectSql() method checks the type of a given column used in an
|
||||
* ORDER BY clause to know whether it needs to apply SQL to make the ORDER BY case-insensitive
|
||||
* (i.e. if it's a text column type).
|
||||
*
|
||||
* @package workflow.classes.model.map
|
||||
*/
|
||||
class UserExtendedAttributesMapBuilder
|
||||
{
|
||||
|
||||
/**
|
||||
* The (dot-path) name of this class
|
||||
*/
|
||||
const CLASS_NAME = 'classes.model.map.UserExtendedAttributesMapBuilder';
|
||||
|
||||
/**
|
||||
* The database map.
|
||||
*/
|
||||
private $dbMap;
|
||||
|
||||
/**
|
||||
* Tells us if this DatabaseMapBuilder is built so that we
|
||||
* don't have to re-build it every time.
|
||||
*
|
||||
* @return boolean true if this DatabaseMapBuilder is built, false otherwise.
|
||||
*/
|
||||
public function isBuilt()
|
||||
{
|
||||
return ($this->dbMap !== null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the databasemap this map builder built.
|
||||
*
|
||||
* @return the databasemap
|
||||
*/
|
||||
public function getDatabaseMap()
|
||||
{
|
||||
return $this->dbMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* The doBuild() method builds the DatabaseMap
|
||||
*
|
||||
* @return void
|
||||
* @throws PropelException
|
||||
*/
|
||||
public function doBuild()
|
||||
{
|
||||
$this->dbMap = Propel::getDatabaseMap('workflow');
|
||||
|
||||
$tMap = $this->dbMap->addTable('USER_EXTENDED_ATTRIBUTES');
|
||||
$tMap->setPhpName('UserExtendedAttributes');
|
||||
|
||||
$tMap->setUseIdGenerator(true);
|
||||
|
||||
$tMap->addPrimaryKey('UEA_ID', 'UeaId', 'string', CreoleTypes::BIGINT, true, 20);
|
||||
|
||||
$tMap->addColumn('UEA_NAME', 'UeaName', 'string', CreoleTypes::VARCHAR, false, 255);
|
||||
|
||||
$tMap->addColumn('UEA_ATTRIBUTE_ID', 'UeaAttributeId', 'string', CreoleTypes::VARCHAR, false, 255);
|
||||
|
||||
$tMap->addColumn('UEA_HIDDEN', 'UeaHidden', 'int', CreoleTypes::INTEGER, false, null);
|
||||
|
||||
$tMap->addColumn('UEA_REQUIRED', 'UeaRequired', 'int', CreoleTypes::INTEGER, false, null);
|
||||
|
||||
$tMap->addColumn('UEA_PASSWORD', 'UeaPassword', 'int', CreoleTypes::INTEGER, false, null);
|
||||
|
||||
$tMap->addColumn('UEA_OPTION', 'UeaOption', 'string', CreoleTypes::VARCHAR, false, 255);
|
||||
|
||||
$tMap->addColumn('UEA_ROLES', 'UeaRoles', 'string', CreoleTypes::LONGVARCHAR, false, null);
|
||||
|
||||
$tMap->addColumn('UEA_OWNER', 'UeaOwner', 'string', CreoleTypes::BIGINT, false, 20);
|
||||
|
||||
$tMap->addColumn('UEA_DATE_CREATE', 'UeaDateCreate', 'int', CreoleTypes::TIMESTAMP, false, null);
|
||||
|
||||
} // doBuild()
|
||||
|
||||
} // UserExtendedAttributesMapBuilder
|
||||
@@ -135,6 +135,8 @@ class UsersMapBuilder
|
||||
|
||||
$tMap->addColumn('USR_LAST_LOGIN', 'UsrLastLogin', 'int', CreoleTypes::TIMESTAMP, false, null);
|
||||
|
||||
$tMap->addColumn('USR_EXTENDED_ATTRIBUTES_DATA', 'UsrExtendedAttributesData', 'string', CreoleTypes::LONGVARCHAR, false, null);
|
||||
|
||||
$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.');
|
||||
|
||||
1062
workflow/engine/classes/model/om/BaseUserExtendedAttributes.php
Normal file
1062
workflow/engine/classes/model/om/BaseUserExtendedAttributes.php
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,614 @@
|
||||
<?php
|
||||
|
||||
require_once 'propel/util/BasePeer.php';
|
||||
// The object class -- needed for instanceof checks in this class.
|
||||
// actual class may be a subclass -- as returned by UserExtendedAttributesPeer::getOMClass()
|
||||
include_once 'classes/model/UserExtendedAttributes.php';
|
||||
|
||||
/**
|
||||
* Base static class for performing query and update operations on the 'USER_EXTENDED_ATTRIBUTES' table.
|
||||
*
|
||||
*
|
||||
*
|
||||
* @package workflow.classes.model.om
|
||||
*/
|
||||
abstract class BaseUserExtendedAttributesPeer
|
||||
{
|
||||
|
||||
/** the default database name for this class */
|
||||
const DATABASE_NAME = 'workflow';
|
||||
|
||||
/** the table name for this class */
|
||||
const TABLE_NAME = 'USER_EXTENDED_ATTRIBUTES';
|
||||
|
||||
/** A class that can be returned by this peer. */
|
||||
const CLASS_DEFAULT = 'classes.model.UserExtendedAttributes';
|
||||
|
||||
/** The total number of columns. */
|
||||
const NUM_COLUMNS = 10;
|
||||
|
||||
/** The number of lazy-loaded columns. */
|
||||
const NUM_LAZY_LOAD_COLUMNS = 0;
|
||||
|
||||
|
||||
/** the column name for the UEA_ID field */
|
||||
const UEA_ID = 'USER_EXTENDED_ATTRIBUTES.UEA_ID';
|
||||
|
||||
/** the column name for the UEA_NAME field */
|
||||
const UEA_NAME = 'USER_EXTENDED_ATTRIBUTES.UEA_NAME';
|
||||
|
||||
/** the column name for the UEA_ATTRIBUTE_ID field */
|
||||
const UEA_ATTRIBUTE_ID = 'USER_EXTENDED_ATTRIBUTES.UEA_ATTRIBUTE_ID';
|
||||
|
||||
/** the column name for the UEA_HIDDEN field */
|
||||
const UEA_HIDDEN = 'USER_EXTENDED_ATTRIBUTES.UEA_HIDDEN';
|
||||
|
||||
/** the column name for the UEA_REQUIRED field */
|
||||
const UEA_REQUIRED = 'USER_EXTENDED_ATTRIBUTES.UEA_REQUIRED';
|
||||
|
||||
/** the column name for the UEA_PASSWORD field */
|
||||
const UEA_PASSWORD = 'USER_EXTENDED_ATTRIBUTES.UEA_PASSWORD';
|
||||
|
||||
/** the column name for the UEA_OPTION field */
|
||||
const UEA_OPTION = 'USER_EXTENDED_ATTRIBUTES.UEA_OPTION';
|
||||
|
||||
/** the column name for the UEA_ROLES field */
|
||||
const UEA_ROLES = 'USER_EXTENDED_ATTRIBUTES.UEA_ROLES';
|
||||
|
||||
/** the column name for the UEA_OWNER field */
|
||||
const UEA_OWNER = 'USER_EXTENDED_ATTRIBUTES.UEA_OWNER';
|
||||
|
||||
/** the column name for the UEA_DATE_CREATE field */
|
||||
const UEA_DATE_CREATE = 'USER_EXTENDED_ATTRIBUTES.UEA_DATE_CREATE';
|
||||
|
||||
/** The PHP to DB Name Mapping */
|
||||
private static $phpNameMap = null;
|
||||
|
||||
|
||||
/**
|
||||
* holds an array of fieldnames
|
||||
*
|
||||
* first dimension keys are the type constants
|
||||
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
|
||||
*/
|
||||
private static $fieldNames = array (
|
||||
BasePeer::TYPE_PHPNAME => array ('UeaId', 'UeaName', 'UeaAttributeId', 'UeaHidden', 'UeaRequired', 'UeaPassword', 'UeaOption', 'UeaRoles', 'UeaOwner', 'UeaDateCreate', ),
|
||||
BasePeer::TYPE_COLNAME => array (UserExtendedAttributesPeer::UEA_ID, UserExtendedAttributesPeer::UEA_NAME, UserExtendedAttributesPeer::UEA_ATTRIBUTE_ID, UserExtendedAttributesPeer::UEA_HIDDEN, UserExtendedAttributesPeer::UEA_REQUIRED, UserExtendedAttributesPeer::UEA_PASSWORD, UserExtendedAttributesPeer::UEA_OPTION, UserExtendedAttributesPeer::UEA_ROLES, UserExtendedAttributesPeer::UEA_OWNER, UserExtendedAttributesPeer::UEA_DATE_CREATE, ),
|
||||
BasePeer::TYPE_FIELDNAME => array ('UEA_ID', 'UEA_NAME', 'UEA_ATTRIBUTE_ID', 'UEA_HIDDEN', 'UEA_REQUIRED', 'UEA_PASSWORD', 'UEA_OPTION', 'UEA_ROLES', 'UEA_OWNER', 'UEA_DATE_CREATE', ),
|
||||
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, )
|
||||
);
|
||||
|
||||
/**
|
||||
* holds an array of keys for quick access to the fieldnames array
|
||||
*
|
||||
* first dimension keys are the type constants
|
||||
* e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0
|
||||
*/
|
||||
private static $fieldKeys = array (
|
||||
BasePeer::TYPE_PHPNAME => array ('UeaId' => 0, 'UeaName' => 1, 'UeaAttributeId' => 2, 'UeaHidden' => 3, 'UeaRequired' => 4, 'UeaPassword' => 5, 'UeaOption' => 6, 'UeaRoles' => 7, 'UeaOwner' => 8, 'UeaDateCreate' => 9, ),
|
||||
BasePeer::TYPE_COLNAME => array (UserExtendedAttributesPeer::UEA_ID => 0, UserExtendedAttributesPeer::UEA_NAME => 1, UserExtendedAttributesPeer::UEA_ATTRIBUTE_ID => 2, UserExtendedAttributesPeer::UEA_HIDDEN => 3, UserExtendedAttributesPeer::UEA_REQUIRED => 4, UserExtendedAttributesPeer::UEA_PASSWORD => 5, UserExtendedAttributesPeer::UEA_OPTION => 6, UserExtendedAttributesPeer::UEA_ROLES => 7, UserExtendedAttributesPeer::UEA_OWNER => 8, UserExtendedAttributesPeer::UEA_DATE_CREATE => 9, ),
|
||||
BasePeer::TYPE_FIELDNAME => array ('UEA_ID' => 0, 'UEA_NAME' => 1, 'UEA_ATTRIBUTE_ID' => 2, 'UEA_HIDDEN' => 3, 'UEA_REQUIRED' => 4, 'UEA_PASSWORD' => 5, 'UEA_OPTION' => 6, 'UEA_ROLES' => 7, 'UEA_OWNER' => 8, 'UEA_DATE_CREATE' => 9, ),
|
||||
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, )
|
||||
);
|
||||
|
||||
/**
|
||||
* @return MapBuilder the map builder for this peer
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
*/
|
||||
public static function getMapBuilder()
|
||||
{
|
||||
include_once 'classes/model/map/UserExtendedAttributesMapBuilder.php';
|
||||
return BasePeer::getMapBuilder('classes.model.map.UserExtendedAttributesMapBuilder');
|
||||
}
|
||||
/**
|
||||
* Gets a map (hash) of PHP names to DB column names.
|
||||
*
|
||||
* @return array The PHP to DB name map for this peer
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
* @deprecated Use the getFieldNames() and translateFieldName() methods instead of this.
|
||||
*/
|
||||
public static function getPhpNameMap()
|
||||
{
|
||||
if (self::$phpNameMap === null) {
|
||||
$map = UserExtendedAttributesPeer::getTableMap();
|
||||
$columns = $map->getColumns();
|
||||
$nameMap = array();
|
||||
foreach ($columns as $column) {
|
||||
$nameMap[$column->getPhpName()] = $column->getColumnName();
|
||||
}
|
||||
self::$phpNameMap = $nameMap;
|
||||
}
|
||||
return self::$phpNameMap;
|
||||
}
|
||||
/**
|
||||
* Translates a fieldname to another type
|
||||
*
|
||||
* @param string $name field name
|
||||
* @param string $fromType One of the class type constants TYPE_PHPNAME,
|
||||
* TYPE_COLNAME, TYPE_FIELDNAME, TYPE_NUM
|
||||
* @param string $toType One of the class type constants
|
||||
* @return string translated name of the field.
|
||||
*/
|
||||
static public function translateFieldName($name, $fromType, $toType)
|
||||
{
|
||||
$toNames = self::getFieldNames($toType);
|
||||
$key = isset(self::$fieldKeys[$fromType][$name]) ? self::$fieldKeys[$fromType][$name] : null;
|
||||
if ($key === null) {
|
||||
throw new PropelException("'$name' could not be found in the field names of type '$fromType'. These are: " . print_r(self::$fieldKeys[$fromType], true));
|
||||
}
|
||||
return $toNames[$key];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array of of field names.
|
||||
*
|
||||
* @param string $type The type of fieldnames to return:
|
||||
* One of the class type constants TYPE_PHPNAME,
|
||||
* TYPE_COLNAME, TYPE_FIELDNAME, TYPE_NUM
|
||||
* @return array A list of field names
|
||||
*/
|
||||
|
||||
static public function getFieldNames($type = BasePeer::TYPE_PHPNAME)
|
||||
{
|
||||
if (!array_key_exists($type, self::$fieldNames)) {
|
||||
throw new PropelException('Method getFieldNames() expects the parameter $type to be one of the class constants TYPE_PHPNAME, TYPE_COLNAME, TYPE_FIELDNAME, TYPE_NUM. ' . $type . ' was given.');
|
||||
}
|
||||
return self::$fieldNames[$type];
|
||||
}
|
||||
|
||||
/**
|
||||
* Convenience method which changes table.column to alias.column.
|
||||
*
|
||||
* Using this method you can maintain SQL abstraction while using column aliases.
|
||||
* <code>
|
||||
* $c->addAlias("alias1", TablePeer::TABLE_NAME);
|
||||
* $c->addJoin(TablePeer::alias("alias1", TablePeer::PRIMARY_KEY_COLUMN), TablePeer::PRIMARY_KEY_COLUMN);
|
||||
* </code>
|
||||
* @param string $alias The alias for the current table.
|
||||
* @param string $column The column name for current table. (i.e. UserExtendedAttributesPeer::COLUMN_NAME).
|
||||
* @return string
|
||||
*/
|
||||
public static function alias($alias, $column)
|
||||
{
|
||||
return str_replace(UserExtendedAttributesPeer::TABLE_NAME.'.', $alias.'.', $column);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add all the columns needed to create a new object.
|
||||
*
|
||||
* Note: any columns that were marked with lazyLoad="true" in the
|
||||
* XML schema will not be added to the select list and only loaded
|
||||
* on demand.
|
||||
*
|
||||
* @param criteria object containing the columns to add.
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
*/
|
||||
public static function addSelectColumns(Criteria $criteria)
|
||||
{
|
||||
|
||||
$criteria->addSelectColumn(UserExtendedAttributesPeer::UEA_ID);
|
||||
|
||||
$criteria->addSelectColumn(UserExtendedAttributesPeer::UEA_NAME);
|
||||
|
||||
$criteria->addSelectColumn(UserExtendedAttributesPeer::UEA_ATTRIBUTE_ID);
|
||||
|
||||
$criteria->addSelectColumn(UserExtendedAttributesPeer::UEA_HIDDEN);
|
||||
|
||||
$criteria->addSelectColumn(UserExtendedAttributesPeer::UEA_REQUIRED);
|
||||
|
||||
$criteria->addSelectColumn(UserExtendedAttributesPeer::UEA_PASSWORD);
|
||||
|
||||
$criteria->addSelectColumn(UserExtendedAttributesPeer::UEA_OPTION);
|
||||
|
||||
$criteria->addSelectColumn(UserExtendedAttributesPeer::UEA_ROLES);
|
||||
|
||||
$criteria->addSelectColumn(UserExtendedAttributesPeer::UEA_OWNER);
|
||||
|
||||
$criteria->addSelectColumn(UserExtendedAttributesPeer::UEA_DATE_CREATE);
|
||||
|
||||
}
|
||||
|
||||
const COUNT = 'COUNT(USER_EXTENDED_ATTRIBUTES.UEA_ID)';
|
||||
const COUNT_DISTINCT = 'COUNT(DISTINCT USER_EXTENDED_ATTRIBUTES.UEA_ID)';
|
||||
|
||||
/**
|
||||
* Returns the number of rows matching criteria.
|
||||
*
|
||||
* @param Criteria $criteria
|
||||
* @param boolean $distinct Whether to select only distinct columns (You can also set DISTINCT modifier in Criteria).
|
||||
* @param Connection $con
|
||||
* @return int Number of matching rows.
|
||||
*/
|
||||
public static function doCount(Criteria $criteria, $distinct = false, $con = null)
|
||||
{
|
||||
// we're going to modify criteria, so copy it first
|
||||
$criteria = clone $criteria;
|
||||
|
||||
// clear out anything that might confuse the ORDER BY clause
|
||||
$criteria->clearSelectColumns()->clearOrderByColumns();
|
||||
if ($distinct || in_array(Criteria::DISTINCT, $criteria->getSelectModifiers())) {
|
||||
$criteria->addSelectColumn(UserExtendedAttributesPeer::COUNT_DISTINCT);
|
||||
} else {
|
||||
$criteria->addSelectColumn(UserExtendedAttributesPeer::COUNT);
|
||||
}
|
||||
|
||||
// just in case we're grouping: add those columns to the select statement
|
||||
foreach ($criteria->getGroupByColumns() as $column) {
|
||||
$criteria->addSelectColumn($column);
|
||||
}
|
||||
|
||||
$rs = UserExtendedAttributesPeer::doSelectRS($criteria, $con);
|
||||
if ($rs->next()) {
|
||||
return $rs->getInt(1);
|
||||
} else {
|
||||
// no rows returned; we infer that means 0 matches.
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Method to select one object from the DB.
|
||||
*
|
||||
* @param Criteria $criteria object used to create the SELECT statement.
|
||||
* @param Connection $con
|
||||
* @return UserExtendedAttributes
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
*/
|
||||
public static function doSelectOne(Criteria $criteria, $con = null)
|
||||
{
|
||||
$critcopy = clone $criteria;
|
||||
$critcopy->setLimit(1);
|
||||
$objects = UserExtendedAttributesPeer::doSelect($critcopy, $con);
|
||||
if ($objects) {
|
||||
return $objects[0];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
/**
|
||||
* Method to do selects.
|
||||
*
|
||||
* @param Criteria $criteria The Criteria object used to build the SELECT statement.
|
||||
* @param Connection $con
|
||||
* @return array Array of selected Objects
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
*/
|
||||
public static function doSelect(Criteria $criteria, $con = null)
|
||||
{
|
||||
return UserExtendedAttributesPeer::populateObjects(UserExtendedAttributesPeer::doSelectRS($criteria, $con));
|
||||
}
|
||||
/**
|
||||
* Prepares the Criteria object and uses the parent doSelect()
|
||||
* method to get a ResultSet.
|
||||
*
|
||||
* Use this method directly if you want to just get the resultset
|
||||
* (instead of an array of objects).
|
||||
*
|
||||
* @param Criteria $criteria The Criteria object used to build the SELECT statement.
|
||||
* @param Connection $con the connection to use
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
* @return ResultSet The resultset object with numerically-indexed fields.
|
||||
* @see BasePeer::doSelect()
|
||||
*/
|
||||
public static function doSelectRS(Criteria $criteria, $con = null)
|
||||
{
|
||||
if ($con === null) {
|
||||
$con = Propel::getConnection(self::DATABASE_NAME);
|
||||
}
|
||||
|
||||
if (!$criteria->getSelectColumns()) {
|
||||
$criteria = clone $criteria;
|
||||
UserExtendedAttributesPeer::addSelectColumns($criteria);
|
||||
}
|
||||
|
||||
// Set the correct dbName
|
||||
$criteria->setDbName(self::DATABASE_NAME);
|
||||
|
||||
// BasePeer returns a Creole ResultSet, set to return
|
||||
// rows indexed numerically.
|
||||
return BasePeer::doSelect($criteria, $con);
|
||||
}
|
||||
/**
|
||||
* The returned array will contain objects of the default type or
|
||||
* objects that inherit from the default.
|
||||
*
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
*/
|
||||
public static function populateObjects(ResultSet $rs)
|
||||
{
|
||||
$results = array();
|
||||
|
||||
// set the class once to avoid overhead in the loop
|
||||
$cls = UserExtendedAttributesPeer::getOMClass();
|
||||
$cls = Propel::import($cls);
|
||||
// populate the object(s)
|
||||
while ($rs->next()) {
|
||||
|
||||
$obj = new $cls();
|
||||
$obj->hydrate($rs);
|
||||
$results[] = $obj;
|
||||
|
||||
}
|
||||
return $results;
|
||||
}
|
||||
/**
|
||||
* Returns the TableMap related to this peer.
|
||||
* This method is not needed for general use but a specific application could have a need.
|
||||
* @return TableMap
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
*/
|
||||
public static function getTableMap()
|
||||
{
|
||||
return Propel::getDatabaseMap(self::DATABASE_NAME)->getTable(self::TABLE_NAME);
|
||||
}
|
||||
|
||||
/**
|
||||
* The class that the Peer will make instances of.
|
||||
*
|
||||
* This uses a dot-path notation which is tranalted into a path
|
||||
* relative to a location on the PHP include_path.
|
||||
* (e.g. path.to.MyClass -> 'path/to/MyClass.php')
|
||||
*
|
||||
* @return string path.to.ClassName
|
||||
*/
|
||||
public static function getOMClass()
|
||||
{
|
||||
return UserExtendedAttributesPeer::CLASS_DEFAULT;
|
||||
}
|
||||
|
||||
/**
|
||||
* Method perform an INSERT on the database, given a UserExtendedAttributes or Criteria object.
|
||||
*
|
||||
* @param mixed $values Criteria or UserExtendedAttributes object containing data that is used to create the INSERT statement.
|
||||
* @param Connection $con the connection to use
|
||||
* @return mixed The new primary key.
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
*/
|
||||
public static function doInsert($values, $con = null)
|
||||
{
|
||||
if ($con === null) {
|
||||
$con = Propel::getConnection(self::DATABASE_NAME);
|
||||
}
|
||||
|
||||
if ($values instanceof Criteria) {
|
||||
$criteria = clone $values; // rename for clarity
|
||||
} else {
|
||||
$criteria = $values->buildCriteria(); // build Criteria from UserExtendedAttributes object
|
||||
}
|
||||
|
||||
//$criteria->remove(UserExtendedAttributesPeer::UEA_ID); // remove pkey col since this table uses auto-increment
|
||||
|
||||
|
||||
// Set the correct dbName
|
||||
$criteria->setDbName(self::DATABASE_NAME);
|
||||
|
||||
try {
|
||||
// use transaction because $criteria could contain info
|
||||
// for more than one table (I guess, conceivably)
|
||||
$con->begin();
|
||||
$pk = BasePeer::doInsert($criteria, $con);
|
||||
$con->commit();
|
||||
} catch (PropelException $e) {
|
||||
$con->rollback();
|
||||
throw $e;
|
||||
}
|
||||
|
||||
return $pk;
|
||||
}
|
||||
|
||||
/**
|
||||
* Method perform an UPDATE on the database, given a UserExtendedAttributes or Criteria object.
|
||||
*
|
||||
* @param mixed $values Criteria or UserExtendedAttributes object containing data create the UPDATE statement.
|
||||
* @param Connection $con The connection to use (specify Connection exert more control over transactions).
|
||||
* @return int The number of affected rows (if supported by underlying database driver).
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
*/
|
||||
public static function doUpdate($values, $con = null)
|
||||
{
|
||||
if ($con === null) {
|
||||
$con = Propel::getConnection(self::DATABASE_NAME);
|
||||
}
|
||||
|
||||
$selectCriteria = new Criteria(self::DATABASE_NAME);
|
||||
|
||||
if ($values instanceof Criteria) {
|
||||
$criteria = clone $values; // rename for clarity
|
||||
|
||||
$comparison = $criteria->getComparison(UserExtendedAttributesPeer::UEA_ID);
|
||||
$selectCriteria->add(UserExtendedAttributesPeer::UEA_ID, $criteria->remove(UserExtendedAttributesPeer::UEA_ID), $comparison);
|
||||
|
||||
} else {
|
||||
$criteria = $values->buildCriteria(); // gets full criteria
|
||||
$selectCriteria = $values->buildPkeyCriteria(); // gets criteria w/ primary key(s)
|
||||
}
|
||||
|
||||
// set the correct dbName
|
||||
$criteria->setDbName(self::DATABASE_NAME);
|
||||
|
||||
return BasePeer::doUpdate($selectCriteria, $criteria, $con);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to DELETE all rows from the USER_EXTENDED_ATTRIBUTES table.
|
||||
*
|
||||
* @return int The number of affected rows (if supported by underlying database driver).
|
||||
*/
|
||||
public static function doDeleteAll($con = null)
|
||||
{
|
||||
if ($con === null) {
|
||||
$con = Propel::getConnection(self::DATABASE_NAME);
|
||||
}
|
||||
$affectedRows = 0; // initialize var to track total num of affected rows
|
||||
try {
|
||||
// use transaction because $criteria could contain info
|
||||
// for more than one table or we could emulating ON DELETE CASCADE, etc.
|
||||
$con->begin();
|
||||
$affectedRows += BasePeer::doDeleteAll(UserExtendedAttributesPeer::TABLE_NAME, $con);
|
||||
$con->commit();
|
||||
return $affectedRows;
|
||||
} catch (PropelException $e) {
|
||||
$con->rollback();
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Method perform a DELETE on the database, given a UserExtendedAttributes or Criteria object OR a primary key value.
|
||||
*
|
||||
* @param mixed $values Criteria or UserExtendedAttributes object or primary key or array of primary keys
|
||||
* which is used to create the DELETE statement
|
||||
* @param Connection $con the connection to use
|
||||
* @return int The number of affected rows (if supported by underlying database driver).
|
||||
* This includes CASCADE-related rows
|
||||
* if supported by native driver or if emulated using Propel.
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
*/
|
||||
public static function doDelete($values, $con = null)
|
||||
{
|
||||
if ($con === null) {
|
||||
$con = Propel::getConnection(UserExtendedAttributesPeer::DATABASE_NAME);
|
||||
}
|
||||
|
||||
if ($values instanceof Criteria) {
|
||||
$criteria = clone $values; // rename for clarity
|
||||
} elseif ($values instanceof UserExtendedAttributes) {
|
||||
|
||||
$criteria = $values->buildPkeyCriteria();
|
||||
} else {
|
||||
// it must be the primary key
|
||||
$criteria = new Criteria(self::DATABASE_NAME);
|
||||
$criteria->add(UserExtendedAttributesPeer::UEA_ID, (array) $values, Criteria::IN);
|
||||
}
|
||||
|
||||
// Set the correct dbName
|
||||
$criteria->setDbName(self::DATABASE_NAME);
|
||||
|
||||
$affectedRows = 0; // initialize var to track total num of affected rows
|
||||
|
||||
try {
|
||||
// use transaction because $criteria could contain info
|
||||
// for more than one table or we could emulating ON DELETE CASCADE, etc.
|
||||
$con->begin();
|
||||
|
||||
$affectedRows += BasePeer::doDelete($criteria, $con);
|
||||
$con->commit();
|
||||
return $affectedRows;
|
||||
} catch (PropelException $e) {
|
||||
$con->rollback();
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Validates all modified columns of given UserExtendedAttributes object.
|
||||
* If parameter $columns is either a single column name or an array of column names
|
||||
* than only those columns are validated.
|
||||
*
|
||||
* NOTICE: This does not apply to primary or foreign keys for now.
|
||||
*
|
||||
* @param UserExtendedAttributes $obj The object to validate.
|
||||
* @param mixed $cols Column name or array of column names.
|
||||
*
|
||||
* @return mixed TRUE if all columns are valid or the error message of the first invalid column.
|
||||
*/
|
||||
public static function doValidate(UserExtendedAttributes $obj, $cols = null)
|
||||
{
|
||||
$columns = array();
|
||||
|
||||
if ($cols) {
|
||||
$dbMap = Propel::getDatabaseMap(UserExtendedAttributesPeer::DATABASE_NAME);
|
||||
$tableMap = $dbMap->getTable(UserExtendedAttributesPeer::TABLE_NAME);
|
||||
|
||||
if (! is_array($cols)) {
|
||||
$cols = array($cols);
|
||||
}
|
||||
|
||||
foreach ($cols as $colName) {
|
||||
if ($tableMap->containsColumn($colName)) {
|
||||
$get = 'get' . $tableMap->getColumn($colName)->getPhpName();
|
||||
$columns[$colName] = $obj->$get();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
}
|
||||
|
||||
return BasePeer::doValidate(UserExtendedAttributesPeer::DATABASE_NAME, UserExtendedAttributesPeer::TABLE_NAME, $columns);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve a single object by pkey.
|
||||
*
|
||||
* @param mixed $pk the primary key.
|
||||
* @param Connection $con the connection to use
|
||||
* @return UserExtendedAttributes
|
||||
*/
|
||||
public static function retrieveByPK($pk, $con = null)
|
||||
{
|
||||
if ($con === null) {
|
||||
$con = Propel::getConnection(self::DATABASE_NAME);
|
||||
}
|
||||
|
||||
$criteria = new Criteria(UserExtendedAttributesPeer::DATABASE_NAME);
|
||||
|
||||
$criteria->add(UserExtendedAttributesPeer::UEA_ID, $pk);
|
||||
|
||||
|
||||
$v = UserExtendedAttributesPeer::doSelect($criteria, $con);
|
||||
|
||||
return !empty($v) > 0 ? $v[0] : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve multiple objects by pkey.
|
||||
*
|
||||
* @param array $pks List of primary keys
|
||||
* @param Connection $con the connection to use
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
*/
|
||||
public static function retrieveByPKs($pks, $con = null)
|
||||
{
|
||||
if ($con === null) {
|
||||
$con = Propel::getConnection(self::DATABASE_NAME);
|
||||
}
|
||||
|
||||
$objs = null;
|
||||
if (empty($pks)) {
|
||||
$objs = array();
|
||||
} else {
|
||||
$criteria = new Criteria();
|
||||
$criteria->add(UserExtendedAttributesPeer::UEA_ID, $pks, Criteria::IN);
|
||||
$objs = UserExtendedAttributesPeer::doSelect($criteria, $con);
|
||||
}
|
||||
return $objs;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// static code to register the map builder for this Peer with the main Propel class
|
||||
if (Propel::isInit()) {
|
||||
// the MapBuilder classes register themselves with Propel during initialization
|
||||
// so we need to load them here.
|
||||
try {
|
||||
BaseUserExtendedAttributesPeer::getMapBuilder();
|
||||
} catch (Exception $e) {
|
||||
Propel::log('Could not initialize Peer: ' . $e->getMessage(), Propel::LOG_ERR);
|
||||
}
|
||||
} else {
|
||||
// even if Propel is not yet initialized, the map builder class can be registered
|
||||
// now and then it will be loaded when Propel initializes.
|
||||
require_once 'classes/model/map/UserExtendedAttributesMapBuilder.php';
|
||||
Propel::registerMapBuilder('classes.model.map.UserExtendedAttributesMapBuilder');
|
||||
}
|
||||
|
||||
@@ -237,6 +237,12 @@ abstract class BaseUsers extends BaseObject implements Persistent
|
||||
*/
|
||||
protected $usr_last_login;
|
||||
|
||||
/**
|
||||
* The value for the usr_extended_attributes_data field.
|
||||
* @var string
|
||||
*/
|
||||
protected $usr_extended_attributes_data;
|
||||
|
||||
/**
|
||||
* Flag to prevent endless save loop, if this object is referenced
|
||||
* by another object which falls in this transaction.
|
||||
@@ -741,6 +747,17 @@ abstract class BaseUsers extends BaseObject implements Persistent
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the [usr_extended_attributes_data] column value.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getUsrExtendedAttributesData()
|
||||
{
|
||||
|
||||
return $this->usr_extended_attributes_data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of [usr_uid] column.
|
||||
*
|
||||
@@ -1540,6 +1557,28 @@ abstract class BaseUsers extends BaseObject implements Persistent
|
||||
|
||||
} // setUsrLastLogin()
|
||||
|
||||
/**
|
||||
* Set the value of [usr_extended_attributes_data] column.
|
||||
*
|
||||
* @param string $v new value
|
||||
* @return void
|
||||
*/
|
||||
public function setUsrExtendedAttributesData($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_extended_attributes_data !== $v) {
|
||||
$this->usr_extended_attributes_data = $v;
|
||||
$this->modifiedColumns[] = UsersPeer::USR_EXTENDED_ATTRIBUTES_DATA;
|
||||
}
|
||||
|
||||
} // setUsrExtendedAttributesData()
|
||||
|
||||
/**
|
||||
* Hydrates (populates) the object variables with values from the database resultset.
|
||||
*
|
||||
@@ -1627,12 +1666,14 @@ abstract class BaseUsers extends BaseObject implements Persistent
|
||||
|
||||
$this->usr_last_login = $rs->getTimestamp($startcol + 34, null);
|
||||
|
||||
$this->usr_extended_attributes_data = $rs->getString($startcol + 35);
|
||||
|
||||
$this->resetModified();
|
||||
|
||||
$this->setNew(false);
|
||||
|
||||
// FIXME - using NUM_COLUMNS may be clearer.
|
||||
return $startcol + 35; // 35 = UsersPeer::NUM_COLUMNS - UsersPeer::NUM_LAZY_LOAD_COLUMNS).
|
||||
return $startcol + 36; // 36 = UsersPeer::NUM_COLUMNS - UsersPeer::NUM_LAZY_LOAD_COLUMNS).
|
||||
|
||||
} catch (Exception $e) {
|
||||
throw new PropelException("Error populating Users object", $e);
|
||||
@@ -1941,6 +1982,9 @@ abstract class BaseUsers extends BaseObject implements Persistent
|
||||
case 34:
|
||||
return $this->getUsrLastLogin();
|
||||
break;
|
||||
case 35:
|
||||
return $this->getUsrExtendedAttributesData();
|
||||
break;
|
||||
default:
|
||||
return null;
|
||||
break;
|
||||
@@ -1996,6 +2040,7 @@ abstract class BaseUsers extends BaseObject implements Persistent
|
||||
$keys[32] => $this->getUsrTimeZone(),
|
||||
$keys[33] => $this->getUsrDefaultLang(),
|
||||
$keys[34] => $this->getUsrLastLogin(),
|
||||
$keys[35] => $this->getUsrExtendedAttributesData(),
|
||||
);
|
||||
return $result;
|
||||
}
|
||||
@@ -2132,6 +2177,9 @@ abstract class BaseUsers extends BaseObject implements Persistent
|
||||
case 34:
|
||||
$this->setUsrLastLogin($value);
|
||||
break;
|
||||
case 35:
|
||||
$this->setUsrExtendedAttributesData($value);
|
||||
break;
|
||||
} // switch()
|
||||
}
|
||||
|
||||
@@ -2295,6 +2343,10 @@ abstract class BaseUsers extends BaseObject implements Persistent
|
||||
$this->setUsrLastLogin($arr[$keys[34]]);
|
||||
}
|
||||
|
||||
if (array_key_exists($keys[35], $arr)) {
|
||||
$this->setUsrExtendedAttributesData($arr[$keys[35]]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2446,6 +2498,10 @@ abstract class BaseUsers extends BaseObject implements Persistent
|
||||
$criteria->add(UsersPeer::USR_LAST_LOGIN, $this->usr_last_login);
|
||||
}
|
||||
|
||||
if ($this->isColumnModified(UsersPeer::USR_EXTENDED_ATTRIBUTES_DATA)) {
|
||||
$criteria->add(UsersPeer::USR_EXTENDED_ATTRIBUTES_DATA, $this->usr_extended_attributes_data);
|
||||
}
|
||||
|
||||
|
||||
return $criteria;
|
||||
}
|
||||
@@ -2568,6 +2624,8 @@ abstract class BaseUsers extends BaseObject implements Persistent
|
||||
|
||||
$copyObj->setUsrLastLogin($this->usr_last_login);
|
||||
|
||||
$copyObj->setUsrExtendedAttributesData($this->usr_extended_attributes_data);
|
||||
|
||||
|
||||
$copyObj->setNew(true);
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ abstract class BaseUsersPeer
|
||||
const CLASS_DEFAULT = 'classes.model.Users';
|
||||
|
||||
/** The total number of columns. */
|
||||
const NUM_COLUMNS = 35;
|
||||
const NUM_COLUMNS = 36;
|
||||
|
||||
/** The number of lazy-loaded columns. */
|
||||
const NUM_LAZY_LOAD_COLUMNS = 0;
|
||||
@@ -136,6 +136,9 @@ abstract class BaseUsersPeer
|
||||
/** the column name for the USR_LAST_LOGIN field */
|
||||
const USR_LAST_LOGIN = 'USERS.USR_LAST_LOGIN';
|
||||
|
||||
/** the column name for the USR_EXTENDED_ATTRIBUTES_DATA field */
|
||||
const USR_EXTENDED_ATTRIBUTES_DATA = 'USERS.USR_EXTENDED_ATTRIBUTES_DATA';
|
||||
|
||||
/** The PHP to DB Name Mapping */
|
||||
private static $phpNameMap = null;
|
||||
|
||||
@@ -147,10 +150,10 @@ abstract class BaseUsersPeer
|
||||
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
|
||||
*/
|
||||
private static $fieldNames = array (
|
||||
BasePeer::TYPE_PHPNAME => array ('UsrUid', 'UsrId', 'UsrUsername', 'UsrPassword', 'UsrFirstname', 'UsrLastname', 'UsrEmail', 'UsrDueDate', 'UsrCreateDate', 'UsrUpdateDate', 'UsrStatus', 'UsrStatusId', 'UsrCountry', 'UsrCity', 'UsrLocation', 'UsrAddress', 'UsrPhone', 'UsrFax', 'UsrCellular', 'UsrZipCode', 'DepUid', 'UsrPosition', 'UsrResume', 'UsrBirthday', 'UsrRole', 'UsrReportsTo', 'UsrReplacedBy', 'UsrUx', 'UsrCostByHour', 'UsrUnitCost', 'UsrPmdriveFolderUid', 'UsrBookmarkStartCases', 'UsrTimeZone', 'UsrDefaultLang', 'UsrLastLogin', ),
|
||||
BasePeer::TYPE_COLNAME => array (UsersPeer::USR_UID, UsersPeer::USR_ID, 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_STATUS_ID, 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, UsersPeer::USR_COST_BY_HOUR, UsersPeer::USR_UNIT_COST, UsersPeer::USR_PMDRIVE_FOLDER_UID, UsersPeer::USR_BOOKMARK_START_CASES, UsersPeer::USR_TIME_ZONE, UsersPeer::USR_DEFAULT_LANG, UsersPeer::USR_LAST_LOGIN, ),
|
||||
BasePeer::TYPE_FIELDNAME => array ('USR_UID', 'USR_ID', 'USR_USERNAME', 'USR_PASSWORD', 'USR_FIRSTNAME', 'USR_LASTNAME', 'USR_EMAIL', 'USR_DUE_DATE', 'USR_CREATE_DATE', 'USR_UPDATE_DATE', 'USR_STATUS', 'USR_STATUS_ID', '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', 'USR_COST_BY_HOUR', 'USR_UNIT_COST', 'USR_PMDRIVE_FOLDER_UID', 'USR_BOOKMARK_START_CASES', 'USR_TIME_ZONE', 'USR_DEFAULT_LANG', 'USR_LAST_LOGIN', ),
|
||||
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, 26, 27, 28, 29, 30, 31, 32, 33, 34, )
|
||||
BasePeer::TYPE_PHPNAME => array ('UsrUid', 'UsrId', 'UsrUsername', 'UsrPassword', 'UsrFirstname', 'UsrLastname', 'UsrEmail', 'UsrDueDate', 'UsrCreateDate', 'UsrUpdateDate', 'UsrStatus', 'UsrStatusId', 'UsrCountry', 'UsrCity', 'UsrLocation', 'UsrAddress', 'UsrPhone', 'UsrFax', 'UsrCellular', 'UsrZipCode', 'DepUid', 'UsrPosition', 'UsrResume', 'UsrBirthday', 'UsrRole', 'UsrReportsTo', 'UsrReplacedBy', 'UsrUx', 'UsrCostByHour', 'UsrUnitCost', 'UsrPmdriveFolderUid', 'UsrBookmarkStartCases', 'UsrTimeZone', 'UsrDefaultLang', 'UsrLastLogin', 'UsrExtendedAttributesData', ),
|
||||
BasePeer::TYPE_COLNAME => array (UsersPeer::USR_UID, UsersPeer::USR_ID, 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_STATUS_ID, 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, UsersPeer::USR_COST_BY_HOUR, UsersPeer::USR_UNIT_COST, UsersPeer::USR_PMDRIVE_FOLDER_UID, UsersPeer::USR_BOOKMARK_START_CASES, UsersPeer::USR_TIME_ZONE, UsersPeer::USR_DEFAULT_LANG, UsersPeer::USR_LAST_LOGIN, UsersPeer::USR_EXTENDED_ATTRIBUTES_DATA, ),
|
||||
BasePeer::TYPE_FIELDNAME => array ('USR_UID', 'USR_ID', 'USR_USERNAME', 'USR_PASSWORD', 'USR_FIRSTNAME', 'USR_LASTNAME', 'USR_EMAIL', 'USR_DUE_DATE', 'USR_CREATE_DATE', 'USR_UPDATE_DATE', 'USR_STATUS', 'USR_STATUS_ID', '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', 'USR_COST_BY_HOUR', 'USR_UNIT_COST', 'USR_PMDRIVE_FOLDER_UID', 'USR_BOOKMARK_START_CASES', 'USR_TIME_ZONE', 'USR_DEFAULT_LANG', 'USR_LAST_LOGIN', 'USR_EXTENDED_ATTRIBUTES_DATA', ),
|
||||
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, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, )
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -160,10 +163,10 @@ abstract class BaseUsersPeer
|
||||
* e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0
|
||||
*/
|
||||
private static $fieldKeys = array (
|
||||
BasePeer::TYPE_PHPNAME => array ('UsrUid' => 0, 'UsrId' => 1, 'UsrUsername' => 2, 'UsrPassword' => 3, 'UsrFirstname' => 4, 'UsrLastname' => 5, 'UsrEmail' => 6, 'UsrDueDate' => 7, 'UsrCreateDate' => 8, 'UsrUpdateDate' => 9, 'UsrStatus' => 10, 'UsrStatusId' => 11, 'UsrCountry' => 12, 'UsrCity' => 13, 'UsrLocation' => 14, 'UsrAddress' => 15, 'UsrPhone' => 16, 'UsrFax' => 17, 'UsrCellular' => 18, 'UsrZipCode' => 19, 'DepUid' => 20, 'UsrPosition' => 21, 'UsrResume' => 22, 'UsrBirthday' => 23, 'UsrRole' => 24, 'UsrReportsTo' => 25, 'UsrReplacedBy' => 26, 'UsrUx' => 27, 'UsrCostByHour' => 28, 'UsrUnitCost' => 29, 'UsrPmdriveFolderUid' => 30, 'UsrBookmarkStartCases' => 31, 'UsrTimeZone' => 32, 'UsrDefaultLang' => 33, 'UsrLastLogin' => 34, ),
|
||||
BasePeer::TYPE_COLNAME => array (UsersPeer::USR_UID => 0, UsersPeer::USR_ID => 1, UsersPeer::USR_USERNAME => 2, UsersPeer::USR_PASSWORD => 3, UsersPeer::USR_FIRSTNAME => 4, UsersPeer::USR_LASTNAME => 5, UsersPeer::USR_EMAIL => 6, UsersPeer::USR_DUE_DATE => 7, UsersPeer::USR_CREATE_DATE => 8, UsersPeer::USR_UPDATE_DATE => 9, UsersPeer::USR_STATUS => 10, UsersPeer::USR_STATUS_ID => 11, UsersPeer::USR_COUNTRY => 12, UsersPeer::USR_CITY => 13, UsersPeer::USR_LOCATION => 14, UsersPeer::USR_ADDRESS => 15, UsersPeer::USR_PHONE => 16, UsersPeer::USR_FAX => 17, UsersPeer::USR_CELLULAR => 18, UsersPeer::USR_ZIP_CODE => 19, UsersPeer::DEP_UID => 20, UsersPeer::USR_POSITION => 21, UsersPeer::USR_RESUME => 22, UsersPeer::USR_BIRTHDAY => 23, UsersPeer::USR_ROLE => 24, UsersPeer::USR_REPORTS_TO => 25, UsersPeer::USR_REPLACED_BY => 26, UsersPeer::USR_UX => 27, UsersPeer::USR_COST_BY_HOUR => 28, UsersPeer::USR_UNIT_COST => 29, UsersPeer::USR_PMDRIVE_FOLDER_UID => 30, UsersPeer::USR_BOOKMARK_START_CASES => 31, UsersPeer::USR_TIME_ZONE => 32, UsersPeer::USR_DEFAULT_LANG => 33, UsersPeer::USR_LAST_LOGIN => 34, ),
|
||||
BasePeer::TYPE_FIELDNAME => array ('USR_UID' => 0, 'USR_ID' => 1, 'USR_USERNAME' => 2, 'USR_PASSWORD' => 3, 'USR_FIRSTNAME' => 4, 'USR_LASTNAME' => 5, 'USR_EMAIL' => 6, 'USR_DUE_DATE' => 7, 'USR_CREATE_DATE' => 8, 'USR_UPDATE_DATE' => 9, 'USR_STATUS' => 10, 'USR_STATUS_ID' => 11, 'USR_COUNTRY' => 12, 'USR_CITY' => 13, 'USR_LOCATION' => 14, 'USR_ADDRESS' => 15, 'USR_PHONE' => 16, 'USR_FAX' => 17, 'USR_CELLULAR' => 18, 'USR_ZIP_CODE' => 19, 'DEP_UID' => 20, 'USR_POSITION' => 21, 'USR_RESUME' => 22, 'USR_BIRTHDAY' => 23, 'USR_ROLE' => 24, 'USR_REPORTS_TO' => 25, 'USR_REPLACED_BY' => 26, 'USR_UX' => 27, 'USR_COST_BY_HOUR' => 28, 'USR_UNIT_COST' => 29, 'USR_PMDRIVE_FOLDER_UID' => 30, 'USR_BOOKMARK_START_CASES' => 31, 'USR_TIME_ZONE' => 32, 'USR_DEFAULT_LANG' => 33, 'USR_LAST_LOGIN' => 34, ),
|
||||
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, 26, 27, 28, 29, 30, 31, 32, 33, 34, )
|
||||
BasePeer::TYPE_PHPNAME => array ('UsrUid' => 0, 'UsrId' => 1, 'UsrUsername' => 2, 'UsrPassword' => 3, 'UsrFirstname' => 4, 'UsrLastname' => 5, 'UsrEmail' => 6, 'UsrDueDate' => 7, 'UsrCreateDate' => 8, 'UsrUpdateDate' => 9, 'UsrStatus' => 10, 'UsrStatusId' => 11, 'UsrCountry' => 12, 'UsrCity' => 13, 'UsrLocation' => 14, 'UsrAddress' => 15, 'UsrPhone' => 16, 'UsrFax' => 17, 'UsrCellular' => 18, 'UsrZipCode' => 19, 'DepUid' => 20, 'UsrPosition' => 21, 'UsrResume' => 22, 'UsrBirthday' => 23, 'UsrRole' => 24, 'UsrReportsTo' => 25, 'UsrReplacedBy' => 26, 'UsrUx' => 27, 'UsrCostByHour' => 28, 'UsrUnitCost' => 29, 'UsrPmdriveFolderUid' => 30, 'UsrBookmarkStartCases' => 31, 'UsrTimeZone' => 32, 'UsrDefaultLang' => 33, 'UsrLastLogin' => 34, 'UsrExtendedAttributesData' => 35, ),
|
||||
BasePeer::TYPE_COLNAME => array (UsersPeer::USR_UID => 0, UsersPeer::USR_ID => 1, UsersPeer::USR_USERNAME => 2, UsersPeer::USR_PASSWORD => 3, UsersPeer::USR_FIRSTNAME => 4, UsersPeer::USR_LASTNAME => 5, UsersPeer::USR_EMAIL => 6, UsersPeer::USR_DUE_DATE => 7, UsersPeer::USR_CREATE_DATE => 8, UsersPeer::USR_UPDATE_DATE => 9, UsersPeer::USR_STATUS => 10, UsersPeer::USR_STATUS_ID => 11, UsersPeer::USR_COUNTRY => 12, UsersPeer::USR_CITY => 13, UsersPeer::USR_LOCATION => 14, UsersPeer::USR_ADDRESS => 15, UsersPeer::USR_PHONE => 16, UsersPeer::USR_FAX => 17, UsersPeer::USR_CELLULAR => 18, UsersPeer::USR_ZIP_CODE => 19, UsersPeer::DEP_UID => 20, UsersPeer::USR_POSITION => 21, UsersPeer::USR_RESUME => 22, UsersPeer::USR_BIRTHDAY => 23, UsersPeer::USR_ROLE => 24, UsersPeer::USR_REPORTS_TO => 25, UsersPeer::USR_REPLACED_BY => 26, UsersPeer::USR_UX => 27, UsersPeer::USR_COST_BY_HOUR => 28, UsersPeer::USR_UNIT_COST => 29, UsersPeer::USR_PMDRIVE_FOLDER_UID => 30, UsersPeer::USR_BOOKMARK_START_CASES => 31, UsersPeer::USR_TIME_ZONE => 32, UsersPeer::USR_DEFAULT_LANG => 33, UsersPeer::USR_LAST_LOGIN => 34, UsersPeer::USR_EXTENDED_ATTRIBUTES_DATA => 35, ),
|
||||
BasePeer::TYPE_FIELDNAME => array ('USR_UID' => 0, 'USR_ID' => 1, 'USR_USERNAME' => 2, 'USR_PASSWORD' => 3, 'USR_FIRSTNAME' => 4, 'USR_LASTNAME' => 5, 'USR_EMAIL' => 6, 'USR_DUE_DATE' => 7, 'USR_CREATE_DATE' => 8, 'USR_UPDATE_DATE' => 9, 'USR_STATUS' => 10, 'USR_STATUS_ID' => 11, 'USR_COUNTRY' => 12, 'USR_CITY' => 13, 'USR_LOCATION' => 14, 'USR_ADDRESS' => 15, 'USR_PHONE' => 16, 'USR_FAX' => 17, 'USR_CELLULAR' => 18, 'USR_ZIP_CODE' => 19, 'DEP_UID' => 20, 'USR_POSITION' => 21, 'USR_RESUME' => 22, 'USR_BIRTHDAY' => 23, 'USR_ROLE' => 24, 'USR_REPORTS_TO' => 25, 'USR_REPLACED_BY' => 26, 'USR_UX' => 27, 'USR_COST_BY_HOUR' => 28, 'USR_UNIT_COST' => 29, 'USR_PMDRIVE_FOLDER_UID' => 30, 'USR_BOOKMARK_START_CASES' => 31, 'USR_TIME_ZONE' => 32, 'USR_DEFAULT_LANG' => 33, 'USR_LAST_LOGIN' => 34, 'USR_EXTENDED_ATTRIBUTES_DATA' => 35, ),
|
||||
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, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, )
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -334,6 +337,8 @@ abstract class BaseUsersPeer
|
||||
|
||||
$criteria->addSelectColumn(UsersPeer::USR_LAST_LOGIN);
|
||||
|
||||
$criteria->addSelectColumn(UsersPeer::USR_EXTENDED_ATTRIBUTES_DATA);
|
||||
|
||||
}
|
||||
|
||||
const COUNT = 'COUNT(USERS.USR_UID)';
|
||||
|
||||
@@ -1789,6 +1789,7 @@
|
||||
<column name="USR_TIME_ZONE" type="VARCHAR" size="100" default=""/>
|
||||
<column name="USR_DEFAULT_LANG" type="VARCHAR" size="10" default=""/>
|
||||
<column name="USR_LAST_LOGIN" type="TIMESTAMP" required="false"/>
|
||||
<column name="USR_EXTENDED_ATTRIBUTES_DATA" type="LONGVARCHAR" required="false"/>
|
||||
<unique name="INDEX_USR_ID">
|
||||
<unique-column name="USR_ID"/>
|
||||
</unique>
|
||||
@@ -6078,4 +6079,20 @@
|
||||
<column name="creation_date" type="TIMESTAMP" required="false"/>
|
||||
<column name="last_update" type="TIMESTAMP" required="false"/>
|
||||
</table>
|
||||
<table name="USER_EXTENDED_ATTRIBUTES" idMethod="native">
|
||||
<vendor type="mysql">
|
||||
<parameter name="Engine" value="InnoDB"/>
|
||||
<parameter name="Collation" value="utf8"/>
|
||||
</vendor>
|
||||
<column name="UEA_ID" type="BIGINT" size="20" required="true" autoIncrement="true" primaryKey="true"/>
|
||||
<column name="UEA_NAME" type="VARCHAR" size="255" required="false"/>
|
||||
<column name="UEA_ATTRIBUTE_ID" type="VARCHAR" size="255" required="false"/>
|
||||
<column name="UEA_HIDDEN" type="INTEGER" required="false"/>
|
||||
<column name="UEA_REQUIRED" type="INTEGER" required="false"/>
|
||||
<column name="UEA_PASSWORD" type="INTEGER" required="false"/>
|
||||
<column name="UEA_OPTION" type="VARCHAR" size="255" required="false"/>
|
||||
<column name="UEA_ROLES" type="LONGVARCHAR" required="false"/>
|
||||
<column name="UEA_OWNER" type="BIGINT" size="20" required="false"/>
|
||||
<column name="UEA_DATE_CREATE" type="TIMESTAMP" required="false"/>
|
||||
</table>
|
||||
</database>
|
||||
|
||||
@@ -1975,6 +1975,12 @@ msgstr "PM Tables"
|
||||
msgid "Address"
|
||||
msgstr "Address"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_ADD_ATTRIBUTE
|
||||
#: LABEL/ID_ADD_ATTRIBUTE
|
||||
msgid "Add Attribute"
|
||||
msgstr "Add Attribute"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_ADD_CUSTOM_COLUMN
|
||||
#: LABEL/ID_ADD_CUSTOM_COLUMN
|
||||
@@ -2353,6 +2359,18 @@ msgstr "App Uid"
|
||||
msgid "Are you sure that you want to resend this message"
|
||||
msgstr "Are you sure that you want to resend this message"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_ARE_YOU_SURE_TO_DELETE_ATTRIBUTE_PLEASE_CONFIRM
|
||||
#: LABEL/ID_ARE_YOU_SURE_TO_DELETE_ATTRIBUTE_PLEASE_CONFIRM
|
||||
msgid "Are you sure to delete the matched attribute \"{0}\", please confirm?"
|
||||
msgstr "Are you sure to delete the matched attribute \"{0}\", please confirm?"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_ARE_YOU_SURE_TO_DELETE_CONNECTION_PLEASE_CONFIRM
|
||||
#: LABEL/ID_ARE_YOU_SURE_TO_DELETE_CONNECTION_PLEASE_CONFIRM
|
||||
msgid "Are you sure to delete the connection \"{0}\", please confirm?"
|
||||
msgstr "Are you sure to delete the connection \"{0}\", please confirm?"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_ARRAY_VARIABLES_EMPTY
|
||||
#: LABEL/ID_ARRAY_VARIABLES_EMPTY
|
||||
@@ -2605,6 +2623,12 @@ msgstr "Attach file"
|
||||
msgid "Attached files"
|
||||
msgstr "Attached files"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_ATTRIBUTE
|
||||
#: LABEL/ID_ATTRIBUTE
|
||||
msgid "Attribute"
|
||||
msgstr "Attribute"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_ATTRIBUTES
|
||||
#: LABEL/ID_ATTRIBUTES
|
||||
@@ -2617,6 +2641,36 @@ msgstr "Attributes"
|
||||
msgid "The attribute {0}, has an invalid element (incorrect keys)."
|
||||
msgstr "The attribute {0}, has an invalid element (incorrect keys)."
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_ATTRIBUTE_ID
|
||||
#: LABEL/ID_ATTRIBUTE_ID
|
||||
msgid "Attribute ID"
|
||||
msgstr "Attribute ID"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_ATTRIBUTE_NAME
|
||||
#: LABEL/ID_ATTRIBUTE_NAME
|
||||
msgid "Attribute Name"
|
||||
msgstr "Attribute Name"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_ATTRIBUTE_WILL_BE_HIDDEN_USING_PLACEHOLDER
|
||||
#: LABEL/ID_ATTRIBUTE_WILL_BE_HIDDEN_USING_PLACEHOLDER
|
||||
msgid "The new attribute value will be hidden using * placeholder instead of real value."
|
||||
msgstr "The new attribute value will be hidden using * placeholder instead of real value."
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_ATTRIBUTE_WILL_BE_REQUIRED_WHEN_EDITING_USER_SETTINGS
|
||||
#: LABEL/ID_ATTRIBUTE_WILL_BE_REQUIRED_WHEN_EDITING_USER_SETTINGS
|
||||
msgid "The new attribute will be required when editing user settings."
|
||||
msgstr "The new attribute will be required when editing user settings."
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_ATTRIBUTE_WONT_BE_SEEN_IN_USER_INFORMATION
|
||||
#: LABEL/ID_ATTRIBUTE_WONT_BE_SEEN_IN_USER_INFORMATION
|
||||
msgid "The new attribute won't be seen in the user information pages."
|
||||
msgstr "The new attribute won't be seen in the user information pages."
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_AT_RISK
|
||||
#: LABEL/ID_AT_RISK
|
||||
@@ -2999,6 +3053,12 @@ msgstr "By Case #"
|
||||
msgid "By Case Title"
|
||||
msgstr "By Case Title"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_BY_FINISH_DATE
|
||||
#: LABEL/ID_BY_FINISH_DATE
|
||||
msgid "By Finish Date"
|
||||
msgstr "By Finish Date"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_BY_PROCESS_NAME
|
||||
#: LABEL/ID_BY_PROCESS_NAME
|
||||
@@ -3023,11 +3083,10 @@ msgstr "By Status"
|
||||
msgid "By Start Date"
|
||||
msgstr "By Start Date"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_BY_FINISH_DATE
|
||||
#: LABEL/ID_BY_FINISH_DATE
|
||||
msgid "By Finish Date"
|
||||
msgstr "By Finish Date"
|
||||
# LABEL/ID_BY_ROLE
|
||||
#: LABEL/ID_BY_ROLE
|
||||
msgid "By Role"
|
||||
msgstr "By Role"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_CACHE_BTN_BUILD
|
||||
@@ -4331,6 +4390,12 @@ msgstr "Check for updates (you need to be connected to the Internet)"
|
||||
msgid "Check Workspace Configuration"
|
||||
msgstr "Check Workspace Configuration"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_CHOOSE_A_FILE_OR_DROP_IT_HERE
|
||||
#: LABEL/ID_CHOOSE_A_FILE_OR_DROP_IT_HERE
|
||||
msgid "Choose a file or drop it here..."
|
||||
msgstr "Choose a file or drop it here..."
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_CHOOSE_OPTION
|
||||
#: LABEL/ID_CHOOSE_OPTION
|
||||
@@ -4343,6 +4408,12 @@ msgstr "Choose an option"
|
||||
msgid "Please select provider"
|
||||
msgstr "Please select provider"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_CITY
|
||||
#: LABEL/ID_CITY
|
||||
msgid "City"
|
||||
msgstr "City"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_CLAIM
|
||||
#: LABEL/ID_CLAIM
|
||||
@@ -4781,6 +4852,18 @@ msgstr "Connection Error: User \"{0}\" can't create databases and users. <br>Ple
|
||||
msgid "Connection Error: User \"{0}\" can't create databases and Users <br>Please provide an user with sysadmin role or dbcreator and securityadmin roles."
|
||||
msgstr "Connection Error: User \"{0}\" can't create databases and Users <br>Please provide an user with sysadmin role or dbcreator and securityadmin roles."
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_CONNECTION_SETTINGS
|
||||
#: LABEL/ID_CONNECTION_SETTINGS
|
||||
msgid "Connection Settings"
|
||||
msgstr "Connection Settings"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_CONNECTION_WITH_THE_SAME_NAME_PLEASE_SELECT_AN_OPTION
|
||||
#: LABEL/ID_CONNECTION_WITH_THE_SAME_NAME_PLEASE_SELECT_AN_OPTION
|
||||
msgid "You are about importing a connection with the same name \"{0}\" please select an option"
|
||||
msgstr "You are about importing a connection with the same name \"{0}\" please select an option"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_CONNECT_HOST
|
||||
#: LABEL/ID_CONNECT_HOST
|
||||
@@ -5879,6 +5962,12 @@ msgstr "Do you want to delete all fields?"
|
||||
msgid "Do you want to delete all report tables?"
|
||||
msgstr "Do you want to delete all report tables?"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_DELETE_ATTRIBUTE
|
||||
#: LABEL/ID_DELETE_ATTRIBUTE
|
||||
msgid "Delete Attribute"
|
||||
msgstr "Delete Attribute"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_DELETE_AUTH_SOURCE
|
||||
#: LABEL/ID_DELETE_AUTH_SOURCE
|
||||
@@ -6143,6 +6232,12 @@ msgstr "Do you want to deleted selected({0}) items?"
|
||||
msgid "Do you want to delete the selected logo?"
|
||||
msgstr "Do you want to delete the selected logo?"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_DELETE_SETTINGS
|
||||
#: LABEL/ID_DELETE_SETTINGS
|
||||
msgid "Delete Settings"
|
||||
msgstr "Delete Settings"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_DELETE_SKIN
|
||||
#: LABEL/ID_DELETE_SKIN
|
||||
@@ -6281,6 +6376,12 @@ msgstr "Departments"
|
||||
msgid "It's necessary to check the parent-department: {0} for the sub-department: {1}"
|
||||
msgstr "It's necessary to check the parent-department: {0} for the sub-department: {1}"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_DEPARTMENT_CLASS_IDENTIFIER
|
||||
#: LABEL/ID_DEPARTMENT_CLASS_IDENTIFIER
|
||||
msgid "Department Class Identifier"
|
||||
msgstr "Department Class Identifier"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_DEPARTMENT_CREATED_SUCCESSFULLY
|
||||
#: LABEL/ID_DEPARTMENT_CREATED_SUCCESSFULLY
|
||||
@@ -6731,6 +6832,12 @@ msgstr "Downloading upgrade:"
|
||||
msgid "You can download it manually here"
|
||||
msgstr "You can download it manually here"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_DOWNLOAD_SETTINGS
|
||||
#: LABEL/ID_DOWNLOAD_SETTINGS
|
||||
msgid "Download Settings"
|
||||
msgstr "Download Settings"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_DOWN_TRIGGER
|
||||
#: LABEL/ID_DOWN_TRIGGER
|
||||
@@ -6755,6 +6862,12 @@ msgstr "When this option is enabled, all input, output and attached documents ge
|
||||
msgid "Drop database if exists"
|
||||
msgstr "Drop database if exists"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_DROP_FILE_HERE
|
||||
#: LABEL/ID_DROP_FILE_HERE
|
||||
msgid "Drop file here..."
|
||||
msgstr "Drop file here..."
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_DUE_DATE
|
||||
#: LABEL/ID_DUE_DATE
|
||||
@@ -6965,6 +7078,18 @@ msgstr "Editing the dynaform"
|
||||
msgid "Edit Action"
|
||||
msgstr "Edit Action"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_EDIT_ATTRIBUTE
|
||||
#: LABEL/ID_EDIT_ATTRIBUTE
|
||||
msgid "Edit Attribute"
|
||||
msgstr "Edit Attribute"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_EDIT_AUTHENTICATION_SOURCES
|
||||
#: LABEL/ID_EDIT_AUTHENTICATION_SOURCES
|
||||
msgid "Edit Authentication Sources"
|
||||
msgstr "Edit Authentication Sources"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_EDIT_BPMN
|
||||
#: LABEL/ID_EDIT_BPMN
|
||||
@@ -7061,6 +7186,12 @@ msgstr "Edit Report Table"
|
||||
msgid "Edit Role"
|
||||
msgstr "Edit Role"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_EDIT_SETTINGS
|
||||
#: LABEL/ID_EDIT_SETTINGS
|
||||
msgid "Edit Settings"
|
||||
msgstr "Edit Settings"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_EDIT_TRIGGERS
|
||||
#: LABEL/ID_EDIT_TRIGGERS
|
||||
@@ -8153,6 +8284,12 @@ msgstr "Export Skin"
|
||||
msgid "Export Table"
|
||||
msgstr "Export Table"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_EXTENDED_ATTRIBUTES
|
||||
#: LABEL/ID_EXTENDED_ATTRIBUTES
|
||||
msgid "Extended Attributes"
|
||||
msgstr "Extended Attributes"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_EXTENDED_FEATURES
|
||||
#: LABEL/ID_EXTENDED_FEATURES
|
||||
@@ -9269,6 +9406,12 @@ msgstr "Group cannot be deleted while it's assigned to a task"
|
||||
msgid "Group Chart"
|
||||
msgstr "Group Chart"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_GROUP_CLASS_IDENTIFIER
|
||||
#: LABEL/ID_GROUP_CLASS_IDENTIFIER
|
||||
msgid "Group Class Identifier"
|
||||
msgstr "Group Class Identifier"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_GROUP_CREATED_SUCCESSFULLY
|
||||
#: LABEL/ID_GROUP_CREATED_SUCCESSFULLY
|
||||
@@ -9281,6 +9424,12 @@ msgstr "Group {GROUP_NAME} created successfully"
|
||||
msgid "The group with {0}: {1} does not exist."
|
||||
msgstr "The group with {0}: {1} does not exist."
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_GROUP_IDENTIFIER
|
||||
#: LABEL/ID_GROUP_IDENTIFIER
|
||||
msgid "Group Identifier"
|
||||
msgstr "Group Identifier"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_GROUP_INACTIVE
|
||||
#: LABEL/ID_GROUP_INACTIVE
|
||||
@@ -9449,6 +9598,12 @@ msgstr "Heart beat has been enabled"
|
||||
msgid "Help"
|
||||
msgstr "Help"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_HIDDEN
|
||||
#: LABEL/ID_HIDDEN
|
||||
msgid "Hidden"
|
||||
msgstr "Hidden"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_HIDE
|
||||
#: LABEL/ID_HIDE
|
||||
@@ -9743,6 +9898,12 @@ msgstr "Note that your changes will be lost in your existing process if you over
|
||||
msgid "Import BPMN"
|
||||
msgstr "Import BPMN"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_IMPORT_CONNECTION
|
||||
#: LABEL/ID_IMPORT_CONNECTION
|
||||
msgid "Import connection"
|
||||
msgstr "Import connection"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_IMPORT_CSV
|
||||
#: LABEL/ID_IMPORT_CSV
|
||||
@@ -9791,6 +9952,12 @@ msgstr "IMPORT RESULT"
|
||||
msgid "Import Report Table"
|
||||
msgstr "Import Report Table"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_IMPORT_SETTINGS
|
||||
#: LABEL/ID_IMPORT_SETTINGS
|
||||
msgid "Import Settings"
|
||||
msgstr "Import Settings"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_IMPORT_SKIN
|
||||
#: LABEL/ID_IMPORT_SKIN
|
||||
@@ -9821,6 +9988,12 @@ msgstr "in"
|
||||
msgid "[LABEL/ID_INACTIVE] Inactive"
|
||||
msgstr "Inactive"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_INACTIVE_USERS
|
||||
#: LABEL/ID_INACTIVE_USERS
|
||||
msgid "Inactive Users"
|
||||
msgstr "Inactive Users"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_INBOX
|
||||
#: LABEL/ID_INBOX
|
||||
@@ -10781,6 +10954,12 @@ msgstr "The account is currently disabled."
|
||||
msgid "The user's account has expired."
|
||||
msgstr "The user's account has expired."
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_LDAP_ATTRIBUTE
|
||||
#: LABEL/ID_LDAP_ATTRIBUTE
|
||||
msgid "LDAP Attribute"
|
||||
msgstr "LDAP Attribute"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_LDAP_ERROR_CONNECTION
|
||||
#: LABEL/ID_LDAP_ERROR_CONNECTION
|
||||
@@ -18665,6 +18844,12 @@ msgstr "There was a problem contacting the market server."
|
||||
msgid "Masks List"
|
||||
msgstr "Masks List"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_MATCH_ATTRIBUTES
|
||||
#: LABEL/ID_MATCH_ATTRIBUTES
|
||||
msgid "Match Attributes"
|
||||
msgstr "Match Attributes"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_MATCH_ATTRIBUTES_TO_SYNC
|
||||
#: LABEL/ID_MATCH_ATTRIBUTES_TO_SYNC
|
||||
@@ -19667,6 +19852,18 @@ msgstr "New"
|
||||
msgid "New PM Table"
|
||||
msgstr "New PM Table"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_NEW_ATTRIBUTE
|
||||
#: LABEL/ID_NEW_ATTRIBUTE
|
||||
msgid "New Attribute"
|
||||
msgstr "New Attribute"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_NEW_AUTHENTICATION_SOURCES
|
||||
#: LABEL/ID_NEW_AUTHENTICATION_SOURCES
|
||||
msgid "New Authentication Sources"
|
||||
msgstr "New Authentication Sources"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_NEW_BPMN_PROJECT
|
||||
#: LABEL/ID_NEW_BPMN_PROJECT
|
||||
@@ -19709,6 +19906,12 @@ msgstr "Create New Category"
|
||||
msgid "New Condition From Step"
|
||||
msgstr "New Condition From Step"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_NEW_CONNECTION
|
||||
#: LABEL/ID_NEW_CONNECTION
|
||||
msgid "New connection"
|
||||
msgstr "New connection"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_NEW_DEPARTMENT
|
||||
#: LABEL/ID_NEW_DEPARTMENT
|
||||
@@ -19745,6 +19948,12 @@ msgstr "New"
|
||||
msgid "New Input Document"
|
||||
msgstr "New Input Document"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_NEW_MATCHED_ATTRIBUTE
|
||||
#: LABEL/ID_NEW_MATCHED_ATTRIBUTE
|
||||
msgid "New Matched Attribute"
|
||||
msgstr "New Matched Attribute"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_NEW_NOTE
|
||||
#: LABEL/ID_NEW_NOTE
|
||||
@@ -19835,6 +20044,12 @@ msgstr "New Translation"
|
||||
msgid "[LABEL/ID_NEW_TRIGGERS] New Trigger"
|
||||
msgstr "New Trigger"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_NEW_USER_ATTRIBUTE
|
||||
#: LABEL/ID_NEW_USER_ATTRIBUTE
|
||||
msgid "New User Attribute"
|
||||
msgstr "New User Attribute"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_NEW_VERSION
|
||||
#: LABEL/ID_NEW_VERSION
|
||||
@@ -20195,6 +20410,12 @@ msgstr "Your license does not have the Gmail integration. Please contact your ad
|
||||
msgid "No Manager Selected"
|
||||
msgstr "No Manager Selected"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_NO_MATCHING_RECORDS
|
||||
#: LABEL/ID_NO_MATCHING_RECORDS
|
||||
msgid "No matching records"
|
||||
msgstr "No matching records"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_NO_MORE_APPLICATIONS
|
||||
#: LABEL/ID_NO_MORE_APPLICATIONS
|
||||
@@ -20471,6 +20692,12 @@ msgstr "Open With"
|
||||
msgid "Operating System"
|
||||
msgstr "Operating System"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_OPERATOR
|
||||
#: LABEL/ID_OPERATOR
|
||||
msgid "Operator"
|
||||
msgstr "Operator"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_OPTION
|
||||
#: LABEL/ID_OPTION
|
||||
@@ -21047,6 +21274,12 @@ msgstr "The PIN is invalid"
|
||||
msgid "please"
|
||||
msgstr "please"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_PLEASE_ADD_THE_FILE_SETTINGS_TO_BE_UPLOADED
|
||||
#: LABEL/ID_PLEASE_ADD_THE_FILE_SETTINGS_TO_BE_UPLOADED
|
||||
msgid "Please add the file settings to be uploaded"
|
||||
msgstr "Please add the file settings to be uploaded"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_PLEASE_CHANGE_PASSWORD_POLICY
|
||||
#: LABEL/ID_PLEASE_CHANGE_PASSWORD_POLICY
|
||||
@@ -22019,6 +22252,12 @@ msgstr "ProcessMaker was successfully installed<br/>Workspace <b>\" {0} \" </b>
|
||||
msgid "The new ProcessMaker UI couldn't be applied on installation. You can enable it afterwards in ADMIN > Settings > System."
|
||||
msgstr "The new ProcessMaker UI couldn't be applied on installation. You can enable it afterwards in ADMIN > Settings > System."
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_PROCESSMAKER_USER_FIELD
|
||||
#: LABEL/ID_PROCESSMAKER_USER_FIELD
|
||||
msgid "ProcessMaker User Field"
|
||||
msgstr "ProcessMaker User Field"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_PROCESSMAKER_VALIDATION
|
||||
#: LABEL/ID_PROCESSMAKER_VALIDATION
|
||||
@@ -23171,6 +23410,18 @@ msgstr "Input Documents"
|
||||
msgid "Request sent."
|
||||
msgstr "Request sent."
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_REQUIRE_SIGN_IN_POLICY_FOR_LDAP
|
||||
#: LABEL/ID_REQUIRE_SIGN_IN_POLICY_FOR_LDAP
|
||||
msgid "Require sign-in policy for LDAP"
|
||||
msgstr "Require sign-in policy for LDAP"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_REQUIRED
|
||||
#: LABEL/ID_REQUIRED
|
||||
msgid "Required"
|
||||
msgstr "Required"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_REQUIRED_FIELD
|
||||
#: LABEL/ID_REQUIRED_FIELD
|
||||
@@ -24413,6 +24664,12 @@ msgstr "Show or hide the Cases Steps"
|
||||
msgid "Return to Advanced Search"
|
||||
msgstr "Return to Advanced Search"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_SHOWING_FROM_RECORDS_COUNT
|
||||
#: LABEL/ID_SHOWING_FROM_RECORDS_COUNT
|
||||
msgid "Showing {from} to {to} of {count} records|{count} records|One record"
|
||||
msgstr "Showing {from} to {to} of {count} records|{count} records|One record"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_SIGN_IN
|
||||
#: LABEL/ID_SIGN_IN
|
||||
@@ -25217,6 +25474,12 @@ msgstr "Switch Interface"
|
||||
msgid "System"
|
||||
msgstr "System"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_SYSTEM_ADMINISTRATOR
|
||||
#: LABEL/ID_SYSTEM_ADMINISTRATOR
|
||||
msgid "System Administrator"
|
||||
msgstr "System Administrator"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_SYSTEM_INFO
|
||||
#: LABEL/ID_SYSTEM_INFO
|
||||
@@ -25625,6 +25888,12 @@ msgstr "There was a problem sending the email to"
|
||||
msgid "Error: The application {0} is not canceled."
|
||||
msgstr "Error: The application {0} is not canceled."
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_THE_ATTRIBUTE_WILL_BE_DELETED_PLEASE_CONFIRM
|
||||
#: LABEL/ID_THE_ATTRIBUTE_WILL_BE_DELETED_PLEASE_CONFIRM
|
||||
msgid "The attribute {0} will be deleted, please confirm."
|
||||
msgstr "The attribute {0} will be deleted, please confirm."
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_THE_DEFAULT_CONFIGURATION
|
||||
#: LABEL/ID_THE_DEFAULT_CONFIGURATION
|
||||
@@ -25685,6 +25954,12 @@ msgstr "The report table is regenerating please come back in a few minutes."
|
||||
msgid "The upload of PHP files was disabled please contact the system administrator."
|
||||
msgstr "The upload of PHP files was disabled please contact the system administrator."
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_THE_USER_ROLES_FOR_ATTRIBUTE_HAS_BEEN_DELETED_PLEASE_CONFIRM
|
||||
#: LABEL/ID_THE_USER_ROLES_FOR_ATTRIBUTE_HAS_BEEN_DELETED_PLEASE_CONFIRM
|
||||
msgid "The user roles for attribute {0} has been modified, if you proceed to save this attribute, all information for users stored in the attribute will be deleted for the removed role, please confirm."
|
||||
msgstr "The user roles for attribute {0} has been modified, if you proceed to save this attribute, all information for users stored in the attribute will be deleted for the removed role, please confirm."
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_THE_USERNAME_EMAIL_IS_INCORRECT
|
||||
#: LABEL/ID_THE_USERNAME_EMAIL_IS_INCORRECT
|
||||
@@ -26292,6 +26567,12 @@ msgstr "Tue"
|
||||
msgid "[LABEL/ID_TYPE] Type"
|
||||
msgstr "Type"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_TYPE_PASSWORD
|
||||
#: LABEL/ID_TYPE_PASSWORD
|
||||
msgid "Type Password"
|
||||
msgstr "Type Password"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_TYPE_PROCESS
|
||||
#: LABEL/ID_TYPE_PROCESS
|
||||
@@ -26604,6 +26885,12 @@ msgstr "Update PM Table"
|
||||
msgid "Update Role"
|
||||
msgstr "Update Role"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_UPDATE_SETTINGS
|
||||
#: LABEL/ID_UPDATE_SETTINGS
|
||||
msgid "Update Settings"
|
||||
msgstr "Update Settings"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_UPDATE_SUB_DEPARTAMENT
|
||||
#: LABEL/ID_UPDATE_SUB_DEPARTAMENT
|
||||
@@ -26754,6 +27041,12 @@ msgstr "Uploading the translation file..."
|
||||
msgid "Upload complete"
|
||||
msgstr "Upload complete"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_UPLOAD_CONNECTION_SETTINGS
|
||||
#: LABEL/ID_UPLOAD_CONNECTION_SETTINGS
|
||||
msgid "Upload Connection Settings"
|
||||
msgstr "Upload Connection Settings"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_UPLOAD_ERR_CANT_WRITE
|
||||
#: LABEL/ID_UPLOAD_ERR_CANT_WRITE
|
||||
@@ -27066,6 +27359,12 @@ msgstr "This user: {0}, can not update the data."
|
||||
msgid "User can't start a case because doesn't have a starting task assigned"
|
||||
msgstr "User can't start a case because doesn't have a starting task assigned"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_USER_CLASS_IDENTIFIER
|
||||
#: LABEL/ID_USER_CLASS_IDENTIFIER
|
||||
msgid "User Class Identifier"
|
||||
msgstr "User Class Identifier"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_USER_CREATED_SUCCESSFULLY
|
||||
#: LABEL/ID_USER_CREATED_SUCCESSFULLY
|
||||
@@ -27114,6 +27413,12 @@ msgstr "The user \"{0}\" does not have the activity \"{1}\" assigned."
|
||||
msgid "User Experience"
|
||||
msgstr "User Experience"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_USER_EXTENDED_ATTRIBUTES
|
||||
#: LABEL/ID_USER_EXTENDED_ATTRIBUTES
|
||||
msgid "User Extended Attributes"
|
||||
msgstr "User Extended Attributes"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_USER_FIELD
|
||||
#: LABEL/ID_USER_FIELD
|
||||
|
||||
@@ -57134,6 +57134,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_ADDITIONAL_FILTER','en','Additional Filter','2014-01-15') ,
|
||||
( 'LABEL','ID_ADDITIONAL_TABLES','en','PM Tables','2014-01-15') ,
|
||||
( 'LABEL','ID_ADDRESS','en','Address','2014-01-15') ,
|
||||
( 'LABEL','ID_ADD_ATTRIBUTE','en','Add Attribute','2020-12-10') ,
|
||||
( 'LABEL','ID_ADD_CUSTOM_COLUMN','en','Add Custom Column','2014-01-15') ,
|
||||
( 'LABEL','ID_ADD_DATA_PMTABLE','en','Add Data to PM table','2014-10-10') ,
|
||||
( 'LABEL','ID_ADD_FIELD','en','Add field','2014-01-15') ,
|
||||
@@ -57197,8 +57198,13 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_APP_MSG_BODY','en','Body','2014-01-15') ,
|
||||
( 'LABEL','ID_APP_UID','en','App Uid','2015-09-15') ,
|
||||
( 'LABEL','ID_ARE_YOU_SURE_RESEND','en','Are you sure that you want to resend this message','2014-01-15') ,
|
||||
<<<<<<< HEAD
|
||||
( 'LABEL','ID_ARE_YOU_SURE_UNPAUSE_TASK','en','Are you sure want to unpause the task?','2020-12-01') ,
|
||||
( 'LABEL','ID_ARE_YOU_SURE_CLAIM_TASK','en','Are you sure want to claim the task?','2020-12-01') ,
|
||||
=======
|
||||
( 'LABEL','ID_ARE_YOU_SURE_TO_DELETE_ATTRIBUTE_PLEASE_CONFIRM','en','Are you sure to delete the matched attribute "{0}", please confirm?','2020-12-10') ,
|
||||
( 'LABEL','ID_ARE_YOU_SURE_TO_DELETE_CONNECTION_PLEASE_CONFIRM','en','Are you sure to delete the connection "{0}", please confirm?','2020-12-10') ,
|
||||
>>>>>>> origin/develop
|
||||
( 'LABEL','ID_ARRAY_VARIABLES_EMPTY','en','Array of variables is empty','2014-01-15') ,
|
||||
( 'LABEL','ID_ASSIGN','en','Assign','2014-01-15') ,
|
||||
( 'LABEL','ID_ASSIGNED_FIEDS','en','ASSIGNED FIELDS','2014-01-15') ,
|
||||
@@ -57243,8 +57249,14 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_ATTACHED_DB','en','Attached','2014-10-08') ,
|
||||
( 'LABEL','ID_ATTACH_FILE','en','Attach file','2020-06-11') ,
|
||||
( 'LABEL','ID_ATTACHED_FILES','en','Attached files','2020-06-10') ,
|
||||
( 'LABEL','ID_ATTRIBUTE','en','Attribute','2020-12-15') ,
|
||||
( 'LABEL','ID_ATTRIBUTES','en','Attributes','2014-01-15') ,
|
||||
( 'LABEL','ID_ATTRIBUTE_HAS_INVALID_ELEMENT_KEY','en','The attribute {0}, has an invalid element (incorrect keys).','2014-05-20') ,
|
||||
( 'LABEL','ID_ATTRIBUTE_ID','en','Attribute ID','2020-12-15') ,
|
||||
( 'LABEL','ID_ATTRIBUTE_NAME','en','Attribute Name','2020-12-15') ,
|
||||
( 'LABEL','ID_ATTRIBUTE_WILL_BE_HIDDEN_USING_PLACEHOLDER','en','The new attribute value will be hidden using * placeholder instead of real value.','2020-12-15') ,
|
||||
( 'LABEL','ID_ATTRIBUTE_WILL_BE_REQUIRED_WHEN_EDITING_USER_SETTINGS','en','The new attribute will be required when editing user settings.','2020-12-15') ,
|
||||
( 'LABEL','ID_ATTRIBUTE_WONT_BE_SEEN_IN_USER_INFORMATION','en','The new attribute won''t be seen in the user information pages.','2020-12-15') ,
|
||||
( 'LABEL','ID_AT_RISK','en','At Risk','2014-01-15') ,
|
||||
( 'LABEL','ID_AT_TILL','en','at ${0} Till ${1}','2014-01-15') ,
|
||||
( 'LABEL','ID_AUDITLOG_DISPLAY','en','Audit Log','2014-09-19') ,
|
||||
@@ -57311,11 +57323,12 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_BUY_NOW','en','Buy now','2014-09-18') ,
|
||||
( 'LABEL','ID_BY_CASE_NUMBER','en','By Case #','2020-12-16') ,
|
||||
( 'LABEL','ID_BY_CASE_TITLE','en','By Case Title','2020-12-16') ,
|
||||
( 'LABEL','ID_BY_FINISH_DATE','en','By Finish Date','2020-12-16') ,
|
||||
( 'LABEL','ID_BY_PROCESS_NAME','en','Process Name','2020-12-16') ,
|
||||
( 'LABEL','ID_BY_TASK','en','By Task','2020-12-16') ,
|
||||
( 'LABEL','ID_BY_ROLE','en','By Role','2020-12-15') ,
|
||||
( 'LABEL','ID_BY_STATUS','en','By Status','2020-12-16') ,
|
||||
( 'LABEL','ID_BY_START_DATE','en','By Start Date','2020-12-16') ,
|
||||
( 'LABEL','ID_BY_FINISH_DATE','en','By Finish Date','2020-12-16') ,
|
||||
( 'LABEL','ID_CACHE_BTN_BUILD','en','Build Cache','2014-01-15') ,
|
||||
( 'LABEL','ID_CACHE_BTN_SETUP_PASSWRD','en','Setup Password','2014-01-15') ,
|
||||
( 'LABEL','ID_CACHE_BTN_SETUP_SESSION','en','Delete older session files','2014-01-15') ,
|
||||
@@ -57537,8 +57550,10 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_CHECK_PORT_FAILED','en','Error Testing Connection: Checking port failed','2015-09-18') ,
|
||||
( 'LABEL','ID_CHECK_UPDATES','en','Check for updates (you need to be connected to the Internet)','2017-02-21') ,
|
||||
( 'LABEL','ID_CHECK_WORKSPACE_CONFIGURATION','en','Check Workspace Configuration','2014-01-15') ,
|
||||
( 'LABEL','ID_CHOOSE_A_FILE_OR_DROP_IT_HERE','en','Choose a file or drop it here...','2020-12-10') ,
|
||||
( 'LABEL','ID_CHOOSE_OPTION','en','Choose an option','2014-01-15') ,
|
||||
( 'LABEL','ID_CHOOSE_PROVIDER','en','Please select provider','2014-08-27') ,
|
||||
( 'LABEL','ID_CITY','en','City','2020-12-15') ,
|
||||
( 'LABEL','ID_CHOOSE_TIME','en','Choose a time','2014-08-27') ,
|
||||
( 'LABEL','ID_CLAIM','en','Claim','2014-01-15') ,
|
||||
( 'LABEL','ID_CLASSIC_EDITOR','en','Classic Editor','2014-01-15') ,
|
||||
@@ -57618,6 +57633,8 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_CONNECTION_ERROR','en','Connection Error: {0}','2014-01-15') ,
|
||||
( 'LABEL','ID_CONNECTION_ERROR_PRIVILEGE','en','Connection Error: User "{0}" can''t create databases and users. <br>Please, provide a user with SUPER privileges.','2015-01-16') ,
|
||||
( 'LABEL','ID_CONNECTION_ERROR_SECURITYADMIN','en','Connection Error: User "{0}" can''t create databases and Users <br>Please provide an user with sysadmin role or dbcreator and securityadmin roles.','2014-01-15') ,
|
||||
( 'LABEL','ID_CONNECTION_SETTINGS','en','Connection Settings','2020-12-10') ,
|
||||
( 'LABEL','ID_CONNECTION_WITH_THE_SAME_NAME_PLEASE_SELECT_AN_OPTION','en','You are about importing a connection with the same name "{0}" please select an option','2020-12-10') ,
|
||||
( 'LABEL','ID_CONNECT_HOST','en','Trying to connect to host','2014-01-15') ,
|
||||
( 'LABEL','ID_CONNECT_TO_SERVER','en','Connected to server {0} :{1} using user: ''{2}''','2014-01-15') ,
|
||||
( 'LABEL','ID_CONSOLIDATED_CASE_LIST','en','Consolidated Case List','2015-03-24') ,
|
||||
@@ -57807,6 +57824,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_DELETE_ACTION','en','Delete case','2020-01-15') ,
|
||||
( 'LABEL','ID_DELETE_ALL_FIELDS','en','Do you want to delete all fields?','2014-01-15') ,
|
||||
( 'LABEL','ID_DELETE_ALL_REPORT_TABLE','en','Do you want to delete all report tables?','2014-01-15') ,
|
||||
( 'LABEL','ID_DELETE_ATTRIBUTE','en','Delete Attribute','2020-12-10') ,
|
||||
( 'LABEL','ID_DELETE_AUTH_SOURCE','en','Delete Authentication Source','2014-10-13') ,
|
||||
( 'LABEL','ID_DELETE_CALENDAR','en','Delete Calendar','2014-10-10') ,
|
||||
( 'LABEL','ID_DELETE_CASES','en','Delete Cases','2016-03-02') ,
|
||||
@@ -57853,6 +57871,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_DELETE_SEARCH','en','Delete Search','2020-12-16') ,
|
||||
( 'LABEL','ID_DELETE_SELECTED_ITEMS','en','Do you want to deleted selected({0}) items?','2014-01-15') ,
|
||||
( 'LABEL','ID_DELETE_SELECTED_LOGO','en','Do you want to delete the selected logo?','2014-01-15') ,
|
||||
( 'LABEL','ID_DELETE_SETTINGS','en','Delete Settings','2020-12-10') ,
|
||||
( 'LABEL','ID_DELETE_SKIN','en','Delete Skin','2014-10-10') ,
|
||||
( 'LABEL','ID_DELETE_SUB_PROCESS','en','Delete Sub-Process','2015-02-24') ,
|
||||
( 'LABEL','ID_DELETE_SUPERVISOR','en','You cannot unassign the supervisor','2014-01-15') ,
|
||||
@@ -57876,6 +57895,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_DEPARTMENTS_SYNCHRONIZE','en','Synchronize Departments','2014-01-15') ,
|
||||
( 'LABEL','ID_DEPARTMENTS_USERS','en','Departments','2014-01-15') ,
|
||||
( 'LABEL','ID_DEPARTMENT_CHECK_PARENT_DEPARTMENT','en','It''s necessary to check the parent-department: {0} for the sub-department: {1}','2016-07-05') ,
|
||||
( 'LABEL','ID_DEPARTMENT_CLASS_IDENTIFIER','en','Department Class Identifier','2020-12-10') ,
|
||||
( 'LABEL','ID_DEPARTMENT_CREATED_SUCCESSFULLY','en','{DEPARTMENT_NAME}, {PARENT_UID} Department {DEPARTMENT_NAME} created successfully','2014-01-15') ,
|
||||
( 'LABEL','ID_DEPARTMENT_ERROR_CREATE','en','Error creating department','2016-07-05') ,
|
||||
( 'LABEL','ID_DEPARTMENT_EXISTS','en','Department name already exists.','2014-01-15') ,
|
||||
@@ -57953,10 +57973,12 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_DOWNLOADING_FILE','en','Downloading file','2014-01-15') ,
|
||||
( 'LABEL','ID_DOWNLOADING_UPGRADE','en','Downloading upgrade:','2014-09-18') ,
|
||||
( 'LABEL','ID_DOWNLOAD_MANUALLY','en','You can download it manually here','2014-09-18') ,
|
||||
( 'LABEL','ID_DOWNLOAD_SETTINGS','en','Download Settings','2020-12-10') ,
|
||||
( 'LABEL','ID_DOWN_TRIGGER','en','Down Trigger','2015-02-20') ,
|
||||
( 'LABEL','ID_DRAFT','en','Draft','2014-01-15') ,
|
||||
( 'LABEL','ID_DRIVE_HELP_ENABLE','en','When this option is enabled, all input, output and attached documents generated in your processes can be stored in Google Drive.','2016-01-05') ,
|
||||
( 'LABEL','ID_DROP_DATABASE_EXISTS','en','Drop database if exists','2014-01-15') ,
|
||||
( 'LABEL','ID_DROP_FILE_HERE','en','Drop file here...','2020-12-10') ,
|
||||
( 'LABEL','ID_DUE_DATE','en','Due Date','2014-01-15') ,
|
||||
( 'LABEL','ID_DUPLICATE_CASE_SCHEDULER_NAME','en','Duplicate Case Scheduler name.','2014-01-15') ,
|
||||
( 'LABEL','ID_DUPLICATE_CATEGORY_NAME','en','Duplicate category name.','2014-01-15') ,
|
||||
@@ -57994,6 +58016,8 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_EDIT','en','Edit','2014-01-15') ,
|
||||
( 'LABEL','ID_EDITING_DYNAFORM','en','Editing the dynaform','2014-01-15') ,
|
||||
( 'LABEL','ID_EDIT_ACTION','en','Edit Action','2014-01-15') ,
|
||||
( 'LABEL','ID_EDIT_ATTRIBUTE','en','Edit Attribute','2020-12-10') ,
|
||||
( 'LABEL','ID_EDIT_AUTHENTICATION_SOURCES','en','Edit Authentication Sources','2020-12-10') ,
|
||||
( 'LABEL','ID_EDIT_BPMN','en','Edit BPMN','2014-01-15') ,
|
||||
( 'LABEL','ID_EDIT_CATEGORY','en','Edit Process Category','2014-01-15') ,
|
||||
( 'LABEL','ID_EDIT_CONDITIONS_OF_STEP','en','Edit step conditions','2014-01-15') ,
|
||||
@@ -58010,6 +58034,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_EDIT_PROCESS','en','Process Edited','2015-02-21') ,
|
||||
( 'LABEL','ID_EDIT_REPORT_TABLE','en','Edit Report Table','2014-01-15') ,
|
||||
( 'LABEL','ID_EDIT_ROLE_TITLE','en','Edit Role','2014-01-15') ,
|
||||
( 'LABEL','ID_EDIT_SETTINGS','en','Edit Settings','2020-12-10') ,
|
||||
( 'LABEL','ID_EDIT_TRIGGERS','en','Edit Trigger','2014-01-15') ,
|
||||
( 'LABEL','ID_EDIT_USERS','en','Edit Users','2014-01-15') ,
|
||||
( 'LABEL','ID_EDIT_VIEW_USER_GROUP','en','View user groups','2014-01-15') ,
|
||||
@@ -58204,6 +58229,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_EXPORT_PROCESS_OBJECTS','en','Export Process Objects','2016-03-30') ,
|
||||
( 'LABEL','ID_EXPORT_SKIN','en','Export Skin','2014-10-10') ,
|
||||
( 'LABEL','ID_EXPORT_TABLE','en','Export Table','2014-10-10') ,
|
||||
( 'LABEL','ID_EXTENDED_ATTRIBUTES','en','Extended Attributes','2020-12-15') ,
|
||||
( 'LABEL','ID_EXTENDED_FEATURES','en','Extended Features','2014-01-15') ,
|
||||
( 'LABEL','ID_EXTERNAL_FILE','en','External','2014-01-15') ,
|
||||
( 'LABEL','ID_EXTERNAL_REGISTRATION','en','External Registration','2016-07-01') ,
|
||||
@@ -58394,8 +58420,10 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_GROUPS_SYNCHRONIZE','en','Synchronize Groups','2014-01-15') ,
|
||||
( 'LABEL','ID_GROUP_CANNOT_DELETE_WHILE_ASSIGNED_TO_TASK','en','Group cannot be deleted while it''s assigned to a task','2014-04-03') ,
|
||||
( 'LABEL','ID_GROUP_CHART','en','Group Chart','2014-01-15') ,
|
||||
( 'LABEL','ID_GROUP_CLASS_IDENTIFIER','en','Group Class Identifier','2020-12-10') ,
|
||||
( 'LABEL','ID_GROUP_CREATED_SUCCESSFULLY','en','Group {GROUP_NAME} created successfully','2014-01-15') ,
|
||||
( 'LABEL','ID_GROUP_DOES_NOT_EXIST','en','The group with {0}: {1} does not exist.','2014-05-20') ,
|
||||
( 'LABEL','ID_GROUP_IDENTIFIER','en','Group Identifier','2020-12-10') ,
|
||||
( 'LABEL','ID_GROUP_INACTIVE','en','Group inactive','2014-01-15') ,
|
||||
( 'LABEL','ID_GROUP_NAME','en','Group Name','2014-01-15') ,
|
||||
( 'LABEL','ID_GROUP_NAME_REQUIRED','en','Group name is required','2014-01-15') ;
|
||||
@@ -58426,6 +58454,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_HEART_BEAT_DISABLED','en','Heart beat has been disabled','2014-01-15') ,
|
||||
( 'LABEL','ID_HEART_BEAT_ENABLED','en','Heart beat has been enabled','2014-01-15') ,
|
||||
( 'LABEL','ID_HELP','en','Help','2015-04-06') ,
|
||||
( 'LABEL','ID_HIDDEN','en','Hidden','2020-12-15') ,
|
||||
( 'LABEL','ID_HIDE','en','Hide','2014-01-15') ,
|
||||
( 'LABEL','ID_HIDE_DIRS','en','Hide Dirs','2014-05-26') ,
|
||||
( 'LABEL','ID_HIDE_PROCESS_INF','en','Hide Process Information','2014-01-15') ,
|
||||
@@ -58477,6 +58506,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_IMPORT_ALREADY_EXISTS_BPMN','en','A process with the same name already exists!. Do you want to overwrite the existing process or you want to create a new process?.','2015-02-20') ,
|
||||
( 'LABEL','ID_IMPORT_ALREADY_EXISTS_BPMN_NOTE','en','Note that your changes will be lost in your existing process if you overwrite it.','2015-02-20') ,
|
||||
( 'LABEL','ID_IMPORT_BPMN','en','Import BPMN','2015-02-20') ,
|
||||
( 'LABEL','ID_IMPORT_CONNECTION','en','Import connection','2020-12-10') ,
|
||||
( 'LABEL','ID_IMPORT_CSV','en','CSV Import','2014-01-15') ,
|
||||
( 'LABEL','ID_IMPORT_DATA_CSV','en','Import Data from CSV file','2014-01-15') ,
|
||||
( 'LABEL','ID_IMPORT_LICENSE','en','Import license','2014-09-18') ,
|
||||
@@ -58487,11 +58517,13 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_IMPORT_RT','en','Import Report Table','2014-01-15') ;
|
||||
INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ) VALUES
|
||||
|
||||
( 'LABEL','ID_IMPORT_SETTINGS','en','Import Settings','2020-12-10') ,
|
||||
( 'LABEL','ID_IMPORT_SKIN','en','Import Skin','2014-10-10') ,
|
||||
( 'LABEL','ID_IMPORT_TABLE','en','Import Table','2014-10-10') ,
|
||||
( 'LABEL','ID_IMPORT_USERS','en','Import Users','2014-01-15') ,
|
||||
( 'LABEL','ID_IN','en','in','2014-01-15') ,
|
||||
( 'LABEL','ID_INACTIVE','en','Inactive','2014-01-15') ,
|
||||
( 'LABEL','ID_INACTIVE_USERS','en','Inactive Users','2020-12-10') ,
|
||||
( 'LABEL','ID_INBOX','en','Inbox','2014-01-15') ,
|
||||
( 'LABEL','ID_INBOX_EMPTY','en','Your Inbox is empty...','2015-05-06') ,
|
||||
( 'LABEL','ID_INCOMING_SERVER','en','Incoming Server','2018-11-23') ,
|
||||
@@ -58657,6 +58689,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_LATEST_VERSION','en','Latest version','2014-09-18') ,
|
||||
( 'LABEL','ID_LDAP_ACCOUNT_DISABLED','en','The account is currently disabled.','2020-10-02') ,
|
||||
( 'LABEL','ID_LDAP_ACCOUNT_EXPIRED','en','The user''s account has expired.','2020-10-02') ,
|
||||
( 'LABEL','ID_LDAP_ATTRIBUTE','en','LDAP Attribute','2020-12-10') ,
|
||||
( 'LABEL','ID_LDAP_ERROR_CONNECTION','en','Error connection.','2020-10-02') ,
|
||||
( 'LABEL','ID_LDAP_FIELD','en','LDAP Field','2015-09-15') ,
|
||||
( 'LABEL','ID_LDAP_NOT_PERMITTED_TO_LOGON_AT_THIS_TIME','en','The user is not permitted to log on at this time.','2020-10-02') ,
|
||||
@@ -59998,6 +60031,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_MAP_TYPE','en','Map Type','2014-01-15') ,
|
||||
( 'LABEL','ID_MARKET_SERVER_CONTACTING','en','There was a problem contacting the market server.','2014-09-18') ,
|
||||
( 'LABEL','ID_MASKS_LIST','en','Masks List','2014-01-15') ,
|
||||
( 'LABEL','ID_MATCH_ATTRIBUTES','en','Match Attributes','2020-12-10') ,
|
||||
( 'LABEL','ID_MATCH_ATTRIBUTES_TO_SYNC','en','Match attributes to sync','2015-09-15') ,
|
||||
( 'LABEL','ID_MAXIMUM_SIZE_FILE_REQUIRED','en','The file maximum size is required!','2015-01-16') ,
|
||||
( 'LABEL','ID_MAX_FILE_SIZE','en','Maximum upload file size','2014-01-15') ,
|
||||
@@ -60171,6 +60205,8 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_NEED_REGISTER','en','You need to be registered to download this process. Register NOW!','2014-01-15') ,
|
||||
( 'LABEL','ID_NEW','en','New','2014-01-15') ,
|
||||
( 'LABEL','ID_NEW_ADD_TABLE','en','New PM Table','2014-01-15') ,
|
||||
( 'LABEL','ID_NEW_ATTRIBUTE','en','New Attribute','2020-12-15') ,
|
||||
( 'LABEL','ID_NEW_AUTHENTICATION_SOURCES','en','New Authentication Sources','2020-12-10') ,
|
||||
( 'LABEL','ID_NEW_BPMN_PROJECT','en','New BPMN Project','2015-08-18') ,
|
||||
( 'LABEL','ID_NEW_CASE','en','New case','2014-01-15') ,
|
||||
( 'LABEL','ID_NEW_CASES','en','% New Cases','2015-04-06') ,
|
||||
@@ -60178,12 +60214,14 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_NEW_CASE_SCHEDULER','en','New Case Scheduler','2014-01-15') ,
|
||||
( 'LABEL','ID_NEW_CATEGORY','en','Create New Category','2014-01-15') ,
|
||||
( 'LABEL','ID_NEW_CONDITION_FROM_STEP','en','New Condition From Step','2015-02-20') ,
|
||||
( 'LABEL','ID_NEW_CONNECTION','en','New connection','2020-12-10') ,
|
||||
( 'LABEL','ID_NEW_DEPARTMENT','en','New','2014-01-15') ,
|
||||
( 'LABEL','ID_NEW_DYNAFORM','en','New DynaForm.','2015-01-16') ,
|
||||
( 'LABEL','ID_NEW_EVENT','en','New Event','2014-01-15') ,
|
||||
( 'LABEL','ID_NEW_FOLDER','en','New Folder','2014-01-15') ,
|
||||
( 'LABEL','ID_NEW_GROUP','en','New','2014-01-15') ,
|
||||
( 'LABEL','ID_NEW_INPUTDOCS','en','New Input Document','2014-01-15') ,
|
||||
( 'LABEL','ID_NEW_MATCHED_ATTRIBUTE','en','New Matched Attribute','2020-12-10') ,
|
||||
( 'LABEL','ID_NEW_NOTE','en','New Note','2014-01-15') ,
|
||||
( 'LABEL','ID_NEW_PASSWORD','en','New Password','2014-01-15') ,
|
||||
( 'LABEL','ID_NEW_PASSWORD_SENT','en','Your new password was sent to your email account!','2014-01-15') ,
|
||||
@@ -60199,6 +60237,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_NEW_TAB_INDICATOR','en','Add Indicator','2015-03-09') ,
|
||||
( 'LABEL','ID_NEW_TRANSLATION','en','New Translation','2014-01-15') ,
|
||||
( 'LABEL','ID_NEW_TRIGGERS','en','New Trigger','2014-01-15') ,
|
||||
( 'LABEL','ID_NEW_USER_ATTRIBUTE','en','New User Attribute','2020-12-15') ,
|
||||
( 'LABEL','ID_NEW_VERSION','en','New Version','2014-01-15') ,
|
||||
( 'LABEL','ID_NEW_WEB_ENTRY','en','New Web Entry','2014-01-15') ,
|
||||
( 'LABEL','ID_NEW_WORKSPACE','en','New Workspace','2014-01-15') ,
|
||||
@@ -60261,6 +60300,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_NO_ITEMS_SELECTED','en','No item selected.','2015-01-16') ,
|
||||
( 'LABEL','ID_NO_LICENSE_FEATURE_ENABLED','en','Your license does not have the Gmail integration. Please contact your administrator.','2015-09-17') ,
|
||||
( 'LABEL','ID_NO_MANAGER_SELECTED','en','No Manager Selected','2014-01-15') ,
|
||||
( 'LABEL','ID_NO_MATCHING_RECORDS','en','No matching records','2020-12-10') ,
|
||||
( 'LABEL','ID_NO_MORE_APPLICATIONS','en','No more applications to show.','2014-01-15') ,
|
||||
( 'LABEL','ID_NO_NEW_VERSIONS','en','No new versions available','2014-09-18') ,
|
||||
( 'LABEL','ID_NO_OLDER_SESSION_FILES','en','There are no older session files','2014-01-15') ,
|
||||
@@ -60308,6 +60348,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_OPEN_IN_POPUP','en','Open in a popup','2014-01-15') ,
|
||||
( 'LABEL','ID_OPEN_WITH','en','Open With','2014-01-15') ,
|
||||
( 'LABEL','ID_OPERATING_SYSTEM','en','Operating System','2014-01-15') ,
|
||||
( 'LABEL','ID_OPERATOR','en','Operator','2020-12-10') ,
|
||||
( 'LABEL','ID_OPTION','en','Option','2014-01-15') ,
|
||||
( 'LABEL','ID_OPTIONS','en','Options','2014-01-15') ,
|
||||
( 'LABEL','ID_OPTIONS_MENU_TASK','en','Options Menu Task','2015-02-20') ,
|
||||
@@ -60409,6 +60450,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_PIN','en','Pin','2015-05-08') ,
|
||||
( 'LABEL','ID_PIN_INVALID','en','The PIN is invalid','2014-01-15') ,
|
||||
( 'LABEL','ID_PLEASE','en','please','2014-01-15') ,
|
||||
( 'LABEL','ID_PLEASE_ADD_THE_FILE_SETTINGS_TO_BE_UPLOADED','en','Please add the file settings to be uploaded','2020-12-10') ,
|
||||
( 'LABEL','ID_PLEASE_CHANGE_PASSWORD_POLICY','en','Please change your password to one that complies with these policies.','2014-01-15') ,
|
||||
( 'LABEL','ID_PLEASE_CONFIGURE_ESTIMATED_DURATION_TASK','en','Please, configure the estimated duration of the task.','2014-10-23') ,
|
||||
( 'LABEL','ID_PLEASE_ENTER_COMMENTS','en','Please enter comments!','2014-01-15') ,
|
||||
@@ -60575,6 +60617,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_PROCESSMAKER_SLOGAN1','en','This Business Process is Powered By ProcessMaker','2014-01-15') ,
|
||||
( 'LABEL','ID_PROCESSMAKER_SUCCESS_INSTALLED','en','ProcessMaker was successfully installed<br/>Workspace <b>" {0} " </b> was installed correctly.','2014-01-15') ,
|
||||
( 'LABEL','ID_PROCESSMAKER_UI_NOT_INSTALL','en','The new ProcessMaker UI couldn''t be applied on installation. You can enable it afterwards in ADMIN > Settings > System.','2015-01-16') ,
|
||||
( 'LABEL','ID_PROCESSMAKER_USER_FIELD','en','ProcessMaker User Field','2020-12-10') ,
|
||||
( 'LABEL','ID_PROCESSMAKER_VALIDATION','en','Please insert a valid processmaker user name and password, in order to assign the case to their respective owner.','2014-01-15') ,
|
||||
( 'LABEL','ID_PROCESSMAKER_WRITE_CONFIG_INDEX','en','ProcessMaker couldn''t write on configuration file: {0}<br/>','2014-01-15') ,
|
||||
( 'LABEL','ID_PROCESSMAP_CALENDAR_CONFIRM_DELETE','en','Are you sure you want to delete this calendar?','2014-01-15') ,
|
||||
@@ -60774,6 +60817,8 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_REQUEST_ACTION_NOT_EXIST','en','The requested action does not exist','2014-01-15') ,
|
||||
( 'LABEL','ID_REQUEST_DOCUMENTS','en','Input Documents','2014-01-15') ,
|
||||
( 'LABEL','ID_REQUEST_SENT','en','Request sent.','2014-01-15') ,
|
||||
( 'LABEL','ID_REQUIRE_SIGN_IN_POLICY_FOR_LDAP','en','Require sign-in policy for LDAP','2020-12-10') ,
|
||||
( 'LABEL','ID_REQUIRED','en','Required','2020-12-15') ,
|
||||
( 'LABEL','ID_REQUIRED_FIELD','en','Required Field','2014-01-15') ,
|
||||
( 'LABEL','ID_REQUIRED_FIELDS_ERROR','en','Some required fields were not filled','2014-01-15') ,
|
||||
( 'LABEL','ID_REQUIRED_FIELDS_GRID','en','The marked fields in the form are required and/or have errors in their format. Please verify the fields before continuing.','2015-05-04') ,
|
||||
@@ -60986,6 +61031,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_SHOW_DIRS','en','Show Dirs','2014-01-15') ,
|
||||
( 'LABEL','ID_SHOW_HIDE_CASES_STEPS','en','Show or hide the Cases Steps','2014-01-15') ,
|
||||
( 'LABEL','ID_SHOW_RETURN_ADVANCED_SEARCH','en','Return to Advanced Search','2017-07-23') ,
|
||||
( 'LABEL','ID_SHOWING_FROM_RECORDS_COUNT','en','Showing {from} to {to} of {count} records|{count} records|One record','2020-12-10') ,
|
||||
( 'LABEL','ID_SIGN_IN','en','Sign In','2014-01-15') ,
|
||||
( 'LABEL','ID_SIGN_OUT','en','Sign out','2014-01-15') ,
|
||||
( 'LABEL','ID_SIMPLE_REPORT','en','Simple Report','2014-01-15') ,
|
||||
@@ -61125,6 +61171,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_SWITCH_EDITOR','en','Switch Editor','2014-01-15') ,
|
||||
( 'LABEL','ID_SWITCH_INTERFACE','en','Switch Interface','2014-01-15') ,
|
||||
( 'LABEL','ID_SYSTEM','en','System','2014-01-15') ,
|
||||
( 'LABEL','ID_SYSTEM_ADMINISTRATOR','en','System Administrator','2020-12-10') ,
|
||||
( 'LABEL','ID_SYSTEM_INFO','en','System information','2014-01-15') ,
|
||||
( 'LABEL','ID_SYSTEM_REDIRECT_CONFIRM','en','You must login again to view the changes. Do you want do it now?','2015-01-16') ,
|
||||
( 'LABEL','ID_SYSTEM_SETTINGS','en','System Settings','2014-01-15') ,
|
||||
@@ -61229,6 +61276,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_THERE_MUST__LEAST_HOLIDAY','en','There must be at least a holiday','2014-01-15') ,
|
||||
( 'LABEL','ID_THERE_PROBLEM_SENDING_EMAIL','en','There was a problem sending the email to','2016-04-08') ,
|
||||
( 'LABEL','ID_THE_APPLICATION_IS_NOT_CANCELED','en','Error: The application {0} is not canceled.','2016-06-15') ,
|
||||
( 'LABEL','ID_THE_ATTRIBUTE_WILL_BE_DELETED_PLEASE_CONFIRM','en','The attribute {0} will be deleted, please confirm.','2020-12-15') ,
|
||||
( 'LABEL','ID_THE_DEFAULT_CONFIGURATION','en','The default configuration was not defined','2016-11-16') ,
|
||||
( 'LABEL','ID_THE_FILE_COULDNT_BE_UPLOADED','en','The file couldn’t be uploaded please review the allowed files or contact your System Administrator.','2020-06-12') ,
|
||||
( 'LABEL','ID_THE_FILE_SIZE_IS_BIGGER_THAN_THE_MAXIMUM_ALLOWED','en','The file size is bigger than the maximum allowed, the maximum size allowed is {0} Mbytes.','2019-02-26') ,
|
||||
@@ -61239,6 +61287,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_THE_REASON_REASSIGN_USER_EMPTY','en','Please complete the reassign reason.','2016-10-20') ,
|
||||
( 'LABEL','ID_THE_REPORT_TABLE_IS_REGENERATING_PLEASE_COME_BACK_IN_A_FEW_MINUTES','en','The report table is regenerating please come back in a few minutes.','2020-06-01') ,
|
||||
( 'LABEL','ID_THE_UPLOAD_OF_PHP_FILES_WAS_DISABLED','en','The upload of PHP files was disabled please contact the system administrator.','2018-04-20') ,
|
||||
( 'LABEL','ID_THE_USER_ROLES_FOR_ATTRIBUTE_HAS_BEEN_DELETED_PLEASE_CONFIRM','en','The user roles for attribute {0} has been modified, if you proceed to save this attribute, all information for users stored in the attribute will be deleted for the removed role, please confirm.','2020-12-15') ,
|
||||
( 'LABEL','ID_THE_USERNAME_EMAIL_IS_INCORRECT','en','The username or email is incorrect','2018-01-18') ,
|
||||
( 'LABEL','ID_THIS_MONTH','en','This Month','2014-01-15') ,
|
||||
( 'LABEL','ID_THIS_QUARTER','en','This quarter','2014-01-15') ,
|
||||
@@ -61341,6 +61390,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_TRYING_CANCEL','en','You are tying to cancel the current case. Please be aware this action cannot be undone','2020-12-01') ,
|
||||
( 'LABEL','ID_TUE','en','Tue','2014-01-15') ,
|
||||
( 'LABEL','ID_TYPE','en','Type','2014-01-15') ,
|
||||
( 'LABEL','ID_TYPE_PASSWORD','en','Type Password','2020-12-15') ,
|
||||
( 'LABEL','ID_TYPE_PROCESS','en','Process Type','2014-10-22') ,
|
||||
( 'LABEL','ID_TWICE_PER_DAY','en','Twice per day','2014-10-22') ,
|
||||
( 'LABEL','ID_UID','en','UID','2014-01-15') ,
|
||||
@@ -61396,6 +61446,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_UPDATE_OUTPUT_DOCUMENT','en','Update Output Document','2015-02-20') ,
|
||||
( 'LABEL','ID_UPDATE_PMTABLE','en','Update PM Table','2014-10-10') ,
|
||||
( 'LABEL','ID_UPDATE_ROLE','en','Update Role','2014-10-10') ,
|
||||
( 'LABEL','ID_UPDATE_SETTINGS','en','Update Settings','2020-12-10') ,
|
||||
( 'LABEL','ID_UPDATE_SUB_DEPARTAMENT','en','Update Sub Department','2014-10-21') ,
|
||||
( 'LABEL','ID_UPDATE_TEXT','en','Edit Text','2015-02-20') ,
|
||||
( 'LABEL','ID_UPDATE_TRIGGER','en','Update trigger','2015-02-20') ,
|
||||
@@ -61421,6 +61472,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_UPLOADING_PROCESS_FILE','en','Uploading the process file...','2014-01-15') ,
|
||||
( 'LABEL','ID_UPLOADING_TRANSLATION_FILE','en','Uploading the translation file...','2014-01-15') ,
|
||||
( 'LABEL','ID_UPLOAD_COMPLETE','en','Upload complete','2014-01-15') ,
|
||||
( 'LABEL','ID_UPLOAD_CONNECTION_SETTINGS','en','Upload Connection Settings','2020-12-10') ,
|
||||
( 'LABEL','ID_UPLOAD_ERR_CANT_WRITE','en','Failed to write file to disk','2014-01-15') ,
|
||||
( 'LABEL','ID_UPLOAD_ERR_EXTENSION','en','File upload stopped by extension','2014-01-15') ,
|
||||
( 'LABEL','ID_UPLOAD_ERR_FORM_SIZE','en','The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form','2014-01-15') ,
|
||||
@@ -61475,6 +61527,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_USER_CAN_NOT_BE_DELETED','en','The user with usr_uid: {0}, cannot be deleted while it has cases assigned.','2014-05-22') ,
|
||||
( 'LABEL','ID_USER_CAN_NOT_UPDATE','en','This user: {0}, can not update the data.','2014-05-22') ,
|
||||
( 'LABEL','ID_USER_CASES_NOT_START','en','User can''t start a case because doesn''t have a starting task assigned','2014-01-15') ,
|
||||
( 'LABEL','ID_USER_CLASS_IDENTIFIER','en','User Class Identifier','2020-12-10') ,
|
||||
( 'LABEL','ID_USER_CREATED_SUCCESSFULLY','en','User {FIRSTNAME} {LASTNAME} [{USER_ID}] created successfully','2014-01-15') ,
|
||||
( 'LABEL','ID_USER_CREDENTIALS_REQUIRED','en','User credentials are required.','2014-01-15') ,
|
||||
( 'LABEL','ID_USER_DEFINED_TIMING_CONTROL','en','Allow user defined timing control','2014-01-15') ,
|
||||
@@ -61483,6 +61536,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_USER_DOES_NOT_EXIST','en','The User with {0}: {1} does not exist.','2015-03-23') ,
|
||||
( 'LABEL','ID_USER_DOES_NOT_HAVE_ACTIVITY_ASSIGNED','en','The user "{0}" does not have the activity "{1}" assigned.','2014-05-20') ,
|
||||
( 'LABEL','ID_USER_EXPERIENCE','en','User Experience','2014-01-15') ,
|
||||
( 'LABEL','ID_USER_EXTENDED_ATTRIBUTES','en','User Extended Attributes','2020-12-15') ,
|
||||
( 'LABEL','ID_USER_FIELD','en','User Field','2015-09-15') ,
|
||||
( 'LABEL','ID_USER_GROUPS','en','Groups for','2014-01-15') ,
|
||||
( 'LABEL','ID_USER_GROUPS_ADHOC','en','Users and User Groups(Ad Hoc)','2014-01-15') ,
|
||||
|
||||
@@ -843,6 +843,7 @@ CREATE TABLE `USERS`
|
||||
`USR_TIME_ZONE` VARCHAR(100) default '',
|
||||
`USR_DEFAULT_LANG` VARCHAR(10) default '',
|
||||
`USR_LAST_LOGIN` DATETIME,
|
||||
`USR_EXTENDED_ATTRIBUTES_DATA` MEDIUMTEXT,
|
||||
PRIMARY KEY (`USR_UID`),
|
||||
UNIQUE KEY `INDEX_USR_ID` (`USR_ID`),
|
||||
KEY `indexUsrStatus`(`USR_STATUS`),
|
||||
@@ -3363,5 +3364,26 @@ CREATE TABLE `SCHEDULER`
|
||||
`last_update` DATETIME,
|
||||
PRIMARY KEY (`id`)
|
||||
)ENGINE=InnoDB DEFAULT CHARSET='utf8';
|
||||
#-----------------------------------------------------------------------------
|
||||
#-- USER_EXTENDED_ATTRIBUTES
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
DROP TABLE IF EXISTS `USER_EXTENDED_ATTRIBUTES`;
|
||||
|
||||
|
||||
CREATE TABLE `USER_EXTENDED_ATTRIBUTES`
|
||||
(
|
||||
`UEA_ID` BIGINT(20) NOT NULL AUTO_INCREMENT,
|
||||
`UEA_NAME` VARCHAR(255),
|
||||
`UEA_ATTRIBUTE_ID` VARCHAR(255),
|
||||
`UEA_HIDDEN` INTEGER,
|
||||
`UEA_REQUIRED` INTEGER,
|
||||
`UEA_PASSWORD` INTEGER,
|
||||
`UEA_OPTION` VARCHAR(255),
|
||||
`UEA_ROLES` MEDIUMTEXT,
|
||||
`UEA_OWNER` BIGINT(20),
|
||||
`UEA_DATE_CREATE` DATETIME,
|
||||
PRIMARY KEY (`UEA_ID`)
|
||||
)ENGINE=InnoDB DEFAULT CHARSET='utf8';
|
||||
# This restores the fkey checks, after having unset them earlier
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
@@ -15,30 +15,42 @@ if ($RBAC->userCanAccess('PM_SETUP') === 1) {
|
||||
$pmSetupPermission = true;
|
||||
if ($RBAC->userCanAccess('PM_SETUP_LOGO') === 1) {
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'LOGO', '../admin/pmLogo',
|
||||
'LOGO',
|
||||
'../admin/pmLogo',
|
||||
G::LoadTranslation('ID_LOGO'),
|
||||
'icon-pmlogo.png', '', 'settings'
|
||||
'icon-pmlogo.png',
|
||||
'',
|
||||
'settings'
|
||||
);
|
||||
}
|
||||
if ($RBAC->userCanAccess('PM_SETUP_EMAIL') === 1) {
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
"EMAIL_SERVER", "../emailServer/emailServer",
|
||||
G::LoadTranslation("ID_EMAIL_SERVER_TITLE"),
|
||||
"icon-email-settings1.png", "", "settings"
|
||||
'EMAIL_SERVER',
|
||||
'../emailServer/emailServer',
|
||||
G::LoadTranslation('ID_EMAIL_SERVER_TITLE'),
|
||||
'icon-email-settings1.png',
|
||||
'',
|
||||
'settings'
|
||||
);
|
||||
}
|
||||
if ($RBAC->userCanAccess('PM_SETUP_CALENDAR') === 1) {
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'CALENDAR', 'calendarList',
|
||||
'CALENDAR',
|
||||
'calendarList',
|
||||
G::LoadTranslation('ID_CALENDAR'),
|
||||
'icon-calendar.png', '', 'settings'
|
||||
'icon-calendar.png',
|
||||
'',
|
||||
'settings'
|
||||
);
|
||||
}
|
||||
if ($RBAC->userCanAccess('PM_SETUP_PROCESS_CATEGORIES') === 1) {
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'PROCESS_CATEGORY', '../processCategory/processCategoryList',
|
||||
'PROCESS_CATEGORY',
|
||||
'../processCategory/processCategoryList',
|
||||
G::LoadTranslation('ID_PROCESS_CATEGORY'),
|
||||
"rules.png", '', 'settings'
|
||||
'rules.png',
|
||||
'',
|
||||
'settings'
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -46,9 +58,12 @@ if ($RBAC->userCanAccess('PM_SETUP') === 1) {
|
||||
if ($RBAC->userCanAccess('PM_SETUP') === 1) {
|
||||
if ($RBAC->userCanAccess('PM_SETUP_SKIN') === 1) {
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'SKINS', 'skinsList',
|
||||
'SKINS',
|
||||
'skinsList',
|
||||
G::LoadTranslation('ID_SKINS'),
|
||||
'icon-skins.png', '', 'settings'
|
||||
'icon-skins.png',
|
||||
'',
|
||||
'settings'
|
||||
);
|
||||
}
|
||||
if (!$partnerFlag) {
|
||||
@@ -58,17 +73,23 @@ if ($RBAC->userCanAccess('PM_SETUP') === 1) {
|
||||
*/
|
||||
if ($RBAC->userCanAccess('PM_SETUP_HEART_BEAT') === 1 && false) {
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'HEARTBEAT', 'processHeartBeatConfig',
|
||||
'HEARTBEAT',
|
||||
'processHeartBeatConfig',
|
||||
G::LoadTranslation('ID_HEARTBEAT_CONFIG'),
|
||||
"heartBeat.jpg", '', 'settings'
|
||||
'heartBeat.jpg',
|
||||
'',
|
||||
'settings'
|
||||
);
|
||||
}
|
||||
}
|
||||
if ($RBAC->userCanAccess('PM_SETUP_ENVIRONMENT') === 1) {
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'ENVIRONMENT_SETTINGS', 'environmentSettings',
|
||||
'ENVIRONMENT_SETTINGS',
|
||||
'environmentSettings',
|
||||
G::LoadTranslation('ID_ENVIRONMENT_SETTINGS'),
|
||||
"", '', 'settings'
|
||||
'',
|
||||
'',
|
||||
'settings'
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -76,44 +97,62 @@ if ($RBAC->userCanAccess('PM_SETUP') === 1) {
|
||||
if ($RBAC->userCanAccess('PM_SETUP') === 1) {
|
||||
if ($RBAC->userCanAccess('PM_SETUP_CLEAR_CACHE') === 1) {
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'CLEAR_CACHE', 'clearCompiled',
|
||||
'CLEAR_CACHE',
|
||||
'clearCompiled',
|
||||
G::LoadTranslation('ID_CLEAR_CACHE'),
|
||||
'icon-rebuild-clean.png', "", 'settings'
|
||||
'icon-rebuild-clean.png',
|
||||
'',
|
||||
'settings'
|
||||
);
|
||||
}
|
||||
if ($RBAC->userCanAccess('PM_SETUP_PM_TABLES') === 1) {
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'PM_TABLES', '../pmTables',
|
||||
'PM_TABLES',
|
||||
'../pmTables',
|
||||
G::LoadTranslation('ID_ADDITIONAL_TABLES'),
|
||||
'icon-tables.png', '', 'settings'
|
||||
'icon-tables.png',
|
||||
'',
|
||||
'settings'
|
||||
);
|
||||
}
|
||||
if ($RBAC->userCanAccess('PM_SETUP_LOGIN') === 1) {
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'LOGIN', 'loginSettings',
|
||||
'LOGIN',
|
||||
'loginSettings',
|
||||
G::LoadTranslation('LOGIN'),
|
||||
"", '', 'settings'
|
||||
'',
|
||||
'',
|
||||
'settings'
|
||||
);
|
||||
}
|
||||
if ($RBAC->userCanAccess('PM_SETUP_DASHBOARDS') === 1) {
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'DASHBOARD', '../DashboardModule/dashletsList',
|
||||
'DASHBOARD',
|
||||
'../DashboardModule/dashletsList',
|
||||
ucfirst(G::LoadTranslation('ID_DASHBOARD')),
|
||||
'', '', 'settings'
|
||||
'',
|
||||
'',
|
||||
'settings'
|
||||
);
|
||||
/*----------------------------------********---------------------------------*/
|
||||
if ($licensedFeatures->verifyfeature('r19Vm5DK1UrT09MenlLYjZxejlhNUZ1b1NhV0JHWjBsZEJ6dnpJa3dTeWVLVT0=')) {
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'STRATEGIC_DASHBOARD', '../strategicDashboard/dashboardList',
|
||||
'STRATEGIC_DASHBOARD',
|
||||
'../strategicDashboard/dashboardList',
|
||||
ucfirst(G::LoadTranslation('ID_STRATEGIC_DASHBOARD')),
|
||||
'', '', 'settings'
|
||||
'',
|
||||
'',
|
||||
'settings'
|
||||
);
|
||||
}
|
||||
if ($licensedFeatures->verifyfeature('7qhYmF1eDJWcEdwcUZpT0k4S0xTRStvdz09')) {
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'PMGMAIL', '../pmGmail/formPMGmail',
|
||||
'PMGMAIL',
|
||||
'../pmGmail/formPMGmail',
|
||||
ucfirst(G::LoadTranslation('ID_PMGMAIL')),
|
||||
'', '', 'settings'
|
||||
'',
|
||||
'',
|
||||
'settings'
|
||||
);
|
||||
}
|
||||
/*----------------------------------********---------------------------------*/
|
||||
@@ -123,24 +162,33 @@ if ($RBAC->userCanAccess('PM_SETUP') === 1) {
|
||||
if ($RBAC->userCanAccess('PM_SETUP_ADVANCE') === 1) {
|
||||
if ($RBAC->userCanAccess('PM_SETUP_LANGUAGE') === 1) {
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'LANGUAGES', 'languages',
|
||||
'LANGUAGES',
|
||||
'languages',
|
||||
G::LoadTranslation('ID_LANGUAGES'),
|
||||
'icon-language.png', '', 'settings'
|
||||
'icon-language.png',
|
||||
'',
|
||||
'settings'
|
||||
);
|
||||
}
|
||||
if ($RBAC->userCanAccess('PM_SETUP_CASES_LIST_CACHE_BUILDER') === 1) {
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'APPCACHEVIEW_SETUP', '../setup/appCacheViewConf',
|
||||
'APPCACHEVIEW_SETUP',
|
||||
'../setup/appCacheViewConf',
|
||||
G::LoadTranslation('ID_APPCACHE_SETUP'),
|
||||
"", '', 'settings'
|
||||
'',
|
||||
'',
|
||||
'settings'
|
||||
);
|
||||
}
|
||||
if (!$partnerFlag) {
|
||||
if ($RBAC->userCanAccess('PM_SETUP_PLUGINS') === 1) {
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'PLUGINS', 'pluginsMain',
|
||||
'PLUGINS',
|
||||
'pluginsMain',
|
||||
G::LoadTranslation('ID_PLUGINS_MANAGER'),
|
||||
'icon-plugins.png', '', 'plugins'
|
||||
'icon-plugins.png',
|
||||
'',
|
||||
'plugins'
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -148,60 +196,129 @@ if ($RBAC->userCanAccess('PM_SETUP_ADVANCE') === 1) {
|
||||
|
||||
//users options
|
||||
if ($RBAC->userCanAccess('PM_USERS') === 1) {
|
||||
$G_TMP_MENU->AddIdRawOption('USERS', '../users/users_List', G::LoadTranslation('ID_USERS_LIST'),
|
||||
'icon-webservices.png', '', 'users');
|
||||
$G_TMP_MENU->AddIdRawOption('GROUPS', '../groups/groups', G::LoadTranslation('ID_GROUPS'), '', '', 'users');
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'DEPARTAMENTS', '../departments/departments',
|
||||
G::LoadTranslation('ID_DEPARTMENTS_USERS'),
|
||||
'', '', 'users'
|
||||
'USERS',
|
||||
'../users/users_List',
|
||||
G::LoadTranslation('ID_USERS_LIST'),
|
||||
'icon-webservices.png',
|
||||
'',
|
||||
'users'
|
||||
);
|
||||
$G_TMP_MENU->AddIdRawOption('ROLES', '../roles/roles_List',
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'USERS_EXTENDED',
|
||||
'../userExtendedAttributes/index',
|
||||
G::LoadTranslation('ID_USER_EXTENDED_ATTRIBUTES'),
|
||||
'icon-webservices.png',
|
||||
'',
|
||||
'users'
|
||||
);
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'GROUPS',
|
||||
'../groups/groups',
|
||||
G::LoadTranslation('ID_GROUPS'),
|
||||
'',
|
||||
'',
|
||||
'users'
|
||||
);
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'DEPARTAMENTS',
|
||||
'../departments/departments',
|
||||
G::LoadTranslation('ID_DEPARTMENTS_USERS'),
|
||||
'',
|
||||
'',
|
||||
'users'
|
||||
);
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'ROLES',
|
||||
'../roles/roles_List',
|
||||
G::LoadTranslation('ID_ROLES'),
|
||||
'', '', 'users'
|
||||
'',
|
||||
'',
|
||||
'users'
|
||||
);
|
||||
}
|
||||
|
||||
if ($RBAC->userCanAccess('PM_USERS') === 1 && $RBAC->userCanAccess('PM_SETUP_USERS_AUTHENTICATION_SOURCES') === 1) {
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'AUTHSOURCES', '../authSources/authSources_List',
|
||||
'AUTHSOURCES',
|
||||
'../authenticationSources/index',
|
||||
G::LoadTranslation('ID_AUTH_SOURCES'),
|
||||
'', '', 'users'
|
||||
'',
|
||||
'',
|
||||
'users'
|
||||
);
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'UX',
|
||||
'../admin/uxList',
|
||||
G::LoadTranslation('ID_USER_EXPERIENCE'),
|
||||
'',
|
||||
'',
|
||||
'users'
|
||||
);
|
||||
$G_TMP_MENU->AddIdRawOption('UX', '../admin/uxList', G::LoadTranslation('ID_USER_EXPERIENCE'), '', '', 'users');
|
||||
}
|
||||
|
||||
if ($RBAC->userCanAccess('PM_SETUP_ADVANCE') === 1) {
|
||||
$G_TMP_MENU->AddIdRawOption('SYSTEM', '../admin/system', G::LoadTranslation('ID_SYSTEM'), '', '', 'settings');
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'INFORMATION', '../setup/systemInfo?option=processInfo',
|
||||
'SYSTEM',
|
||||
'../admin/system',
|
||||
G::LoadTranslation('ID_SYSTEM'),
|
||||
'',
|
||||
'',
|
||||
'settings'
|
||||
);
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'INFORMATION',
|
||||
'../setup/systemInfo?option=processInfo',
|
||||
G::LoadTranslation('ID_SYSTEM_INFO'),
|
||||
'', '', 'settings'
|
||||
'',
|
||||
'',
|
||||
'settings'
|
||||
);
|
||||
}
|
||||
|
||||
if ($RBAC->userCanAccess('PM_SETUP') === 1 && $RBAC->userCanAccess('PM_SETUP_LOGS') === 1) {
|
||||
$G_TMP_MENU->AddIdRawOption('EVENT', '../events/eventList', G::LoadTranslation('ID_EVENTS_CLASSIC'), '', '',
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'EVENT',
|
||||
'../events/eventList',
|
||||
G::LoadTranslation('ID_EVENTS_CLASSIC'),
|
||||
'',
|
||||
'',
|
||||
'logs');
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'LOG_CASE_SCHEDULER', '../cases/cases_Scheduler_Log',
|
||||
'LOG_CASE_SCHEDULER',
|
||||
'../cases/cases_Scheduler_Log',
|
||||
G::LoadTranslation('ID_CASE_SCHEDULER_CLASSIC'),
|
||||
"icon-logs-list.png", '', 'logs'
|
||||
'icon-logs-list.png',
|
||||
'',
|
||||
'logs'
|
||||
);
|
||||
$G_TMP_MENU->AddIdRawOption("CRON", "../setup/cron", G::LoadTranslation("ID_CRON_ACTIONS"), null, null, 'logs');
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'EMAILS', '../mails/emailList',
|
||||
'CRON',
|
||||
'../setup/cron',
|
||||
G::LoadTranslation('ID_CRON_ACTIONS'),
|
||||
null,
|
||||
null,
|
||||
'logs'
|
||||
);
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'EMAILS',
|
||||
'../mails/emailList',
|
||||
ucfirst(strtolower(G::LoadTranslation('ID_EMAILS'))),
|
||||
'', '', 'logs'
|
||||
'',
|
||||
'',
|
||||
'logs'
|
||||
);
|
||||
/*----------------------------------********---------------------------------*/
|
||||
if (isset($sAudit) && $sAudit !== false && $licensedFeatures->verifyfeature
|
||||
('vtSeHNhT0JnSmo1bTluUVlTYUxUbUFSVStEeXVqc1pEUG5EeXc0MGd2Q3ErYz0=')
|
||||
('vtSeHNhT0JnSmo1bTluUVlTYUxUbUFSVStEeXVqc1pEUG5EeXc0MGd2Q3ErYz0=')
|
||||
) {
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'AUDIT_LOG', '../setup/auditLog',
|
||||
'AUDIT_LOG',
|
||||
'../setup/auditLog',
|
||||
ucfirst(G::LoadTranslation('ID_AUDITLOG_DISPLAY')),
|
||||
'', '', 'logs'
|
||||
'',
|
||||
'',
|
||||
'logs'
|
||||
);
|
||||
}
|
||||
/*----------------------------------********---------------------------------*/
|
||||
@@ -210,8 +327,12 @@ if ($RBAC->userCanAccess('PM_SETUP') === 1 && $RBAC->userCanAccess('PM_SETUP_LOG
|
||||
/*----------------------------------********---------------------------------*/
|
||||
if ($RBAC->userCanAccess('PM_SETUP_LOG_FILES') === 1) {
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'STANDARD_LOGGING', '../FileLogs/fileList',
|
||||
G::LoadTranslation('ID_STANDARD_LOGGING'), '', '', 'logs'
|
||||
'STANDARD_LOGGING',
|
||||
'../FileLogs/fileList',
|
||||
G::LoadTranslation('ID_STANDARD_LOGGING'),
|
||||
'',
|
||||
'',
|
||||
'logs'
|
||||
);
|
||||
}
|
||||
/*----------------------------------********---------------------------------*/
|
||||
@@ -219,21 +340,30 @@ if ($RBAC->userCanAccess('PM_SETUP_LOG_FILES') === 1) {
|
||||
|
||||
if ($RBAC->userCanAccess('PM_SETUP') === 1) {
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'PM_REQUIREMENTS', '../setup/systemInfo',
|
||||
'PM_REQUIREMENTS',
|
||||
'../setup/systemInfo',
|
||||
G::LoadTranslation('ID_PROCESSMAKER_REQUIREMENTS_CHECK'),
|
||||
'', '', 'settings'
|
||||
'',
|
||||
'',
|
||||
'settings'
|
||||
);
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'PHP_INFO', '../setup/systemInfo?option=php',
|
||||
'PHP_INFO',
|
||||
'../setup/systemInfo?option=php',
|
||||
G::LoadTranslation('ID_PHP_INFO'),
|
||||
'', '', 'settings'
|
||||
'',
|
||||
'',
|
||||
'settings'
|
||||
);
|
||||
/*----------------------------------********---------------------------------*/
|
||||
if ($licensedFeatures->verifyfeature('vtSeHNhT0JnSmo1bTluUVlTYUxUbUFSVStEeXVqc1pEUG5EeXc0MGd2Q3ErYz0=')) {
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
"AUDIT_LOG", "auditLogConfig",
|
||||
G::LoadTranslation("ID_AUDITLOG_DISPLAY"),
|
||||
"", "", "settings"
|
||||
'AUDIT_LOG',
|
||||
'auditLogConfig',
|
||||
G::LoadTranslation('ID_AUDITLOG_DISPLAY'),
|
||||
'',
|
||||
'',
|
||||
'settings'
|
||||
);
|
||||
}
|
||||
/*----------------------------------********---------------------------------*/
|
||||
@@ -266,15 +396,22 @@ if ($licenseStatusInfo["message"] != "") {
|
||||
if ($RBAC->userCanAccess('PM_SETUP') == 1) {
|
||||
/*----------------------------------********---------------------------------*/
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'PMENTERPRISE', '../enterprise/addonsStore',
|
||||
'PMENTERPRISE',
|
||||
'../enterprise/addonsStore',
|
||||
G::LoadTranslation('ID_MENU_NAME') . $licStatusMsg,
|
||||
'', '', 'plugins'
|
||||
'',
|
||||
'',
|
||||
'plugins'
|
||||
);
|
||||
if ($RBAC->userCanAccess('PM_SETUP_CUSTOM_CASES_LIST') == 1) {
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'CASES_LIST_SETUP', '../cases/casesListSetup',
|
||||
'CASES_LIST_SETUP',
|
||||
'../cases/casesListSetup',
|
||||
G::LoadTranslation('ID_CUSTOM_CASES_LISTS'),
|
||||
'', '', 'settings');
|
||||
'',
|
||||
'',
|
||||
'settings'
|
||||
);
|
||||
}
|
||||
/*----------------------------------********---------------------------------*/
|
||||
}
|
||||
@@ -283,45 +420,62 @@ if ($RBAC->userCanAccess('PM_SETUP') == 1) {
|
||||
$pluginRegistry = PluginRegistry::loadSingleton();
|
||||
$status = $pluginRegistry->getStatusPlugin('actionsByEmail');
|
||||
|
||||
if ((string)($status) !== 'enabled' &&
|
||||
if ((string) ($status) !== 'enabled' &&
|
||||
$licensedFeatures->verifyfeature('zLhSk5TeEQrNFI2RXFEVktyUGpnczV1WEJNWVp6cjYxbTU3R29mVXVZNWhZQT0=') &&
|
||||
$RBAC->userCanAccess('PM_SETUP_LOGS') == 1
|
||||
) {
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'PM_ACTIONS_BY_EMAIL_LOGS',
|
||||
'../actionsByEmail/ActionByEmail.php',
|
||||
G::LoadTranslation("ID_ACTIONS_BY_EMAIL_LOG"),
|
||||
'', '', 'logs'
|
||||
G::LoadTranslation('ID_ACTIONS_BY_EMAIL_LOG'),
|
||||
'',
|
||||
'',
|
||||
'logs'
|
||||
);
|
||||
}
|
||||
/*----------------------------------********---------------------------------*/
|
||||
|
||||
if ($RBAC->userCanAccess('PM_TASK_SCHEDULER_ADMIN') === 1) {
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'ID_MENU_CASE_ACTIONS', '../scheduler/index?category=case_actions',
|
||||
G::LoadTranslation("ID_TASK_SCHEDULER_CASE_ACTIONS"),
|
||||
'', '', G::LoadTranslation("ID_TASK_SCHEDULER")
|
||||
'ID_MENU_CASE_ACTIONS',
|
||||
'../scheduler/index?category=case_actions',
|
||||
G::LoadTranslation('ID_TASK_SCHEDULER_CASE_ACTIONS'),
|
||||
'',
|
||||
'',
|
||||
G::LoadTranslation('ID_TASK_SCHEDULER')
|
||||
);
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'ID_MENU_EMAILS_NOTIFICATIONS', '../scheduler/index?category=emails_notifications',
|
||||
G::LoadTranslation("ID_TASK_SCHEDULER_EMAILS_NOTIFICATIONS"),
|
||||
'', '', G::LoadTranslation("ID_TASK_SCHEDULER")
|
||||
'ID_MENU_EMAILS_NOTIFICATIONS',
|
||||
'../scheduler/index?category=emails_notifications',
|
||||
G::LoadTranslation('ID_TASK_SCHEDULER_EMAILS_NOTIFICATIONS'),
|
||||
'',
|
||||
'',
|
||||
G::LoadTranslation('ID_TASK_SCHEDULER')
|
||||
);
|
||||
/*----------------------------------********---------------------------------*/
|
||||
/*----------------------------------********---------------------------------*/
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'ID_MENU_PLUGINS', '../scheduler/index?category=plugins',
|
||||
G::LoadTranslation("ID_TASK_SCHEDULER_PLUGINS"),
|
||||
'', '', G::LoadTranslation("ID_TASK_SCHEDULER")
|
||||
);
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'ID_MENU_PM_SYNC', '../scheduler/index?category=processmaker_sync',
|
||||
G::LoadTranslation("ID_TASK_SCHEDULER_PM_SYNC"),
|
||||
'', '', G::LoadTranslation("ID_TASK_SCHEDULER")
|
||||
);
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'ID_MENU_REPORTING', '../scheduler/index?category=reporting',
|
||||
G::LoadTranslation("ID_TASK_SCHEDULER_REPORTING"),
|
||||
'', '', G::LoadTranslation("ID_TASK_SCHEDULER")
|
||||
'ID_MENU_PLUGINS',
|
||||
'../scheduler/index?category=plugins',
|
||||
G::LoadTranslation('ID_TASK_SCHEDULER_PLUGINS'),
|
||||
'',
|
||||
'',
|
||||
G::LoadTranslation('ID_TASK_SCHEDULER')
|
||||
);
|
||||
/*----------------------------------********---------------------------------*/
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'ID_MENU_PM_SYNC',
|
||||
'../scheduler/index?category=processmaker_sync',
|
||||
G::LoadTranslation('ID_TASK_SCHEDULER_PM_SYNC'),
|
||||
'',
|
||||
'',
|
||||
G::LoadTranslation('ID_TASK_SCHEDULER')
|
||||
);
|
||||
$G_TMP_MENU->AddIdRawOption(
|
||||
'ID_MENU_REPORTING',
|
||||
'../scheduler/index?category=reporting',
|
||||
G::LoadTranslation('ID_TASK_SCHEDULER_REPORTING'),
|
||||
'',
|
||||
'',
|
||||
G::LoadTranslation('ID_TASK_SCHEDULER')
|
||||
);
|
||||
/*----------------------------------********---------------------------------*/
|
||||
}
|
||||
@@ -100,34 +100,65 @@ try {
|
||||
global $RBAC;
|
||||
|
||||
$co = new Configurations();
|
||||
$config = $co->getConfiguration( 'authSourcesList', 'pageSize', '', $_SESSION['USER_LOGGED'] );
|
||||
$limit_size = isset( $config['pageSize'] ) ? $config['pageSize'] : 20;
|
||||
$config = $co->getConfiguration('authSourcesList', 'pageSize', '', $_SESSION['USER_LOGGED']);
|
||||
$limit_size = isset($config['pageSize']) ? $config['pageSize'] : 20;
|
||||
|
||||
$start = isset( $_REQUEST['start'] ) ? $_REQUEST['start'] : 0;
|
||||
$limit = isset( $_REQUEST['limit'] ) ? $_REQUEST['limit'] : $limit_size;
|
||||
$filter = isset( $_REQUEST['textFilter'] ) ? $_REQUEST['textFilter'] : '';
|
||||
$start = isset($_REQUEST['start']) ? $_REQUEST['start'] : 0;
|
||||
$limit = isset($_REQUEST['limit']) ? $_REQUEST['limit'] : $limit_size;
|
||||
$filter = isset($_REQUEST['textFilter']) ? $_REQUEST['textFilter'] : '';
|
||||
|
||||
$Criterias = $RBAC->getAuthenticationSources( $start, $limit, $filter );
|
||||
$criterias = $RBAC->getAuthenticationSources($start, $limit, $filter);
|
||||
|
||||
$Dat = AuthenticationSourcePeer::doSelectRS( $Criterias['COUNTER'] );
|
||||
$Dat->setFetchmode( ResultSet::FETCHMODE_ASSOC );
|
||||
$Dat->next();
|
||||
$row = $Dat->getRow();
|
||||
$dataSourceAuthentication = AuthenticationSourcePeer::doSelectRS($criterias['COUNTER']);
|
||||
$dataSourceAuthentication->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||
$dataSourceAuthentication->next();
|
||||
$row = $dataSourceAuthentication->getRow();
|
||||
$total_sources = $row['CNT'];
|
||||
|
||||
$oDataset = AuthenticationSourcePeer::doSelectRS( $Criterias['LIST'] );
|
||||
$oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
|
||||
if (!empty($_REQUEST['orderBy']) && isset($_REQUEST['ascending']) && defined("AuthenticationSourcePeer::" . $_REQUEST['orderBy'])) {
|
||||
if ($_REQUEST['ascending'] === '1') {
|
||||
$criterias['LIST']->addAscendingOrderByColumn(constant("AuthenticationSourcePeer::" . $_REQUEST['orderBy']));
|
||||
}
|
||||
if ($_REQUEST['ascending'] === '0') {
|
||||
$criterias['LIST']->addDescendingOrderByColumn(constant("AuthenticationSourcePeer::" . $_REQUEST['orderBy']));
|
||||
}
|
||||
} else {
|
||||
$criterias['LIST']->addAscendingOrderByColumn(AuthenticationSourcePeer::AUTH_SOURCE_NAME);
|
||||
}
|
||||
$dataset = AuthenticationSourcePeer::doSelectRS($criterias['LIST']);
|
||||
$dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||
|
||||
global $RBAC;
|
||||
$auth = $RBAC->getAllUsersByAuthSource();
|
||||
|
||||
$aSources = Array ();
|
||||
while ($oDataset->next()) {
|
||||
$aSources[] = $oDataset->getRow();
|
||||
$index = sizeof( $aSources ) - 1;
|
||||
$aSources[$index]['CURRENT_USERS'] = isset( $auth[$aSources[$index]['AUTH_SOURCE_UID']] ) ? $auth[$aSources[$index]['AUTH_SOURCE_UID']] : 0;
|
||||
$sources = [];
|
||||
while ($dataset->next()) {
|
||||
$row = $dataset->getRow();
|
||||
$values = explode("_", $row["AUTH_SOURCE_PASSWORD"]);
|
||||
foreach ($values as $value) {
|
||||
if ($value == "2NnV3ujj3w") {
|
||||
$row["AUTH_SOURCE_PASSWORD"] = G::decrypt($values[0], $row["AUTH_SOURCE_SERVER_NAME"]);
|
||||
}
|
||||
}
|
||||
$label = G::LoadTranslation('ID_DISABLE');
|
||||
if ($row['AUTH_SOURCE_ENABLED_TLS'] === "1") {
|
||||
$label = G::LoadTranslation('ID_ENABLE');
|
||||
}
|
||||
$row['AUTH_SOURCE_ENABLED_TLS_LABEL'] = $label;
|
||||
//additional information
|
||||
$authSourceData = unserialize($row['AUTH_SOURCE_DATA']);
|
||||
if (is_array($authSourceData)) {
|
||||
$row = array_merge($row, $authSourceData);
|
||||
}
|
||||
$sources[] = $row;
|
||||
$index = sizeof($sources) - 1;
|
||||
$sources[$index]['CURRENT_USERS'] = isset($auth[$sources[$index]['AUTH_SOURCE_UID']]) ? $auth[$sources[$index]['AUTH_SOURCE_UID']] : 0;
|
||||
}
|
||||
echo '{sources: ' . G::json_encode( $aSources ) . ', total_sources: ' . $total_sources . '}';
|
||||
$response = [
|
||||
'sources' => $sources,
|
||||
'total_sources' => $total_sources
|
||||
];
|
||||
echo G::json_encode($response);
|
||||
break;
|
||||
case 'canDeleteAuthSource':
|
||||
try {
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
<?php
|
||||
|
||||
use ProcessMaker\Model\RbacAuthenticationSource;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
$function = $_REQUEST['functionAccion'];
|
||||
|
||||
switch ($function) {
|
||||
@@ -62,10 +66,10 @@ switch ($function) {
|
||||
|
||||
//Response
|
||||
$response["status"] = "OK";
|
||||
$response["existsRecords"] = ($flagUser || $flagDepartment || $flagGroup)? 1 : 0;
|
||||
$response["existsRecords"] = ($flagUser || $flagDepartment || $flagGroup) ? 1 : 0;
|
||||
} catch (Exception $e) {
|
||||
//Response
|
||||
$response["status"] = "ERROR";
|
||||
$response["status"] = "ERROR";
|
||||
$response["message"] = $e->getMessage();
|
||||
}
|
||||
|
||||
@@ -93,7 +97,44 @@ switch ($function) {
|
||||
default:
|
||||
break;
|
||||
}
|
||||
echo G::json_encode(array('success'=> true, 'data' => $data, 'message'=>'Created Quote', 'total' => count($data)));
|
||||
echo G::json_encode(array('success' => true, 'data' => $data, 'message' => 'Created Quote', 'total' => count($data)));
|
||||
break;
|
||||
case 'ldapVerifyName':
|
||||
$authSourceName = empty($_REQUEST['AUTH_SOURCE_NAME']) ? '' : $_REQUEST['AUTH_SOURCE_NAME'];
|
||||
$authenticationSource = RbacAuthenticationSource::query()
|
||||
->select(['AUTH_SOURCE_UID', 'AUTH_SOURCE_NAME'])
|
||||
->where('AUTH_SOURCE_NAME', '=', $authSourceName)
|
||||
->get()
|
||||
->first();
|
||||
$row = false;
|
||||
$suggestName = "";
|
||||
if (!empty($authenticationSource)) {
|
||||
$row = $authenticationSource;
|
||||
$lastAuthenticationSource = RbacAuthenticationSource::query()
|
||||
->select(['AUTH_SOURCE_NAME'])
|
||||
->where('AUTH_SOURCE_NAME', 'LIKE', "%{$authSourceName}%")
|
||||
->orderBy('AUTH_SOURCE_NAME', 'desc')
|
||||
->get()
|
||||
->first();
|
||||
if (!empty($lastAuthenticationSource)) {
|
||||
$name = $lastAuthenticationSource->AUTH_SOURCE_NAME;
|
||||
//get suggest name
|
||||
$pieces = explode(" ", $name);
|
||||
$last = array_pop($pieces);
|
||||
$number = trim($last, "()");
|
||||
if ("({$number})" === $last) {
|
||||
$number = intval($number) + 1;
|
||||
$suggestName = implode("", $pieces) . " ({$number})";
|
||||
} else {
|
||||
$suggestName = $name . " (1)";
|
||||
}
|
||||
}
|
||||
}
|
||||
echo G::json_encode([
|
||||
'success' => true,
|
||||
'row' => $row,
|
||||
'suggestName' => $suggestName
|
||||
]);
|
||||
break;
|
||||
case 'ldapSave':
|
||||
if (isset($_POST['AUTH_SOURCE_SHOWGRID-checkbox'])) {
|
||||
@@ -102,7 +143,7 @@ switch ($function) {
|
||||
$attributes = G::json_decode($_POST['AUTH_SOURCE_GRID_TEXT']);
|
||||
$con = 1;
|
||||
foreach ($attributes as $value) {
|
||||
$_POST['AUTH_SOURCE_GRID_ATTRIBUTE'][$con] = (array)$value;
|
||||
$_POST['AUTH_SOURCE_GRID_ATTRIBUTE'][$con] = (array) $value;
|
||||
$con++;
|
||||
}
|
||||
}
|
||||
@@ -133,11 +174,11 @@ switch ($function) {
|
||||
unset($_POST['AUTH_SOURCE_GRID_TEXT']);
|
||||
}
|
||||
|
||||
$aCommonFields = array ('AUTH_SOURCE_UID','AUTH_SOURCE_NAME','AUTH_SOURCE_PROVIDER','AUTH_SOURCE_SERVER_NAME','AUTH_SOURCE_PORT','AUTH_SOURCE_ENABLED_TLS','AUTH_ANONYMOUS','AUTH_SOURCE_SEARCH_USER','AUTH_SOURCE_PASSWORD','AUTH_SOURCE_VERSION','AUTH_SOURCE_BASE_DN','AUTH_SOURCE_OBJECT_CLASSES','AUTH_SOURCE_ATTRIBUTES');
|
||||
$aCommonFields = array('AUTH_SOURCE_UID', 'AUTH_SOURCE_NAME', 'AUTH_SOURCE_PROVIDER', 'AUTH_SOURCE_SERVER_NAME', 'AUTH_SOURCE_PORT', 'AUTH_SOURCE_ENABLED_TLS', 'AUTH_ANONYMOUS', 'AUTH_SOURCE_SEARCH_USER', 'AUTH_SOURCE_PASSWORD', 'AUTH_SOURCE_VERSION', 'AUTH_SOURCE_BASE_DN', 'AUTH_SOURCE_OBJECT_CLASSES', 'AUTH_SOURCE_ATTRIBUTES');
|
||||
|
||||
$aFields = $aData = array ();
|
||||
$aFields = $aData = array();
|
||||
foreach ($_POST as $sField => $sValue) {
|
||||
if (in_array( $sField, $aCommonFields )) {
|
||||
if (in_array($sField, $aCommonFields)) {
|
||||
$aFields[$sField] = $sValue;
|
||||
} else {
|
||||
$aData[$sField] = $sValue;
|
||||
@@ -168,11 +209,11 @@ switch ($function) {
|
||||
|
||||
//Save
|
||||
if ($aFields['AUTH_SOURCE_UID'] == '') {
|
||||
$RBAC->createAuthSource( $aFields );
|
||||
$RBAC->createAuthSource($aFields);
|
||||
} else {
|
||||
$RBAC->updateAuthSource( $aFields );
|
||||
$RBAC->updateAuthSource($aFields);
|
||||
}
|
||||
echo G::json_encode(array('success'=> true));
|
||||
echo G::json_encode(array('success' => true));
|
||||
break;
|
||||
case "searchUsers":
|
||||
$response = array();
|
||||
@@ -182,8 +223,8 @@ switch ($function) {
|
||||
|
||||
$authenticationSourceUid = $_POST["sUID"];
|
||||
$keyword = $_POST["sKeyword"];
|
||||
$start = (isset($_POST["start"]))? $_POST["start"]: 0;
|
||||
$limit = (isset($_POST["limit"]))? $_POST["limit"]: $pageSize;
|
||||
$start = (isset($_POST["start"])) ? $_POST["start"] : 0;
|
||||
$limit = (isset($_POST["limit"])) ? $_POST["limit"] : $pageSize;
|
||||
|
||||
//Get Users from Database
|
||||
$arrayUser = array();
|
||||
@@ -217,7 +258,7 @@ switch ($function) {
|
||||
if (!isset($arrayUser[strtolower($arrayUserData["sUsername"])])) {
|
||||
$arrayUserData["STATUS"] = G::LoadTranslation("ID_NOT_IMPORTED");
|
||||
$arrayUserData["IMPORT"] = 1;
|
||||
} elseif($authenticationSourceUid === $arrayUser[strtolower($arrayUserData["sUsername"])]) {
|
||||
} elseif ($authenticationSourceUid === $arrayUser[strtolower($arrayUserData["sUsername"])]) {
|
||||
$arrayUserData["STATUS"] = G::LoadTranslation("ID_IMPORTED");
|
||||
$arrayUserData["IMPORT"] = 0;
|
||||
} else {
|
||||
@@ -229,25 +270,25 @@ switch ($function) {
|
||||
}
|
||||
|
||||
//Response
|
||||
$response["status"] = "OK";
|
||||
$response["status"] = "OK";
|
||||
$response["success"] = true;
|
||||
$response["resultTotal"] = $result["numRecTotal"];
|
||||
$response["resultRoot"] = $arrayData;
|
||||
$response["resultRoot"] = $arrayData;
|
||||
} catch (Exception $e) {
|
||||
//Response
|
||||
$response["status"] = "ERROR";
|
||||
$response["status"] = "ERROR";
|
||||
$response["message"] = $e->getMessage();
|
||||
}
|
||||
|
||||
echo G::json_encode($response);
|
||||
break;
|
||||
case 'importUsers':
|
||||
$usersImport = $_REQUEST['UsersImport'];
|
||||
$usersImport = $_REQUEST['UsersImport'];
|
||||
$authSourceUid = $_REQUEST['AUTH_SOURCE_UID'];
|
||||
|
||||
$aUsers = G::json_decode($usersImport);
|
||||
global $RBAC;
|
||||
$aFields = $RBAC->getAuthSource( $authSourceUid );
|
||||
$aFields = $RBAC->getAuthSource($authSourceUid);
|
||||
$aAttributes = array();
|
||||
|
||||
if (isset($aFields['AUTH_SOURCE_DATA']['AUTH_SOURCE_GRID_ATTRIBUTE'])) {
|
||||
@@ -258,46 +299,46 @@ switch ($function) {
|
||||
$countUsers = 0;
|
||||
//$usersImport
|
||||
foreach ($aUsers as $sUser) {
|
||||
$aUser = (array)$sUser;
|
||||
$aUser = (array) $sUser;
|
||||
$matches = array();
|
||||
$aData = array();
|
||||
$aData['USR_USERNAME'] = str_replace( "*", "'", $aUser['sUsername'] );
|
||||
$aData = array();
|
||||
$aData['USR_USERNAME'] = str_replace("*", "'", $aUser['sUsername']);
|
||||
$aData["USR_PASSWORD"] = "00000000000000000000000000000000";
|
||||
// note added by gustavo gustavo-at-colosa.com
|
||||
// asign the FirstName and LastName variables
|
||||
// add replace to change D*Souza to D'Souza by krlos
|
||||
$aData['USR_FIRSTNAME'] = str_replace( "*", "'", $aUser['sFirstname'] );
|
||||
$aData['USR_LASTNAME'] = str_replace( "*", "'", $aUser['sLastname'] );
|
||||
$aData['USR_FIRSTNAME'] = str_replace("*", "'", $aUser['sFirstname']);
|
||||
$aData['USR_LASTNAME'] = str_replace("*", "'", $aUser['sLastname']);
|
||||
$aData['USR_EMAIL'] = $aUser['sEmail'];
|
||||
$aData['USR_DUE_DATE'] = date( 'Y-m-d', mktime( 0, 0, 0, date( 'm' ), date( 'd' ), date( 'Y' ) + 2 ) );
|
||||
$aData['USR_CREATE_DATE'] = date( 'Y-m-d H:i:s' );
|
||||
$aData['USR_UPDATE_DATE'] = date( 'Y-m-d H:i:s' );
|
||||
$aData['USR_BIRTHDAY'] = date( 'Y-m-d' );
|
||||
$aData['USR_DUE_DATE'] = date('Y-m-d', mktime(0, 0, 0, date('m'), date('d'), date('Y') + 2));
|
||||
$aData['USR_CREATE_DATE'] = date('Y-m-d H:i:s');
|
||||
$aData['USR_UPDATE_DATE'] = date('Y-m-d H:i:s');
|
||||
$aData['USR_BIRTHDAY'] = date('Y-m-d');
|
||||
$aData['USR_STATUS'] = (isset($aUser['USR_STATUS'])) ? (($aUser['USR_STATUS'] == 'ACTIVE') ? 1 : 0) : 1;
|
||||
$aData['USR_AUTH_TYPE'] = strtolower( $aFields['AUTH_SOURCE_PROVIDER'] );
|
||||
$aData['USR_AUTH_TYPE'] = strtolower($aFields['AUTH_SOURCE_PROVIDER']);
|
||||
$aData['UID_AUTH_SOURCE'] = $aFields['AUTH_SOURCE_UID'];
|
||||
// validating with regexp if there are some missing * inside the DN string
|
||||
// if it's so the is changed to the ' character
|
||||
preg_match( '/[a-zA-Z]\*[a-zA-Z]/', $aUser['sDN'], $matches );
|
||||
preg_match('/[a-zA-Z]\*[a-zA-Z]/', $aUser['sDN'], $matches);
|
||||
|
||||
foreach ($matches as $key => $match) {
|
||||
$newMatch = str_replace( '*', '\'', $match );
|
||||
$aUser['sDN'] = str_replace( $match, $newMatch, $aUser['sDN'] );
|
||||
$newMatch = str_replace('*', '\'', $match);
|
||||
$aUser['sDN'] = str_replace($match, $newMatch, $aUser['sDN']);
|
||||
}
|
||||
$aData['USR_AUTH_USER_DN'] = $aUser['sDN'];
|
||||
|
||||
try {
|
||||
$sUserUID = $RBAC->createUser( $aData, 'PROCESSMAKER_OPERATOR', $aFields['AUTH_SOURCE_NAME']);
|
||||
$usersCreated .= $aData['USR_USERNAME'].' ';
|
||||
$countUsers ++;
|
||||
$sUserUID = $RBAC->createUser($aData, 'PROCESSMAKER_OPERATOR', $aFields['AUTH_SOURCE_NAME']);
|
||||
$usersCreated .= $aData['USR_USERNAME'] . ' ';
|
||||
$countUsers++;
|
||||
} catch (Exception $oError) {
|
||||
$G_PUBLISH = new Publisher();
|
||||
$G_PUBLISH->AddContent( 'xmlform', 'xmlform', 'login/showMessage', '', array ('MESSAGE' => $oError->getMessage()) );
|
||||
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showMessage', '', array('MESSAGE' => $oError->getMessage()));
|
||||
G::RenderPage("publish", "blank");
|
||||
die();
|
||||
}
|
||||
|
||||
$aData['USR_STATUS'] = (isset($aUser['USR_STATUS'])) ? $aUser['USR_STATUS'] :'ACTIVE';
|
||||
$aData['USR_STATUS'] = (isset($aUser['USR_STATUS'])) ? $aUser['USR_STATUS'] : 'ACTIVE';
|
||||
$aData['USR_UID'] = $sUserUID;
|
||||
$aData['USR_ROLE'] = 'PROCESSMAKER_OPERATOR';
|
||||
|
||||
@@ -307,7 +348,7 @@ switch ($function) {
|
||||
if (count($aAttributes)) {
|
||||
foreach ($aAttributes as $value) {
|
||||
if (isset($aUser[$value['attributeUser']])) {
|
||||
$aData[$value['attributeUser']] = str_replace( "*", "'", $aUser[$value['attributeUser']] );
|
||||
$aData[$value['attributeUser']] = str_replace("*", "'", $aUser[$value['attributeUser']]);
|
||||
if ($value['attributeUser'] == 'USR_STATUS') {
|
||||
$evalValue = $aData[$value['attributeUser']];
|
||||
$statusValue = $aData['USR_STATUS'];
|
||||
@@ -317,7 +358,7 @@ switch ($function) {
|
||||
}
|
||||
}
|
||||
$oUser = new Users();
|
||||
$oUser->create( $aData );
|
||||
$oUser->create($aData);
|
||||
}
|
||||
|
||||
$sClassName = strtolower($aFields['AUTH_SOURCE_PROVIDER']);
|
||||
@@ -334,7 +375,7 @@ switch ($function) {
|
||||
|
||||
$plugin->log($ldapcnn, "Users imported $countUsers: " . $usersCreated);
|
||||
|
||||
echo G::json_encode(array('success'=> true));
|
||||
echo G::json_encode(array('success' => true));
|
||||
break;
|
||||
case "ldapTestConnection":
|
||||
$response = array();
|
||||
@@ -357,7 +398,7 @@ switch ($function) {
|
||||
$response["status"] = "OK";
|
||||
} catch (Exception $e) {
|
||||
//Response
|
||||
$response["status"] = "ERROR";
|
||||
$response["status"] = "ERROR";
|
||||
$response["message"] = $e->getMessage();
|
||||
}
|
||||
|
||||
|
||||
24
workflow/engine/methods/authenticationSources/.gitignore
vendored
Normal file
24
workflow/engine/methods/authenticationSources/.gitignore
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
.DS_Store
|
||||
node_modules
|
||||
/dist
|
||||
|
||||
|
||||
# local env files
|
||||
.env.local
|
||||
.env.*.local
|
||||
|
||||
# Log files
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
|
||||
# Editor directories and files
|
||||
.idea
|
||||
.vscode
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
/nbproject/private/
|
||||
24
workflow/engine/methods/authenticationSources/README.md
Normal file
24
workflow/engine/methods/authenticationSources/README.md
Normal file
@@ -0,0 +1,24 @@
|
||||
# my-app
|
||||
|
||||
## Project setup
|
||||
```
|
||||
npm install
|
||||
```
|
||||
|
||||
### Compiles and hot-reloads for development
|
||||
```
|
||||
npm run serve
|
||||
```
|
||||
|
||||
### Compiles and minifies for production
|
||||
```
|
||||
npm run build
|
||||
```
|
||||
|
||||
### Lints and fixes files
|
||||
```
|
||||
npm run lint
|
||||
```
|
||||
|
||||
### Customize configuration
|
||||
See [Configuration Reference](https://cli.vuejs.org/config/).
|
||||
@@ -0,0 +1,5 @@
|
||||
module.exports = {
|
||||
presets: [
|
||||
'@vue/cli-plugin-babel/preset'
|
||||
]
|
||||
}
|
||||
21
workflow/engine/methods/authenticationSources/index.php
Normal file
21
workflow/engine/methods/authenticationSources/index.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
global $G_PUBLISH;
|
||||
$G_PUBLISH = new Publisher();
|
||||
try {
|
||||
$conf = new Configurations();
|
||||
$pageSize = $conf->getEnvSetting('casesListRowNumber');
|
||||
$pageSize = empty($pageSize) ? 25 : $pageSize;
|
||||
$lang = defined("SYS_LANG") ? SYS_LANG : "en";
|
||||
|
||||
$html = file_get_contents(PATH_HTML . "lib/authenticationSources/index.html");
|
||||
$html = str_replace("var pageSize=10;", "var pageSize={$pageSize};", $html);
|
||||
$html = str_replace("translation.en.js", "translation.{$lang}.js", $html);
|
||||
echo $html;
|
||||
} catch (Exception $e) {
|
||||
$message = [
|
||||
'MESSAGE' => $e->getMessage()
|
||||
];
|
||||
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showMessage', '', $message);
|
||||
G::RenderPage('publish', 'blank');
|
||||
}
|
||||
17751
workflow/engine/methods/authenticationSources/package-lock.json
generated
Normal file
17751
workflow/engine/methods/authenticationSources/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
51
workflow/engine/methods/authenticationSources/package.json
Normal file
51
workflow/engine/methods/authenticationSources/package.json
Normal file
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"name": "authenticationSources",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"serve": "vue-cli-service serve",
|
||||
"build": "vue-cli-service build --dest ../../../public_html/lib/authenticationSources",
|
||||
"lint": "vue-cli-service lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"@panter/vue-i18next": "^0.15.2",
|
||||
"@vue/cli": "^4.4.6",
|
||||
"axios": "^0.19.2",
|
||||
"bootstrap": "^4.5.0",
|
||||
"bootstrap-vue": "^2.15.0",
|
||||
"core-js": "^3.6.5",
|
||||
"lodash": "^4.17.19",
|
||||
"save": "^2.4.0",
|
||||
"vue": "^2.6.11",
|
||||
"vue-tables-2": "^2.0.27",
|
||||
"vuelidate": "^0.7.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vue/cli-plugin-babel": "~4.5.0",
|
||||
"@vue/cli-plugin-eslint": "~4.5.0",
|
||||
"@vue/cli-service": "~4.5.0",
|
||||
"babel-eslint": "^10.1.0",
|
||||
"eslint": "^6.7.2",
|
||||
"eslint-plugin-vue": "^6.2.2",
|
||||
"vue-template-compiler": "^2.6.11"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"root": true,
|
||||
"env": {
|
||||
"node": true
|
||||
},
|
||||
"extends": [
|
||||
"plugin:vue/essential",
|
||||
"eslint:recommended"
|
||||
],
|
||||
"parserOptions": {
|
||||
"parser": "babel-eslint"
|
||||
},
|
||||
"rules": {}
|
||||
},
|
||||
"browserslist": [
|
||||
"> 1%",
|
||||
"last 2 versions",
|
||||
"not dead"
|
||||
]
|
||||
}
|
||||
BIN
workflow/engine/methods/authenticationSources/public/favicon.ico
Normal file
BIN
workflow/engine/methods/authenticationSources/public/favicon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
@@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
|
||||
<title><%= htmlWebpackPlugin.options.title %></title>
|
||||
<!-- These are default values, then they are overridden when processmaker runs -->
|
||||
<script type="text/javascript" src="/js/ext/translation.en.js"></script>
|
||||
<script type="text/javascript">
|
||||
var pageSize=10;
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<noscript>
|
||||
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
|
||||
</noscript>
|
||||
<div id="app"></div>
|
||||
<!-- built files will be auto injected -->
|
||||
</body>
|
||||
</html>
|
||||
155
workflow/engine/methods/authenticationSources/src/App.vue
Normal file
155
workflow/engine/methods/authenticationSources/src/App.vue
Normal file
@@ -0,0 +1,155 @@
|
||||
<template>
|
||||
<div id="app">
|
||||
<authenticationSources ref="authenticationSources"
|
||||
v-show="views.authenticationSources"
|
||||
@newConnection="newConnection"
|
||||
@editSettings="editSettings"
|
||||
@optionSaveButton="optionSaveButton"
|
||||
@optionUpdateButton="optionUpdateButton"
|
||||
@optionNewButton="optionNewButton"/>
|
||||
|
||||
<newConnection ref="newConnection"
|
||||
v-show="views.newConnection"
|
||||
@matchAttributesToSync="matchAttributesToSync"
|
||||
@save="saveNewConnection"
|
||||
@cancel="showView('authenticationSources')"/>
|
||||
|
||||
<matchAttributes ref="matchAttributes"
|
||||
v-show="views.matchAttributes"
|
||||
@connectionSettings="connectionSettings"
|
||||
@addAttribute="addAttribute"
|
||||
@editAttribute="editAttribute"/>
|
||||
|
||||
<newMatchedAttribute ref="newMatchedAttribute"
|
||||
v-show="views.newMatchedAttribute"
|
||||
@save="saveNewMatchedAttribute"
|
||||
@cancel="cancelNewMatchedAttribute"/>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import authenticationSources from './components/authenticationSources.vue'
|
||||
import newConnection from './components/newConnection.vue'
|
||||
import matchAttributes from './components/matchAttributes.vue'
|
||||
import newMatchedAttribute from "./components/newMatchedAttribute.vue"
|
||||
import axios from "axios"
|
||||
export default {
|
||||
name: 'app',
|
||||
components: {
|
||||
authenticationSources,
|
||||
newConnection,
|
||||
matchAttributes,
|
||||
newMatchedAttribute
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
views: {
|
||||
authenticationSources: true,
|
||||
newConnection: false,
|
||||
matchAttributes: false,
|
||||
newMatchedAttribute: false
|
||||
},
|
||||
selectedRow: null
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
showView(name) {
|
||||
for (let view in this.views) {
|
||||
this.views[view] = false;
|
||||
}
|
||||
this.views[name] = true;
|
||||
},
|
||||
|
||||
newConnection() {
|
||||
this.$refs.newConnection.reset();
|
||||
this.$refs.newConnection.setTitle(this.$root.translation('ID_NEW_AUTHENTICATION_SOURCES'));
|
||||
this.showView('newConnection');
|
||||
},
|
||||
editSettings(row) {
|
||||
this.selectedRow = row;
|
||||
let form = this.$refs.newConnection.rowToForm(row);
|
||||
this.$refs.newConnection.setTitle(this.$root.translation('ID_EDIT_AUTHENTICATION_SOURCES'));
|
||||
this.$refs.newConnection.reset();
|
||||
this.$refs.newConnection.load(form);
|
||||
this.showView('newConnection');
|
||||
},
|
||||
optionSaveButton(row) {
|
||||
row.AUTH_SOURCE_UID = "";
|
||||
let form = this.$refs.newConnection.rowToForm(row);
|
||||
this.$refs.newConnection.setTitle(this.$root.translation('ID_NEW_AUTHENTICATION_SOURCES'));
|
||||
this.$refs.newConnection.reset();
|
||||
this.$refs.newConnection.load(form);
|
||||
this.showView('newConnection');
|
||||
},
|
||||
optionUpdateButton(row, rowResult) {
|
||||
row.AUTH_SOURCE_UID = rowResult.AUTH_SOURCE_UID;
|
||||
this.selectedRow = row;
|
||||
let form = this.$refs.newConnection.rowToForm(row);
|
||||
this.$refs.newConnection.setTitle(this.$root.translation('ID_EDIT_AUTHENTICATION_SOURCES'));
|
||||
this.$refs.newConnection.reset();
|
||||
this.$refs.newConnection.load(form);
|
||||
this.showView('newConnection');
|
||||
},
|
||||
optionNewButton(row) {
|
||||
row.AUTH_SOURCE_UID = "";
|
||||
let form = this.$refs.newConnection.rowToForm(row);
|
||||
this.$refs.newConnection.setTitle(this.$root.translation('ID_NEW_AUTHENTICATION_SOURCES'));
|
||||
this.$refs.newConnection.reset();
|
||||
this.$refs.newConnection.load(form);
|
||||
this.showView('newConnection');
|
||||
},
|
||||
|
||||
saveNewConnection(form) {
|
||||
let formData = this.$refs.newConnection.formToFormData(form);
|
||||
axios.post(this.$root.baseUrl() + "authSources/ldapAdvancedProxy.php?functionAccion=ldapSave", formData)
|
||||
.then(response => {
|
||||
response;
|
||||
this.$refs.authenticationSources.refresh();
|
||||
})
|
||||
.catch(error => {
|
||||
error;
|
||||
})
|
||||
.finally(() => {
|
||||
});
|
||||
this.showView('authenticationSources');
|
||||
},
|
||||
|
||||
matchAttributesToSync() {
|
||||
let gridText = this.$refs.newConnection.getGridText();
|
||||
let rows = JSON.parse(gridText);
|
||||
this.showView('matchAttributes');
|
||||
this.$refs.matchAttributes.setRows(rows);
|
||||
},
|
||||
addAttribute() {
|
||||
this.$refs.newMatchedAttribute.reset();
|
||||
this.showView("newMatchedAttribute");
|
||||
},
|
||||
editAttribute(row, index) {
|
||||
this.$refs.newMatchedAttribute.load(row, index);
|
||||
this.showView("newMatchedAttribute");
|
||||
},
|
||||
saveNewMatchedAttribute(form) {
|
||||
this.$refs.matchAttributes.saveRow(form);
|
||||
this.showView('matchAttributes');
|
||||
},
|
||||
cancelNewMatchedAttribute() {
|
||||
this.showView('matchAttributes');
|
||||
},
|
||||
connectionSettings(rows) {
|
||||
let gridText = JSON.stringify(rows);
|
||||
this.$refs.newConnection.setGridText(gridText);
|
||||
this.showView('newConnection');
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
#app {
|
||||
margin: 20px;
|
||||
}
|
||||
.custom-tooltip > .tooltip-inner{
|
||||
max-width: none;
|
||||
}
|
||||
</style>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 6.7 KiB |
@@ -0,0 +1,279 @@
|
||||
<template>
|
||||
<div>
|
||||
<titleSection :title="$root.translation('ID_AUTH_SOURCES')"></titleSection>
|
||||
<b-form-group class="float-right">
|
||||
<b-button variant="primary"
|
||||
@click="$refs['as-b-modal-upload-file'].show();">
|
||||
<b-icon icon="arrow-up-short" aria-hidden="true"/> {{$root.translation('ID_IMPORT_CONNECTION')}}
|
||||
</b-button>
|
||||
<b-button variant="success"
|
||||
@click="$emit('newConnection')">
|
||||
<b-icon icon="plus" aria-hidden="true"/> {{$root.translation('ID_NEW_CONNECTION')}}
|
||||
</b-button>
|
||||
</b-form-group>
|
||||
<v-server-table ref="vServerTable1"
|
||||
:url="baseUrl"
|
||||
:columns="columns"
|
||||
:options="options"
|
||||
:data="tableData">
|
||||
<div slot="icons"
|
||||
slot-scope="props">
|
||||
<b-button :id="'as-b-button-tooltip-'+props.index"
|
||||
variant="light"
|
||||
size="sm"
|
||||
class="mb-2"
|
||||
@mousedown="$root.$emit('bv::hide::tooltip');"
|
||||
@mouseup="$root.$emit('bv::show::tooltip','as-b-button-tooltip-'+props.index);">
|
||||
<b-icon icon="three-dots-vertical" aria-hidden="true"/>
|
||||
</b-button>
|
||||
<b-tooltip :target="'as-b-button-tooltip-'+props.index"
|
||||
triggers="hover click focus"
|
||||
custom-class="custom-tooltip"
|
||||
placement="left"
|
||||
variant="light">
|
||||
<b-button-group>
|
||||
<b-button @click="importUsers(props.row)"
|
||||
v-b-tooltip.hover
|
||||
:title="$root.translation('ID_IMPORT_USERS')"
|
||||
variant="light">
|
||||
<b-icon icon="arrow-repeat" aria-hidden="true" variant="success"/>
|
||||
</b-button>
|
||||
<b-button @click="downloadRow(props.row)"
|
||||
v-b-tooltip.hover
|
||||
:title="$root.translation('ID_DOWNLOAD_SETTINGS')"
|
||||
variant="light">
|
||||
<b-icon icon="arrow-down" aria-hidden="true" variant="info"/>
|
||||
</b-button>
|
||||
<b-button @click="syncGroups(props.row)"
|
||||
v-b-tooltip.hover
|
||||
:title="$root.translation('ID_GROUPS_SYNCHRONIZE')"
|
||||
variant="light">
|
||||
<b-icon icon="people-fill" aria-hidden="true" variant="warning"/>
|
||||
</b-button>
|
||||
<b-button @click="syncDepartments(props.row)"
|
||||
v-b-tooltip.hover
|
||||
:title="$root.translation('ID_DEPARTMENTS_SYNCHRONIZE')"
|
||||
variant="light">
|
||||
<b-icon icon="diagram3-fill" aria-hidden="true" variant="warning"/>
|
||||
</b-button>
|
||||
<b-button @click="$emit('editSettings',props.row)"
|
||||
v-b-tooltip.hover
|
||||
:title="$root.translation('ID_EDIT_SETTINGS')"
|
||||
variant="light">
|
||||
<b-icon icon="pencil-fill" aria-hidden="true" variant="info"/>
|
||||
</b-button>
|
||||
<b-button @click="deleteRow(props.row)"
|
||||
v-b-tooltip.hover
|
||||
:title="$root.translation('ID_DELETE_SETTINGS')"
|
||||
variant="light">
|
||||
<b-icon icon="trash" aria-hidden="true" variant="danger"/>
|
||||
</b-button>
|
||||
</b-button-group>
|
||||
</b-tooltip>
|
||||
</div>
|
||||
</v-server-table>
|
||||
<b-modal ref="as-b-modal-upload-file"
|
||||
:title="$root.translation('ID_UPLOAD_CONNECTION_SETTINGS')"
|
||||
hide-footer
|
||||
size="lg">
|
||||
<formUploadSource ref="formUploadSource"
|
||||
@cancel="$refs['as-b-modal-upload-file'].hide();$refs.formUploadSource.reset();"
|
||||
@optionSaveButton="optionSaveButton"
|
||||
@optionUpdateButton="optionUpdateButton"
|
||||
@optionNewButton="optionNewButton">
|
||||
</formUploadSource>
|
||||
</b-modal>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import titleSection from "./titleSection.vue"
|
||||
import formUploadSource from "./formUploadSource.vue"
|
||||
import axios from "axios"
|
||||
export default {
|
||||
components: {
|
||||
titleSection,
|
||||
formUploadSource
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
baseUrl: this.$root.baseUrl() + "authSources/authSources_Ajax?action=authSourcesList",
|
||||
columns: [
|
||||
"AUTH_SOURCE_NAME",
|
||||
"AUTH_SOURCE_PROVIDER",
|
||||
"AUTH_SOURCE_SERVER_NAME",
|
||||
"AUTH_SOURCE_PORT",
|
||||
"AUTH_SOURCE_ENABLED_TLS_LABEL",
|
||||
"CURRENT_USERS",
|
||||
"icons"
|
||||
],
|
||||
options: {
|
||||
headings: {
|
||||
AUTH_SOURCE_NAME: this.$root.translation("ID_NAME"),
|
||||
AUTH_SOURCE_PROVIDER: this.$root.translation("ID_PROVIDER"),
|
||||
AUTH_SOURCE_SERVER_NAME: this.$root.translation("ID_SERVER_NAME"),
|
||||
AUTH_SOURCE_PORT: this.$root.translation("ID_PORT"),
|
||||
AUTH_SOURCE_ENABLED_TLS_LABEL: this.$root.translation("ID_ENABLED_TLS"),
|
||||
CURRENT_USERS: this.$root.translation("ID_ACTIVE_USERS"),
|
||||
icons: ""
|
||||
},
|
||||
sortable: [
|
||||
"AUTH_SOURCE_NAME",
|
||||
"AUTH_SOURCE_PROVIDER",
|
||||
"AUTH_SOURCE_SERVER_NAME",
|
||||
"AUTH_SOURCE_PORT",
|
||||
"AUTH_SOURCE_ENABLED_TLS_LABEL",
|
||||
"CURRENT_USERS"
|
||||
],
|
||||
filterable: [
|
||||
"AUTH_SOURCE_NAME",
|
||||
"AUTH_SOURCE_PROVIDER",
|
||||
"AUTH_SOURCE_SERVER_NAME",
|
||||
"AUTH_SOURCE_PORT",
|
||||
"AUTH_SOURCE_ENABLED_TLS_LABEL",
|
||||
"CURRENT_USERS"
|
||||
],
|
||||
texts: {
|
||||
filter: "",
|
||||
filterPlaceholder: this.$root.translation("ID_EMPTY_SEARCH"),
|
||||
count: this.$root.translation("ID_SHOWING_FROM_RECORDS_COUNT"),
|
||||
noResults: this.$root.translation("ID_NO_MATCHING_RECORDS"),
|
||||
loading: this.$root.translation("ID_LOADING_GRID")
|
||||
},
|
||||
perPage: "pageSize" in window ? window.pageSize : 5,
|
||||
perPageValues: [],
|
||||
sortIcon: {
|
||||
is: "glyphicon-sort",
|
||||
base: "glyphicon",
|
||||
up: "glyphicon-chevron-up",
|
||||
down: "glyphicon-chevron-down"
|
||||
},
|
||||
requestKeys: {
|
||||
query: "textFilter"
|
||||
},
|
||||
requestFunction(data) {
|
||||
data.start = (data.page - 1) * data.limit;
|
||||
return axios.get(this.url, {params: data}, {}).catch(function (e) {
|
||||
this.dispatch("error", e);
|
||||
});
|
||||
},
|
||||
responseAdapter(data) {
|
||||
if (!("sources" in data.data)) {
|
||||
data.data.sources = [];
|
||||
}
|
||||
if (!("total_sources" in data.data)) {
|
||||
data.data.total_sources = 0;
|
||||
}
|
||||
|
||||
return {
|
||||
data: data.data.sources,
|
||||
count: data.data.total_sources
|
||||
};
|
||||
}
|
||||
},
|
||||
tableData: []
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
refresh() {
|
||||
this.$refs.vServerTable1.refresh();
|
||||
},
|
||||
deleteRow(row) {
|
||||
this.$root.$emit('bv::hide::tooltip');
|
||||
this.$bvModal.msgBoxConfirm(this.$root.translation('ID_ARE_YOU_SURE_TO_DELETE_CONNECTION_PLEASE_CONFIRM', [row.AUTH_SOURCE_NAME]), {
|
||||
title: " ", //is important because title disappear
|
||||
hideHeaderClose: false,
|
||||
okTitle: this.$root.translation('ID_YES'),
|
||||
okVariant: "success",
|
||||
cancelTitle: this.$root.translation('ID_NO'),
|
||||
cancelVariant: "danger"
|
||||
}).then(value => {
|
||||
if (value === false) {
|
||||
return;
|
||||
}
|
||||
let formData = new FormData();
|
||||
formData.append("action", "deleteAuthSource");
|
||||
formData.append("auth_uid", row.AUTH_SOURCE_UID);
|
||||
axios.post(this.$root.baseUrl() + "authSources/authSources_Ajax", formData)
|
||||
.then(response => {
|
||||
response;
|
||||
this.refresh();
|
||||
})
|
||||
.catch(error => {
|
||||
error;
|
||||
})
|
||||
.finally(() => {
|
||||
});
|
||||
}).catch(err => {
|
||||
err;
|
||||
});
|
||||
},
|
||||
downloadRow(row) {
|
||||
this.$root.$emit('bv::hide::tooltip');
|
||||
let obj = JSON.parse(JSON.stringify(row)); //is need a object copy
|
||||
//compatibility for complement ppsellucianldap
|
||||
obj.AUTH_SOURCE_UID = "";
|
||||
delete obj.AUTH_SOURCE_PASSWORD;
|
||||
delete obj.CURRENT_USERS;
|
||||
delete obj["UPPER(RBAC_AUTHENTICATION_SOURCE.AUTH_SOURCE_NAME)"];
|
||||
delete obj.AUTH_SOURCE_VERSION;
|
||||
delete obj.AUTH_SOURCE_ATTRIBUTES;
|
||||
delete obj.AUTH_SOURCE_OBJECT_CLASSES;
|
||||
delete obj.AUTH_SOURCE_DATA;
|
||||
delete obj.AUTH_SOURCE_ENABLED_TLS_LABEL;
|
||||
delete obj.LDAP_PAGE_SIZE_LIMIT;
|
||||
if ("AUTH_SOURCE_GRID_ATTRIBUTE" in obj) {
|
||||
let convert = [];
|
||||
for (let i in obj.AUTH_SOURCE_GRID_ATTRIBUTE) {
|
||||
let data = obj.AUTH_SOURCE_GRID_ATTRIBUTE[i] || {};
|
||||
convert.push({
|
||||
attributeLdap: data.attributeLdap || '',
|
||||
attributeUser: data.attributeUser || '',
|
||||
attributeRole: data.attributeRole || ''
|
||||
});
|
||||
}
|
||||
obj.AUTH_SOURCE_GRID_ATTRIBUTE = convert;
|
||||
}
|
||||
//creation file
|
||||
let name = obj.AUTH_SOURCE_NAME + ".json";
|
||||
if (window.navigator.msSaveBlob) {
|
||||
window.navigator.msSaveBlob(new Blob([JSON.stringify(obj)], {type: 'application/octet-stream'}), name);
|
||||
return;
|
||||
}
|
||||
let a = document.createElement('a');
|
||||
document.body.appendChild(a);
|
||||
a.href = window.URL.createObjectURL(new Blob([JSON.stringify(obj)], {type: 'application/octet-stream'}));
|
||||
a.download = name;
|
||||
a.click();
|
||||
document.body.removeChild(a);
|
||||
},
|
||||
importUsers(row) {
|
||||
//the return action is in: processmaker/workflow/engine/templates/ldapAdvanced/ldapAdvancedSearch.js
|
||||
location.href = this.$root.baseUrl() + 'authSources_SearchUsers?sUID=' + row.AUTH_SOURCE_UID;
|
||||
},
|
||||
syncGroups(row) {
|
||||
//the return action is in: processmaker/workflow/engine/templates/authSources/authSourcesSynchronize.js
|
||||
location.href = this.$root.baseUrl() + "authSources/authSourcesSynchronize?authUid=" + row.AUTH_SOURCE_UID + "&tab=synchronizeGroups";
|
||||
},
|
||||
syncDepartments(row) {
|
||||
//the return action is in: processmaker/workflow/engine/templates/authSources/authSourcesSynchronize.js
|
||||
location.href = this.$root.baseUrl() + "authSources/authSourcesSynchronize?authUid=" + row.AUTH_SOURCE_UID + "&tab=synchronizeDepartments";
|
||||
},
|
||||
optionSaveButton(fileContent) {
|
||||
this.$refs['as-b-modal-upload-file'].hide();
|
||||
this.$emit('optionSaveButton', fileContent);
|
||||
},
|
||||
optionUpdateButton(fileContent, row) {
|
||||
this.$refs['as-b-modal-upload-file'].hide();
|
||||
this.$emit('optionUpdateButton', fileContent, row);
|
||||
},
|
||||
optionNewButton(fileContent) {
|
||||
this.$refs['as-b-modal-upload-file'].hide();
|
||||
this.$emit('optionNewButton', fileContent);
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,446 @@
|
||||
<template>
|
||||
<div>
|
||||
<b-form @submit.stop.prevent="onSave">
|
||||
<b-container fluid>
|
||||
<b-row>
|
||||
<b-col>
|
||||
<b-form-group :label="$root.translation('ID_AVAILABLE_AUTHENTICATION_SOURCES')" description="">
|
||||
<b-form-select v-model="form.availableAuthenticationSource"
|
||||
:options="availableAuthenticationSources"/>
|
||||
</b-form-group>
|
||||
<b-form-group :label="$root.translation('ID_NAME')">
|
||||
<b-form-input v-model="form.name"
|
||||
:state="validateState('name')"
|
||||
autocomplete="off"/>
|
||||
<b-form-invalid-feedback>{{$root.translation('ID_IS_REQUIRED')}}</b-form-invalid-feedback>
|
||||
</b-form-group>
|
||||
<b-form-group :label="$root.translation('ID_TYPE')">
|
||||
<b-form-select v-model="form.type"
|
||||
:options="types"
|
||||
@change="changeTypeForm"/>
|
||||
</b-form-group>
|
||||
<b-form-group v-if="form.type==='ad'"
|
||||
:label="$root.translation('ID_REQUIRE_SIGN_IN_POLICY_FOR_LDAP')">
|
||||
<b-form-checkbox v-model="form.signInPolicyForLDAP"
|
||||
value="1"
|
||||
unchecked-value="0"/>
|
||||
</b-form-group>
|
||||
<b-form-group :label="$root.translation('ID_SERVER_ADDRESS')">
|
||||
<b-form-input v-model="form.serverAddress"
|
||||
:state="validateState('serverAddress')"
|
||||
autocomplete="off"/>
|
||||
<b-form-invalid-feedback>{{$root.translation('ID_IS_REQUIRED')}}</b-form-invalid-feedback>
|
||||
</b-form-group>
|
||||
<b-form-group :label="$root.translation('ID_PORT')">
|
||||
<b-form-input v-model="form.port"
|
||||
:state="validateState('port')"
|
||||
autocomplete="off"/>
|
||||
<b-form-invalid-feedback>{{$root.translation('ID_IS_REQUIRED')}}</b-form-invalid-feedback>
|
||||
</b-form-group>
|
||||
<b-form-group :label="$root.translation('ID_ENABLE_AUTOMATIC_REGISTER')"
|
||||
label-cols-lg="8">
|
||||
<b-form-checkbox v-model="form.enableAutomaticRegister"
|
||||
value="1"
|
||||
unchecked-value="0"
|
||||
switch/>
|
||||
</b-form-group>
|
||||
<b-form-group :label="$root.translation('ID_ANONYMOUS')"
|
||||
label-cols-lg="8">
|
||||
<b-form-checkbox v-model="form.anonymous"
|
||||
value="1"
|
||||
unchecked-value="0"
|
||||
switch/>
|
||||
</b-form-group>
|
||||
<b-form-group :label="$root.translation('ID_ENABLED_TLS')"
|
||||
label-cols-lg="8">
|
||||
<b-form-checkbox v-model="form.enableTLS"
|
||||
value="1"
|
||||
unchecked-value="0"
|
||||
switch/>
|
||||
</b-form-group>
|
||||
<b-form-group :label="$root.translation('ID_BASE_DN')">
|
||||
<b-form-input v-model="form.baseDN"
|
||||
placeholder="dc=business,dc=net"
|
||||
autocomplete="off"/>
|
||||
</b-form-group>
|
||||
<b-form-group :label="$root.translation('ID_INACTIVE_USERS')">
|
||||
<b-form-input v-model="form.inactiveUsers"
|
||||
autocomplete="off"/>
|
||||
</b-form-group>
|
||||
<b-form-group :label="$root.translation('ID_ROLE')">
|
||||
<b-form-select v-model="form.role"
|
||||
:options="roles"/>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
<b-col>
|
||||
<b-form-group class="text-right">
|
||||
<b-button variant="success" @click="$refs['fas-b-modal-upload-file'].show();">{{$root.translation('ID_IMPORT_SETTINGS')}}</b-button>
|
||||
</b-form-group>
|
||||
<b-form-group class="text-right">
|
||||
<b-link href="#" @click="matchAttributesToSync" v-show="showMathAttributes || testStatus">{{$root.translation('ID_MATCH_ATTRIBUTES_TO_SYNC')}} >></b-link>
|
||||
</b-form-group>
|
||||
<b-form-group :label="$root.translation('ID_USERNAME')">
|
||||
<b-form-input v-model="form.userName"
|
||||
:state="validateState('userName')"
|
||||
autocomplete="off"/>
|
||||
<b-form-invalid-feedback>{{$root.translation('ID_IS_REQUIRED')}}</b-form-invalid-feedback>
|
||||
</b-form-group>
|
||||
<b-form-group :label="$root.translation('ID_PASSWORD')">
|
||||
<b-form-input v-model="form.password"
|
||||
:state="validateState('password')"
|
||||
type="password"
|
||||
autocomplete="off"/>
|
||||
<b-form-invalid-feedback>{{$root.translation('ID_IS_REQUIRED')}}</b-form-invalid-feedback>
|
||||
</b-form-group>
|
||||
<b-form-group :label="$root.translation('ID_USER_IDENTIFIER')">
|
||||
<b-form-input v-model="form.userIdentifier"
|
||||
autocomplete="off"
|
||||
readonly/>
|
||||
</b-form-group>
|
||||
<b-form-group :label="$root.translation('ID_GROUP_IDENTIFIER')">
|
||||
<b-form-input v-model="form.groupIdentifier"
|
||||
autocomplete="off"
|
||||
readonly/>
|
||||
</b-form-group>
|
||||
<b-form-group :label="$root.translation('ID_FILTER_TO_SEARCH_USERS')">
|
||||
<b-form-input v-model="form.filterToSearchUsers"
|
||||
autocomplete="off"/>
|
||||
</b-form-group>
|
||||
<b-form-group :label="$root.translation('ID_USER_CLASS_IDENTIFIER')">
|
||||
<b-form-input v-model="form.userClassIdentifier"
|
||||
autocomplete="off"/>
|
||||
</b-form-group>
|
||||
<b-form-group :label="$root.translation('ID_GROUP_CLASS_IDENTIFIER')">
|
||||
<b-form-input v-model="form.groupClassIdentifier"
|
||||
autocomplete="off"/>
|
||||
</b-form-group>
|
||||
<b-form-group :label="$root.translation('ID_DEPARTMENT_CLASS_IDENTIFIER')">
|
||||
<b-form-input v-model="form.departmentClassIdentifier"
|
||||
autocomplete="off"/>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-row class="text-right">
|
||||
<b-col>
|
||||
<b-form-group>
|
||||
<b-button variant="danger" @click="$emit('cancel')">{{$root.translation('ID_CANCEL')}}</b-button>
|
||||
<b-button type="submit" variant="success">{{buttonLabel}}</b-button>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
</b-row>
|
||||
</b-container>
|
||||
</b-form>
|
||||
<b-modal id="messageForFailedTest"
|
||||
ok-variant="success"
|
||||
ok-only>
|
||||
{{testMessage}}
|
||||
</b-modal>
|
||||
<b-modal ref="fas-b-modal-upload-file"
|
||||
:title="$root.translation('ID_IMPORT_SETTINGS')"
|
||||
hide-footer
|
||||
size="lg">
|
||||
<formUploadSource ref="formUploadSource"
|
||||
@cancel="$refs['fas-b-modal-upload-file'].hide();$refs.formUploadSource.reset();"
|
||||
@optionSaveButton="optionSaveButton"
|
||||
skipNameValidation>
|
||||
</formUploadSource>
|
||||
</b-modal>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import formUploadSource from "./formUploadSource.vue"
|
||||
import { validationMixin } from "vuelidate"
|
||||
import { required } from "vuelidate/lib/validators"
|
||||
import axios from "axios"
|
||||
export default {
|
||||
mixins: [validationMixin],
|
||||
components: {
|
||||
formUploadSource
|
||||
},
|
||||
validations: {
|
||||
form: {
|
||||
name: {
|
||||
required
|
||||
},
|
||||
serverAddress: {
|
||||
required
|
||||
},
|
||||
port: {
|
||||
required
|
||||
},
|
||||
userName: {
|
||||
required
|
||||
},
|
||||
password: {
|
||||
required
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
buttonLabel: this.$root.translation("ID_TEST"),
|
||||
testStatus: false,
|
||||
testMessage: "",
|
||||
showMathAttributes: false,
|
||||
form: {
|
||||
uid: "",
|
||||
availableAuthenticationSource: "ldapAdvanced",
|
||||
name: "",
|
||||
type: "ad",
|
||||
serverAddress: "",
|
||||
port: "389",
|
||||
enableAutomaticRegister: "0",
|
||||
anonymous: "0",
|
||||
enableTLS: "0",
|
||||
baseDN: "",
|
||||
userName: "",
|
||||
password: "",
|
||||
userIdentifier: "samaccountname",
|
||||
filterToSearchUsers: "",
|
||||
gridText: "[]",
|
||||
signInPolicyForLDAP: "1",
|
||||
inactiveUsers: "",
|
||||
role: "PROCESSMAKER_OPERATOR",
|
||||
groupIdentifier: "member",
|
||||
userClassIdentifier: "",
|
||||
groupClassIdentifier: "(objectclass=posixgroup)(objectclass=group)(objectclass=groupofuniquenames)",
|
||||
departmentClassIdentifier: "(objectclass=organizationalunit)"
|
||||
},
|
||||
availableAuthenticationSources: [
|
||||
{value: "ldapAdvanced", text: "LDAP Advanced"},
|
||||
{value: "ldap", text: "LDAP"}
|
||||
],
|
||||
types: [
|
||||
{value: "ad", text: "Active Directory"},
|
||||
{value: "ldap", text: "Open LDAP"},
|
||||
{value: "ds", text: "389 DS"}
|
||||
],
|
||||
roles: [
|
||||
{value: "PROCESSMAKER_ADMIN", text: this.$root.translation("ID_SYSTEM_ADMINISTRATOR")},
|
||||
{value: "PROCESSMAKER_MANAGER", text: this.$root.translation("ID_MANAGER")},
|
||||
{value: "PROCESSMAKER_OPERATOR", text: this.$root.translation("ID_OPERATOR")}
|
||||
],
|
||||
show: true
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
validateState(name) {
|
||||
const {$dirty, $error} = this.$v.form[name];
|
||||
return $dirty ? !$error : null;
|
||||
},
|
||||
reset() {
|
||||
this.form = {
|
||||
uid: "",
|
||||
availableAuthenticationSource: "ldapAdvanced",
|
||||
name: "",
|
||||
type: "ad",
|
||||
serverAddress: "",
|
||||
port: "389",
|
||||
enableAutomaticRegister: "0",
|
||||
anonymous: "0",
|
||||
enableTLS: "0",
|
||||
baseDN: "",
|
||||
userName: "",
|
||||
password: "",
|
||||
userIdentifier: "samaccountname",
|
||||
filterToSearchUsers: "",
|
||||
gridText: "[]",
|
||||
signInPolicyForLDAP: "1",
|
||||
inactiveUsers: "",
|
||||
role: "PROCESSMAKER_OPERATOR",
|
||||
groupIdentifier: "member",
|
||||
userClassIdentifier: "",
|
||||
groupClassIdentifier: "(objectclass=posixgroup)(objectclass=group)(objectclass=groupofuniquenames)",
|
||||
departmentClassIdentifier: "(objectclass=organizationalunit)"
|
||||
};
|
||||
},
|
||||
onSave() {
|
||||
this.$v.form.$touch();
|
||||
if (this.$v.form.$anyError) {
|
||||
return;
|
||||
}
|
||||
if (this.testStatus) {
|
||||
this.$emit("save", this.form);
|
||||
} else {
|
||||
this.test(this.form);
|
||||
}
|
||||
},
|
||||
load(obj) {
|
||||
this.form = obj;
|
||||
},
|
||||
test(form) {
|
||||
let formDataForName = new FormData();
|
||||
formDataForName.append("AUTH_SOURCE_NAME", form.name);
|
||||
axios.post(this.$root.baseUrl() + "authSources/ldapAdvancedProxy.php?functionAccion=ldapVerifyName", formDataForName)
|
||||
.then(response => {
|
||||
//the name is valid
|
||||
if (response.data.row === false || (this.form.uid !== "" && typeof this.form.uid === "string")) {
|
||||
let formData = this.formToFormData(form);
|
||||
axios.post(this.$root.baseUrl() + "authSources/ldapAdvancedProxy.php?functionAccion=ldapTestConnection", formData)
|
||||
.then(response => {
|
||||
//test is successful
|
||||
if (response.data.status === "OK") {
|
||||
this.testStatus = true;
|
||||
this.buttonLabel = this.$root.translation("ID_SAVE");
|
||||
return;
|
||||
}
|
||||
//test fail
|
||||
this.testMessage = response.data.message;
|
||||
this.testStatus = false;
|
||||
this.buttonLabel = this.$root.translation("ID_TEST");
|
||||
this.$bvModal.show("messageForFailedTest");
|
||||
})
|
||||
.catch(error => {
|
||||
error;
|
||||
})
|
||||
.finally(() => {
|
||||
});
|
||||
return;
|
||||
}
|
||||
//the name exist
|
||||
this.$bvModal.msgBoxOk(this.$root.translation('ID_NAME_EXISTS'), {
|
||||
title: " ", //is important because title disappear
|
||||
hideHeaderClose: false,
|
||||
okTitle: this.$root.translation('ID_OK'),
|
||||
okVariant: "success",
|
||||
okOnly: true
|
||||
}).then(value => {
|
||||
if (value === false) {
|
||||
return;
|
||||
}
|
||||
}).catch(err => {
|
||||
err;
|
||||
});
|
||||
})
|
||||
.catch(error => {
|
||||
error;
|
||||
})
|
||||
.finally(() => {
|
||||
});
|
||||
},
|
||||
matchAttributesToSync() {
|
||||
this.$emit('matchAttributesToSync');
|
||||
},
|
||||
setGridText(gridText) {
|
||||
this.form.gridText = gridText;
|
||||
},
|
||||
getGridText() {
|
||||
return this.form.gridText;
|
||||
},
|
||||
optionSaveButton(row) {
|
||||
this.$refs['fas-b-modal-upload-file'].hide();
|
||||
row.AUTH_SOURCE_UID = "";
|
||||
let form = this.rowToForm(row);
|
||||
this.load(form);
|
||||
},
|
||||
rowToForm(row) {
|
||||
let gridText = [];
|
||||
if ("AUTH_SOURCE_GRID_ATTRIBUTE" in row) {
|
||||
for (let i in row.AUTH_SOURCE_GRID_ATTRIBUTE) {
|
||||
let data = row.AUTH_SOURCE_GRID_ATTRIBUTE[i] || {};
|
||||
gridText.push({
|
||||
attributeRole: data.attributeRole || '',
|
||||
attributeUser: data.attributeUser || '',
|
||||
attributeLdap: data.attributeLdap || ''
|
||||
});
|
||||
}
|
||||
}
|
||||
var obj = {
|
||||
uid: row.AUTH_SOURCE_UID,
|
||||
availableAuthenticationSource: row.AUTH_SOURCE_PROVIDER,
|
||||
name: row.AUTH_SOURCE_NAME,
|
||||
type: row.LDAP_TYPE,
|
||||
serverAddress: row.AUTH_SOURCE_SERVER_NAME,
|
||||
port: row.AUTH_SOURCE_PORT,
|
||||
enableAutomaticRegister: row.AUTH_SOURCE_AUTO_REGISTER,
|
||||
anonymous: row.AUTH_ANONYMOUS,
|
||||
enableTLS: row.AUTH_SOURCE_ENABLED_TLS,
|
||||
baseDN: row.AUTH_SOURCE_BASE_DN,
|
||||
userName: row.AUTH_SOURCE_SEARCH_USER,
|
||||
password: row.AUTH_SOURCE_PASSWORD,
|
||||
userIdentifier: row.AUTH_SOURCE_IDENTIFIER_FOR_USER,
|
||||
filterToSearchUsers: row.AUTH_SOURCE_USERS_FILTER,
|
||||
gridText: JSON.stringify(gridText),
|
||||
signInPolicyForLDAP: row.AUTH_SOURCE_SIGNIN_POLICY_FOR_LDAP,
|
||||
inactiveUsers: row.AUTH_SOURCE_RETIRED_OU,
|
||||
role: row.USR_ROLE,
|
||||
groupIdentifier: row.AUTH_SOURCE_IDENTIFIER_FOR_USER_GROUP,
|
||||
userClassIdentifier: row.AUTH_SOURCE_IDENTIFIER_FOR_USER_CLASS,
|
||||
groupClassIdentifier: row.GROUP_CLASS_IDENTIFIER,
|
||||
departmentClassIdentifier: row.DEPARTMENT_CLASS_IDENTIFIER
|
||||
};
|
||||
return obj;
|
||||
},
|
||||
formToFormData(form) {
|
||||
let formData = new FormData();
|
||||
formData.append("AUTH_SOURCE_UID", form.uid);
|
||||
formData.append("AUTH_SOURCE_NAME", form.name);
|
||||
formData.append("AUTH_SOURCE_PROVIDER", form.availableAuthenticationSource);
|
||||
formData.append("LDAP_TYPE", form.type);
|
||||
formData.append("AUTH_SOURCE_AUTO_REGISTER", form.enableAutomaticRegister);
|
||||
formData.append("AUTH_SOURCE_SERVER_NAME", form.serverAddress);
|
||||
formData.append("AUTH_SOURCE_PORT", form.port);
|
||||
formData.append("AUTH_SOURCE_ENABLED_TLS", form.enableTLS);
|
||||
formData.append("AUTH_SOURCE_BASE_DN", form.baseDN);
|
||||
formData.append("AUTH_ANONYMOUS", form.anonymous);
|
||||
formData.append("AUTH_SOURCE_SEARCH_USER", form.userName);
|
||||
formData.append("AUTH_SOURCE_PASSWORD", form.password);
|
||||
formData.append("AUTH_SOURCE_IDENTIFIER_FOR_USER", form.userIdentifier);
|
||||
formData.append("AUTH_SOURCE_USERS_FILTER", form.filterToSearchUsers);
|
||||
formData.append("AUTH_SOURCE_RETIRED_OU", form.inactiveUsers);
|
||||
formData.append("AUTH_SOURCE_ATTRIBUTE_IDS", "USR_FIRSTNAME|USR_LASTNAME|USR_EMAIL|USR_DUE_DATE|USR_STATUS|USR_STATUS_ID|USR_ADDRESS|USR_PHONE|USR_FAX|USR_CELLULAR|USR_ZIP_CODE|USR_POSITION|USR_BIRTHDAY|USR_COST_BY_HOUR|USR_UNIT_COST|USR_PMDRIVE_FOLDER_UID|USR_BOOKMARK_START_CASES|USR_TIME_ZONE|USR_DEFAULT_LANG|USR_LAST_LOGIN|");
|
||||
formData.append("AUTH_SOURCE_SHOWGRID", "");
|
||||
formData.append("AUTH_SOURCE_GRID_TEXT", form.gridText);
|
||||
formData.append("AUTH_SOURCE_SHOWGRID-checkbox", "on");
|
||||
//additional
|
||||
formData.append("AUTH_SOURCE_SIGNIN_POLICY_FOR_LDAP", form.signInPolicyForLDAP);
|
||||
formData.append("USR_ROLE", form.role);
|
||||
formData.append("AUTH_SOURCE_IDENTIFIER_FOR_USER_GROUP", form.groupIdentifier);
|
||||
formData.append("AUTH_SOURCE_IDENTIFIER_FOR_USER_CLASS", form.userClassIdentifier);
|
||||
formData.append("GROUP_CLASS_IDENTIFIER", form.groupClassIdentifier);
|
||||
formData.append("DEPARTMENT_CLASS_IDENTIFIER", form.departmentClassIdentifier);
|
||||
//compatibility for complement ppsellucianldap
|
||||
formData.append("CUSTOM_CHECK_AUTH_SOURCE_IDENTIFIER_FOR_USER", 0);
|
||||
formData.append("CUSTOM_CHECK_AUTH_SOURCE_IDENTIFIER_FOR_USER_GROUP", 0);
|
||||
formData.append("CUSTOM_CHECK_DEPARTMENT_CLASS_IDENTIFIER", 0);
|
||||
formData.append("CUSTOM_CHECK_GROUP_CLASS_IDENTIFIER", 0);
|
||||
formData.append("CUSTOM_AUTH_SOURCE_IDENTIFIER_FOR_USER", "");
|
||||
formData.append("CUSTOM_AUTH_SOURCE_IDENTIFIER_FOR_USER_GROUP", "");
|
||||
formData.append("CUSTOM_DEPARTMENT_CLASS_IDENTIFIER", "");
|
||||
formData.append("CUSTOM_GROUP_CLASS_IDENTIFIER", "");
|
||||
return formData;
|
||||
},
|
||||
changeTypeForm(value) {
|
||||
if (value === "ad") {
|
||||
this.form.userIdentifier = "samaccountname";
|
||||
this.form.groupIdentifier = "member";
|
||||
this.form.signInPolicyForLDAP = "1";
|
||||
}
|
||||
if (value === "ldap") {
|
||||
this.form.userIdentifier = "uid";
|
||||
this.form.groupIdentifier = "memberuid";
|
||||
this.form.signInPolicyForLDAP = "0";
|
||||
}
|
||||
if (value === "ds") {
|
||||
this.form.userIdentifier = "uid";
|
||||
this.form.groupIdentifier = "uniquemember";
|
||||
this.form.signInPolicyForLDAP = "0";
|
||||
}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
form: {
|
||||
handler() {
|
||||
this.testStatus = false;
|
||||
this.buttonLabel = this.$root.translation("ID_TEST");
|
||||
this.showMathAttributes = !(this.form.uid === "");
|
||||
},
|
||||
deep: true
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,166 @@
|
||||
<template>
|
||||
<div>
|
||||
<b-form @submit.stop.prevent="onSave">
|
||||
<b-container fluid>
|
||||
<b-row>
|
||||
<b-col>
|
||||
<b-form-group :label="$root.translation('ID_PLEASE_ADD_THE_FILE_SETTINGS_TO_BE_UPLOADED')" v-if="newName==true">
|
||||
<b-form-file v-model="form.connectionSettings"
|
||||
@change="change"
|
||||
:state="validateState('connectionSettings')"
|
||||
:placeholder="$root.translation('ID_CHOOSE_A_FILE_OR_DROP_IT_HERE')"
|
||||
:drop-placeholder="$root.translation('ID_DROP_FILE_HERE')">
|
||||
</b-form-file>
|
||||
<b-form-invalid-feedback>{{$root.translation('ID_IS_REQUIRED')}}</b-form-invalid-feedback>
|
||||
</b-form-group>
|
||||
<b-form-group :label="$root.translation('ID_CONNECTION_WITH_THE_SAME_NAME_PLEASE_SELECT_AN_OPTION')" v-else>
|
||||
<b-form-file v-model="form.connectionSettings"
|
||||
@change="change"
|
||||
:state="validateState('connectionSettings')"
|
||||
:placeholder="$root.translation('ID_CHOOSE_A_FILE_OR_DROP_IT_HERE')"
|
||||
:drop-placeholder="$root.translation('ID_DROP_FILE_HERE')">
|
||||
</b-form-file>
|
||||
<b-form-invalid-feedback>{{$root.translation('ID_IS_REQUIRED')}}</b-form-invalid-feedback>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-row class="text-center">
|
||||
<b-col>
|
||||
<b-form-group v-if="newName==true">
|
||||
<b-button variant="danger"
|
||||
@click="$emit('cancel')">{{$root.translation('ID_CANCEL')}}</b-button>
|
||||
<b-button type="submit"
|
||||
variant="success"
|
||||
:disabled='isDisabled'
|
||||
id="save">{{$root.translation('ID_SAVE')}}</b-button>
|
||||
</b-form-group>
|
||||
<b-form-group v-else>
|
||||
<b-button variant="danger"
|
||||
@click="$emit('cancel')">{{$root.translation('ID_CANCEL')}}</b-button>
|
||||
<b-button type="submit"
|
||||
variant="primary"
|
||||
:disabled='isDisabled'
|
||||
id="update">{{$root.translation('ID_UPDATE_SETTINGS')}}</b-button>
|
||||
<b-button type="submit"
|
||||
variant="success"
|
||||
:disabled='isDisabled'
|
||||
id="new">{{$root.translation('ID_NEW_CONNECTION')}}</b-button>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
</b-row>
|
||||
</b-container>
|
||||
</b-form>
|
||||
<b-modal id="messageForInvalidFileExtension" ok-only static>{{$root.translation('ID_PMG_SELECT_FILE')}}</b-modal>
|
||||
<b-modal id="messageForInvalidFileFormat" ok-only static>{{$root.translation('ID_INVALID_DATA')}}</b-modal>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { validationMixin } from "vuelidate"
|
||||
import { required } from "vuelidate/lib/validators"
|
||||
import axios from "axios"
|
||||
export default {
|
||||
mixins: [validationMixin],
|
||||
props: {
|
||||
skipNameValidation: Boolean
|
||||
},
|
||||
components: {
|
||||
},
|
||||
validations: {
|
||||
form: {
|
||||
connectionSettings: {
|
||||
required
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
form: {
|
||||
connectionSettings: []
|
||||
},
|
||||
fileContent: {},
|
||||
isDisabled: true,
|
||||
validationResult: {},
|
||||
newName: true
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
validateState(name) {
|
||||
const {$dirty, $error} = this.$v.form[name];
|
||||
return $dirty ? !$error : null;
|
||||
},
|
||||
onSave(e) {
|
||||
this.$v.form.$touch();
|
||||
if (this.$v.form.$anyError) {
|
||||
return;
|
||||
}
|
||||
//validation
|
||||
if (e.submitter.id === "save") {
|
||||
this.$emit('optionSaveButton', this.fileContent);
|
||||
}
|
||||
if (e.submitter.id === "update") {
|
||||
this.$emit('optionUpdateButton', this.fileContent, this.validationResult.row);
|
||||
}
|
||||
if (e.submitter.id === "new") {
|
||||
this.fileContent.AUTH_SOURCE_NAME = this.validationResult.suggestName;
|
||||
this.$emit('optionNewButton', this.fileContent);
|
||||
}
|
||||
},
|
||||
reset() {
|
||||
this.newName = true;
|
||||
this.validationResult = {};
|
||||
this.form.connectionSettings = [];
|
||||
},
|
||||
change(e) {
|
||||
let input = e.target;
|
||||
if (input.files.length <= 0) {
|
||||
return;
|
||||
}
|
||||
let file = input.files[0];
|
||||
if (file.name.indexOf(".json") < 0) {
|
||||
this.$bvModal.show("messageForInvalidFileExtension");
|
||||
this.reset();
|
||||
this.isDisabled = true;
|
||||
return;
|
||||
}
|
||||
let reader = new FileReader();
|
||||
reader.readAsText(file, "UTF-8");
|
||||
reader.onload = (e) => {
|
||||
this.fileContent = JSON.parse(e.target.result);
|
||||
//validation content
|
||||
if (!("AUTH_SOURCE_NAME" in this.fileContent)) {
|
||||
this.$bvModal.show("messageForInvalidFileFormat");
|
||||
this.reset();
|
||||
this.isDisabled = true;
|
||||
return;
|
||||
}
|
||||
if (this.skipNameValidation === true) {
|
||||
this.isDisabled = false;
|
||||
return;
|
||||
}
|
||||
//validation name
|
||||
let formData = new FormData();
|
||||
formData.append("AUTH_SOURCE_NAME", this.fileContent.AUTH_SOURCE_NAME);
|
||||
axios.post(this.$root.baseUrl() + "authSources/ldapAdvancedProxy.php?functionAccion=ldapVerifyName", formData)
|
||||
.then(response => {
|
||||
this.newName = response.data.row === false;
|
||||
this.validationResult = response.data;
|
||||
this.isDisabled = false;
|
||||
})
|
||||
.catch(error => {
|
||||
error;
|
||||
this.isDisabled = true;
|
||||
})
|
||||
.finally(() => {
|
||||
});
|
||||
};
|
||||
reader.onerror = () => {
|
||||
};
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,130 @@
|
||||
<template>
|
||||
<div>
|
||||
<titleSection :title="$root.translation('ID_MATCH_ATTRIBUTES')"></titleSection>
|
||||
<b-form-group class="text-right">
|
||||
<b-link href="#" @click="connectionSettings"> << {{$root.translation('ID_CONNECTION_SETTINGS')}}</b-link>
|
||||
</b-form-group>
|
||||
<b-form-group class="float-right">
|
||||
<b-button variant="success" @click="addAttribute">{{$root.translation('ID_ADD_ATTRIBUTE')}}</b-button>
|
||||
</b-form-group>
|
||||
<v-client-table :columns="columns"
|
||||
:options="options"
|
||||
:data="rows">
|
||||
<div slot="icons"
|
||||
slot-scope="props">
|
||||
<b-button-group>
|
||||
<b-button @click="editAttribute(props.row,props.index)"
|
||||
v-b-tooltip.hover
|
||||
:title="$root.translation('ID_EDIT_ATTRIBUTE')"
|
||||
variant="light">
|
||||
<b-icon icon="pencil-fill" aria-hidden="true" variant="info"/>
|
||||
</b-button>
|
||||
<b-button @click="deleteAttribute(props.index,props.row)"
|
||||
v-b-tooltip.hover
|
||||
:title="$root.translation('ID_DELETE_ATTRIBUTE')"
|
||||
variant="light">
|
||||
<b-icon icon="trash" aria-hidden="true" variant="danger"/>
|
||||
</b-button>
|
||||
</b-button-group>
|
||||
</div>
|
||||
</v-client-table>
|
||||
<b-modal id="messageForDeleteAttribute"
|
||||
@ok="deleteAttributeProcess"
|
||||
:ok-title="$root.translation('ID_YES')"
|
||||
ok-variant="success"
|
||||
:cancel-title="$root.translation('ID_NO')"
|
||||
cancel-variant="danger">
|
||||
{{$root.translation('ID_ARE_YOU_SURE_TO_DELETE_ATTRIBUTE_PLEASE_CONFIRM',[selectedRowName])}}
|
||||
</b-modal>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import titleSection from "./titleSection.vue"
|
||||
export default {
|
||||
components: {
|
||||
titleSection
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
selectedRowIndex: 0,
|
||||
selectedRowName: "",
|
||||
columns: [
|
||||
"attributeRole",
|
||||
"attributeUser",
|
||||
"attributeLdap",
|
||||
"icons"
|
||||
],
|
||||
options: {
|
||||
headings: {
|
||||
attributeRole: this.$root.translation('ID_ROLE'),
|
||||
attributeUser: this.$root.translation('ID_USER_FIELD'),
|
||||
attributeLdap: this.$root.translation('ID_LDAP_FIELD'),
|
||||
icons: ""
|
||||
},
|
||||
sortable: [
|
||||
"attributeLdap",
|
||||
"attributeRole",
|
||||
"attributeUser"
|
||||
],
|
||||
filterable: [
|
||||
"attributeLdap",
|
||||
"attributeRole",
|
||||
"attributeUser"
|
||||
],
|
||||
texts: {
|
||||
filter: "",
|
||||
filterPlaceholder: this.$root.translation("ID_EMPTY_SEARCH"),
|
||||
count: this.$root.translation("ID_SHOWING_FROM_RECORDS_COUNT"),
|
||||
noResults: this.$root.translation("ID_NO_MATCHING_RECORDS"),
|
||||
loading: this.$root.translation("ID_LOADING_GRID")
|
||||
},
|
||||
perPage: 5,
|
||||
perPageValues: [],
|
||||
sortIcon: {
|
||||
is: "glyphicon-sort",
|
||||
base: "glyphicon",
|
||||
up: "glyphicon-chevron-up",
|
||||
down: "glyphicon-chevron-down"
|
||||
}
|
||||
},
|
||||
rows: []
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
setRows(rows) {
|
||||
this.rows = rows;
|
||||
},
|
||||
addAttribute() {
|
||||
this.$emit("addAttribute");
|
||||
},
|
||||
editAttribute(row, index) {
|
||||
this.$emit("editAttribute", row, index);
|
||||
},
|
||||
deleteAttribute(index, row) {
|
||||
this.selectedRowName = row.attributeLdap;
|
||||
this.selectedRowIndex = index;
|
||||
this.$bvModal.show("messageForDeleteAttribute");
|
||||
},
|
||||
deleteAttributeProcess() {
|
||||
this.rows.splice(this.selectedRowIndex - 1, 1);
|
||||
},
|
||||
saveRow(obj) {
|
||||
if (obj.index === null) {
|
||||
delete obj.index;
|
||||
this.rows.push(obj);
|
||||
} else {
|
||||
let i = obj.index;
|
||||
delete obj.index;
|
||||
this.rows[i - 1] = obj;
|
||||
}
|
||||
},
|
||||
connectionSettings() {
|
||||
this.$emit('connectionSettings', this.rows);
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,55 @@
|
||||
<template>
|
||||
<div>
|
||||
<titleSection :title="title"></titleSection>
|
||||
<formAuthenticationSources ref="formAuthenticationSources"
|
||||
@matchAttributesToSync="$emit('matchAttributesToSync',$event)"
|
||||
@cancel="cancel"
|
||||
@save="$emit('save',$event)"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import titleSection from "./titleSection.vue"
|
||||
import formAuthenticationSources from "./formAuthenticationSources.vue"
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
title: "#"
|
||||
};
|
||||
},
|
||||
components: {
|
||||
titleSection,
|
||||
formAuthenticationSources
|
||||
},
|
||||
methods: {
|
||||
setTitle(value) {
|
||||
this.title = value;
|
||||
},
|
||||
reset() {
|
||||
this.$refs.formAuthenticationSources.reset();
|
||||
},
|
||||
load(obj) {
|
||||
this.$refs.formAuthenticationSources.load(obj);
|
||||
},
|
||||
cancel() {
|
||||
this.reset();
|
||||
this.$emit('cancel');
|
||||
},
|
||||
rowToForm(row) {
|
||||
return this.$refs.formAuthenticationSources.rowToForm(row);
|
||||
},
|
||||
formToFormData(form) {
|
||||
return this.$refs.formAuthenticationSources.formToFormData(form);
|
||||
},
|
||||
setGridText(data) {
|
||||
this.$refs.formAuthenticationSources.setGridText(data);
|
||||
},
|
||||
getGridText() {
|
||||
return this.$refs.formAuthenticationSources.getGridText();
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,157 @@
|
||||
<template>
|
||||
<div>
|
||||
<titleSection :title="$root.translation('ID_NEW_MATCHED_ATTRIBUTE')"></titleSection>
|
||||
<b-form @submit.stop.prevent="onSave">
|
||||
<b-container fluid>
|
||||
<b-row>
|
||||
<b-col>
|
||||
<b-form-group :label="$root.translation('ID_ROLE')">
|
||||
<b-form-select v-model="form.attributeRole"
|
||||
:options="roles"
|
||||
@change="changeRoles"/>
|
||||
</b-form-group>
|
||||
<b-form-group :label="$root.translation('ID_PROCESSMAKER_USER_FIELD')" description="">
|
||||
<b-form-select v-model="form.attributeUser"
|
||||
:options="userAttributes"/>
|
||||
</b-form-group>
|
||||
<b-form-group :label="$root.translation('ID_LDAP_ATTRIBUTE')">
|
||||
<b-form-input v-model="form.attributeLdap"
|
||||
:state="true"
|
||||
autocomplete="off"/>
|
||||
<b-form-invalid-feedback>{{$root.translation('ID_IS_REQUIRED')}}</b-form-invalid-feedback>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-row class="text-right">
|
||||
<b-col>
|
||||
<b-form-group>
|
||||
<b-button variant="danger" @click="$emit('cancel')">{{$root.translation('ID_CANCEL')}}</b-button>
|
||||
<b-button type="submit" variant="success">{{$root.translation('ID_SAVE')}}</b-button>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
</b-row>
|
||||
</b-container>
|
||||
</b-form>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import axios from "axios"
|
||||
import { validationMixin } from "vuelidate"
|
||||
import { required } from "vuelidate/lib/validators"
|
||||
import titleSection from "./titleSection.vue"
|
||||
export default {
|
||||
mixins: [validationMixin],
|
||||
components: {
|
||||
titleSection
|
||||
},
|
||||
validations: {
|
||||
form: {
|
||||
attributeLdap: {
|
||||
required
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
form: {
|
||||
index: null,
|
||||
attributeLdap: "",
|
||||
attributeRole: "",
|
||||
attributeUser: ""
|
||||
},
|
||||
roles: [{
|
||||
value: "", text: "All"
|
||||
}],
|
||||
userAttributes: []
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
let promise = this.getRolesList();
|
||||
promise.then(response => {
|
||||
response;
|
||||
this.changeRoles();
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
validateState(name) {
|
||||
const {$dirty, $error} = this.$v.form[name];
|
||||
return $dirty ? !$error : null;
|
||||
},
|
||||
onSave() {
|
||||
this.$v.form.$touch();
|
||||
if (this.$v.form.$anyError) {
|
||||
return;
|
||||
}
|
||||
this.$emit("save", this.form);
|
||||
},
|
||||
load(row, index) {
|
||||
this.form.index = index;
|
||||
this.form.attributeLdap = row.attributeLdap;
|
||||
this.form.attributeRole = row.attributeRole;
|
||||
this.form.attributeUser = row.attributeUser;
|
||||
},
|
||||
reset() {
|
||||
this.form = {
|
||||
index: null,
|
||||
attributeLdap: "",
|
||||
attributeRole: "",
|
||||
attributeUser: ""
|
||||
};
|
||||
},
|
||||
changeRoles() {
|
||||
let formData = new FormData();
|
||||
formData.append("option", "listByRol");
|
||||
formData.append("rolCode", this.form.attributeRole);
|
||||
return axios.post(this.$root.baseUrl() + "userExtendedAttributes/index", formData)
|
||||
.then(response => {
|
||||
response;
|
||||
let data = [{
|
||||
value: "",
|
||||
text: this.$root.translation('ID_SELECTED_FIELD')
|
||||
}];
|
||||
for (let i in response.data.data) {
|
||||
data.push({
|
||||
value: response.data.data[i].value,
|
||||
text: response.data.data[i].text
|
||||
});
|
||||
}
|
||||
this.userAttributes = data;
|
||||
})
|
||||
.catch(error => {
|
||||
error;
|
||||
})
|
||||
.finally(() => {
|
||||
});
|
||||
},
|
||||
getRolesList() {
|
||||
let formData = new FormData();
|
||||
formData.append("request", "allRoles");
|
||||
return axios.post(this.$root.baseUrl() + "roles/roles_Ajax", formData)
|
||||
.then(response => {
|
||||
response;
|
||||
let data = [{
|
||||
value: "",
|
||||
text: this.$root.translation('ID_ALL')
|
||||
}];
|
||||
for (let i in response.data) {
|
||||
data.push({
|
||||
value: response.data[i].ROL_CODE,
|
||||
text: response.data[i].ROL_NAME
|
||||
});
|
||||
}
|
||||
this.roles = data;
|
||||
})
|
||||
.catch(error => {
|
||||
error;
|
||||
})
|
||||
.finally(() => {
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,18 @@
|
||||
<template>
|
||||
<div>
|
||||
<h3 class="text-primary">
|
||||
{{title}}
|
||||
</h3>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default{
|
||||
props: {
|
||||
title: String
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
</style>
|
||||
33
workflow/engine/methods/authenticationSources/src/main.js
Normal file
33
workflow/engine/methods/authenticationSources/src/main.js
Normal file
@@ -0,0 +1,33 @@
|
||||
import Vue from 'vue'
|
||||
import {BootstrapVue, IconsPlugin} from 'bootstrap-vue'
|
||||
import 'bootstrap/dist/css/bootstrap.css'
|
||||
import 'bootstrap-vue/dist/bootstrap-vue.css'
|
||||
import {ClientTable} from 'vue-tables-2'
|
||||
import {ServerTable} from 'vue-tables-2'
|
||||
import App from './App.vue';
|
||||
|
||||
Vue.config.productionTip = false
|
||||
Vue.use(BootstrapVue)
|
||||
Vue.use(IconsPlugin)
|
||||
Vue.use(ClientTable, {}, false, 'bootstrap4', {});
|
||||
Vue.use(ServerTable, {}, false, 'bootstrap4', {});
|
||||
|
||||
new Vue({
|
||||
render: h => h(App),
|
||||
methods: {
|
||||
translation(text, params) {
|
||||
if ("TRANSLATIONS" in window && text in window.TRANSLATIONS) {
|
||||
text = window.TRANSLATIONS[text];
|
||||
if (params != undefined && "length" in params) {
|
||||
for (let i = 0; i < params.length; i++) {
|
||||
text = text.replace("{" + i + "}", params[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
return text;
|
||||
},
|
||||
baseUrl() {
|
||||
return "../";
|
||||
}
|
||||
}
|
||||
}).$mount('#app');
|
||||
@@ -0,0 +1,3 @@
|
||||
module.exports = {
|
||||
publicPath: '/lib/authenticationSources/'
|
||||
};
|
||||
@@ -133,8 +133,6 @@ switch ($req) {
|
||||
$row = $result->getRow();
|
||||
$row['APP_MSG_STATUS'] = ucfirst($row['APP_MSG_STATUS']);
|
||||
$row['APP_MSG_DATE'] = DateTime::convertUtcToTimeZone($row['APP_MSG_DATE']);
|
||||
$row['APP_MSG_TO'] = htmlentities($row['APP_MSG_TO'], ENT_HTML5, "UTF-8");
|
||||
$row['APP_MSG_ERROR'] = htmlentities($row['APP_MSG_ERROR'], ENT_HTML5, "UTF-8");
|
||||
|
||||
switch ($filterBy) {
|
||||
case 'CASES':
|
||||
|
||||
@@ -1,26 +1,7 @@
|
||||
<?php
|
||||
/**
|
||||
* upgrade.php
|
||||
*
|
||||
* ProcessMaker Open Source Edition
|
||||
* Copyright (C) 2004 - 2008 Colosa Inc.23
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
|
||||
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
|
||||
*/
|
||||
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use ProcessMaker\BusinessModel\Role;
|
||||
use ProcessMaker\Exception\RBACException;
|
||||
|
||||
global $RBAC;
|
||||
@@ -250,46 +231,54 @@ switch ($REQUEST) {
|
||||
}
|
||||
break;
|
||||
case 'rolesList':
|
||||
$co = new Configurations();
|
||||
$config = $co->getConfiguration( 'rolesList', 'pageSize', '', $_SESSION['USER_LOGGED'] );
|
||||
$limit_size = isset( $config['pageSize'] ) ? $config['pageSize'] : 20;
|
||||
$configurations = new Configurations();
|
||||
$config = $configurations->getConfiguration('rolesList', 'pageSize', '', $_SESSION['USER_LOGGED']);
|
||||
$limitSize = isset($config['pageSize']) ? $config['pageSize'] : 20;
|
||||
|
||||
$start = isset( $_POST['start'] ) ? $_POST['start'] : 0;
|
||||
$limit = isset( $_POST['limit'] ) ? $_POST['limit'] : $limit_size;
|
||||
$filter = isset( $_REQUEST['textFilter'] ) ? $_REQUEST['textFilter'] : '';
|
||||
$start = isset($_POST['start']) ? $_POST['start'] : 0;
|
||||
$limit = isset($_POST['limit']) ? $_POST['limit'] : $limitSize;
|
||||
$filter = isset($_REQUEST['textFilter']) ? $_REQUEST['textFilter'] : '';
|
||||
|
||||
global $RBAC;
|
||||
$Criterias = $RBAC->getAllRolesFilter( $start, $limit, $filter );
|
||||
$criterias = $RBAC->getAllRolesFilter($start, $limit, $filter);
|
||||
|
||||
$rs = RolesPeer::DoSelectRs( $Criterias['LIST'] );
|
||||
$rs->setFetchmode( ResultSet::FETCHMODE_ASSOC );
|
||||
$rs = RolesPeer::DoSelectRs($criterias['LIST']);
|
||||
$rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||
|
||||
$content = new Content();
|
||||
$rNames = $content->getAllContentsByRole();
|
||||
$aUsers = $RBAC->getAllUsersByRole();
|
||||
$aRows = Array ();
|
||||
$names = $content->getAllContentsByRole();
|
||||
$users = $RBAC->getAllUsersByRole();
|
||||
$rows = Array();
|
||||
while ($rs->next()) {
|
||||
$aRows[] = $rs->getRow();
|
||||
$index = sizeof( $aRows ) - 1;
|
||||
$roleUid = $aRows[$index]['ROL_UID'];
|
||||
if (!isset($rNames[$roleUid])) {
|
||||
$rows[] = $rs->getRow();
|
||||
$index = sizeof($rows) - 1;
|
||||
$roleUid = $rows[$index]['ROL_UID'];
|
||||
if (!isset($names[$roleUid])) {
|
||||
$rol = new Roles();
|
||||
$row = $rol->load($roleUid);
|
||||
$rolname = $row['ROL_NAME'];
|
||||
$rolName = $row['ROL_NAME'];
|
||||
} else {
|
||||
$rolname = $rNames[$roleUid];
|
||||
$rolName = $names[$roleUid];
|
||||
}
|
||||
$aRows[$index]['ROL_NAME'] = $rolname;
|
||||
$aRows[$index]['TOTAL_USERS'] = isset( $aUsers[$roleUid] ) ? $aUsers[$roleUid] : 0;
|
||||
$rows[$index]['ROL_NAME'] = $rolName;
|
||||
$rows[$index]['TOTAL_USERS'] = isset($users[$roleUid]) ? $users[$roleUid] : 0;
|
||||
}
|
||||
|
||||
$oData = RolesPeer::doSelectRS( $Criterias['COUNTER'] );
|
||||
$oData->setFetchmode( ResultSet::FETCHMODE_ASSOC );
|
||||
$oData->next();
|
||||
$row = $oData->getRow();
|
||||
$total_roles = $row['CNT'];
|
||||
$data = RolesPeer::doSelectRS($criterias['COUNTER']);
|
||||
$data->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||
$data->next();
|
||||
$row = $data->getRow();
|
||||
$totalRoles = $row['CNT'];
|
||||
|
||||
echo '{roles: ' . G::json_encode( $aRows ) . ', total_roles: ' . $total_roles . '}';
|
||||
$result = [
|
||||
'roles' => $rows,
|
||||
'total_roles' => $totalRoles
|
||||
];
|
||||
echo G::json_encode($result);
|
||||
break;
|
||||
case 'allRoles':
|
||||
$roles = Role::getAllRoles();
|
||||
echo G::json_encode($roles);
|
||||
break;
|
||||
case 'updatePageSize':
|
||||
$c = new Configurations();
|
||||
|
||||
24
workflow/engine/methods/userExtendedAttributes/.gitignore
vendored
Normal file
24
workflow/engine/methods/userExtendedAttributes/.gitignore
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
.DS_Store
|
||||
node_modules
|
||||
/dist
|
||||
|
||||
|
||||
# local env files
|
||||
.env.local
|
||||
.env.*.local
|
||||
|
||||
# Log files
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
|
||||
# Editor directories and files
|
||||
.idea
|
||||
.vscode
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
/nbproject/private/
|
||||
24
workflow/engine/methods/userExtendedAttributes/README.md
Normal file
24
workflow/engine/methods/userExtendedAttributes/README.md
Normal file
@@ -0,0 +1,24 @@
|
||||
# my-app
|
||||
|
||||
## Project setup
|
||||
```
|
||||
npm install
|
||||
```
|
||||
|
||||
### Compiles and hot-reloads for development
|
||||
```
|
||||
npm run serve
|
||||
```
|
||||
|
||||
### Compiles and minifies for production
|
||||
```
|
||||
npm run build
|
||||
```
|
||||
|
||||
### Lints and fixes files
|
||||
```
|
||||
npm run lint
|
||||
```
|
||||
|
||||
### Customize configuration
|
||||
See [Configuration Reference](https://cli.vuejs.org/config/).
|
||||
@@ -0,0 +1,5 @@
|
||||
module.exports = {
|
||||
presets: [
|
||||
'@vue/cli-plugin-babel/preset'
|
||||
]
|
||||
}
|
||||
233
workflow/engine/methods/userExtendedAttributes/index.php
Normal file
233
workflow/engine/methods/userExtendedAttributes/index.php
Normal file
@@ -0,0 +1,233 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use ProcessMaker\BusinessModel\Role;
|
||||
use ProcessMaker\Model\UserExtendedAttributes;
|
||||
|
||||
global $G_PUBLISH;
|
||||
$G_PUBLISH = new Publisher();
|
||||
try {
|
||||
$option = empty($_REQUEST["option"]) ? '' : $_REQUEST["option"];
|
||||
switch ($option) {
|
||||
case "list":
|
||||
$rbacRoles = Role::getAllRoles();
|
||||
$orders = [
|
||||
"attributeName" => "UEA_NAME",
|
||||
"attribute" => "UEA_ATTRIBUTE_ID",
|
||||
"role" => "UEA_ROLES",
|
||||
"dateCreated" => "UEA_DATE_CREATE"
|
||||
];
|
||||
$query = empty($_REQUEST["query"]) ? "" : $_REQUEST["query"];
|
||||
$limit = empty($_REQUEST["limit"]) ? 10 : $_REQUEST["limit"];
|
||||
$start = empty($_REQUEST["start"]) ? 0 : $_REQUEST["start"];
|
||||
$ascending = !isset($_REQUEST["ascending"]) ? "1" : $_REQUEST["ascending"];
|
||||
$orderBy = $orders["attributeName"];
|
||||
if (!empty($_REQUEST["orderBy"]) && !empty($orders[$_REQUEST["orderBy"]])) {
|
||||
$orderBy = $orders[$_REQUEST["orderBy"]];
|
||||
}
|
||||
|
||||
$count = UserExtendedAttributes::join('USERS', 'USERS.USR_ID', '=', 'USER_EXTENDED_ATTRIBUTES.UEA_OWNER')
|
||||
->count();
|
||||
$userExtendedAttributes = UserExtendedAttributes::query()
|
||||
->join('USERS', 'USERS.USR_ID', '=', 'USER_EXTENDED_ATTRIBUTES.UEA_OWNER')
|
||||
->where('UEA_NAME', 'LIKE', "%{$query}%")
|
||||
->orWhere('UEA_ATTRIBUTE_ID', 'LIKE', "%{$query}%")
|
||||
->orWhere('UEA_ROLES', 'LIKE', "%{$query}%")
|
||||
->orWhere('UEA_DATE_CREATE', 'LIKE', "%{$query}%")
|
||||
->orderBy($orderBy, $ascending === "1" ? "asc" : "desc")
|
||||
->offset($start)
|
||||
->limit($limit)
|
||||
->get()
|
||||
->toArray();
|
||||
//change key names
|
||||
array_walk($userExtendedAttributes, function (&$row) use($rbacRoles) {
|
||||
foreach ($row as $key => $value) {
|
||||
$string = $key;
|
||||
$string = strtolower($string);
|
||||
$string = str_replace(["uea_"], "", $string);
|
||||
$string = str_replace("_", " ", $string);
|
||||
$string = ucwords($string);
|
||||
$string = lcfirst($string);
|
||||
$string = str_replace(" ", "", $string);
|
||||
$row[$string] = $row[$key];
|
||||
unset($row[$key]);
|
||||
}
|
||||
//format owner
|
||||
$row["owner"] = $row["usrUsername"];
|
||||
//format roles
|
||||
$rolesLabel = [];
|
||||
if (is_array($rbacRoles)) {
|
||||
$roles = G::json_decode($row["roles"]);
|
||||
foreach ($roles as $rol) {
|
||||
foreach ($rbacRoles as $item) {
|
||||
if (isset($item->ROL_CODE) && $rol === $item->ROL_CODE) {
|
||||
$rolesLabel[] = $item->ROL_NAME;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$row["rolesLabel"] = $rolesLabel;
|
||||
});
|
||||
$result = [
|
||||
"data" => $userExtendedAttributes,
|
||||
"count" => $count
|
||||
];
|
||||
echo G::json_encode($result);
|
||||
break;
|
||||
case "userExtendedAttributesList":
|
||||
$userExtendedAttributes = UserExtendedAttributes::query()
|
||||
->orderBy('UEA_NAME')
|
||||
->get()
|
||||
->toArray();
|
||||
//change key names
|
||||
array_walk($userExtendedAttributes, function (&$row) {
|
||||
foreach ($row as $key => $value) {
|
||||
$string = $key;
|
||||
$string = strtolower($string);
|
||||
$string = str_replace(["uea_"], "", $string);
|
||||
$string = str_replace("_", " ", $string);
|
||||
$string = ucwords($string);
|
||||
$string = lcfirst($string);
|
||||
$string = str_replace(" ", "", $string);
|
||||
$row[$string] = $row[$key];
|
||||
unset($row[$key]);
|
||||
}
|
||||
});
|
||||
$result = [
|
||||
"data" => $userExtendedAttributes
|
||||
];
|
||||
echo json_encode($result);
|
||||
break;
|
||||
case "listByRol":
|
||||
$rolCode = empty($_REQUEST["rolCode"]) ? "" : $_REQUEST["rolCode"];
|
||||
$userExtendedAttributes = UserExtendedAttributes::query()
|
||||
->Where("UEA_ROLES", 'LIKE', "%{$rolCode}%")
|
||||
->orderBy("UEA_NAME", "asc")
|
||||
->get()
|
||||
->toArray();
|
||||
$default = [
|
||||
["value" => "USR_FIRSTNAME", "text" => "USR_FIRSTNAME", "extended" => false],
|
||||
["value" => "USR_LASTNAME", "text" => "USR_LASTNAME", "extended" => false],
|
||||
["value" => "USR_EMAIL", "text" => "USR_EMAIL", "extended" => false],
|
||||
["value" => "USR_DUE_DATE", "text" => "USR_DUE_DATE", "extended" => false],
|
||||
["value" => "USR_STATUS", "text" => "USR_STATUS", "extended" => false],
|
||||
["value" => "USR_STATUS_ID", "text" => "USR_STATUS_ID", "extended" => false],
|
||||
["value" => "USR_ADDRESS", "text" => "USR_ADDRESS", "extended" => false],
|
||||
["value" => "USR_PHONE", "text" => "USR_PHONE", "extended" => false],
|
||||
["value" => "USR_FAX", "text" => "USR_FAX", "extended" => false],
|
||||
["value" => "USR_CELLULAR", "text" => "USR_CELLULAR", "extended" => false],
|
||||
["value" => "USR_ZIP_CODE", "text" => "USR_ZIP_CODE", "extended" => false],
|
||||
["value" => "USR_POSITION", "text" => "USR_POSITION", "extended" => false],
|
||||
["value" => "USR_BIRTHDAY", "text" => "USR_BIRTHDAY", "extended" => false],
|
||||
["value" => "USR_COST_BY_HOUR", "text" => "USR_COST_BY_HOUR", "extended" => false],
|
||||
["value" => "USR_UNIT_COST", "text" => "USR_UNIT_COST", "extended" => false],
|
||||
["value" => "USR_PMDRIVE_FOLDER_UID", "text" => "USR_PMDRIVE_FOLDER_UID", "extended" => false],
|
||||
["value" => "USR_BOOKMARK_START_CASES", "text" => "USR_BOOKMARK_START_CASES", "extended" => false],
|
||||
["value" => "USR_TIME_ZONE", "text" => "USR_TIME_ZONE", "extended" => false],
|
||||
["value" => "USR_DEFAULT_LANG", "text" => "USR_DEFAULT_LANG", "extended" => false],
|
||||
["value" => "USR_LAST_LOGIN", "text" => "USR_LAST_LOGIN", "extended" => false]
|
||||
];
|
||||
$data = [];
|
||||
foreach ($userExtendedAttributes as $key => $value) {
|
||||
$data[] = [
|
||||
"value" => $value["UEA_ATTRIBUTE_ID"],
|
||||
"text" => $value["UEA_NAME"],
|
||||
"extended" => true
|
||||
];
|
||||
}
|
||||
$data = array_merge($data, $default);
|
||||
$result = [
|
||||
"data" => $data
|
||||
];
|
||||
echo G::json_encode($result);
|
||||
break;
|
||||
case "save":
|
||||
$userUid = empty($_SESSION['USER_LOGGED']) ? RBAC::ADMIN_USER_UID : $_SESSION['USER_LOGGED'];
|
||||
$user = new Users();
|
||||
$user = $user->load($userUid);
|
||||
$userId = empty($user['USR_ID']) ? null : $user['USR_ID'];
|
||||
$id = empty($_REQUEST["UEA_ID"]) ? "" : $_REQUEST["UEA_ID"];
|
||||
$name = empty($_REQUEST["UEA_NAME"]) ? "" : $_REQUEST["UEA_NAME"];
|
||||
$attributeId = empty($_REQUEST["UEA_ATTRIBUTE_ID"]) ? "" : $_REQUEST["UEA_ATTRIBUTE_ID"];
|
||||
$hidden = empty($_REQUEST["UEA_HIDDEN"]) ? "" : $_REQUEST["UEA_HIDDEN"];
|
||||
$required = empty($_REQUEST["UEA_REQUIRED"]) ? "" : $_REQUEST["UEA_REQUIRED"];
|
||||
$password = empty($_REQUEST["UEA_PASSWORD"]) ? "" : $_REQUEST["UEA_PASSWORD"];
|
||||
$option = empty($_REQUEST["UEA_OPTION"]) ? "" : $_REQUEST["UEA_OPTION"];
|
||||
$roles = empty($_REQUEST["UEA_ROLES"]) ? "" : $_REQUEST["UEA_ROLES"];
|
||||
$owner = empty($_REQUEST["UEA_OWNER"]) ? $userId : $_REQUEST["UEA_OWNER"];
|
||||
$dateCreate = empty($_REQUEST["UEA_DATE_CREATE"]) ? date("Y-m-d H:i:s") : $_REQUEST["UEA_DATE_CREATE"];
|
||||
|
||||
$userExtendedAttributes = UserExtendedAttributes::where('UEA_ID', '=', $id)
|
||||
->get()
|
||||
->first();
|
||||
if (empty($userExtendedAttributes)) {
|
||||
$userExtendedAttributes = new UserExtendedAttributes();
|
||||
}
|
||||
$userExtendedAttributes->UEA_NAME = trim($name);
|
||||
$userExtendedAttributes->UEA_ATTRIBUTE_ID = trim($attributeId);
|
||||
$userExtendedAttributes->UEA_HIDDEN = $hidden;
|
||||
$userExtendedAttributes->UEA_REQUIRED = $required;
|
||||
$userExtendedAttributes->UEA_PASSWORD = $password;
|
||||
$userExtendedAttributes->UEA_OPTION = $option;
|
||||
$userExtendedAttributes->UEA_ROLES = $roles;
|
||||
$userExtendedAttributes->UEA_OWNER = $owner;
|
||||
$userExtendedAttributes->UEA_DATE_CREATE = $dateCreate;
|
||||
$userExtendedAttributes->save();
|
||||
|
||||
echo G::json_encode($userExtendedAttributes);
|
||||
break;
|
||||
case "delete":
|
||||
$id = empty($_REQUEST["id"]) ? "" : $_REQUEST["id"];
|
||||
if (!empty($id)) {
|
||||
$id = UserExtendedAttributes::where('UEA_ID', '=', $id)
|
||||
->delete();
|
||||
}
|
||||
echo G::json_encode($id);
|
||||
break;
|
||||
case "verifyName":
|
||||
$id = empty($_REQUEST["id"]) ? "" : $_REQUEST["id"];
|
||||
$name = empty($_REQUEST["name"]) ? "" : $_REQUEST["name"];
|
||||
$userExtendedAttributes = UserExtendedAttributes::query()
|
||||
->where('UEA_NAME', '=', trim($name))
|
||||
->where('UEA_ID', '<>', $id)
|
||||
->get()
|
||||
->first();
|
||||
$result = [
|
||||
"valid" => empty($userExtendedAttributes),
|
||||
"message" => empty($userExtendedAttributes) ? "" : G::loadTranslation("ID_NAME_EXISTS")
|
||||
];
|
||||
echo G::json_encode($result);
|
||||
break;
|
||||
case "verifyAttributeId":
|
||||
$id = empty($_REQUEST["id"]) ? "" : $_REQUEST["id"];
|
||||
$attributeId = empty($_REQUEST["attributeId"]) ? "" : $_REQUEST["attributeId"];
|
||||
$userExtendedAttributes = UserExtendedAttributes::query()
|
||||
->where('UEA_ATTRIBUTE_ID', '=', trim($attributeId))
|
||||
->where('UEA_ID', '<>', $id)
|
||||
->get()
|
||||
->first();
|
||||
$result = [
|
||||
"valid" => empty($userExtendedAttributes),
|
||||
"message" => empty($userExtendedAttributes) ? "" : G::loadTranslation("ID_EXIST")
|
||||
];
|
||||
echo G::json_encode($result);
|
||||
break;
|
||||
default:
|
||||
$conf = new Configurations();
|
||||
$pageSize = $conf->getEnvSetting('casesListRowNumber');
|
||||
$pageSize = empty($pageSize) ? 25 : $pageSize;
|
||||
$lang = defined("SYS_LANG") ? SYS_LANG : "en";
|
||||
|
||||
$html = file_get_contents(PATH_HTML . "lib/userExtendedAttributes/index.html");
|
||||
$html = str_replace("var pageSize=10;", "var pageSize={$pageSize};", $html);
|
||||
$html = str_replace("translation.en.js", "translation.{$lang}.js", $html);
|
||||
echo $html;
|
||||
break;
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
$message = [
|
||||
'MESSAGE' => $e->getMessage()
|
||||
];
|
||||
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showMessage', '', $message);
|
||||
G::RenderPage('publish', 'blank');
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
file.reference.userExtendedAttributes-public=public
|
||||
files.encoding=UTF-8
|
||||
site.root.folder=${file.reference.userExtendedAttributes-public}
|
||||
source.folder=
|
||||
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://www.netbeans.org/ns/project/1">
|
||||
<type>org.netbeans.modules.web.clientproject</type>
|
||||
<configuration>
|
||||
<data xmlns="http://www.netbeans.org/ns/clientside-project/1">
|
||||
<name>userExtendedAttributes</name>
|
||||
</data>
|
||||
</configuration>
|
||||
</project>
|
||||
17368
workflow/engine/methods/userExtendedAttributes/package-lock.json
generated
Normal file
17368
workflow/engine/methods/userExtendedAttributes/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
51
workflow/engine/methods/userExtendedAttributes/package.json
Normal file
51
workflow/engine/methods/userExtendedAttributes/package.json
Normal file
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"name": "userExtendedAttributes",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"serve": "vue-cli-service serve",
|
||||
"build": "vue-cli-service build --dest ../../../public_html/lib/userExtendedAttributes",
|
||||
"lint": "vue-cli-service lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"@panter/vue-i18next": "^0.15.2",
|
||||
"@vue/cli": "^4.4.6",
|
||||
"axios": "^0.19.2",
|
||||
"bootstrap": "^4.5.0",
|
||||
"bootstrap-vue": "^2.20.1",
|
||||
"core-js": "^3.8.1",
|
||||
"lodash": "^4.17.19",
|
||||
"save": "^2.4.0",
|
||||
"vue": "^2.6.11",
|
||||
"vue-tables-2": "^2.1.61",
|
||||
"vuelidate": "^0.7.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vue/cli-plugin-babel": "^4.5.9",
|
||||
"@vue/cli-plugin-eslint": "^4.5.9",
|
||||
"@vue/cli-service": "^4.5.9",
|
||||
"babel-eslint": "^10.1.0",
|
||||
"eslint": "^6.7.2",
|
||||
"eslint-plugin-vue": "^6.2.2",
|
||||
"vue-template-compiler": "^2.6.11"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"root": true,
|
||||
"env": {
|
||||
"node": true
|
||||
},
|
||||
"extends": [
|
||||
"plugin:vue/essential",
|
||||
"eslint:recommended"
|
||||
],
|
||||
"parserOptions": {
|
||||
"parser": "babel-eslint"
|
||||
},
|
||||
"rules": {}
|
||||
},
|
||||
"browserslist": [
|
||||
"> 1%",
|
||||
"last 2 versions",
|
||||
"not dead"
|
||||
]
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
@@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
|
||||
<title><%= htmlWebpackPlugin.options.title %></title>
|
||||
<!-- These are default values, then they are overridden when processmaker runs -->
|
||||
<script type="text/javascript" src="/js/ext/translation.en.js"></script>
|
||||
<script type="text/javascript">
|
||||
var pageSize=10;
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<noscript>
|
||||
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
|
||||
</noscript>
|
||||
<div id="app"></div>
|
||||
<!-- built files will be auto injected -->
|
||||
</body>
|
||||
</html>
|
||||
67
workflow/engine/methods/userExtendedAttributes/src/App.vue
Normal file
67
workflow/engine/methods/userExtendedAttributes/src/App.vue
Normal file
@@ -0,0 +1,67 @@
|
||||
<template>
|
||||
<div id="app">
|
||||
<userExtendedAttributes ref="userExtendedAttributes"
|
||||
v-show="views.userExtendedAttributes"
|
||||
@newAttribute="newAttribute"
|
||||
@editAttribute="editAttribute">
|
||||
</userExtendedAttributes>
|
||||
<newUserAttribute ref="newUserAttribute"
|
||||
v-show="views.newUserAttribute"
|
||||
@save="saveAttribute"
|
||||
@cancel="cancel">
|
||||
</newUserAttribute>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import userExtendedAttributes from './components/userExtendedAttributes.vue'
|
||||
import newUserAttribute from './components/newUserAttribute.vue'
|
||||
export default {
|
||||
name: 'app',
|
||||
components: {
|
||||
userExtendedAttributes,
|
||||
newUserAttribute
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
views: {
|
||||
userExtendedAttributes: true,
|
||||
newUserAttribute: false
|
||||
}
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
showView(name) {
|
||||
for (let view in this.views) {
|
||||
this.views[view] = false;
|
||||
}
|
||||
this.views[name] = true;
|
||||
},
|
||||
cancel() {
|
||||
this.showView("userExtendedAttributes");
|
||||
},
|
||||
newAttribute() {
|
||||
this.$refs.newUserAttribute.reset();
|
||||
this.showView("newUserAttribute");
|
||||
},
|
||||
saveAttribute() {
|
||||
this.showView("userExtendedAttributes");
|
||||
this.$refs.userExtendedAttributes.refresh();
|
||||
},
|
||||
editAttribute(row) {
|
||||
this.$refs.newUserAttribute.reset();
|
||||
this.$refs.newUserAttribute.load(row);
|
||||
this.showView("newUserAttribute");
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
#app {
|
||||
margin: 20px;
|
||||
}
|
||||
.custom-tooltip > .tooltip-inner{
|
||||
max-width: none;
|
||||
}
|
||||
</style>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 6.7 KiB |
@@ -0,0 +1,378 @@
|
||||
<template>
|
||||
<div>
|
||||
<titleSection :title="$root.translation('ID_NEW_USER_ATTRIBUTE')"></titleSection>
|
||||
<b-form @submit.stop.prevent="onsubmit">
|
||||
<b-container fluid>
|
||||
<b-row>
|
||||
<b-col cols="6">
|
||||
<b-form-group :label="$root.translation('ID_NAME')">
|
||||
<b-form-input v-model="form.name"
|
||||
autocomplete="off"
|
||||
:state="statusName"
|
||||
@keyup="validateName"/>
|
||||
<b-form-invalid-feedback>{{statusNameMessage}}</b-form-invalid-feedback>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
<b-col>
|
||||
<b-form-group :label="$root.translation('ID_ATTRIBUTE_ID')">
|
||||
<b-form-input v-model="form.attributeId"
|
||||
autocomplete="off"
|
||||
:state="statusAttributeId"
|
||||
@keyup="validateAttributeId"/>
|
||||
<b-form-invalid-feedback>{{statusAttributeIdMessage}}</b-form-invalid-feedback>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-row>
|
||||
<b-col cols="6">
|
||||
<b-form-group :label="$root.translation('ID_PROPERTIES')">
|
||||
<b-form-checkbox v-model="form.hidden"
|
||||
value="1"
|
||||
unchecked-value="0"
|
||||
:disabled="form.required===1 || form.password===1">
|
||||
{{$root.translation('ID_HIDDEN')}}
|
||||
<b-button variant="outline-light"
|
||||
v-b-tooltip="{title:$root.translation('ID_ATTRIBUTE_WONT_BE_SEEN_IN_USER_INFORMATION'),placement:'right',variant:'warning',customClass:'custom-tooltip'}">
|
||||
<b-icon icon="question-circle-fill"
|
||||
aria-hidden="true"
|
||||
variant="primary"/>
|
||||
</b-button>
|
||||
</b-form-checkbox>
|
||||
<b-form-checkbox v-model="form.required"
|
||||
value="1"
|
||||
unchecked-value="0"
|
||||
:disabled="form.hidden===1">
|
||||
{{$root.translation('ID_REQUIRED')}}
|
||||
<b-button variant="outline-light"
|
||||
v-b-tooltip="{title:$root.translation('ID_ATTRIBUTE_WILL_BE_REQUIRED_WHEN_EDITING_USER_SETTINGS'),placement:'right',variant:'warning',customClass:'custom-tooltip'}">
|
||||
<b-icon icon="question-circle-fill"
|
||||
aria-hidden="true"
|
||||
variant="primary"/>
|
||||
</b-button>
|
||||
</b-form-checkbox>
|
||||
<b-form-checkbox v-model="form.password"
|
||||
value="1"
|
||||
unchecked-value="0"
|
||||
:disabled="form.hidden===1">
|
||||
{{$root.translation('ID_TYPE_PASSWORD')}}
|
||||
<b-button variant="outline-light"
|
||||
v-b-tooltip="{title:$root.translation('ID_ATTRIBUTE_WILL_BE_HIDDEN_USING_PLACEHOLDER'),placement:'right',variant:'warning',customClass:'custom-tooltip'}">
|
||||
<b-icon icon="question-circle-fill"
|
||||
aria-hidden="true"
|
||||
variant="primary"/>
|
||||
</b-button>
|
||||
</b-form-checkbox>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
<b-col>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-row class="bv-row-flex-cols">
|
||||
<b-col cols="6">
|
||||
<b-form-group :label="$root.translation('ID_PROPERTIES')">
|
||||
<b-form-radio v-model="form.option"
|
||||
value="allUser"
|
||||
class="mt-2">
|
||||
{{$root.translation('ID_ALL_USERS')}}
|
||||
</b-form-radio>
|
||||
<b-form-radio v-model="form.option"
|
||||
value="byRol"
|
||||
class="mt-3">
|
||||
{{$root.translation('ID_BY_ROLE')}}
|
||||
</b-form-radio>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
<b-col cols="6" align-self="end">
|
||||
<b-form-group>
|
||||
<b-input-group>
|
||||
<b-form-select v-model="form.rol"
|
||||
:disabled="form.option==='allUser'"
|
||||
:options="roles"></b-form-select>
|
||||
<b-input-group-append>
|
||||
<b-button variant="outline-secondary"
|
||||
@click="refreshRoles"
|
||||
:disabled="form.option==='allUser'">
|
||||
<b-icon icon="arrow-repeat"
|
||||
aria-hidden="true"/>
|
||||
</b-button>
|
||||
</b-input-group-append>
|
||||
<b-input-group-append>
|
||||
<b-button variant="success"
|
||||
@click="addRole"
|
||||
:disabled="form.option==='allUser'">
|
||||
<b-icon icon="plus" aria-hidden="true"/> {{$root.translation('ID_ADD')}}
|
||||
</b-button>
|
||||
</b-input-group-append>
|
||||
</b-input-group>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-row>
|
||||
<b-col>
|
||||
<b-form-group>
|
||||
<b-form-tags v-model="form.selectedRoles"
|
||||
style="min-height:55px"
|
||||
:disabled="form.option==='allUser'">
|
||||
<template v-slot="{ tags, inputAttrs, inputHandlers, tagVariant, addTag, removeTag, disabled}">
|
||||
<!--important is the control body-->
|
||||
<div class="d-inline-block">
|
||||
<div v-for="tag in tags"
|
||||
:key="tag"
|
||||
:title="tag"
|
||||
class="d-inline-block border bg-light rounded-lg p-1 mr-2">
|
||||
{{getTextRol(tag)}}
|
||||
<b-button size="sm"
|
||||
variant="light"
|
||||
:disabled="disabled"
|
||||
@click="deleteRol(tag,function(){removeTag(tag);})">
|
||||
<b-icon icon="x"
|
||||
aria-hidden="true"
|
||||
variant="primary"/>
|
||||
</b-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</b-form-tags>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-row class="text-right">
|
||||
<b-col>
|
||||
<b-form-group>
|
||||
<b-button variant="danger"
|
||||
@click="$emit('cancel')">{{$root.translation('ID_CANCEL')}}</b-button>
|
||||
<b-button type="submit"
|
||||
variant="success"
|
||||
:disabled="!statusValidation">{{$root.translation('ID_SAVE')}}</b-button>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
</b-row>
|
||||
</b-container>
|
||||
</b-form>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import titleSection from "./titleSection.vue"
|
||||
import axios from "axios"
|
||||
import { validationMixin } from "vuelidate"
|
||||
export default {
|
||||
mixins: [validationMixin],
|
||||
components: {
|
||||
titleSection
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
form: {
|
||||
id: "",
|
||||
name: "",
|
||||
attributeId: "",
|
||||
hidden: 0,
|
||||
required: 0,
|
||||
password: 0,
|
||||
option: "allUser",
|
||||
selectedRoles: [],
|
||||
rol: "0"
|
||||
},
|
||||
roles: this.getRoles(),
|
||||
statusValidation: true,
|
||||
statusName: null,
|
||||
statusNameMessage: "",
|
||||
statusAttributeId: null,
|
||||
statusAttributeIdMessage: ""
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
reset() {
|
||||
this.form = {
|
||||
id: "",
|
||||
name: "",
|
||||
attributeId: "",
|
||||
hidden: 0,
|
||||
required: 0,
|
||||
password: 0,
|
||||
option: "allUser",
|
||||
selectedRoles: [],
|
||||
rol: "0"
|
||||
};
|
||||
this.statusValidation = true;
|
||||
},
|
||||
onsubmit() {
|
||||
this.statusName = true;
|
||||
if (this.form.name.trim() === "") {
|
||||
this.statusName = false;
|
||||
this.statusNameMessage = this.$root.translation("ID_IS_REQUIRED");
|
||||
return;
|
||||
}
|
||||
this.statusAttributeId = true;
|
||||
if (this.form.attributeId.trim() === "") {
|
||||
this.statusAttributeId = false;
|
||||
this.statusAttributeIdMessage = this.$root.translation("ID_IS_REQUIRED");
|
||||
return;
|
||||
}
|
||||
if (/^[a-zA-Z][_0-9a-zA-Z]+$/.test(this.form.attributeId) === false) {
|
||||
this.statusAttributeId = false;
|
||||
this.statusAttributeIdMessage = this.$root.translation("ID_INVALID_DATA");
|
||||
return;
|
||||
}
|
||||
this.saveForm();
|
||||
},
|
||||
validateName() {
|
||||
this.statusValidation = false;
|
||||
let formData = new FormData();
|
||||
formData.append("id", this.form.id);
|
||||
formData.append("name", this.form.name);
|
||||
return axios.post(this.$root.baseUrl() + "userExtendedAttributes/index?option=verifyName", formData)
|
||||
.then(response => {
|
||||
response;
|
||||
if (response.data.valid === false) {
|
||||
this.statusName = false;
|
||||
this.statusNameMessage = response.data.message;
|
||||
} else {
|
||||
this.statusName = true;
|
||||
this.statusValidation = true;
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
error;
|
||||
})
|
||||
.finally(() => {
|
||||
});
|
||||
},
|
||||
validateAttributeId() {
|
||||
this.statusValidation = false;
|
||||
if (/^[a-zA-Z][_0-9a-zA-Z]+$/.test(this.form.attributeId) === false) {
|
||||
this.statusAttributeId = false;
|
||||
this.statusAttributeIdMessage = this.$root.translation("ID_INVALID_DATA");
|
||||
return;
|
||||
}
|
||||
let formData = new FormData();
|
||||
formData.append("id", this.form.id);
|
||||
formData.append("attributeId", this.form.attributeId);
|
||||
return axios.post(this.$root.baseUrl() + "userExtendedAttributes/index?option=verifyAttributeId", formData)
|
||||
.then(response => {
|
||||
response;
|
||||
if (response.data.valid === false) {
|
||||
this.statusAttributeId = false;
|
||||
this.statusAttributeIdMessage = response.data.message;
|
||||
} else {
|
||||
this.statusAttributeId = true;
|
||||
this.statusValidation = true;
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
error;
|
||||
})
|
||||
.finally(() => {
|
||||
});
|
||||
},
|
||||
saveForm() {
|
||||
this.statusValidation = false;
|
||||
let formData = this.formToFormData(this.form);
|
||||
return axios.post(this.$root.baseUrl() + "userExtendedAttributes/index?option=save", formData)
|
||||
.then(response => {
|
||||
response;
|
||||
this.$emit("save");
|
||||
this.statusValidation = true;
|
||||
})
|
||||
.catch(error => {
|
||||
error;
|
||||
})
|
||||
.finally(() => {
|
||||
});
|
||||
},
|
||||
getRoles() {
|
||||
this.refreshRoles();
|
||||
return this.roles;
|
||||
},
|
||||
refreshRoles() {
|
||||
let formData = new FormData();
|
||||
formData.append("request", "allRoles");
|
||||
axios.post(this.$root.baseUrl() + "roles/roles_Ajax", formData)
|
||||
.then(response => {
|
||||
response;
|
||||
let data = [
|
||||
{value: "0", text: this.$root.translation('ID_EMPTY_TYPE')}
|
||||
];
|
||||
for (let i in response.data) {
|
||||
data.push({
|
||||
value: response.data[i].ROL_CODE,
|
||||
text: response.data[i].ROL_NAME
|
||||
});
|
||||
}
|
||||
this.roles = data;
|
||||
})
|
||||
.catch(error => {
|
||||
error;
|
||||
})
|
||||
.finally(() => {
|
||||
});
|
||||
},
|
||||
addRole() {
|
||||
if (this.form.rol === "0") {
|
||||
return;
|
||||
}
|
||||
let obj = this.form.selectedRoles.find(rol => rol === this.form.rol);
|
||||
if (obj !== undefined) {
|
||||
return;
|
||||
}
|
||||
this.form.selectedRoles.push(this.form.rol);
|
||||
},
|
||||
getTextRol(tag) {
|
||||
let obj = this.roles.find(rol => rol.value === tag);
|
||||
return obj.text;
|
||||
},
|
||||
deleteRol(tag, process) {
|
||||
this.$bvModal.msgBoxConfirm(this.$root.translation('ID_THE_USER_ROLES_FOR_ATTRIBUTE_HAS_BEEN_DELETED_PLEASE_CONFIRM', ['']), {
|
||||
title: " ", //is important because title disappear
|
||||
hideHeaderClose: false,
|
||||
okTitle: this.$root.translation('ID_CONFIRM'),
|
||||
okVariant: "success",
|
||||
cancelTitle: this.$root.translation('ID_CANCEL'),
|
||||
cancelVariant: "danger"
|
||||
}).then(value => {
|
||||
if (value === false) {
|
||||
return;
|
||||
}
|
||||
process();
|
||||
}).catch(err => {
|
||||
err;
|
||||
});
|
||||
},
|
||||
formToFormData(form) {
|
||||
let formData = new FormData();
|
||||
formData.append("UEA_ID", form.id);
|
||||
formData.append("UEA_NAME", form.name);
|
||||
formData.append("UEA_ATTRIBUTE_ID", form.attributeId);
|
||||
formData.append("UEA_HIDDEN", form.hidden);
|
||||
formData.append("UEA_REQUIRED", form.required);
|
||||
formData.append("UEA_PASSWORD", form.password);
|
||||
formData.append("UEA_OPTION", form.option);
|
||||
formData.append("UEA_ROLES", JSON.stringify(form.selectedRoles));
|
||||
return formData;
|
||||
},
|
||||
rowToForm(row) {
|
||||
let form = {
|
||||
id: row.id,
|
||||
name: row.name,
|
||||
attributeId: row.attributeId,
|
||||
hidden: row.hidden,
|
||||
required: row.required,
|
||||
password: row.password,
|
||||
option: row.option,
|
||||
selectedRoles: JSON.parse(row.roles)
|
||||
};
|
||||
return form;
|
||||
},
|
||||
load(row) {
|
||||
this.form = this.rowToForm(row);
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.bv-row-flex-cols{
|
||||
min-height:7rem;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,18 @@
|
||||
<template>
|
||||
<div>
|
||||
<h3 class="text-primary">
|
||||
{{title}}
|
||||
</h3>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default{
|
||||
props: {
|
||||
title: String
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,179 @@
|
||||
<template>
|
||||
<div>
|
||||
<titleSection :title="$root.translation('ID_USER_EXTENDED_ATTRIBUTES')"></titleSection>
|
||||
<b-form-group class="float-right">
|
||||
<b-button variant="success"
|
||||
@click="newAttribute">
|
||||
<b-icon icon="plus" aria-hidden="true"/> {{$root.translation('ID_NEW_ATTRIBUTE')}}
|
||||
</b-button>
|
||||
</b-form-group>
|
||||
<v-server-table ref="vServerTable1"
|
||||
:url="$root.baseUrl()+'userExtendedAttributes/index?option=list'"
|
||||
:columns="columns"
|
||||
:options="options">
|
||||
<div slot="roles"
|
||||
slot-scope="props">
|
||||
{{formatingRoles(props.row.rolesLabel)}}
|
||||
</div>
|
||||
<div slot="owner"
|
||||
slot-scope="props">
|
||||
{{props.row.owner}}
|
||||
<b-avatar :id="'as-b-avatar-tooltip-'+props.index"
|
||||
size="sm"
|
||||
class="float-right">
|
||||
</b-avatar>
|
||||
<b-tooltip :target="'as-b-avatar-tooltip-'+props.index"
|
||||
triggers="hover"
|
||||
custom-class="custom-tooltip"
|
||||
placement="right"
|
||||
variant="info">
|
||||
<b-container fluid>
|
||||
<b-row class="text-left">
|
||||
<b-col>
|
||||
{{props.row.usrUsername}}<br>
|
||||
{{props.row.usrFirstname}} {{props.row.usrLastname}}<br>
|
||||
{{props.row.usrEmail}}<br>
|
||||
{{props.row.usrFax}}<br>
|
||||
{{props.row.usrCellular}}<br>
|
||||
{{props.row.usrTimeZone}}<br>
|
||||
</b-col>
|
||||
<b-col>
|
||||
<b-avatar size="lg"
|
||||
variant="dark">
|
||||
</b-avatar>
|
||||
</b-col>
|
||||
</b-row>
|
||||
</b-container>
|
||||
</b-tooltip>
|
||||
</div>
|
||||
<div slot="icons"
|
||||
slot-scope="props">
|
||||
<b-button-group>
|
||||
<b-button :title="$root.translation('ID_EDIT_ATTRIBUTE')"
|
||||
v-b-tooltip.hover
|
||||
variant="light"
|
||||
@click="editAttribute(props.row)">
|
||||
<b-icon icon="pencil-fill" aria-hidden="true" variant="info"/>
|
||||
</b-button>
|
||||
<b-button :title="$root.translation('ID_DELETE_ATTRIBUTE')"
|
||||
v-b-tooltip.hover
|
||||
variant="light"
|
||||
@click="deleteAttribute(props.row)">
|
||||
<b-icon icon="trash" aria-hidden="true" variant="danger"/>
|
||||
</b-button>
|
||||
</b-button-group>
|
||||
</div>
|
||||
</v-server-table>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import titleSection from "./titleSection.vue"
|
||||
import axios from "axios"
|
||||
export default {
|
||||
components: {
|
||||
titleSection
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
columns: [
|
||||
"name",
|
||||
"attributeId",
|
||||
"roles",
|
||||
"owner",
|
||||
"dateCreate",
|
||||
"icons"
|
||||
],
|
||||
options: {
|
||||
headings: {
|
||||
name: this.$root.translation('ID_ATTRIBUTE_NAME'),
|
||||
attributeId: this.$root.translation('ID_ATTRIBUTE'),
|
||||
roles: this.$root.translation('ID_ROLE'),
|
||||
owner: this.$root.translation('ID_OWNER'),
|
||||
dateCreate: this.$root.translation('ID_PRO_CREATE_DATE'),
|
||||
icons: ""
|
||||
},
|
||||
sortable: [
|
||||
"name",
|
||||
"attributeId",
|
||||
"roles",
|
||||
"dateCreate"
|
||||
],
|
||||
filterable: [
|
||||
"name",
|
||||
"attributeId",
|
||||
"roles",
|
||||
"dateCreate"
|
||||
],
|
||||
texts: {
|
||||
filter: "",
|
||||
filterPlaceholder: this.$root.translation("ID_EMPTY_SEARCH"),
|
||||
count: this.$root.translation("ID_SHOWING_FROM_RECORDS_COUNT"),
|
||||
noResults: this.$root.translation("ID_NO_MATCHING_RECORDS"),
|
||||
loading: this.$root.translation("ID_LOADING_GRID")
|
||||
},
|
||||
perPage: "pageSize" in window ? window.pageSize : 5,
|
||||
perPageValues: [],
|
||||
requestFunction(data) {
|
||||
data.start = (data.page - 1) * data.limit;
|
||||
return axios.get(this.url, {params: data}, {}).catch(function (e) {
|
||||
this.dispatch("error", e);
|
||||
});
|
||||
},
|
||||
responseAdapter(data) {
|
||||
return {
|
||||
data: data.data.data,
|
||||
count: data.data.count
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
newAttribute() {
|
||||
this.$emit("newAttribute");
|
||||
},
|
||||
editAttribute(row) {
|
||||
this.$emit("editAttribute", row);
|
||||
},
|
||||
deleteAttribute(row) {
|
||||
this.$bvModal.msgBoxConfirm(this.$root.translation('ID_THE_ATTRIBUTE_WILL_BE_DELETED_PLEASE_CONFIRM', [row.name]), {
|
||||
title: " ", //is important because title disappear
|
||||
hideHeaderClose: false,
|
||||
okTitle: this.$root.translation('ID_CONFIRM'),
|
||||
okVariant: "success",
|
||||
cancelTitle: this.$root.translation('ID_CANCEL'),
|
||||
cancelVariant: "danger"
|
||||
}).then(value => {
|
||||
if (value === false) {
|
||||
return;
|
||||
}
|
||||
let formData = new FormData();
|
||||
formData.append("option", "delete");
|
||||
formData.append("id", row.id);
|
||||
axios.post(this.$root.baseUrl() + "userExtendedAttributes/index", formData)
|
||||
.then(response => {
|
||||
response;
|
||||
this.refresh();
|
||||
})
|
||||
.catch(error => {
|
||||
error;
|
||||
})
|
||||
.finally(() => {
|
||||
});
|
||||
}).catch(err => {
|
||||
err;
|
||||
});
|
||||
},
|
||||
refresh() {
|
||||
this.$refs.vServerTable1.refresh();
|
||||
},
|
||||
formatingRoles(rolesLabel) {
|
||||
return rolesLabel.join(", ");
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
</style>
|
||||
33
workflow/engine/methods/userExtendedAttributes/src/main.js
Normal file
33
workflow/engine/methods/userExtendedAttributes/src/main.js
Normal file
@@ -0,0 +1,33 @@
|
||||
import Vue from 'vue'
|
||||
import {BootstrapVue, IconsPlugin} from 'bootstrap-vue'
|
||||
import 'bootstrap/dist/css/bootstrap.css'
|
||||
import 'bootstrap-vue/dist/bootstrap-vue.css'
|
||||
import {ClientTable} from 'vue-tables-2'
|
||||
import {ServerTable} from 'vue-tables-2'
|
||||
import App from './App.vue';
|
||||
|
||||
Vue.config.productionTip = false
|
||||
Vue.use(BootstrapVue)
|
||||
Vue.use(IconsPlugin)
|
||||
Vue.use(ClientTable, {}, false, 'bootstrap4', {});
|
||||
Vue.use(ServerTable, {}, false, 'bootstrap4', {});
|
||||
|
||||
new Vue({
|
||||
render: h => h(App),
|
||||
methods: {
|
||||
translation(text, params) {
|
||||
if ("TRANSLATIONS" in window && text in window.TRANSLATIONS) {
|
||||
text = window.TRANSLATIONS[text];
|
||||
if (params != undefined && "length" in params) {
|
||||
for (let i = 0; i < params.length; i++) {
|
||||
text = text.replace("{" + i + "}", params[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
return text;
|
||||
},
|
||||
baseUrl() {
|
||||
return "../";
|
||||
}
|
||||
}
|
||||
}).$mount('#app');
|
||||
@@ -0,0 +1,3 @@
|
||||
module.exports = {
|
||||
publicPath: '/lib/userExtendedAttributes/'
|
||||
};
|
||||
24
workflow/engine/methods/userPersonalInformation/.gitignore
vendored
Normal file
24
workflow/engine/methods/userPersonalInformation/.gitignore
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
.DS_Store
|
||||
node_modules
|
||||
/dist
|
||||
|
||||
|
||||
# local env files
|
||||
.env.local
|
||||
.env.*.local
|
||||
|
||||
# Log files
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
|
||||
# Editor directories and files
|
||||
.idea
|
||||
.vscode
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
/nbproject/private/
|
||||
24
workflow/engine/methods/userPersonalInformation/README.md
Normal file
24
workflow/engine/methods/userPersonalInformation/README.md
Normal file
@@ -0,0 +1,24 @@
|
||||
# my-app
|
||||
|
||||
## Project setup
|
||||
```
|
||||
npm install
|
||||
```
|
||||
|
||||
### Compiles and hot-reloads for development
|
||||
```
|
||||
npm run serve
|
||||
```
|
||||
|
||||
### Compiles and minifies for production
|
||||
```
|
||||
npm run build
|
||||
```
|
||||
|
||||
### Lints and fixes files
|
||||
```
|
||||
npm run lint
|
||||
```
|
||||
|
||||
### Customize configuration
|
||||
See [Configuration Reference](https://cli.vuejs.org/config/).
|
||||
@@ -0,0 +1,5 @@
|
||||
module.exports = {
|
||||
presets: [
|
||||
'@vue/cli-plugin-babel/preset'
|
||||
]
|
||||
}
|
||||
17
workflow/engine/methods/userPersonalInformation/index.php
Normal file
17
workflow/engine/methods/userPersonalInformation/index.php
Normal file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
global $G_PUBLISH;
|
||||
$G_PUBLISH = new Publisher();
|
||||
try {
|
||||
$lang = defined("SYS_LANG") ? SYS_LANG : "en";
|
||||
|
||||
$html = file_get_contents(PATH_HTML . "lib/userPersonalInformation/index.html");
|
||||
$html = str_replace("translation.en.js", "translation.{$lang}.js", $html);
|
||||
echo $html;
|
||||
} catch (Exception $e) {
|
||||
$message = [
|
||||
'MESSAGE' => $e->getMessage()
|
||||
];
|
||||
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showMessage', '', $message);
|
||||
G::RenderPage('publish', 'blank');
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
file.reference.userPersonalInformation-public=public
|
||||
files.encoding=UTF-8
|
||||
site.root.folder=${file.reference.userPersonalInformation-public}
|
||||
source.folder=
|
||||
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://www.netbeans.org/ns/project/1">
|
||||
<type>org.netbeans.modules.web.clientproject</type>
|
||||
<configuration>
|
||||
<data xmlns="http://www.netbeans.org/ns/clientside-project/1">
|
||||
<name>userPersonalInformation</name>
|
||||
</data>
|
||||
</configuration>
|
||||
</project>
|
||||
17368
workflow/engine/methods/userPersonalInformation/package-lock.json
generated
Normal file
17368
workflow/engine/methods/userPersonalInformation/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
51
workflow/engine/methods/userPersonalInformation/package.json
Normal file
51
workflow/engine/methods/userPersonalInformation/package.json
Normal file
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"name": "userPersonalInformation",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"serve": "vue-cli-service serve",
|
||||
"build": "vue-cli-service build --dest ../../../public_html/lib/userPersonalInformation",
|
||||
"lint": "vue-cli-service lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"@panter/vue-i18next": "^0.15.2",
|
||||
"@vue/cli": "^4.4.6",
|
||||
"axios": "^0.19.2",
|
||||
"bootstrap": "^4.5.0",
|
||||
"bootstrap-vue": "^2.20.1",
|
||||
"core-js": "^3.8.1",
|
||||
"lodash": "^4.17.19",
|
||||
"save": "^2.4.0",
|
||||
"vue": "^2.6.11",
|
||||
"vue-tables-2": "^2.1.61",
|
||||
"vuelidate": "^0.7.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vue/cli-plugin-babel": "^4.5.9",
|
||||
"@vue/cli-plugin-eslint": "^4.5.9",
|
||||
"@vue/cli-service": "^4.5.9",
|
||||
"babel-eslint": "^10.1.0",
|
||||
"eslint": "^6.7.2",
|
||||
"eslint-plugin-vue": "^6.2.2",
|
||||
"vue-template-compiler": "^2.6.11"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"root": true,
|
||||
"env": {
|
||||
"node": true
|
||||
},
|
||||
"extends": [
|
||||
"plugin:vue/essential",
|
||||
"eslint:recommended"
|
||||
],
|
||||
"parserOptions": {
|
||||
"parser": "babel-eslint"
|
||||
},
|
||||
"rules": {}
|
||||
},
|
||||
"browserslist": [
|
||||
"> 1%",
|
||||
"last 2 versions",
|
||||
"not dead"
|
||||
]
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
@@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
|
||||
<title><%= htmlWebpackPlugin.options.title %></title>
|
||||
<!-- These are default values, then they are overridden when processmaker runs -->
|
||||
<script type="text/javascript" src="/js/ext/translation.en.js"></script>
|
||||
<script type="text/javascript">
|
||||
var USR_UID='';
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<noscript>
|
||||
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
|
||||
</noscript>
|
||||
<div id="app"></div>
|
||||
<!-- built files will be auto injected -->
|
||||
</body>
|
||||
</html>
|
||||
39
workflow/engine/methods/userPersonalInformation/src/App.vue
Normal file
39
workflow/engine/methods/userPersonalInformation/src/App.vue
Normal file
@@ -0,0 +1,39 @@
|
||||
<template>
|
||||
<div id="app">
|
||||
<personalInformation refs="personalInformation"></personalInformation>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import personalInformation from "./components/personalInformation.vue"
|
||||
export default {
|
||||
name: 'app',
|
||||
components: {
|
||||
personalInformation
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
views: {
|
||||
personalInformation: true
|
||||
}
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
showView(name) {
|
||||
for (let view in this.views) {
|
||||
this.views[view] = false;
|
||||
}
|
||||
this.views[name] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
#app {
|
||||
margin: 20px;
|
||||
}
|
||||
.custom-tooltip > .tooltip-inner{
|
||||
max-width: none;
|
||||
}
|
||||
</style>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 6.7 KiB |
@@ -0,0 +1,885 @@
|
||||
<template>
|
||||
<div>
|
||||
<titleSection :title="$root.translation('ID_PERSONAL_INFORMATION')"></titleSection>
|
||||
<b-form @submit.stop.prevent="onsubmit">
|
||||
<b-container fluid>
|
||||
<b-row>
|
||||
<b-col cols="3">
|
||||
<b-form-group :label="$root.translation('ID_FIRSTNAME')+' (*)'">
|
||||
<b-form-input v-model="form.USR_FIRSTNAME"
|
||||
autocomplete="off"
|
||||
:state="validateState('USR_FIRSTNAME')"></b-form-input>
|
||||
<b-form-invalid-feedback>{{$root.translation('ID_IS_REQUIRED')}}</b-form-invalid-feedback>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
<b-col cols="2">
|
||||
</b-col>
|
||||
<b-col cols="3">
|
||||
<b-form-group :label="$root.translation('ID_LASTNAME')+' (*)'">
|
||||
<b-form-input v-model="form.USR_LASTNAME"
|
||||
autocomplete="off"
|
||||
:state="validateState('USR_LASTNAME')"></b-form-input>
|
||||
<b-form-invalid-feedback>{{$root.translation('ID_IS_REQUIRED')}}</b-form-invalid-feedback>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
<b-col cols="1">
|
||||
</b-col>
|
||||
<b-col cols="3">
|
||||
<b-avatar rounded
|
||||
size="5rem"
|
||||
button
|
||||
badge-variant="light"
|
||||
style="position: absolute;right:30px;">
|
||||
</b-avatar>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-row>
|
||||
<b-col cols="3">
|
||||
<b-form-group :label="$root.translation('ID_ADDRESS')">
|
||||
<b-form-input v-model="form.USR_ADDRESS"
|
||||
autocomplete="off"/>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
<b-col cols="2">
|
||||
</b-col>
|
||||
<b-col cols="3">
|
||||
<b-form-group :label="$root.translation('ID_ZIP_CODE')">
|
||||
<b-form-input v-model="form.USR_ZIP_CODE"
|
||||
autocomplete="off"/>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
<b-col cols="1">
|
||||
</b-col>
|
||||
<b-col cols="3">
|
||||
<b-form-group :label="$root.translation('ID_USERNAME')+' (*)'">
|
||||
<b-form-input v-model="form.USR_USERNAME"
|
||||
autocomplete="off"
|
||||
:state="validate.USR_USERNAME.state"
|
||||
@keyup="validateUserName"></b-form-input>
|
||||
<b-form-valid-feedback><span v-html="validate.USR_USERNAME.message"></span></b-form-valid-feedback>
|
||||
<b-form-invalid-feedback><span v-html="validate.USR_USERNAME.message"></span></b-form-invalid-feedback>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-row>
|
||||
<b-col cols="3">
|
||||
<b-form-group :label="$root.translation('ID_COUNTRY')">
|
||||
<b-form-select v-model="form.USR_COUNTRY"
|
||||
:options="countryList"
|
||||
@change="getStateList"/>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
<b-col cols="2">
|
||||
<b-form-group :label="$root.translation('ID_STATE_REGION')">
|
||||
<b-form-select v-model="form.USR_CITY"
|
||||
:options="stateList"
|
||||
@change="getLocationList"/>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
<b-col cols="3">
|
||||
<b-form-group :label="$root.translation('ID_CITY')">
|
||||
<b-form-select v-model="form.USR_LOCATION"
|
||||
:options="locationList"/>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
<b-col cols="1">
|
||||
</b-col>
|
||||
<b-col cols="3">
|
||||
<b-form-group :label="$root.translation('ID_EMAIL')+' (*)'">
|
||||
<b-form-input v-model="form.USR_EMAIL"
|
||||
autocomplete="off"
|
||||
:state="validateState('USR_EMAIL')"></b-form-input>
|
||||
<b-form-invalid-feedback>{{$root.translation('ID_EMAIL_ENTER_VALID')}}</b-form-invalid-feedback>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-row>
|
||||
<b-col cols="3">
|
||||
<b-form-group :label="$root.translation('ID_PHONE')">
|
||||
<b-form-input v-model="form.USR_PHONE"
|
||||
autocomplete="off"/>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
<b-col cols="2">
|
||||
</b-col>
|
||||
<b-col cols="3">
|
||||
<b-form-group :label="$root.translation('ID_POSITION')">
|
||||
<b-form-input v-model="form.USR_POSITION"
|
||||
autocomplete="off"/>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
<b-col cols="1">
|
||||
</b-col>
|
||||
<b-col cols="3">
|
||||
<b-form-group :label="$root.translation('ID_STATUS')">
|
||||
<b-form-select v-model="form.USR_STATUS"
|
||||
:options="userStatus"/>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-row>
|
||||
<b-col cols="3">
|
||||
<b-form-group :label="$root.translation('ID_REPLACED_BY')">
|
||||
<b-input-group>
|
||||
<b-input-group-prepend class="w-25">
|
||||
<b-form-input v-model="filterUser"
|
||||
autocomplete="off"
|
||||
@keyup="getUsersList"
|
||||
placeholder="search"></b-form-input>
|
||||
</b-input-group-prepend>
|
||||
<b-form-select v-model="form.USR_REPLACED_BY"
|
||||
:options="usersList"></b-form-select>
|
||||
</b-input-group>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
<b-col cols="2"></b-col>
|
||||
<b-col cols="3">
|
||||
<b-form-group :label="$root.translation('ID_CALENDAR')">
|
||||
<b-form-select v-model="form.USR_CALENDAR"
|
||||
:options="availableCalendars"/>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
<b-col cols="1">
|
||||
</b-col>
|
||||
<b-col cols="3">
|
||||
<b-form-group :label="$root.translation('ID_EXPIRATION_DATE')">
|
||||
<b-form-datepicker v-model="form.USR_DUE_DATE"
|
||||
:date-format-options="{year:'numeric',month:'numeric',day:'numeric'}"/>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-row>
|
||||
<b-col cols="3">
|
||||
<b-form-group :label="$root.translation('ID_TIME_ZONE')">
|
||||
<b-form-select v-model="form.USR_TIME_ZONE"
|
||||
:options="timeZoneList"/>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
<b-col cols="2">
|
||||
</b-col>
|
||||
<b-col cols="3">
|
||||
<b-form-group :label="$root.translation('ID_DEFAULT_LANGUAGE')">
|
||||
<b-form-select v-model="form.USR_DEFAULT_LANG"
|
||||
:options="languagesList"/>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
<b-col cols="1">
|
||||
</b-col>
|
||||
<b-col cols="3">
|
||||
<b-form-group :label="$root.translation('ID_ROLE')">
|
||||
<b-form-select v-model="form.USR_ROLE"
|
||||
:options="rolesList"/>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-row>
|
||||
<b-col cols="3">
|
||||
<b-form-group :label="$root.translation('ID_DEFAULT_MAIN_MENU_OPTION')">
|
||||
<b-form-select v-model="form.PREF_DEFAULT_MENUSELECTED"
|
||||
:options="defaultMainMenuOptionList"/>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
<b-col cols="2">
|
||||
</b-col>
|
||||
<b-col cols="3">
|
||||
<b-form-group :label="$root.translation('ID_DEFAULT_CASES_MENU_OPTION')">
|
||||
<b-form-select v-model="form.PREF_DEFAULT_CASES_MENUSELECTED"
|
||||
:options="defaultCasesMenuOptionList"/>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
<b-col cols="1">
|
||||
</b-col>
|
||||
<b-col cols="3">
|
||||
<b-form-group :label="$root.translation('ID_NEW_PASSWORD')+' (*)'">
|
||||
<b-form-input v-model="form.USR_NEW_PASS"
|
||||
autocomplete="off"
|
||||
:state="validate.USR_NEW_PASS.state"
|
||||
type="password"
|
||||
@keyup="validatePassword"></b-form-input>
|
||||
<b-form-valid-feedback><span v-html="validate.USR_NEW_PASS.message"></span></b-form-valid-feedback>
|
||||
<b-form-invalid-feedback><span v-html="validate.USR_NEW_PASS.message"></span></b-form-invalid-feedback>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-row>
|
||||
<b-col cols="3"></b-col>
|
||||
<b-col cols="2"></b-col>
|
||||
<b-col cols="3"></b-col>
|
||||
<b-col cols="1"></b-col>
|
||||
<b-col cols="3">
|
||||
<b-form-group :label="$root.translation('ID_CONFIRM_PASSWORD')+' (*)'">
|
||||
<b-form-input v-model="form.USR_CNF_PASS"
|
||||
autocomplete="off"
|
||||
:state="validate.USR_CNF_PASS.state"
|
||||
type="password"
|
||||
@keyup="validateConfirmationPassword"></b-form-input>
|
||||
<b-form-invalid-feedback><span v-html="validate.USR_CNF_PASS.message"></span></b-form-invalid-feedback>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-row>
|
||||
<b-col cols="8">
|
||||
<fieldset class="border pt-1 pl-3 pb-3 pr-3">
|
||||
<legend style="width:auto;">{{$root.translation('ID_EXTENDED_ATTRIBUTES')}}</legend>
|
||||
<b-container class="mb-3">
|
||||
<b-row>
|
||||
<b-col>
|
||||
<div v-for="userExtendedAttribute in userExtendedAttributesList"
|
||||
:key="userExtendedAttribute.id">
|
||||
<b-form-group :label="userExtendedAttribute.name+(userExtendedAttribute.required===1?' (*)':'')"
|
||||
v-if="userExtendedAttribute.hidden===0?true:false">
|
||||
<b-form-input v-model="form.USR_EXTENDED_ATTRIBUTES_DATA[userExtendedAttribute.attributeId]"
|
||||
autocomplete="off"
|
||||
:type="userExtendedAttribute.password===1?'password':'text'"
|
||||
:state="validateExtendedAttribute(userExtendedAttribute)"></b-form-input>
|
||||
<b-form-invalid-feedback>{{$root.translation('ID_IS_REQUIRED')}}</b-form-invalid-feedback>
|
||||
</b-form-group>
|
||||
</div>
|
||||
</b-col>
|
||||
</b-row>
|
||||
</b-container>
|
||||
</fieldset>
|
||||
</b-col>
|
||||
<b-col cols="4">
|
||||
<fieldset class="border pt-1 pl-3 pb-3 pr-3">
|
||||
<legend style="width:auto;">{{$root.translation('ID_COSTS')}}</legend>
|
||||
<b-form-group :label="$root.translation('ID_COST_BY_HOUR')">
|
||||
<b-form-input v-model="form.USR_COST_BY_HOUR"
|
||||
autocomplete="off"
|
||||
:state="validateState('USR_COST_BY_HOUR')"></b-form-input>
|
||||
<b-form-invalid-feedback>{{$root.translation('ID_INVALID_VALUE',[$root.translation('ID_COST_BY_HOUR')])}}</b-form-invalid-feedback>
|
||||
</b-form-group>
|
||||
<b-form-group :label="$root.translation('ID_UNITS')">
|
||||
<b-form-input v-model="form.USR_UNIT_COST"
|
||||
autocomplete="off"/>
|
||||
</b-form-group>
|
||||
</fieldset>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-row>
|
||||
<b-col cols="12">
|
||||
<b-form-group class="mt-4">
|
||||
<b-form-checkbox v-model="form.USR_LOGGED_NEXT_TIME"
|
||||
value="1"
|
||||
unchecked-value="0">
|
||||
{{$root.translation('ID_USER_MUST_CHANGE_PASSWORD_AT_NEXT_LOGON')}}
|
||||
</b-form-checkbox>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-row>
|
||||
<b-col cols="12">
|
||||
<b-form-group class="mt-4 float-right">
|
||||
<b-button variant="danger"
|
||||
@click="cancel">{{$root.translation('ID_CANCEL')}}</b-button>
|
||||
<b-button type="submit"
|
||||
variant="success"
|
||||
:disabled="disableButtonSave">{{$root.translation('ID_SAVE')}}</b-button>
|
||||
</b-form-group>
|
||||
</b-col>
|
||||
</b-row>
|
||||
</b-container>
|
||||
</b-form>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import titleSection from "./titleSection.vue"
|
||||
import axios from "axios"
|
||||
import { validationMixin } from "vuelidate"
|
||||
import { required, numeric, email } from "vuelidate/lib/validators"
|
||||
export default {
|
||||
mixins: [validationMixin],
|
||||
components: {
|
||||
titleSection
|
||||
},
|
||||
validations: {
|
||||
form: {
|
||||
USR_FIRSTNAME: {
|
||||
required
|
||||
},
|
||||
USR_LASTNAME: {
|
||||
required
|
||||
},
|
||||
USR_EMAIL: {
|
||||
required,
|
||||
email
|
||||
},
|
||||
USR_COST_BY_HOUR: {
|
||||
numeric
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
form: {
|
||||
USR_UID: "",
|
||||
USR_FIRSTNAME: "",
|
||||
USR_LASTNAME: "",
|
||||
USR_ADDRESS: "",
|
||||
USR_ZIP_CODE: "",
|
||||
USR_COUNTRY: "",
|
||||
USR_CITY: "",
|
||||
USR_LOCATION: "",
|
||||
USR_USERNAME: "",
|
||||
USR_PHONE: "",
|
||||
USR_POSITION: "",
|
||||
USR_EMAIL: "",
|
||||
USR_REPLACED_BY: "",
|
||||
USR_CALENDAR: "",
|
||||
USR_STATUS: "ACTIVE",
|
||||
USR_TIME_ZONE: "",
|
||||
USR_DEFAULT_LANG: "",
|
||||
USR_DUE_DATE: this.getDefaultDueDate(),
|
||||
PREF_DEFAULT_MENUSELECTED: "PM_SETUP",
|
||||
PREF_DEFAULT_CASES_MENUSELECTED: "",
|
||||
USR_ROLE: "PROCESSMAKER_OPERATOR",
|
||||
USR_COST_BY_HOUR: "0",
|
||||
USR_UNIT_COST: "$",
|
||||
USR_NEW_PASS: "",
|
||||
USR_CNF_PASS: "",
|
||||
USR_LOGGED_NEXT_TIME: "0",
|
||||
//
|
||||
USR_EXTENDED_ATTRIBUTES_DATA: []
|
||||
},
|
||||
validate: {
|
||||
USR_USERNAME: {
|
||||
message: "",
|
||||
state: true
|
||||
},
|
||||
USR_NEW_PASS: {
|
||||
message: "",
|
||||
state: true
|
||||
},
|
||||
USR_CNF_PASS: {
|
||||
message: "",
|
||||
state: true
|
||||
}
|
||||
},
|
||||
countryList: [{
|
||||
value: "",
|
||||
text: this.$root.translation('ID_SELECT')
|
||||
}],
|
||||
stateList: [{
|
||||
value: "",
|
||||
text: this.$root.translation('ID_SELECT')
|
||||
}],
|
||||
locationList: [{
|
||||
value: "",
|
||||
text: this.$root.translation('ID_SELECT')
|
||||
}],
|
||||
usersList: [],
|
||||
filterUser: "",
|
||||
availableCalendars: [],
|
||||
userStatus: [
|
||||
{value: "ACTIVE", text: this.$root.translation("ID_ACTIVE")},
|
||||
{value: "INACTIVE", text: this.$root.translation("ID_INACTIVE")},
|
||||
{value: "VACATION", text: this.$root.translation("ID_VACATION")}
|
||||
],
|
||||
timeZoneList: [],
|
||||
languagesList: [],
|
||||
defaultMainMenuOptionList: [],
|
||||
defaultCasesMenuOptionList: [],
|
||||
rolesList: [],
|
||||
userExtendedAttributesList: [],
|
||||
disableButtonSave: false,
|
||||
editing: false
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.$nextTick(function () {
|
||||
let promise = null;
|
||||
if ("USR_UID" in window && window.USR_UID !== "") {
|
||||
promise = this.load();
|
||||
promise.then(response => {
|
||||
response;
|
||||
this.loadServices();
|
||||
});
|
||||
} else {
|
||||
this.loadServices();
|
||||
}
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
cancel() {
|
||||
window.location = this.$root.baseUrl() + "users/users_List";
|
||||
},
|
||||
onsubmit() {
|
||||
this.$v.form.$touch();
|
||||
if (this.$v.form.$anyError) {
|
||||
return;
|
||||
}
|
||||
if (this.form.USR_UID === "") {
|
||||
if (this.form.USR_NEW_PASS === "") {
|
||||
this.validate.USR_NEW_PASS.message = this.$root.translation('ID_IS_REQUIRED');
|
||||
this.validate.USR_NEW_PASS.state = false;
|
||||
this.disableButtonSave = true;
|
||||
return;
|
||||
}
|
||||
if (this.form.USR_CNF_PASS === "") {
|
||||
this.validate.USR_CNF_PASS.message = this.$root.translation('ID_IS_REQUIRED');
|
||||
this.validate.USR_CNF_PASS.state = false;
|
||||
this.disableButtonSave = true;
|
||||
return;
|
||||
}
|
||||
if (this.form.USR_CNF_PASS !== this.form.USR_NEW_PASS) {
|
||||
this.validate.USR_CNF_PASS.message = this.$root.translation("ID_NEW_PASS_SAME_OLD_PASS");
|
||||
this.validate.USR_CNF_PASS.state = false;
|
||||
this.disableButtonSave = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
for (let i in this.userExtendedAttributesList) {
|
||||
let status = this.validateExtendedAttribute(this.userExtendedAttributesList[i]);
|
||||
if (this.userExtendedAttributesList[i].required === 1) {
|
||||
if (status === null || status === false) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
//get form data
|
||||
let extendedAttributes = {};
|
||||
for (let i in this.userExtendedAttributesList) {
|
||||
let attributeId = this.userExtendedAttributesList[i].attributeId;
|
||||
let value = this.form.USR_EXTENDED_ATTRIBUTES_DATA[attributeId];
|
||||
if (value !== undefined) {
|
||||
extendedAttributes[attributeId] = value;
|
||||
}
|
||||
}
|
||||
|
||||
let formData = new FormData();
|
||||
formData.append("_token", "EE2sNzIAdIYNLJE8UQY2Qj7CyewqtPkMRusDviix");
|
||||
formData.append("USR_FIRSTNAME", this.form.USR_FIRSTNAME);
|
||||
formData.append("USR_LASTNAME", this.form.USR_LASTNAME);
|
||||
formData.append("USR_USERNAME", this.form.USR_USERNAME);
|
||||
formData.append("USR_EMAIL", this.form.USR_EMAIL);
|
||||
formData.append("USR_ADDRESS", this.form.USR_ADDRESS);
|
||||
formData.append("USR_ZIP_CODE", this.form.USR_ZIP_CODE);
|
||||
formData.append("USR_COUNTRY", this.form.USR_COUNTRY);
|
||||
formData.append("USR_CITY", this.form.USR_CITY);
|
||||
formData.append("USR_REGION", this.form.USR_CITY); //important for compatibility
|
||||
formData.append("USR_LOCATION", this.form.USR_LOCATION);
|
||||
formData.append("USR_PHONE", this.form.USR_PHONE);
|
||||
formData.append("USR_POSITION", this.form.USR_POSITION);
|
||||
formData.append("USR_REPLACED_BY", this.form.USR_REPLACED_BY);
|
||||
formData.append("USR_DUE_DATE", this.form.USR_DUE_DATE);
|
||||
formData.append("USR_CALENDAR", this.form.USR_CALENDAR);
|
||||
formData.append("USR_STATUS", this.form.USR_STATUS);
|
||||
formData.append("USR_ROLE", this.form.USR_ROLE);
|
||||
formData.append("USR_TIME_ZONE", this.form.USR_TIME_ZONE);
|
||||
formData.append("USR_DEFAULT_LANG", this.form.USR_DEFAULT_LANG);
|
||||
formData.append("USR_COST_BY_HOUR", this.form.USR_COST_BY_HOUR);
|
||||
formData.append("USR_UNIT_COST", this.form.USR_UNIT_COST);
|
||||
formData.append("currentPassword", "");
|
||||
formData.append("USR_NEW_PASS", this.form.USR_NEW_PASS);
|
||||
formData.append("USR_CNF_PASS", this.form.USR_CNF_PASS);
|
||||
formData.append("USR_PHOTO", "");
|
||||
formData.append("PREF_DEFAULT_MENUSELECTED", this.form.PREF_DEFAULT_MENUSELECTED);
|
||||
formData.append("PREF_DEFAULT_CASES_MENUSELECTED", this.form.PREF_DEFAULT_CASES_MENUSELECTED);
|
||||
formData.append("action", "saveUser");
|
||||
formData.append("USR_UID", this.form.USR_UID);
|
||||
formData.append("USR_LOGGED_NEXT_TIME", this.form.USR_LOGGED_NEXT_TIME);
|
||||
formData.append("USR_EXTENDED_ATTRIBUTES_DATA", JSON.stringify(extendedAttributes));
|
||||
axios.post(this.$root.baseUrl() + "users/usersAjax", formData)
|
||||
.then(response => {
|
||||
response;
|
||||
if ("error" in response.data && response.data.error !== "") {
|
||||
this.$bvModal.msgBoxOk(response.data.error, {
|
||||
title: " ", //is important because title disappear
|
||||
hideHeaderClose: false,
|
||||
okTitle: this.$root.translation('ID_OK'),
|
||||
okVariant: "success",
|
||||
okOnly: true
|
||||
}).then(value => {
|
||||
if (value === false) {
|
||||
return;
|
||||
}
|
||||
}).catch(err => {
|
||||
err;
|
||||
});
|
||||
}
|
||||
window.location = this.$root.baseUrl() + "users/users_List";
|
||||
})
|
||||
.catch(error => {
|
||||
error;
|
||||
})
|
||||
.finally(() => {
|
||||
});
|
||||
},
|
||||
validateState(name) {
|
||||
const {$dirty, $error} = this.$v.form[name];
|
||||
return $dirty ? !$error : null;
|
||||
},
|
||||
validateUserName() {
|
||||
this.disableButtonSave = true;
|
||||
let formData = new FormData();
|
||||
formData.append("action", "testUsername");
|
||||
formData.append("USR_UID", this.form.USR_UID);
|
||||
formData.append("NEW_USERNAME", this.form.USR_USERNAME);
|
||||
return axios.post(this.$root.baseUrl() + "users/usersAjax", formData)
|
||||
.then(response => {
|
||||
response;
|
||||
this.validate.USR_USERNAME.message = response.data.descriptionText;
|
||||
if (response.data.exists === false) {
|
||||
this.validate.USR_USERNAME.state = true;
|
||||
this.disableButtonSave = false;
|
||||
return;
|
||||
}
|
||||
this.validate.USR_USERNAME.state = false;
|
||||
this.disableButtonSave = true;
|
||||
})
|
||||
.catch(error => {
|
||||
error;
|
||||
})
|
||||
.finally(() => {
|
||||
});
|
||||
},
|
||||
validatePassword() {
|
||||
this.disableButtonSave = true;
|
||||
let formData = new FormData();
|
||||
formData.append("action", "testPassword");
|
||||
formData.append("PASSWORD_TEXT", this.form.USR_NEW_PASS);
|
||||
return axios.post(this.$root.baseUrl() + "users/usersAjax", formData)
|
||||
.then(response => {
|
||||
response;
|
||||
this.validate.USR_NEW_PASS.message = response.data.DESCRIPTION;
|
||||
if (response.data.STATUS === true) {
|
||||
this.validate.USR_NEW_PASS.state = true;
|
||||
this.disableButtonSave = false;
|
||||
return;
|
||||
}
|
||||
this.validate.USR_NEW_PASS.state = false;
|
||||
this.disableButtonSave = true;
|
||||
})
|
||||
.catch(error => {
|
||||
error;
|
||||
})
|
||||
.finally(() => {
|
||||
});
|
||||
},
|
||||
validateConfirmationPassword() {
|
||||
this.disableButtonSave = true;
|
||||
this.validate.USR_CNF_PASS.message = this.$root.translation("ID_NEW_PASS_SAME_OLD_PASS");
|
||||
if (this.form.USR_CNF_PASS === this.form.USR_NEW_PASS) {
|
||||
this.validate.USR_CNF_PASS.state = true;
|
||||
this.disableButtonSave = false;
|
||||
return;
|
||||
}
|
||||
this.validate.USR_CNF_PASS.state = false;
|
||||
this.disableButtonSave = true;
|
||||
},
|
||||
validateExtendedAttribute(obj) {
|
||||
let value = this.form.USR_EXTENDED_ATTRIBUTES_DATA[obj.attributeId];
|
||||
if (obj.required === 1) {
|
||||
if (value === undefined || value === "") {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return null;
|
||||
},
|
||||
load() {
|
||||
let formData = new FormData();
|
||||
formData.append("action", "userData");
|
||||
formData.append("USR_UID", window.USR_UID);
|
||||
return axios.post(this.$root.baseUrl() + "users/usersAjax", formData)
|
||||
.then(response => {
|
||||
response;
|
||||
if ("user" in response.data) {
|
||||
for (let i in this.form) {
|
||||
if (i in response.data.user) {
|
||||
let value = response.data.user[i]
|
||||
if (i === "USR_EXTENDED_ATTRIBUTES_DATA") {
|
||||
if (value === null) {
|
||||
value = "{}";
|
||||
}
|
||||
value = JSON.parse(value);
|
||||
}
|
||||
this.form[i] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
error;
|
||||
})
|
||||
.finally(() => {
|
||||
});
|
||||
},
|
||||
loadServices() {
|
||||
this.getCountryList();
|
||||
this.getAvailableCalendars();
|
||||
this.getTimeZoneList();
|
||||
this.getLanguagesList();
|
||||
this.getDefaultMainMenuOptionList();
|
||||
this.getDefaultCasesMenuOptionList();
|
||||
this.getRolesList();
|
||||
this.getUserExtendedAttributesList();
|
||||
},
|
||||
getCountryList() {
|
||||
let formData = new FormData();
|
||||
formData.append("action", "countryList");
|
||||
return axios.post(this.$root.baseUrl() + "users/usersAjax", formData)
|
||||
.then(response => {
|
||||
response;
|
||||
let data = [{
|
||||
value: "",
|
||||
text: this.$root.translation('ID_SELECT')
|
||||
}];
|
||||
for (let i in response.data) {
|
||||
data.push({
|
||||
value: response.data[i].IC_UID,
|
||||
text: response.data[i].IC_NAME
|
||||
});
|
||||
}
|
||||
this.countryList = data;
|
||||
this.getStateList();
|
||||
})
|
||||
.catch(error => {
|
||||
error;
|
||||
})
|
||||
.finally(() => {
|
||||
});
|
||||
},
|
||||
getStateList() {
|
||||
let formData = new FormData();
|
||||
formData.append("action", "stateList");
|
||||
formData.append("IC_UID", this.form.USR_COUNTRY);
|
||||
return axios.post(this.$root.baseUrl() + "users/usersAjax", formData)
|
||||
.then(response => {
|
||||
response;
|
||||
let data = [{
|
||||
value: "",
|
||||
text: this.$root.translation('ID_SELECT')
|
||||
}];
|
||||
for (let i in response.data) {
|
||||
data.push({
|
||||
value: response.data[i].IS_UID,
|
||||
text: response.data[i].IS_NAME
|
||||
});
|
||||
}
|
||||
this.stateList = data;
|
||||
this.getLocationList();
|
||||
})
|
||||
.catch(error => {
|
||||
error;
|
||||
})
|
||||
.finally(() => {
|
||||
});
|
||||
},
|
||||
getLocationList() {
|
||||
let formData = new FormData();
|
||||
formData.append("action", "locationList");
|
||||
formData.append("IC_UID", this.form.USR_COUNTRY);
|
||||
formData.append("IS_UID", this.form.USR_CITY);
|
||||
return axios.post(this.$root.baseUrl() + "users/usersAjax", formData)
|
||||
.then(response => {
|
||||
response;
|
||||
let data = [{
|
||||
value: "",
|
||||
text: this.$root.translation('ID_SELECT')
|
||||
}];
|
||||
for (let i in response.data) {
|
||||
data.push({
|
||||
value: response.data[i].IL_UID,
|
||||
text: response.data[i].IL_NAME
|
||||
});
|
||||
}
|
||||
this.locationList = data;
|
||||
})
|
||||
.catch(error => {
|
||||
error;
|
||||
})
|
||||
.finally(() => {
|
||||
});
|
||||
},
|
||||
getUsersList() {
|
||||
let formData = new FormData();
|
||||
formData.append("action", "usersList");
|
||||
formData.append("USR_UID", this.form.USR_UID);
|
||||
formData.append("filter", this.filterUser);
|
||||
return axios.post(this.$root.baseUrl() + "users/usersAjax", formData)
|
||||
.then(response => {
|
||||
response;
|
||||
let data = [];
|
||||
for (let i in response.data) {
|
||||
data.push({
|
||||
value: response.data[i].USR_UID,
|
||||
text: response.data[i].USER_FULLNAME
|
||||
});
|
||||
}
|
||||
this.usersList = data;
|
||||
//set the first element
|
||||
if (data.length > 0) {
|
||||
this.form.USR_REPLACED_BY = data[0].value;
|
||||
} else {
|
||||
this.form.USR_REPLACED_BY = "";
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
error;
|
||||
})
|
||||
.finally(() => {
|
||||
});
|
||||
},
|
||||
getAvailableCalendars() {
|
||||
let formData = new FormData();
|
||||
formData.append("action", "availableCalendars");
|
||||
return axios.post(this.$root.baseUrl() + "users/usersAjax", formData)
|
||||
.then(response => {
|
||||
response;
|
||||
let data = [];
|
||||
for (let i in response.data) {
|
||||
data.push({
|
||||
value: response.data[i].CALENDAR_UID,
|
||||
text: response.data[i].CALENDAR_NAME
|
||||
});
|
||||
}
|
||||
this.availableCalendars = data;
|
||||
})
|
||||
.catch(error => {
|
||||
error;
|
||||
})
|
||||
.finally(() => {
|
||||
});
|
||||
},
|
||||
getTimeZoneList() {
|
||||
let formData = new FormData();
|
||||
formData.append("action", "timeZoneParameters");
|
||||
return axios.post(this.$root.baseUrl() + "users/usersAjax", formData)
|
||||
.then(response => {
|
||||
response;
|
||||
let data = [];
|
||||
for (let i in response.data.timeZoneList) {
|
||||
data.push({
|
||||
value: response.data.timeZoneList[i].value,
|
||||
text: response.data.timeZoneList[i].text
|
||||
});
|
||||
}
|
||||
this.timeZoneList = data;
|
||||
this.form.USR_TIME_ZONE = response.data.systemTimeZone;
|
||||
})
|
||||
.catch(error => {
|
||||
error;
|
||||
})
|
||||
.finally(() => {
|
||||
});
|
||||
},
|
||||
getLanguagesList() {
|
||||
let formData = new FormData();
|
||||
formData.append("action", "languagesList");
|
||||
return axios.post(this.$root.baseUrl() + "users/usersAjax", formData)
|
||||
.then(response => {
|
||||
response;
|
||||
let data = [];
|
||||
for (let i in response.data) {
|
||||
data.push({
|
||||
value: response.data[i].LAN_ID,
|
||||
text: response.data[i].LAN_NAME
|
||||
});
|
||||
}
|
||||
this.languagesList = data;
|
||||
})
|
||||
.catch(error => {
|
||||
error;
|
||||
})
|
||||
.finally(() => {
|
||||
});
|
||||
},
|
||||
getDefaultMainMenuOptionList() {
|
||||
let formData = new FormData();
|
||||
formData.append("action", "defaultMainMenuOptionList");
|
||||
return axios.post(this.$root.baseUrl() + "users/usersAjax", formData)
|
||||
.then(response => {
|
||||
response;
|
||||
let data = [];
|
||||
for (let i in response.data) {
|
||||
data.push({
|
||||
value: response.data[i].id,
|
||||
text: response.data[i].name
|
||||
});
|
||||
}
|
||||
this.defaultMainMenuOptionList = data;
|
||||
})
|
||||
.catch(error => {
|
||||
error;
|
||||
})
|
||||
.finally(() => {
|
||||
});
|
||||
},
|
||||
getDefaultCasesMenuOptionList() {
|
||||
let formData = new FormData();
|
||||
formData.append("action", "defaultCasesMenuOptionList");
|
||||
return axios.post(this.$root.baseUrl() + "users/usersAjax", formData)
|
||||
.then(response => {
|
||||
response;
|
||||
let data = [{
|
||||
value: "",
|
||||
text: this.$root.translation('ID_SELECT')
|
||||
}];
|
||||
for (let i in response.data) {
|
||||
data.push({
|
||||
value: response.data[i].id,
|
||||
text: response.data[i].name
|
||||
});
|
||||
}
|
||||
this.defaultCasesMenuOptionList = data;
|
||||
})
|
||||
.catch(error => {
|
||||
error;
|
||||
})
|
||||
.finally(() => {
|
||||
});
|
||||
},
|
||||
getRolesList() {
|
||||
let formData = new FormData();
|
||||
formData.append("action", "rolesList");
|
||||
return axios.post(this.$root.baseUrl() + "users/usersAjax", formData)
|
||||
.then(response => {
|
||||
response;
|
||||
let data = [];
|
||||
for (let i in response.data) {
|
||||
data.push({
|
||||
value: response.data[i].ROL_UID,
|
||||
text: response.data[i].ROL_CODE
|
||||
});
|
||||
}
|
||||
this.rolesList = data;
|
||||
})
|
||||
.catch(error => {
|
||||
error;
|
||||
})
|
||||
.finally(() => {
|
||||
});
|
||||
},
|
||||
getUserExtendedAttributesList() {
|
||||
let formData = new FormData();
|
||||
formData.append("option", "userExtendedAttributesList");
|
||||
return axios.post(this.$root.baseUrl() + "userExtendedAttributes/index", formData)
|
||||
.then(response => {
|
||||
response;
|
||||
this.userExtendedAttributesList = response.data.data;
|
||||
})
|
||||
.catch(error => {
|
||||
error;
|
||||
})
|
||||
.finally(() => {
|
||||
});
|
||||
},
|
||||
getDefaultDueDate() {
|
||||
let date = new Date();
|
||||
let month = "" + (date.getMonth() + 1);
|
||||
let day = "" + date.getDate();
|
||||
let year = date.getFullYear();
|
||||
if (month.length < 2)
|
||||
month = "0" + month;
|
||||
if (day.length < 2)
|
||||
day = "0" + day;
|
||||
return [year + 1, month, day].join("-");
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,18 @@
|
||||
<template>
|
||||
<div>
|
||||
<h3 class="text-primary">
|
||||
{{title}}
|
||||
</h3>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default{
|
||||
props: {
|
||||
title: String
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
</style>
|
||||
33
workflow/engine/methods/userPersonalInformation/src/main.js
Normal file
33
workflow/engine/methods/userPersonalInformation/src/main.js
Normal file
@@ -0,0 +1,33 @@
|
||||
import Vue from 'vue'
|
||||
import {BootstrapVue, IconsPlugin} from 'bootstrap-vue'
|
||||
import 'bootstrap/dist/css/bootstrap.css'
|
||||
import 'bootstrap-vue/dist/bootstrap-vue.css'
|
||||
import {ClientTable} from 'vue-tables-2'
|
||||
import {ServerTable} from 'vue-tables-2'
|
||||
import App from './App.vue';
|
||||
|
||||
Vue.config.productionTip = false
|
||||
Vue.use(BootstrapVue)
|
||||
Vue.use(IconsPlugin)
|
||||
Vue.use(ClientTable, {}, false, 'bootstrap4', {});
|
||||
Vue.use(ServerTable, {}, false, 'bootstrap4', {});
|
||||
|
||||
new Vue({
|
||||
render: h => h(App),
|
||||
methods: {
|
||||
translation(text, params) {
|
||||
if ("TRANSLATIONS" in window && text in window.TRANSLATIONS) {
|
||||
text = window.TRANSLATIONS[text];
|
||||
if (params != undefined && "length" in params) {
|
||||
for (let i = 0; i < params.length; i++) {
|
||||
text = text.replace("{" + i + "}", params[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
return text;
|
||||
},
|
||||
baseUrl() {
|
||||
return "../";
|
||||
}
|
||||
}
|
||||
}).$mount('#app');
|
||||
@@ -0,0 +1,3 @@
|
||||
module.exports = {
|
||||
publicPath: '/lib/userPersonalInformation/'
|
||||
};
|
||||
@@ -14,6 +14,18 @@ try {
|
||||
|
||||
// Executing the action
|
||||
switch ($action) {
|
||||
case 'timeZoneParameters':
|
||||
$arraySystemConfiguration = System::getSystemConfiguration('', '', config("system.workspace"));
|
||||
|
||||
$data = array_map(function ($value) {
|
||||
return ["value" => $value, "text" => $value];
|
||||
}, DateTimeZone::listIdentifiers());
|
||||
$result = [
|
||||
"timeZoneList" => $data,
|
||||
"systemTimeZone" => $arraySystemConfiguration['time_zone']
|
||||
];
|
||||
print(G::json_encode($result));
|
||||
break;
|
||||
case 'countryList':
|
||||
$c = new Criteria();
|
||||
$c->add(IsoCountryPeer::IC_UID, null, Criteria::ISNOTNULL);
|
||||
@@ -200,9 +212,6 @@ try {
|
||||
} catch (Exception $e) {
|
||||
$result->success = false;
|
||||
$result->fileError = true;
|
||||
|
||||
echo G::json_encode($result);
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -422,7 +431,7 @@ try {
|
||||
$fields['DESCRIPTION'] = G::LoadTranslation('ID_PASSWORD_COMPLIES_POLICIES') . '</span>';
|
||||
$fields['STATUS'] = true;
|
||||
}
|
||||
$span = '<span style="color: ' . $color . '; font: 9px tahoma,arial,helvetica,sans-serif;">';
|
||||
$span = '<span style="color: ' . $color . '; ">';
|
||||
$gif = '<img width="13" height="13" border="0" src="' . $img . '">';
|
||||
$fields['DESCRIPTION'] = $span . $gif . $fields['DESCRIPTION'];
|
||||
print(G::json_encode($fields));
|
||||
@@ -459,7 +468,7 @@ try {
|
||||
$response['exists'] = false;
|
||||
}
|
||||
|
||||
$span = '<span style="color: ' . $color . '; font: 9px tahoma,arial,helvetica,sans-serif;">';
|
||||
$span = '<span style="color: ' . $color . '; ">';
|
||||
$gif = '<img width="13" height="13" border="0" src="' . $img . '">';
|
||||
$response['descriptionText'] = $span . $gif . $text . '</span>';
|
||||
echo G::json_encode($response);
|
||||
|
||||
@@ -9,6 +9,16 @@ if (isset($_GET['USR_UID']) && RBAC::isGuestUserUid($_GET['USR_UID'])) {
|
||||
//calculating the max upload file size;
|
||||
use ProcessMaker\Core\System;
|
||||
|
||||
if (isset($_REQUEST['userInterface']) && $_REQUEST['userInterface'] === "v2") {
|
||||
$lang = defined("SYS_LANG") ? SYS_LANG : "en";
|
||||
|
||||
$html = file_get_contents(PATH_HTML . "lib/userPersonalInformation/index.html");
|
||||
$html = str_replace("var USR_UID='';", "var USR_UID='{$_GET['USR_UID']}';", $html);
|
||||
$html = str_replace("translation.en.js", "translation.{$lang}.js", $html);
|
||||
echo $html;
|
||||
exit();
|
||||
}
|
||||
|
||||
$POST_MAX_SIZE = ini_get('post_max_size');
|
||||
$mul = substr($POST_MAX_SIZE, - 1);
|
||||
$mul = ($mul == 'M' ? 1048576 : ($mul == 'K' ? 1024 : ($mul == 'G' ? 1073741824 : 1)));
|
||||
@@ -30,7 +40,7 @@ $expirationDate = 1;
|
||||
$envFile = PATH_CONFIG . 'env.ini';
|
||||
if (file_exists($envFile)) {
|
||||
$sysConf = System::getSystemConfiguration($envFile);
|
||||
if (isset($sysConf['expiration_year']) && $sysConf['expiration_year']>0) {
|
||||
if (isset($sysConf['expiration_year']) && $sysConf['expiration_year'] > 0) {
|
||||
$expirationDate = abs($sysConf['expiration_year']);
|
||||
}
|
||||
}
|
||||
@@ -52,9 +62,9 @@ $oHeadPublisher->assign('MODE', $_GET['MODE']);
|
||||
$oHeadPublisher->assign('MAX_FILES_SIZE', ' (' . $maxFileSize . ') ');
|
||||
$oHeadPublisher->assign('SYSTEM_TIME_ZONE', $arraySystemConfiguration['time_zone']);
|
||||
$oHeadPublisher->assign('TIME_ZONE_DATA', array_map(function ($value) {
|
||||
return [$value, $value];
|
||||
}, DateTimeZone::listIdentifiers()));
|
||||
$oHeadPublisher->assign('__SYSTEM_UTC_TIME_ZONE__', (isset($_SESSION['__SYSTEM_UTC_TIME_ZONE__']) && $_SESSION['__SYSTEM_UTC_TIME_ZONE__'])? 1 : 0);
|
||||
return [$value, $value];
|
||||
}, DateTimeZone::listIdentifiers()));
|
||||
$oHeadPublisher->assign('__SYSTEM_UTC_TIME_ZONE__', (isset($_SESSION['__SYSTEM_UTC_TIME_ZONE__']) && $_SESSION['__SYSTEM_UTC_TIME_ZONE__']) ? 1 : 0);
|
||||
$oHeadPublisher->assign('EXPIRATION_DATE', $expirationDate);
|
||||
$oHeadPublisher->assign('LANGUAGE_MANAGEMENT', $languageManagement);
|
||||
$oHeadPublisher->assign('__ACTION__', 'saveUser');
|
||||
|
||||
@@ -5,6 +5,15 @@ use ProcessMaker\Core\System;
|
||||
|
||||
$RBAC->requirePermissions('PM_USERS');
|
||||
|
||||
if (isset($_REQUEST['userInterface']) && $_REQUEST['userInterface'] === "v2") {
|
||||
$lang = defined("SYS_LANG") ? SYS_LANG : "en";
|
||||
|
||||
$html = file_get_contents(PATH_HOME . "public_html/lib/userPersonalInformation/index.html");
|
||||
$html = str_replace("translation.en.js", "translation.{$lang}.js", $html);
|
||||
echo $html;
|
||||
exit();
|
||||
}
|
||||
|
||||
//calculating the max upload file size;
|
||||
$POST_MAX_SIZE = ini_get('post_max_size');
|
||||
$mul = substr($POST_MAX_SIZE, - 1);
|
||||
|
||||
@@ -8,6 +8,7 @@ use Criteria;
|
||||
use DateTime;
|
||||
use Exception;
|
||||
use G;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use ProcessMaker\Util\Common;
|
||||
use ResultSet;
|
||||
use Roles as ModelRoles;
|
||||
@@ -664,5 +665,30 @@ class Role
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all active roles.
|
||||
* @return array
|
||||
*/
|
||||
public static function getAllRoles()
|
||||
{
|
||||
$lang = defined('SYS_LANG') ? SYS_LANG : 'en';
|
||||
$roles = DB::table('CONTENT')
|
||||
->join('RBAC_ROLES', 'CONTENT.CON_ID', '=', 'RBAC_ROLES.ROL_UID')
|
||||
->where('CONTENT.CON_CATEGORY', '=', 'ROL_NAME')
|
||||
->where('CONTENT.CON_LANG', '=', $lang)
|
||||
->where('RBAC_ROLES.ROL_CODE', '<>', 'RBAC_ADMIN')
|
||||
->where('RBAC_ROLES.ROL_CODE', '<>', 'PROCESSMAKER_GUEST')
|
||||
->where('RBAC_ROLES.ROL_STATUS', '=', '1')
|
||||
->select([
|
||||
'RBAC_ROLES.ROL_UID',
|
||||
'RBAC_ROLES.ROL_CODE',
|
||||
'CONTENT.CON_VALUE AS ROL_NAME',
|
||||
'CONTENT.CON_LANG AS LANG'
|
||||
])
|
||||
->get()
|
||||
->toArray();
|
||||
return $roles;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -607,6 +607,10 @@ class TimerEvent
|
||||
//Create
|
||||
$cnn = \Propel::getConnection("workflow");
|
||||
|
||||
$evnUid = $arrayData['EVN_UID'];
|
||||
$caseTitle = $arrayData['CASETITLE'];
|
||||
Task::setTaskDefTitle($evnUid, $caseTitle);
|
||||
|
||||
$arrayData = $this->unsetFields($arrayData);
|
||||
|
||||
try {
|
||||
|
||||
@@ -198,7 +198,6 @@ class Task extends Model
|
||||
$join->on('ELEMENT_TASK_RELATION.TAS_UID', '=', 'TASK.TAS_UID')
|
||||
->where('ELEMENT_TASK_RELATION.ELEMENT_UID', '=', $evnUid);
|
||||
});
|
||||
|
||||
$query->update(['TASK.TAS_DEF_TITLE' => $caseTitle]);
|
||||
|
||||
return $query;
|
||||
@@ -219,7 +218,12 @@ class Task extends Model
|
||||
->where('ELEMENT_TASK_RELATION.ELEMENT_UID', '=', $evnUid);
|
||||
});
|
||||
|
||||
return $query->get()->values()->toArray()['0']['TAS_DEF_TITLE'];
|
||||
$res = $query->first();
|
||||
if(is_null($res)) {
|
||||
return "";
|
||||
} else {
|
||||
return $res->TAS_DEF_TITLE;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
namespace ProcessMaker\Model;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class UserExtendedAttributes extends Model
|
||||
{
|
||||
protected $table = "USER_EXTENDED_ATTRIBUTES";
|
||||
protected $primaryKey = "UEA_ID";
|
||||
public $incrementing = true;
|
||||
public $timestamps = false;
|
||||
|
||||
}
|
||||
@@ -38,7 +38,7 @@ Ext.onReady(function() {
|
||||
text : _('ID_BACK'),
|
||||
iconCls: "button_menu_ext ss_sprite ss_arrow_left",
|
||||
handler: function() {
|
||||
location.href = '../authSources/authSources_List';
|
||||
location.href = "../authenticationSources/index";
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -71,7 +71,7 @@ Ext.onReady(function() {
|
||||
|
||||
handler: function ()
|
||||
{
|
||||
redirectPage("authSources_List");
|
||||
location.href = "../authenticationSources/index";
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -54,6 +54,9 @@ Ext.onReady(function(){
|
||||
data = PMExt.emailConst.numberColumn.defaultValue;
|
||||
}
|
||||
}
|
||||
if (metadata.id === 'APP_MSG_TO' || metadata.id === 'APP_MSG_ERROR') {
|
||||
return Ext.util.Format.htmlEncode(data);
|
||||
}
|
||||
var new_text = metadata.style.split(';');
|
||||
var style = '';
|
||||
for (var i = 0; i < new_text.length -1 ; i++) {
|
||||
|
||||
@@ -413,7 +413,7 @@ Ext.onReady(function(){
|
||||
{
|
||||
text: _("ID_EDIT"),
|
||||
handler: function () {
|
||||
location.href = "usersEdit?USR_UID=" + USERS.USR_UID + "&USR_AUTH_SOURCE=" + USERS.USR_AUTH_SOURCE + "&MODE=edit";
|
||||
location.href = "usersEdit?USR_UID=" + USERS.USR_UID + "&USR_AUTH_SOURCE=" + USERS.USR_AUTH_SOURCE + "&MODE=edit&userInterface=v2";
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
@@ -427,7 +427,7 @@ DoNothing = function(){};
|
||||
|
||||
//Open New User Form
|
||||
NewUserAction = function(){
|
||||
location.href = 'usersNew?MODE=new';
|
||||
location.href = 'usersNew?MODE=new&userInterface=v2';
|
||||
};
|
||||
|
||||
//Change user status
|
||||
@@ -572,7 +572,7 @@ SummaryTabOpen = function(){
|
||||
EditUserAction = function(){
|
||||
var uid = infoGrid.getSelectionModel().getSelected();
|
||||
if (uid) {
|
||||
location.href = 'usersEdit?USR_UID=' + uid.data.USR_UID+'&USR_AUTH_SOURCE=' + uid.data.USR_AUTH_SOURCE+'&MODE=edit';
|
||||
location.href = 'usersEdit?USR_UID=' + uid.data.USR_UID+'&USR_AUTH_SOURCE=' + uid.data.USR_AUTH_SOURCE+'&MODE=edit&userInterface=v2';
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user