Merge branch 'master' of bitbucket.org:colosa/processmaker into PM-2288
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -254,9 +254,6 @@ class DataBaseMaintenance
|
|||||||
*/
|
*/
|
||||||
function dumpData ($table)
|
function dumpData ($table)
|
||||||
{
|
{
|
||||||
G::LoadSystem('inputfilter');
|
|
||||||
$filter = new InputFilter();
|
|
||||||
$table = $filter->validateInput($table, 'nosql');
|
|
||||||
$this->outfile = $this->tmpDir . $table . '.dump';
|
$this->outfile = $this->tmpDir . $table . '.dump';
|
||||||
|
|
||||||
//if the file exists delete it
|
//if the file exists delete it
|
||||||
@@ -264,8 +261,7 @@ class DataBaseMaintenance
|
|||||||
@unlink( $this->outfile );
|
@unlink( $this->outfile );
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = "SELECT * INTO OUTFILE '{%s}' FIELDS TERMINATED BY '\t|\t' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\t\t\r\r\n' FROM %s";
|
$sql = "SELECT * INTO OUTFILE '{$this->outfile}' FIELDS TERMINATED BY '\t|\t' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\t\t\r\r\n' FROM $table";
|
||||||
$sql = $filter->preventSqlInjection($sql, array($this->outfile,$table));
|
|
||||||
// The mysql_escape_string function has been DEPRECATED as of PHP 5.3.0.
|
// The mysql_escape_string function has been DEPRECATED as of PHP 5.3.0.
|
||||||
// Commented that is not assigned to a variable.
|
// Commented that is not assigned to a variable.
|
||||||
// mysql_escape_string("';");
|
// mysql_escape_string("';");
|
||||||
@@ -285,11 +281,8 @@ class DataBaseMaintenance
|
|||||||
*/
|
*/
|
||||||
function restoreData ($backupFile)
|
function restoreData ($backupFile)
|
||||||
{
|
{
|
||||||
G::LoadSystem('inputfilter');
|
|
||||||
$filter = new InputFilter();
|
|
||||||
$tableName = str_replace( '.dump', '', basename( $backupFile ) );
|
$tableName = str_replace( '.dump', '', basename( $backupFile ) );
|
||||||
$sql = "LOAD DATA INFILE '%s' INTO TABLE %s FIELDS TERMINATED BY '\t|\t' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\t\t\r\r\n'";
|
$sql = "LOAD DATA INFILE '$backupFile' INTO TABLE $tableName FIELDS TERMINATED BY '\t|\t' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\t\t\r\r\n'";
|
||||||
$sql = $filter->preventSqlInjection($sql, array($backupFile,$tableName));
|
|
||||||
if (! @mysql_query( $sql )) {
|
if (! @mysql_query( $sql )) {
|
||||||
print mysql_error() . "\n";
|
print mysql_error() . "\n";
|
||||||
return false;
|
return false;
|
||||||
@@ -305,12 +298,8 @@ class DataBaseMaintenance
|
|||||||
function backupData ()
|
function backupData ()
|
||||||
{
|
{
|
||||||
$aTables = $this->getTablesList();
|
$aTables = $this->getTablesList();
|
||||||
G::LoadSystem('inputfilter');
|
|
||||||
$filter = new InputFilter();
|
|
||||||
$aTables = $filter->xssFilterHard($aTables);
|
|
||||||
foreach ($aTables as $table) {
|
foreach ($aTables as $table) {
|
||||||
if ($this->dumpData( $table ) !== false) {
|
if ($this->dumpData( $table ) !== false) {
|
||||||
$this->outfile = $filter->xssFilterHard($this->outfile);
|
|
||||||
printf( "%20s %s %s\n", 'Dump of table:', $table, " in file {$this->outfile}" );
|
printf( "%20s %s %s\n", 'Dump of table:', $table, " in file {$this->outfile}" );
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
@@ -347,11 +336,6 @@ class DataBaseMaintenance
|
|||||||
{
|
{
|
||||||
|
|
||||||
$aTables = $this->getTablesList();
|
$aTables = $this->getTablesList();
|
||||||
G::LoadSystem('inputfilter');
|
|
||||||
$filter = new InputFilter();
|
|
||||||
$aTables = $filter->xssFilterHard($aTables);
|
|
||||||
$this->tmpDir = $filter->xssFilterHard($this->tmpDir);
|
|
||||||
$this->infile = $filter->xssFilterHard($this->infile);
|
|
||||||
|
|
||||||
foreach ($aTables as $table) {
|
foreach ($aTables as $table) {
|
||||||
if (isset( $type ) && $type == 'sql') {
|
if (isset( $type ) && $type == 'sql') {
|
||||||
@@ -437,22 +421,11 @@ class DataBaseMaintenance
|
|||||||
|
|
||||||
function lockTables ()
|
function lockTables ()
|
||||||
{
|
{
|
||||||
G::LoadSystem('inputfilter');
|
|
||||||
$filter = new InputFilter();
|
|
||||||
$aTables = $this->getTablesList();
|
$aTables = $this->getTablesList();
|
||||||
if (empty( $aTables ))
|
if (empty( $aTables ))
|
||||||
return false;
|
return false;
|
||||||
printf( "%-70s", "LOCK TABLES" );
|
printf( "%-70s", "LOCK TABLES" );
|
||||||
|
if (@mysql_query( "LOCK TABLES " . implode( " READ, ", $aTables ) . " READ; " )) {
|
||||||
if(is_array($aTables)) {
|
|
||||||
foreach($aTables as $k => $v) {
|
|
||||||
$aTables[$k] = mysql_real_escape_string($v);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$sQuery = "LOCK TABLES " . implode( " READ, ", $aTables ) . " READ; ";
|
|
||||||
|
|
||||||
if (@mysql_query( $filter->preventSqlInjection($sQuery) )) {
|
|
||||||
echo " [OK]\n";
|
echo " [OK]\n";
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
@@ -481,14 +454,8 @@ class DataBaseMaintenance
|
|||||||
function dumpSqlInserts ($table)
|
function dumpSqlInserts ($table)
|
||||||
{
|
{
|
||||||
|
|
||||||
G::LoadSystem('inputfilter');
|
|
||||||
$filter = new InputFilter();
|
|
||||||
$table = $filter->xssFilterHard($table);
|
|
||||||
$table = $filter->validateInput($table, 'nosql');
|
|
||||||
$bytesSaved = 0;
|
$bytesSaved = 0;
|
||||||
$query = "SELECT * FROM `%s`";
|
$result = @mysql_query( "SELECT * FROM `$table`" );
|
||||||
$query = $filter->preventSqlInjection($query, array($table));
|
|
||||||
$result = @mysql_query( $query );
|
|
||||||
|
|
||||||
$num_rows = mysql_num_rows( $result );
|
$num_rows = mysql_num_rows( $result );
|
||||||
$num_fields = mysql_num_fields( $result );
|
$num_fields = mysql_num_fields( $result );
|
||||||
@@ -509,7 +476,6 @@ class DataBaseMaintenance
|
|||||||
$data .= ");\n";
|
$data .= ");\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
$data = $filter->preventSqlInjection($data);
|
|
||||||
printf( "%-59s%20s", "Dump of table $table", strlen( $data ) . " Bytes Saved\n" );
|
printf( "%-59s%20s", "Dump of table $table", strlen( $data ) . " Bytes Saved\n" );
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
@@ -658,13 +624,11 @@ class DataBaseMaintenance
|
|||||||
* @return string $tableSchema
|
* @return string $tableSchema
|
||||||
*/
|
*/
|
||||||
function getSchemaFromTable ($tablename)
|
function getSchemaFromTable ($tablename)
|
||||||
{
|
{
|
||||||
G::LoadSystem('inputfilter');
|
//$tableSchema = "/* Structure for table `$tablename` */\n";
|
||||||
$filter = new InputFilter();
|
//$tableSchema .= "DROP TABLE IF EXISTS `$tablename`;\n\n";
|
||||||
$tablename = $filter->validateInput($tablename, 'nosql');
|
|
||||||
$tableSchema = "";
|
$tableSchema = "";
|
||||||
$sql = 'show create table `%s`; ';
|
$sql = "show create table `$tablename`; ";
|
||||||
$sql = $filter->preventSqlInjection($sql, array($tablename));
|
|
||||||
$result = @mysql_query( $sql );
|
$result = @mysql_query( $sql );
|
||||||
if ($result) {
|
if ($result) {
|
||||||
if ($row = mysql_fetch_assoc( $result )) {
|
if ($row = mysql_fetch_assoc( $result )) {
|
||||||
|
|||||||
@@ -452,6 +452,18 @@ Wrote: /usr/src/redhat/RPMS/i386/PEAR::Net_Socket-1.0-1.i386.rpm
|
|||||||
|
|
||||||
function doRunTests($command, $options, $params)
|
function doRunTests($command, $options, $params)
|
||||||
{
|
{
|
||||||
|
if (!class_exists('G')) {
|
||||||
|
$realdocuroot = str_replace( '\\', '/', $_SERVER['DOCUMENT_ROOT'] );
|
||||||
|
$docuroot = explode( '/', $realdocuroot );
|
||||||
|
array_pop( $docuroot );
|
||||||
|
$pathhome = implode( '/', $docuroot ) . '/';
|
||||||
|
array_pop( $docuroot );
|
||||||
|
$pathTrunk = implode( '/', $docuroot ) . '/';
|
||||||
|
require_once($pathTrunk.'gulliver/system/class.g.php');
|
||||||
|
}
|
||||||
|
G::LoadSystem('inputfilter');
|
||||||
|
$filter = new InputFilter();
|
||||||
|
|
||||||
$cwd = getcwd();
|
$cwd = getcwd();
|
||||||
$php = PHP_BINDIR . '/php' . (OS_WINDOWS ? '.exe' : '');
|
$php = PHP_BINDIR . '/php' . (OS_WINDOWS ? '.exe' : '');
|
||||||
putenv("TEST_PHP_EXECUTABLE=$php");
|
putenv("TEST_PHP_EXECUTABLE=$php");
|
||||||
@@ -465,20 +477,16 @@ Wrote: /usr/src/redhat/RPMS/i386/PEAR::Net_Socket-1.0-1.i386.rpm
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
$plist = implode(" ", $params);
|
$plist = implode(" ", $params);
|
||||||
|
|
||||||
|
$php = $filter->validateInput($php);
|
||||||
|
$cwd = $filter->validateInput($cwd);
|
||||||
|
$ps = $filter->validateInput($ps);
|
||||||
|
$ip = $filter->validateInput($ip);
|
||||||
|
$run_tests = $filter->validateInput($run_tests);
|
||||||
|
$plist = $filter->validateInput($plist);
|
||||||
|
|
||||||
$cmd = $php.' -C -d include_path='.$cwd.$ps.$ip.' -f '.$run_tests.' -- '.$plist;
|
$cmd = $php.' -C -d include_path='.$cwd.$ps.$ip.' -f '.$run_tests.' -- '.$plist;
|
||||||
|
|
||||||
if (!class_exists('G')) {
|
|
||||||
$realdocuroot = str_replace( '\\', '/', $_SERVER['DOCUMENT_ROOT'] );
|
|
||||||
$docuroot = explode( '/', $realdocuroot );
|
|
||||||
array_pop( $docuroot );
|
|
||||||
$pathhome = implode( '/', $docuroot ) . '/';
|
|
||||||
array_pop( $docuroot );
|
|
||||||
$pathTrunk = implode( '/', $docuroot ) . '/';
|
|
||||||
require_once($pathTrunk.'gulliver/system/class.g.php');
|
|
||||||
}
|
|
||||||
|
|
||||||
G::LoadSystem('inputfilter');
|
|
||||||
$filter = new InputFilter();
|
|
||||||
$cmd = $filter->validateInput($cmd);
|
$cmd = $filter->validateInput($cmd);
|
||||||
|
|
||||||
system($cmd);
|
system($cmd);
|
||||||
|
|||||||
@@ -75,11 +75,11 @@ class indicatorsCalculator
|
|||||||
private $userGroupReportingMetadata = array("tableName" => "USR_REPORTING", "keyField" => "PRO_UID");
|
private $userGroupReportingMetadata = array("tableName" => "USR_REPORTING", "keyField" => "PRO_UID");
|
||||||
private $processCategoryReportingMetadata = array("tableName" => "PRO_REPORTING", "keyField" => "PRO_UID");
|
private $processCategoryReportingMetadata = array("tableName" => "PRO_REPORTING", "keyField" => "PRO_UID");
|
||||||
|
|
||||||
private $peiCostFormula = "USER_HOUR_COST * SUM(case when TOTAL_TIME_BY_TASK >0 then TOTAL_CASES_OUT * CONFIGURED_TASK_TIME - TOTAL_TIME_BY_TASK * USER_HOUR_COST else 0 end)";
|
private $peiCostFormula = " SUM(case when TOTAL_TIME_BY_TASK >0 then (TOTAL_CASES_OUT * CONFIGURED_TASK_TIME - TOTAL_TIME_BY_TASK) * USER_HOUR_COST else 0 end)";
|
||||||
private $peiFormula = "SUM(TOTAL_CASES_OUT*CONFIGURED_TASK_TIME) / SUM(SDV_TIME * TOTAL_CASES_OUT + TOTAL_TIME_BY_TASK)";
|
private $peiFormula = "SUM(TOTAL_CASES_OUT*CONFIGURED_TASK_TIME) / SUM(SDV_TIME * TOTAL_CASES_OUT + TOTAL_TIME_BY_TASK)";
|
||||||
|
|
||||||
private $ueiCostFormula = " USER_HOUR_COST * SUM(case when TOTAL_TIME_BY_TASK >0 then TOTAL_CASES_OUT * CONFIGURED_TASK_TIME - TOTAL_TIME_BY_TASK * USER_HOUR_COST else 0 end)";
|
private $ueiCostFormula = " SUM(case when TOTAL_TIME_BY_TASK >0 then (TOTAL_CASES_OUT * CONFIGURED_TASK_TIME - TOTAL_TIME_BY_TASK) * USER_HOUR_COST else 0 end)";
|
||||||
private $ueiFormula = "SUM(TOTAL_CASES_OUT * CONFIGURED_TASK_TIME) / SUM(TOTAL_TIME_BY_TASK * USER_HOUR_COST)";
|
private $ueiFormula = "SUM(TOTAL_CASES_OUT * CONFIGURED_TASK_TIME) / SUM(TOTAL_TIME_BY_TASK)";
|
||||||
|
|
||||||
public function getSkewOfDataDistribution($table, $field) {
|
public function getSkewOfDataDistribution($table, $field) {
|
||||||
/*$sqlString = "SET @median = (SELECT x.$field from $table x, $table y
|
/*$sqlString = "SET @median = (SELECT x.$field from $table x, $table y
|
||||||
|
|||||||
@@ -44,7 +44,10 @@ class Dashboard extends BaseDashboard
|
|||||||
$dashboard = DashboardPeer::retrieveByPK($data['DAS_UID']);
|
$dashboard = DashboardPeer::retrieveByPK($data['DAS_UID']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
G::LoadSystem('inputfilter');
|
||||||
|
$filter = new InputFilter();
|
||||||
$data['DAS_UPDATE_DATE'] = date('Y-m-d H:i:s');
|
$data['DAS_UPDATE_DATE'] = date('Y-m-d H:i:s');
|
||||||
|
$data['DAS_TITLE'] = $filter ->validateInput($data['DAS_TITLE'], "string");
|
||||||
$dashboard->fromArray($data, BasePeer::TYPE_FIELDNAME);
|
$dashboard->fromArray($data, BasePeer::TYPE_FIELDNAME);
|
||||||
if ($dashboard->validate()) {
|
if ($dashboard->validate()) {
|
||||||
$connection->begin();
|
$connection->begin();
|
||||||
|
|||||||
@@ -21,11 +21,6 @@ class StrategicDashboard extends Controller
|
|||||||
{
|
{
|
||||||
global $RBAC;
|
global $RBAC;
|
||||||
|
|
||||||
if ($RBAC->userCanAccess('PM_SETUP') != 1) {
|
|
||||||
G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels');
|
|
||||||
G::header( 'location: login/login' );
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
$licensedFeatures = & PMLicensedFeatures::getSingleton();
|
$licensedFeatures = & PMLicensedFeatures::getSingleton();
|
||||||
if (!$licensedFeatures->verifyfeature('r19Vm5DK1UrT09MenlLYjZxejlhNUZ1b1NhV0JHWjBsZEJ6dnpJa3dTeWVLVT0=')) {
|
if (!$licensedFeatures->verifyfeature('r19Vm5DK1UrT09MenlLYjZxejlhNUZ1b1NhV0JHWjBsZEJ6dnpJa3dTeWVLVT0=')) {
|
||||||
G::SendTemporalMessage( 'ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels' );
|
G::SendTemporalMessage( 'ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels' );
|
||||||
@@ -215,8 +210,8 @@ class StrategicDashboard extends Controller
|
|||||||
$translation['ID_NO_INEFFICIENT_USER_GROUPS'] = G::LoadTranslation('ID_NO_INEFFICIENT_USER_GROUPS');
|
$translation['ID_NO_INEFFICIENT_USER_GROUPS'] = G::LoadTranslation('ID_NO_INEFFICIENT_USER_GROUPS');
|
||||||
$translation['ID_NO_INEFFICIENT_USERS'] = G::LoadTranslation('ID_NO_INEFFICIENT_USERS');
|
$translation['ID_NO_INEFFICIENT_USERS'] = G::LoadTranslation('ID_NO_INEFFICIENT_USERS');
|
||||||
$translation['ID_DISPLAY_EMPTY'] = G::LoadTranslation('ID_DISPLAY_EMPTY');
|
$translation['ID_DISPLAY_EMPTY'] = G::LoadTranslation('ID_DISPLAY_EMPTY');
|
||||||
$translation['ID_EMPTY'] = G::LoadTranslation('ID_EMPTY');
|
//text for inbox empty in status indicator
|
||||||
$translation['ID_INBOX'] = G::LoadTranslation('ID_INBOX');
|
$translation['ID_INBOX_EMPTY'] = G::LoadTranslation('ID_INBOX_EMPTY');
|
||||||
|
|
||||||
$this->setVar('translation', $translation);
|
$this->setVar('translation', $translation);
|
||||||
$this->render();
|
$this->render();
|
||||||
@@ -266,9 +261,7 @@ class StrategicDashboard extends Controller
|
|||||||
$translation['ID_NO_INEFFICIENT_USER_GROUPS'] = G::LoadTranslation('ID_NO_INEFFICIENT_USER_GROUPS');
|
$translation['ID_NO_INEFFICIENT_USER_GROUPS'] = G::LoadTranslation('ID_NO_INEFFICIENT_USER_GROUPS');
|
||||||
$translation['ID_NO_INEFFICIENT_USERS'] = G::LoadTranslation('ID_NO_INEFFICIENT_USERS');
|
$translation['ID_NO_INEFFICIENT_USERS'] = G::LoadTranslation('ID_NO_INEFFICIENT_USERS');
|
||||||
$translation['ID_DISPLAY_EMPTY'] = G::LoadTranslation('ID_DISPLAY_EMPTY');
|
$translation['ID_DISPLAY_EMPTY'] = G::LoadTranslation('ID_DISPLAY_EMPTY');
|
||||||
$translation['ID_EMPTY'] = G::LoadTranslation('ID_EMPTY');
|
$translation['ID_INBOX_EMPTY'] = G::LoadTranslation('ID_INBOX_EMPTY');
|
||||||
$translation['ID_INBOX'] = G::LoadTranslation('ID_INBOX');
|
|
||||||
|
|
||||||
|
|
||||||
$this->setVar('translation', $translation);
|
$this->setVar('translation', $translation);
|
||||||
$this->render();
|
$this->render();
|
||||||
|
|||||||
@@ -192,7 +192,7 @@ ViewDashboardPresenter.prototype.setStatusButtonWidthsAndDisplayValues = functio
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (atRisk.valueToShow == 0 && overdue.valueToShow == 0 && onTime.valueToShow == 0) {
|
if (atRisk.valueToShow == 0 && overdue.valueToShow == 0 && onTime.valueToShow == 0) {
|
||||||
onTime.valueToShow = G_STRING['ID_INBOX'] + ' ' + G_STRING['ID_EMPTY'];
|
onTime.valueToShow = G_STRING['ID_INBOX_EMPTY'];
|
||||||
onTime.width = 100;
|
onTime.width = 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -310,18 +310,18 @@ ViewDashboardPresenter.prototype.statusViewModel = function(indicatorId, data) {
|
|||||||
$.each(data.dataList, function(index, originalObject) {
|
$.each(data.dataList, function(index, originalObject) {
|
||||||
|
|
||||||
originalObject.taskTitle = that.helper.labelIfEmpty(originalObject.taskTitle);
|
originalObject.taskTitle = that.helper.labelIfEmpty(originalObject.taskTitle);
|
||||||
var title = originalObject.taskTitle.substring(0,10);
|
//var title = originalObject.taskTitle.substring(0,10);
|
||||||
|
|
||||||
var newObject1 = {
|
var newObject1 = {
|
||||||
datalabel : title,
|
datalabel : originalObject.taskTitle,
|
||||||
value : originalObject.percentageTotalOverdue
|
value : originalObject.percentageTotalOverdue
|
||||||
};
|
};
|
||||||
var newObject2 = {
|
var newObject2 = {
|
||||||
datalabel : title,
|
datalabel : originalObject.taskTitle,
|
||||||
value : originalObject.percentageTotalAtRisk
|
value : originalObject.percentageTotalAtRisk
|
||||||
};
|
};
|
||||||
var newObject3 = {
|
var newObject3 = {
|
||||||
datalabel : title,
|
datalabel : originalObject.taskTitle,
|
||||||
value : originalObject.percentageTotalOnTime
|
value : originalObject.percentageTotalOnTime
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -338,6 +338,11 @@ ViewDashboardPresenter.prototype.statusViewModel = function(indicatorId, data) {
|
|||||||
originalObject.indicatorId = indicatorId;
|
originalObject.indicatorId = indicatorId;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
that.makeShortLabel(graph1Data, 10);
|
||||||
|
that.makeShortLabel(graph2Data, 10);
|
||||||
|
that.makeShortLabel(graph3Data, 10);
|
||||||
|
|
||||||
var retval = data;
|
var retval = data;
|
||||||
retval.graph1Data = this.orderGraphData(graph1Data, "down").splice(0,7)
|
retval.graph1Data = this.orderGraphData(graph1Data, "down").splice(0,7)
|
||||||
retval.graph2Data = this.orderGraphData(graph2Data, "down").splice(0,7)
|
retval.graph2Data = this.orderGraphData(graph2Data, "down").splice(0,7)
|
||||||
@@ -517,10 +522,15 @@ ViewDashboardPresenter.prototype.adaptGraphData = function(listData) {
|
|||||||
|
|
||||||
ViewDashboardPresenter.prototype.makeShortLabel = function(listData, labelLength) {
|
ViewDashboardPresenter.prototype.makeShortLabel = function(listData, labelLength) {
|
||||||
$.each(listData, function(index, item) {
|
$.each(listData, function(index, item) {
|
||||||
|
var longLabel = (item.datalabel == null)
|
||||||
|
? ""
|
||||||
|
: item.datalabel.substring(0, 50);
|
||||||
|
|
||||||
var shortLabel = (item.datalabel == null)
|
var shortLabel = (item.datalabel == null)
|
||||||
? ""
|
? ""
|
||||||
: item.datalabel.substring(0,labelLength);
|
: item.datalabel.substring(0, labelLength);
|
||||||
item.datalabel = shortLabel;
|
|
||||||
item.datalabel = shortLabel;
|
item.datalabel = shortLabel;
|
||||||
|
item.longlabel = longLabel;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -590,7 +590,7 @@ var fillStatusIndicatorFirstView = function (presenterData) {
|
|||||||
|
|
||||||
allowDrillDown:true,
|
allowDrillDown:true,
|
||||||
allowTransition:true,
|
allowTransition:true,
|
||||||
showTip: false,
|
showTip: true,
|
||||||
allowZoom: false,
|
allowZoom: false,
|
||||||
showLabels: true
|
showLabels: true
|
||||||
}
|
}
|
||||||
@@ -650,7 +650,7 @@ var fillSpecialIndicatorFirstView = function(presenterData) {
|
|||||||
graph: {
|
graph: {
|
||||||
allowDrillDown:false,
|
allowDrillDown:false,
|
||||||
allowTransition:true,
|
allowTransition:true,
|
||||||
showTip: false,
|
showTip: true,
|
||||||
allowZoom: false,
|
allowZoom: false,
|
||||||
gapWidth:0.3,
|
gapWidth:0.3,
|
||||||
useShadows: true,
|
useShadows: true,
|
||||||
@@ -674,7 +674,7 @@ var fillSpecialIndicatorFirstView = function(presenterData) {
|
|||||||
axisY:{ showAxis: true, label: G_STRING['ID_COSTS']},
|
axisY:{ showAxis: true, label: G_STRING['ID_COSTS']},
|
||||||
gridLinesX:false,
|
gridLinesX:false,
|
||||||
gridLinesY:true,
|
gridLinesY:true,
|
||||||
showTip: false,
|
showTip: true,
|
||||||
allowZoom: false,
|
allowZoom: false,
|
||||||
useShadows: true,
|
useShadows: true,
|
||||||
paddingTop: 50,
|
paddingTop: 50,
|
||||||
@@ -747,7 +747,7 @@ var fillSpecialIndicatorSecondView = function(presenterData) {
|
|||||||
graph: {
|
graph: {
|
||||||
allowTransition: false,
|
allowTransition: false,
|
||||||
allowDrillDown: true,
|
allowDrillDown: true,
|
||||||
showTip: false,
|
showTip: true,
|
||||||
allowZoom: false,
|
allowZoom: false,
|
||||||
useShadows: false,
|
useShadows: false,
|
||||||
gridLinesX: true,
|
gridLinesX: true,
|
||||||
@@ -837,7 +837,7 @@ var fillGeneralIndicatorFirstView = function (presenterData) {
|
|||||||
graph: {
|
graph: {
|
||||||
allowTransition: false,
|
allowTransition: false,
|
||||||
allowDrillDown: true,
|
allowDrillDown: true,
|
||||||
showTip: false,
|
showTip: true,
|
||||||
allowZoom: false,
|
allowZoom: false,
|
||||||
useShadows: false,
|
useShadows: false,
|
||||||
gridLinesX: true,
|
gridLinesX: true,
|
||||||
@@ -859,7 +859,7 @@ var fillGeneralIndicatorFirstView = function (presenterData) {
|
|||||||
graph: {
|
graph: {
|
||||||
allowTransition: false,
|
allowTransition: false,
|
||||||
allowDrillDown: true,
|
allowDrillDown: true,
|
||||||
showTip: false,
|
showTip: true,
|
||||||
allowZoom: false,
|
allowZoom: false,
|
||||||
useShadows: false,
|
useShadows: false,
|
||||||
gridLinesX: true,
|
gridLinesX: true,
|
||||||
@@ -885,7 +885,7 @@ var fillGeneralIndicatorFirstView = function (presenterData) {
|
|||||||
axisY:{ showAxis: true, label: G_STRING.ID_TIME_HOURS },
|
axisY:{ showAxis: true, label: G_STRING.ID_TIME_HOURS },
|
||||||
gridLinesX:false,
|
gridLinesX:false,
|
||||||
gridLinesY:true,
|
gridLinesY:true,
|
||||||
showTip: false,
|
showTip: true,
|
||||||
allowZoom: false,
|
allowZoom: false,
|
||||||
useShadows: true,
|
useShadows: true,
|
||||||
paddingTop: 50,
|
paddingTop: 50,
|
||||||
@@ -907,7 +907,7 @@ var fillGeneralIndicatorFirstView = function (presenterData) {
|
|||||||
axisY:{ showAxis: true, label: G_STRING.ID_TIME_HOURS },
|
axisY:{ showAxis: true, label: G_STRING.ID_TIME_HOURS },
|
||||||
gridLinesX:false,
|
gridLinesX:false,
|
||||||
gridLinesY:true,
|
gridLinesY:true,
|
||||||
showTip: false,
|
showTip: true,
|
||||||
allowZoom: false,
|
allowZoom: false,
|
||||||
useShadows: true,
|
useShadows: true,
|
||||||
paddingTop: 50,
|
paddingTop: 50,
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ if ($RBAC->userCanAccess('PM_DASHBOARD') == 1) {
|
|||||||
|
|
||||||
/*----------------------------------********---------------------------------*/
|
/*----------------------------------********---------------------------------*/
|
||||||
$licensedFeatures = & PMLicensedFeatures::getSingleton();
|
$licensedFeatures = & PMLicensedFeatures::getSingleton();
|
||||||
if ($licensedFeatures->verifyfeature('r19Vm5DK1UrT09MenlLYjZxejlhNUZ1b1NhV0JHWjBsZEJ6dnpJa3dTeWVLVT0=') && ($RBAC->userCanAccess('PM_SETUP') == 1 || $RBAC->userCanAccess('PM_USERS') == 1)) {
|
if ($licensedFeatures->verifyfeature('r19Vm5DK1UrT09MenlLYjZxejlhNUZ1b1NhV0JHWjBsZEJ6dnpJa3dTeWVLVT0=') ) {
|
||||||
$G_TMP_MENU->AddIdRawOption('DASHBOARD+', 'strategicDashboard/main', G::LoadTranslation('ID_STRATEGIC_DASHBOARD'), '', '', '', 'x-pm-dashboard');
|
$G_TMP_MENU->AddIdRawOption('DASHBOARD+', 'strategicDashboard/main', G::LoadTranslation('ID_STRATEGIC_DASHBOARD'), '', '', '', 'x-pm-dashboard');
|
||||||
}
|
}
|
||||||
/*----------------------------------********---------------------------------*/
|
/*----------------------------------********---------------------------------*/
|
||||||
|
|||||||
@@ -464,7 +464,7 @@ switch (($_POST['action']) ? $_POST['action'] : $_REQUEST['action']) {
|
|||||||
$APP_UID = $filter->xssFilterHard($_POST['APP_UID']);
|
$APP_UID = $filter->xssFilterHard($_POST['APP_UID']);
|
||||||
$DEL_INDEX = $filter->xssFilterHard($_POST['DEL_INDEX']);
|
$DEL_INDEX = $filter->xssFilterHard($_POST['DEL_INDEX']);
|
||||||
|
|
||||||
$_GET['APP_UID'] = $APP_UID
|
$_GET['APP_UID'] = $APP_UID;
|
||||||
$_GET['DEL_INDEX'] = $DEL_INDEX;
|
$_GET['DEL_INDEX'] = $DEL_INDEX;
|
||||||
$G_PUBLISH = new Publisher();
|
$G_PUBLISH = new Publisher();
|
||||||
|
|
||||||
|
|||||||
@@ -22,8 +22,6 @@
|
|||||||
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
|
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$RBAC->requirePermissions( 'PM_DASHBOARD' );
|
|
||||||
|
|
||||||
$licensedFeatures = & PMLicensedFeatures::getSingleton();
|
$licensedFeatures = & PMLicensedFeatures::getSingleton();
|
||||||
if (!$licensedFeatures->verifyfeature('r19Vm5DK1UrT09MenlLYjZxejlhNUZ1b1NhV0JHWjBsZEJ6dnpJa3dTeWVLVT0=')) {
|
if (!$licensedFeatures->verifyfeature('r19Vm5DK1UrT09MenlLYjZxejlhNUZ1b1NhV0JHWjBsZEJ6dnpJa3dTeWVLVT0=')) {
|
||||||
G::SendTemporalMessage( 'ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels' );
|
G::SendTemporalMessage( 'ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels' );
|
||||||
|
|||||||
@@ -26,18 +26,34 @@ $_POST['qs'] = $filter->xssFilterHard($_POST['qs']);
|
|||||||
|
|
||||||
|
|
||||||
function autoResizeScreen() {
|
function autoResizeScreen() {
|
||||||
oCasesFrame = document.getElementById('casesFrame');
|
var containerList1, containerList2;
|
||||||
height = getClientWindowSize().height-90;
|
oCasesFrame = document.getElementById('casesFrame');
|
||||||
oCasesFrame.style.height = height + 'px';;
|
oClientWinSize = getClientWindowSize();
|
||||||
oCasesSubFrame = oCasesFrame.contentWindow.document.getElementById('casesSubFrame');
|
|
||||||
if(oCasesSubFrame){
|
containerList1 = document.getElementById("pm_header");
|
||||||
oCasesSubFrame.style.height = (height-5) + 'px';;
|
if (document.getElementById("mainMenuBG") &&
|
||||||
}
|
document.getElementById("mainMenuBG").parentNode &&
|
||||||
else {
|
document.getElementById("mainMenuBG").parentNode.parentNode &&
|
||||||
setTimeout('autoResizeScreen()', 2000);
|
document.getElementById("mainMenuBG").parentNode.parentNode.parentNode &&
|
||||||
}
|
document.getElementById("mainMenuBG").parentNode.parentNode.parentNode.parentNode){
|
||||||
|
containerList2 = document.getElementById("mainMenuBG").parentNode.parentNode.parentNode.parentNode;
|
||||||
|
}
|
||||||
|
if (containerList1 === containerList2) {
|
||||||
|
height = oClientWinSize.height - containerList1.clientHeight;
|
||||||
|
oCasesFrame.style.height = height;
|
||||||
|
if (oCasesFrame.height ) {
|
||||||
|
oCasesFrame.height = height;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
height = getClientWindowSize().height-90;
|
||||||
|
oCasesFrame.style.height = height + 'px';
|
||||||
|
oCasesSubFrame = oCasesFrame.contentWindow.document.getElementById('casesSubFrame');
|
||||||
|
if(oCasesSubFrame){
|
||||||
|
oCasesSubFrame.style.height = (height-5) + 'px';;
|
||||||
|
} else {
|
||||||
|
setTimeout('autoResizeScreen()', 2000);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
</html>
|
</html>
|
||||||
@@ -22,18 +22,34 @@
|
|||||||
|
|
||||||
|
|
||||||
function autoResizeScreen() {
|
function autoResizeScreen() {
|
||||||
oCasesFrame = document.getElementById('casesFrame');
|
var containerList1, containerList2;
|
||||||
height = getClientWindowSize().height-90;
|
oCasesFrame = document.getElementById('casesFrame');
|
||||||
oCasesFrame.style.height = height;
|
containerList1 = document.getElementById("pm_header");
|
||||||
oCasesSubFrame = oCasesFrame.contentWindow.document.getElementById('casesSubFrame');
|
|
||||||
if(oCasesSubFrame){
|
if (document.getElementById("mainMenuBG") &&
|
||||||
oCasesSubFrame.style.height = height-5;
|
document.getElementById("mainMenuBG").parentNode &&
|
||||||
}
|
document.getElementById("mainMenuBG").parentNode.parentNode &&
|
||||||
else {
|
document.getElementById("mainMenuBG").parentNode.parentNode.parentNode &&
|
||||||
setTimeout('autoResizeScreen()', 2000);
|
document.getElementById("mainMenuBG").parentNode.parentNode.parentNode.parentNode){
|
||||||
}
|
containerList2 = document.getElementById("mainMenuBG").parentNode.parentNode.parentNode.parentNode;
|
||||||
|
}
|
||||||
|
if (containerList1 === containerList2) {
|
||||||
|
height = oClientWinSize.height - containerList1.clientHeight;
|
||||||
|
oCasesFrame.style.height = height;
|
||||||
|
if (oCasesFrame.height ) {
|
||||||
|
oCasesFrame.height = height;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
height = getClientWindowSize().height-90;
|
||||||
|
oCasesFrame.style.height = height;
|
||||||
|
oCasesSubFrame = oCasesFrame.contentWindow.document.getElementById('casesSubFrame');
|
||||||
|
if(oCasesSubFrame){
|
||||||
|
oCasesSubFrame.style.height = height-5;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
setTimeout('autoResizeScreen()', 2000);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
</html>
|
</html>
|
||||||
@@ -94,7 +94,7 @@
|
|||||||
<a target="_blank" href="http://www.processmaker.com"><img src="/images/get_started.png" border="0" width="163" height="438"></a>
|
<a target="_blank" href="http://www.processmaker.com"><img src="/images/get_started.png" border="0" width="163" height="438"></a>
|
||||||
</td>
|
</td>
|
||||||
<td class="cell2" valign="top">
|
<td class="cell2" valign="top">
|
||||||
<p><b><span class="cLow">Welcome to ProcessMaker 3.</span></b></p><br/>
|
<p><b><span class="cLow">Welcome to ProcessMaker</span></b></p><br/>
|
||||||
<p style="text-align: justify;"><span class="cLow-min">This new version features a new process designer based upon the Business Process Management Notation 2 standard. It offers a new form designer with flexible layouts for desktops, tablets and cellphones and a new REST API to remotely access ProcessMaker.</span></p>
|
<p style="text-align: justify;"><span class="cLow-min">This new version features a new process designer based upon the Business Process Management Notation 2 standard. It offers a new form designer with flexible layouts for desktops, tablets and cellphones and a new REST API to remotely access ProcessMaker.</span></p>
|
||||||
<p style="text-align: justify;"><span class="cLow-min">To get started, log in using the following credentials. You can change them later:</span></p>
|
<p style="text-align: justify;"><span class="cLow-min">To get started, log in using the following credentials. You can change them later:</span></p>
|
||||||
<span class="cNeg">Username:</span><span class="cLow"> {name}</span><br>
|
<span class="cNeg">Username:</span><span class="cLow"> {name}</span><br>
|
||||||
|
|||||||
@@ -15,16 +15,33 @@
|
|||||||
document.documentElement.style.overflowY = 'hidden';
|
document.documentElement.style.overflowY = 'hidden';
|
||||||
|
|
||||||
function autoResizeScreen() {
|
function autoResizeScreen() {
|
||||||
oCasesFrame = document.getElementById('adminFrame');
|
var containerList1, containerList2;
|
||||||
oClientWinSize = getClientWindowSize();
|
oCasesFrame = document.getElementById('adminFrame');
|
||||||
height = oClientWinSize.height-90;
|
containerList1 = document.getElementById("pm_header");
|
||||||
oCasesFrame.style.height = height;
|
if (document.getElementById("mainMenuBG") &&
|
||||||
oCasesSubFrame = oCasesFrame.contentWindow.document.getElementById('setup-frame');
|
document.getElementById("mainMenuBG").parentNode &&
|
||||||
|
document.getElementById("mainMenuBG").parentNode.parentNode &&
|
||||||
|
document.getElementById("mainMenuBG").parentNode.parentNode.parentNode &&
|
||||||
|
document.getElementById("mainMenuBG").parentNode.parentNode.parentNode.parentNode){
|
||||||
|
containerList2 = document.getElementById("mainMenuBG").parentNode.parentNode.parentNode.parentNode;
|
||||||
|
}
|
||||||
|
if (containerList1 === containerList2) {
|
||||||
|
height = oClientWinSize.height - containerList1.clientHeight;
|
||||||
|
oCasesFrame.style.height = height;
|
||||||
|
if (oCasesFrame.height ) {
|
||||||
|
oCasesFrame.height = height;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
oClientWinSize = getClientWindowSize();
|
||||||
|
height = oClientWinSize.height-90;
|
||||||
|
oCasesFrame.style.height = height;
|
||||||
|
oCasesSubFrame = oCasesFrame.contentWindow.document.getElementById('setup-frame');
|
||||||
|
|
||||||
if(oCasesSubFrame)
|
if(oCasesSubFrame)
|
||||||
oCasesSubFrame.style.height = height-5;
|
oCasesSubFrame.style.height = height-5;
|
||||||
else
|
else
|
||||||
setTimeout('autoResizeScreen()', 2000);
|
setTimeout('autoResizeScreen()', 2000);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
</html>
|
</html>
|
||||||
@@ -239,7 +239,7 @@ Ext.onReady(function() {
|
|||||||
viewConfig: {
|
viewConfig: {
|
||||||
forceFit:true
|
forceFit:true
|
||||||
},
|
},
|
||||||
title : _('ID_STRATEGIC_DASHBOARD'),
|
title : _('ID_KPI'),
|
||||||
store: store,
|
store: store,
|
||||||
cm: cmodel,
|
cm: cmodel,
|
||||||
sm: smodel,
|
sm: smodel,
|
||||||
|
|||||||
@@ -81,8 +81,8 @@ Ext.onReady( function() {
|
|||||||
xtype : 'textfield',
|
xtype : 'textfield',
|
||||||
anchor : '85%',
|
anchor : '85%',
|
||||||
maxLength : 250,
|
maxLength : 250,
|
||||||
maskRe : /([a-zA-Z0-9_'\s]+)$/,
|
maskRe : /^([a-zA-Z0-9_'\s]+)$/i,
|
||||||
regex : /([a-zA-Z0-9_'\s]+)$/,
|
regex : /^([a-zA-Z0-9_'\s]+)$/i,
|
||||||
regexText : _('ID_INVALID_VALUE', _('ID_DASHBOARD_TITLE')),
|
regexText : _('ID_INVALID_VALUE', _('ID_DASHBOARD_TITLE')),
|
||||||
allowBlank : false
|
allowBlank : false
|
||||||
},
|
},
|
||||||
@@ -752,8 +752,8 @@ var addTab = function (flag) {
|
|||||||
id : 'IND_TITLE_'+ indexTab,
|
id : 'IND_TITLE_'+ indexTab,
|
||||||
xtype : 'textfield',
|
xtype : 'textfield',
|
||||||
anchor : '85%',
|
anchor : '85%',
|
||||||
maskRe : /([a-zA-Z0-9_'\s]+)$/,
|
maskRe : /^([a-zA-Z0-9_'\s]+)$/,
|
||||||
regex : /([a-zA-Z0-9_'\s]+)$/,
|
regex : /^([a-zA-Z0-9_'\s]+)$/,
|
||||||
regexText : _('ID_INVALID_VALUE', _('ID_INDICATOR_TITLE')),
|
regexText : _('ID_INVALID_VALUE', _('ID_INDICATOR_TITLE')),
|
||||||
maxLength : 250,
|
maxLength : 250,
|
||||||
allowBlank : false
|
allowBlank : false
|
||||||
@@ -1040,10 +1040,14 @@ var validateNameDashboard = function () {
|
|||||||
var saveDashboard = function () {
|
var saveDashboard = function () {
|
||||||
var title = Ext.getCmp('DAS_TITLE').getValue();
|
var title = Ext.getCmp('DAS_TITLE').getValue();
|
||||||
var data = {};
|
var data = {};
|
||||||
if (title == '') {
|
if (title == '' ) {
|
||||||
PMExt.warning(_('ID_DASHBOARD'), _('ID_DASHBOARD_TITLE') + ' '+ _('ID_IS_REQUIRED'));
|
PMExt.warning(_('ID_DASHBOARD'), _('ID_DASHBOARD_TITLE') + ' '+ _('ID_IS_REQUIRED'));
|
||||||
Ext.getCmp('DAS_TITLE').focus(true,10);
|
Ext.getCmp('DAS_TITLE').focus(true,10);
|
||||||
return false;
|
return false;
|
||||||
|
} else if (!Ext.getCmp('DAS_TITLE').isValid()) {
|
||||||
|
PMExt.warning(_('ID_DASHBOARD'), _('ID_INVALID_VALUE', _('ID_DASHBOARD_TITLE')));
|
||||||
|
Ext.getCmp('DAS_TITLE').focus(true,10);
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
data['DAS_TITLE'] = title;
|
data['DAS_TITLE'] = title;
|
||||||
var description = Ext.getCmp('DAS_DESCRIPTION').getValue();
|
var description = Ext.getCmp('DAS_DESCRIPTION').getValue();
|
||||||
@@ -1111,6 +1115,10 @@ var saveAllIndicators = function (DAS_UID) {
|
|||||||
PMExt.warning(_('ID_DASHBOARD'), _('ID_INDICATOR_TITLE_REQUIRED', tabPanel.getItem(tabActivate[tab]).title));
|
PMExt.warning(_('ID_DASHBOARD'), _('ID_INDICATOR_TITLE_REQUIRED', tabPanel.getItem(tabActivate[tab]).title));
|
||||||
fieldsTab[1].focus(true,10);
|
fieldsTab[1].focus(true,10);
|
||||||
return false;
|
return false;
|
||||||
|
} else if (!fieldsTab[1].isValid()) {
|
||||||
|
PMExt.warning(_('ID_DASHBOARD'), _('ID_INVALID_VALUE', _('ID_INDICATOR_TITLE')));
|
||||||
|
fieldsTab[1].focus(true,10);
|
||||||
|
return false;
|
||||||
} else if (fieldsTab[2].getValue().trim() == '') {
|
} else if (fieldsTab[2].getValue().trim() == '') {
|
||||||
PMExt.warning(_('ID_DASHBOARD'), _('ID_INDICATOR_TYPE_REQUIRED', tabPanel.getItem(tabActivate[tab]).title));
|
PMExt.warning(_('ID_DASHBOARD'), _('ID_INDICATOR_TYPE_REQUIRED', tabPanel.getItem(tabActivate[tab]).title));
|
||||||
fieldsTab[2].focus(true,10);
|
fieldsTab[2].focus(true,10);
|
||||||
@@ -1279,6 +1287,11 @@ var loadIndicators = function (DAS_UID) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function converter(str) {
|
||||||
|
str = str.replace(/'/g, "'");
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
var loadInfoDashboard = function (DAS_UID) {
|
var loadInfoDashboard = function (DAS_UID) {
|
||||||
Ext.Ajax.request({
|
Ext.Ajax.request({
|
||||||
url : urlProxy + 'dashboard/' + DAS_UID,
|
url : urlProxy + 'dashboard/' + DAS_UID,
|
||||||
@@ -1289,7 +1302,7 @@ var loadInfoDashboard = function (DAS_UID) {
|
|||||||
},
|
},
|
||||||
success: function (response) {
|
success: function (response) {
|
||||||
var jsonResp = Ext.util.JSON.decode(response.responseText);
|
var jsonResp = Ext.util.JSON.decode(response.responseText);
|
||||||
Ext.getCmp('DAS_TITLE').setValue(jsonResp['DAS_TITLE']);
|
Ext.getCmp('DAS_TITLE').setValue(converter(jsonResp['DAS_TITLE']));
|
||||||
Ext.getCmp('DAS_DESCRIPTION').setValue(jsonResp['DAS_DESCRIPTION']);
|
Ext.getCmp('DAS_DESCRIPTION').setValue(jsonResp['DAS_DESCRIPTION']);
|
||||||
},
|
},
|
||||||
failure: function (response) {
|
failure: function (response) {
|
||||||
|
|||||||
@@ -522,11 +522,12 @@ Ext.onReady(function () {
|
|||||||
fieldLabel : _('ID_COST_BY_HOUR'),
|
fieldLabel : _('ID_COST_BY_HOUR'),
|
||||||
xtype : 'numberfield',
|
xtype : 'numberfield',
|
||||||
allowNegative: false,
|
allowNegative: false,
|
||||||
|
emptyText : '0.00',
|
||||||
decimalSeparator : '.',
|
decimalSeparator : '.',
|
||||||
maskRe : /^[0-9]/i,
|
maskRe : /^[0-9]/i,
|
||||||
regex : /^[0-9]/i,
|
regex : /^[0-9]/i,
|
||||||
regexText : _('ID_INVALID_VALUE', _('ID_COST_BY_HOUR')),
|
regexText : _('ID_INVALID_VALUE', _('ID_COST_BY_HOUR')),
|
||||||
maxLength : 13,
|
maxLength : 10,
|
||||||
width : 80
|
width : 80
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -610,7 +611,6 @@ Ext.onReady(function () {
|
|||||||
if (Ext.getCmp('USR_CNF_PASS').getValue() != '') {
|
if (Ext.getCmp('USR_CNF_PASS').getValue() != '') {
|
||||||
userExecuteEvent(document.getElementById('USR_CNF_PASS'), 'blur');
|
userExecuteEvent(document.getElementById('USR_CNF_PASS'), 'blur');
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -1175,6 +1175,11 @@ function saveUser()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!Ext.getCmp('USR_COST_BY_HOUR').isValid()) {
|
||||||
|
PMExt.warning(_('ID_ERROR'), _('ID_INVALID_VALUE_EXPECTING_POSITIVE_INTEGER', _('ID_COST_BY_HOUR')));
|
||||||
|
Ext.getCmp('USR_COST_BY_HOUR').focus(true,10);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (USR_UID == '00000000000000000000000000000001') {
|
if (USR_UID == '00000000000000000000000000000001') {
|
||||||
if (Ext.getCmp('USR_ROLE').getValue() != PROCESSMAKER_ADMIN) {
|
if (Ext.getCmp('USR_ROLE').getValue() != PROCESSMAKER_ADMIN) {
|
||||||
|
|||||||
@@ -98,7 +98,7 @@
|
|||||||
.grid-stack-item[data-gs-x="2"] { left: 16.66666667% }
|
.grid-stack-item[data-gs-x="2"] { left: 16.66666667% }
|
||||||
.grid-stack-item[data-gs-x="1"] { left: 8.33333333% }
|
.grid-stack-item[data-gs-x="1"] { left: 8.33333333% }
|
||||||
|
|
||||||
@media (max-width: 1000px) {
|
@media (max-width: 990px) {
|
||||||
.grid-stack-item {
|
.grid-stack-item {
|
||||||
position: relative !important;
|
position: relative !important;
|
||||||
width: auto !important;
|
width: auto !important;
|
||||||
|
|||||||
Reference in New Issue
Block a user