Merge branch 'master' of bitbucket.org:richardnoel/processmaker
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -451,9 +451,8 @@ class DataBaseMaintenance
|
||||
}
|
||||
|
||||
$sQuery = "LOCK TABLES " . implode( " READ, ", $aTables ) . " READ; ";
|
||||
$sQuery = $filter->preventSqlInjection($sQuery);
|
||||
|
||||
if (@mysql_query( $sQuery )) {
|
||||
if (@mysql_query( $filter->preventSqlInjection($sQuery) )) {
|
||||
echo " [OK]\n";
|
||||
return true;
|
||||
} else {
|
||||
@@ -664,7 +663,7 @@ class DataBaseMaintenance
|
||||
$filter = new InputFilter();
|
||||
$tablename = $filter->validateInput($tablename, 'nosql');
|
||||
$tableSchema = "";
|
||||
$sql = "show create table `%s`; ";
|
||||
$sql = 'show create table `%s`; ';
|
||||
$sql = $filter->preventSqlInjection($sql, array($tablename));
|
||||
$result = @mysql_query( $sql );
|
||||
if ($result) {
|
||||
@@ -713,4 +712,3 @@ $o2->connect();
|
||||
$o2->restoreFromSql('/home/erik/backs/schema_os.sql');
|
||||
$o2->restoreAllData('sql');
|
||||
*/
|
||||
|
||||
|
||||
@@ -2719,6 +2719,12 @@ class G
|
||||
imagecopyresampled( $image_p, $image, 0, 0, 0, 0, $resWidth, $resHeight, $width, $height );
|
||||
$outputFn( $image_p, $saveTo );
|
||||
|
||||
if(!is_null($saveTo)) {
|
||||
G::LoadSystem('inputfilter');
|
||||
$filter = new InputFilter();
|
||||
$saveTo = $filter->validateInput($saveTo, "path");
|
||||
}
|
||||
|
||||
@chmod( $saveTo, 0666 );
|
||||
}
|
||||
|
||||
@@ -3137,7 +3143,7 @@ class G
|
||||
/*G::LoadSystem('inputfilter');
|
||||
$filter = new InputFilter();
|
||||
$c = $filter->xssFilterHard($c);*/
|
||||
print ("<script language=\"javascript\">{$c}</script>") ;
|
||||
print ('<script language="javascript">'.$c.'</script>') ;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -96,7 +96,7 @@ class HTMLPurifier_DefinitionCache_Serializer extends HTMLPurifier_DefinitionCac
|
||||
|
||||
G::LoadSystem('inputfilter');
|
||||
$filter = new InputFilter();
|
||||
$file = $filter->validateInput($file,"path");
|
||||
$file = $filter->validateInput($file,'path');
|
||||
|
||||
return unlink($file);
|
||||
}
|
||||
@@ -209,7 +209,7 @@ class HTMLPurifier_DefinitionCache_Serializer extends HTMLPurifier_DefinitionCac
|
||||
|
||||
G::LoadSystem('inputfilter');
|
||||
$filter = new InputFilter();
|
||||
$file = $filter->validateInput($file,"path");
|
||||
$file = $filter->validateInput($file,'path');
|
||||
|
||||
if(is_file($file)) {
|
||||
$result = file_put_contents($file, $data);
|
||||
|
||||
@@ -102,8 +102,7 @@ class PgSQLTableInfo extends TableInfo {
|
||||
WHERE att.attrelid = %d AND att.attnum > 0
|
||||
AND att.attisdropped IS FALSE
|
||||
ORDER BY att.attnum";
|
||||
$query = $filter->preventSqlInjection($query);
|
||||
$result = pg_query ($this->conn->getResource(), sprintf ($query, $this->oid));
|
||||
$result = pg_query ($this->conn->getResource(), sprintf ($filter->preventSqlInjection($query), $this->oid));
|
||||
|
||||
if (!$result) {
|
||||
throw new SQLException("Could not list fields for table: " . $this->name, pg_last_error($this->conn->getResource()));
|
||||
@@ -238,8 +237,7 @@ class PgSQLTableInfo extends TableInfo {
|
||||
d.typtype = 'd'
|
||||
AND d.typname = '%s'
|
||||
ORDER BY d.typname";
|
||||
$query = $filter->preventSqlInjection($query);
|
||||
$result = pg_query ($this->conn->getResource(), sprintf ($query, $strDomain));
|
||||
$result = pg_query ($this->conn->getResource(), sprintf ($filter->preventSqlInjection($query), $strDomain));
|
||||
|
||||
if (!$result) {
|
||||
throw new SQLException("Query for domain [" . $strDomain . "] failed.", pg_last_error($this->conn->getResource()));
|
||||
@@ -297,8 +295,7 @@ class PgSQLTableInfo extends TableInfo {
|
||||
AND a2.attnum = ct.conkey[1]
|
||||
AND a1.attnum = ct.confkey[1]
|
||||
ORDER BY conname";
|
||||
$query = $filter->preventSqlInjection($query);
|
||||
$result = pg_query ($this->conn->getResource(), sprintf ($query, $this->oid));
|
||||
$result = pg_query ($this->conn->getResource(), sprintf ($filter->preventSqlInjection($query), $this->oid));
|
||||
if (!$result) {
|
||||
throw new SQLException("Could not list foreign keys for table: " . $this->name, pg_last_error($this->conn->getResource()));
|
||||
}
|
||||
@@ -384,8 +381,7 @@ class PgSQLTableInfo extends TableInfo {
|
||||
JOIN pg_class cls ON cls.oid=indexrelid
|
||||
WHERE indrelid = %d AND NOT indisprimary
|
||||
ORDER BY cls.relname";
|
||||
$query = $filter->preventSqlInjection($query);
|
||||
$result = pg_query ($this->conn->getResource(), sprintf ($query, $this->oid));
|
||||
$result = pg_query ($this->conn->getResource(), sprintf ($filter->preventSqlInjection($query), $this->oid));
|
||||
|
||||
|
||||
if (!$result) {
|
||||
@@ -417,8 +413,7 @@ class PgSQLTableInfo extends TableInfo {
|
||||
FROM pg_catalog.pg_class c JOIN pg_catalog.pg_attribute a ON a.attrelid = c.oid
|
||||
WHERE c.oid = '%s' AND a.attnum = %d AND NOT a.attisdropped
|
||||
ORDER BY a.attnum";
|
||||
$query = $filter->preventSqlInjection($query);
|
||||
$result2 = pg_query ($this->conn->getResource(), sprintf ($query, $this->oid, $intColNum));
|
||||
$result2 = pg_query ($this->conn->getResource(), sprintf ($filter->preventSqlInjection($query), $this->oid, $intColNum));
|
||||
if (!$result2)
|
||||
{
|
||||
throw new SQLException("Could not list indexes keys for table: " . $this->name, pg_last_error($this->conn->getResource()));
|
||||
@@ -461,8 +456,7 @@ class PgSQLTableInfo extends TableInfo {
|
||||
JOIN pg_class cls ON cls.oid=indexrelid
|
||||
WHERE indrelid = %s AND indisprimary
|
||||
ORDER BY cls.relname";
|
||||
$query = $filter->preventSqlInjection($query);
|
||||
$result = pg_query($this->conn->getResource(), sprintf ($query, $this->oid));
|
||||
$result = pg_query($this->conn->getResource(), sprintf ($filter->preventSqlInjection($query), $this->oid));
|
||||
if (!$result) {
|
||||
throw new SQLException("Could not list primary keys for table: " . $this->name, pg_last_error($this->conn->getResource()));
|
||||
}
|
||||
@@ -491,8 +485,7 @@ class PgSQLTableInfo extends TableInfo {
|
||||
FROM pg_catalog.pg_class c JOIN pg_catalog.pg_attribute a ON a.attrelid = c.oid
|
||||
WHERE c.oid = '%s' AND a.attnum = %d AND NOT a.attisdropped
|
||||
ORDER BY a.attnum";
|
||||
$query = $filter->preventSqlInjection($query);
|
||||
$result2 = pg_query ($this->conn->getResource(), sprintf ($query, $this->oid, $intColNum));
|
||||
$result2 = pg_query ($this->conn->getResource(), sprintf ($filter->preventSqlInjection($query), $this->oid, $intColNum));
|
||||
if (!$result2)
|
||||
{
|
||||
throw new SQLException("Could not list indexes keys for table: " . $this->name, pg_last_error($this->conn->getResource()));
|
||||
|
||||
@@ -124,8 +124,7 @@ class SQLiteTableInfo extends TableInfo {
|
||||
|
||||
// get columns for that index
|
||||
$query = "PRAGMA index_info('$name')";
|
||||
$query = $filter->preventSqlInjection($query);
|
||||
$res2 = sqlite_query($this->conn->getResource(), $query);
|
||||
$res2 = sqlite_query($this->conn->getResource(), $filter->preventSqlInjection($query));
|
||||
while($row2 = sqlite_fetch_array($res2, SQLITE_ASSOC)) {
|
||||
$colname = $row2['name'];
|
||||
$this->indexes[$name]->addColumn($this->columns[ $colname ]);
|
||||
|
||||
@@ -465,7 +465,7 @@ Wrote: /usr/src/redhat/RPMS/i386/PEAR::Net_Socket-1.0-1.i386.rpm
|
||||
}
|
||||
}
|
||||
$plist = implode(" ", $params);
|
||||
$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'] );
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* buscador.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.
|
||||
*
|
||||
*/
|
||||
$frm = $HTTP_GET_VARS;
|
||||
|
||||
?>
|
||||
|
||||
<h1>demo de buscador</h1>
|
||||
<form method=post action="buscador2.php">
|
||||
<input type=hidden name=ticket value="<?php echo $frm['ticket'] ?>" >
|
||||
<input type=hidden name=tipo value="<?php echo $frm['tipo'] ?>" >
|
||||
Buscador tipo : <?php echo $frm['tipo'] ?><br>
|
||||
|
||||
<table><tr><td>
|
||||
curso</td><td>
|
||||
<select name=curso>
|
||||
<option value="curso1">Curso 1</option>
|
||||
<option value="curso2">Curso 2</option>
|
||||
<option value="curso3">Curso 3</option>
|
||||
<option value="curso4">Curso 4</4option>
|
||||
<option value="curso5">Curso 5</option>
|
||||
</td></tr>
|
||||
<tr><td colspan=2>
|
||||
<input type=submit ></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -751,7 +751,16 @@ class Derivation
|
||||
//if (isset($nextDel['TAS_DEF_PROC_CODE']))
|
||||
//$appFields['APP_PROC_CODE'] = $nextDel['TAS_DEF_PROC_CODE'];
|
||||
/*----------------------------------********---------------------------------*/
|
||||
if ($nextDel['TAS_UID'] != '-1') {
|
||||
if ($nextDel['TAS_UID'] == '-2') {
|
||||
$oRow = ApplicationPeer::retrieveByPK($appFields['APP_UID']);
|
||||
$aFields = $oRow->toArray( BasePeer::TYPE_FIELDNAME );
|
||||
$users = new Users();
|
||||
if ($aFields['APP_STATUS'] == 'DRAFT') {
|
||||
$users->refreshTotal($appFields['CURRENT_USER_UID'], 'remove', 'draft');
|
||||
} else {
|
||||
$users->refreshTotal($appFields['CURRENT_USER_UID'], 'remove', 'inbox');
|
||||
}
|
||||
} elseif ($nextDel['TAS_UID'] != '-1') {
|
||||
$taskNex = TaskPeer::retrieveByPK($nextDel['TAS_UID']);
|
||||
$aTask = $taskNex->toArray( BasePeer::TYPE_FIELDNAME );
|
||||
$arrayTaskTypeToExclude = array("WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT");
|
||||
|
||||
@@ -75,10 +75,10 @@ class indicatorsCalculator
|
||||
private $userGroupReportingMetadata = array("tableName" => "USR_REPORTING", "keyField" => "PRO_UID");
|
||||
private $processCategoryReportingMetadata = array("tableName" => "PRO_REPORTING", "keyField" => "PRO_UID");
|
||||
|
||||
private $peiCostFormula = "SUM(TOTAL_CASES_OUT * CONFIGURED_TASK_TIME - TOTAL_TIME_BY_TASK * USER_HOUR_COST)";
|
||||
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 $peiFormula = "SUM(TOTAL_CASES_OUT*CONFIGURED_TASK_TIME) / SUM(SDV_TIME * TOTAL_CASES_OUT + TOTAL_TIME_BY_TASK)";
|
||||
|
||||
private $ueiCostFormula = "SUM(TOTAL_CASES_OUT * CONFIGURED_TASK_TIME - TOTAL_TIME_BY_TASK * USER_HOUR_COST)";
|
||||
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 $ueiFormula = "SUM(TOTAL_CASES_OUT * CONFIGURED_TASK_TIME) / SUM(TOTAL_TIME_BY_TASK * USER_HOUR_COST)";
|
||||
|
||||
public function getSkewOfDataDistribution($table, $field) {
|
||||
@@ -288,7 +288,6 @@ class indicatorsCalculator
|
||||
order by $this->ueiFormula DESC
|
||||
) i
|
||||
join (SELECT @curRow := 0) order_table";
|
||||
|
||||
$retval = $this->pdoExecutor($sqlString, $params);
|
||||
//$returnValue = $this->propelExecutor($sqlString);
|
||||
return $retval;
|
||||
@@ -653,7 +652,7 @@ class indicatorsCalculator
|
||||
$db = ";dbname=".$workSpace->dbName;
|
||||
$user = $workSpace->dbUser;
|
||||
$pass = $workSpace->dbPass;
|
||||
$connString = "mysql:$host$port$db;";
|
||||
$connString = "mysql:$host$port$db;charset=utf8;";
|
||||
|
||||
$dbh = new PDO($connString, $user, $pass);
|
||||
return $dbh;
|
||||
|
||||
@@ -261,7 +261,7 @@ class ListCanceled extends BaseListCanceled {
|
||||
return (int)$total;
|
||||
}
|
||||
|
||||
public function loadList ($usr_uid, $filters = array())
|
||||
public function loadList($usr_uid, $filters = array(), $callbackRecord = null)
|
||||
{
|
||||
$resp = array();
|
||||
$criteria = new Criteria();
|
||||
@@ -308,7 +308,8 @@ class ListCanceled extends BaseListCanceled {
|
||||
$dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||
$data = array();
|
||||
while ($dataset->next()) {
|
||||
$aRow = $dataset->getRow();
|
||||
$aRow = (is_null($callbackRecord))? $dataset->getRow() : $callbackRecord($dataset->getRow());
|
||||
|
||||
$data[] = $aRow;
|
||||
}
|
||||
|
||||
|
||||
@@ -271,7 +271,7 @@ class ListCompleted extends BaseListCompleted
|
||||
return (int)$total;
|
||||
}
|
||||
|
||||
public function loadList ($usr_uid, $filters = array())
|
||||
public function loadList($usr_uid, $filters = array(), $callbackRecord = null)
|
||||
{
|
||||
$resp = array();
|
||||
$criteria = new Criteria();
|
||||
@@ -315,7 +315,8 @@ class ListCompleted extends BaseListCompleted
|
||||
$dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||
$data = array();
|
||||
while ($dataset->next()) {
|
||||
$aRow = $dataset->getRow();
|
||||
$aRow = (is_null($callbackRecord))? $dataset->getRow() : $callbackRecord($dataset->getRow());
|
||||
|
||||
$data[] = $aRow;
|
||||
}
|
||||
|
||||
|
||||
@@ -395,7 +395,7 @@ class ListInbox extends BaseListInbox
|
||||
return (int)$total;
|
||||
}
|
||||
|
||||
public function loadList ($usr_uid, $filters = array())
|
||||
public function loadList($usr_uid, $filters = array(), $callbackRecord = null)
|
||||
{
|
||||
$criteria = new Criteria();
|
||||
|
||||
@@ -449,7 +449,8 @@ class ListInbox extends BaseListInbox
|
||||
$data = array();
|
||||
$aPriorities = array ('1' => 'VL','2' => 'L','3' => 'N','4' => 'H','5' => 'VH');
|
||||
while ($dataset->next()) {
|
||||
$aRow = $dataset->getRow();
|
||||
$aRow = (is_null($callbackRecord))? $dataset->getRow() : $callbackRecord($dataset->getRow());
|
||||
|
||||
$aRow['DEL_PRIORITY'] = G::LoadTranslation( "ID_PRIORITY_{$aPriorities[$aRow['DEL_PRIORITY']]}" );
|
||||
$data[] = $aRow;
|
||||
}
|
||||
|
||||
@@ -210,7 +210,7 @@ class ListMyInbox extends BaseListMyInbox
|
||||
return (int)$total;
|
||||
}
|
||||
|
||||
public function loadList ($usr_uid, $filters = array())
|
||||
public function loadList($usr_uid, $filters = array(), $callbackRecord = null)
|
||||
{
|
||||
$criteria = new Criteria();
|
||||
|
||||
@@ -264,7 +264,8 @@ class ListMyInbox extends BaseListMyInbox
|
||||
$data = array();
|
||||
$aPriorities = array ('1' => 'VL','2' => 'L','3' => 'N','4' => 'H','5' => 'VH');
|
||||
while ($dataset->next()) {
|
||||
$aRow = $dataset->getRow();
|
||||
$aRow = (is_null($callbackRecord))? $dataset->getRow() : $callbackRecord($dataset->getRow());
|
||||
|
||||
$aRow['DEL_PRIORITY'] = G::LoadTranslation( "ID_PRIORITY_{$aPriorities[$aRow['DEL_PRIORITY']]}" );
|
||||
$data[] = $aRow;
|
||||
}
|
||||
|
||||
@@ -169,7 +169,7 @@ class ListParticipatedHistory extends BaseListParticipatedHistory
|
||||
return (int)$total;
|
||||
}
|
||||
|
||||
public function loadList ($usr_uid, $filters = array())
|
||||
public function loadList($usr_uid, $filters = array(), $callbackRecord = null)
|
||||
{
|
||||
$criteria = new Criteria();
|
||||
|
||||
@@ -219,7 +219,8 @@ class ListParticipatedHistory extends BaseListParticipatedHistory
|
||||
$data = array();
|
||||
$aPriorities = array ('1' => 'VL','2' => 'L','3' => 'N','4' => 'H','5' => 'VH');
|
||||
while ($dataset->next()) {
|
||||
$aRow = $dataset->getRow();
|
||||
$aRow = (is_null($callbackRecord))? $dataset->getRow() : $callbackRecord($dataset->getRow());
|
||||
|
||||
$aRow['DEL_PRIORITY'] = G::LoadTranslation( "ID_PRIORITY_{$aPriorities[$aRow['DEL_PRIORITY']]}" );
|
||||
$data[] = $aRow;
|
||||
}
|
||||
|
||||
@@ -239,7 +239,7 @@ class ListParticipatedLast extends BaseListParticipatedLast
|
||||
return (int)$total;
|
||||
}
|
||||
|
||||
public function loadList ($usr_uid, $filters = array())
|
||||
public function loadList($usr_uid, $filters = array(), $callbackRecord = null)
|
||||
{
|
||||
$criteria = new Criteria();
|
||||
|
||||
@@ -290,7 +290,8 @@ class ListParticipatedLast extends BaseListParticipatedLast
|
||||
$data = array();
|
||||
$aPriorities = array ('1' => 'VL','2' => 'L','3' => 'N','4' => 'H','5' => 'VH');
|
||||
while ($dataset->next()) {
|
||||
$aRow = $dataset->getRow();
|
||||
$aRow = (is_null($callbackRecord))? $dataset->getRow() : $callbackRecord($dataset->getRow());
|
||||
|
||||
$aRow['DEL_PRIORITY'] = G::LoadTranslation( "ID_PRIORITY_{$aPriorities[$aRow['DEL_PRIORITY']]}" );
|
||||
$data[] = $aRow;
|
||||
}
|
||||
|
||||
@@ -281,7 +281,7 @@ class ListPaused extends BaseListPaused {
|
||||
return (int)$total;
|
||||
}
|
||||
|
||||
public function loadList ($usr_uid, $filters = array())
|
||||
public function loadList($usr_uid, $filters = array(), $callbackRecord = null)
|
||||
{
|
||||
$resp = array();
|
||||
$criteria = new Criteria();
|
||||
@@ -332,7 +332,8 @@ class ListPaused extends BaseListPaused {
|
||||
$dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||
$data = array();
|
||||
while ($dataset->next()) {
|
||||
$aRow = $dataset->getRow();
|
||||
$aRow = (is_null($callbackRecord))? $dataset->getRow() : $callbackRecord($dataset->getRow());
|
||||
|
||||
$data[] = $aRow;
|
||||
}
|
||||
|
||||
|
||||
@@ -243,7 +243,7 @@ class ListUnassigned extends BaseListUnassigned
|
||||
return (int)$total;
|
||||
}
|
||||
|
||||
public function loadList ($usr_uid, $filters = array())
|
||||
public function loadList($usr_uid, $filters = array(), $callbackRecord = null)
|
||||
{
|
||||
$resp = array();
|
||||
$criteria = new Criteria();
|
||||
@@ -298,7 +298,8 @@ class ListUnassigned extends BaseListUnassigned
|
||||
$data = array();
|
||||
$aPriorities = array ('1' => 'VL','2' => 'L','3' => 'N','4' => 'H','5' => 'VH');
|
||||
while ($dataset->next()) {
|
||||
$aRow = $dataset->getRow();
|
||||
$aRow = (is_null($callbackRecord))? $dataset->getRow() : $callbackRecord($dataset->getRow());
|
||||
|
||||
$aRow['DEL_PRIORITY'] = G::LoadTranslation( "ID_PRIORITY_{$aPriorities[$aRow['DEL_PRIORITY']]}" );
|
||||
$data[] = $aRow;
|
||||
}
|
||||
|
||||
@@ -1009,7 +1009,6 @@ class adminProxy extends HttpProxyController
|
||||
public function uploadImage()
|
||||
{
|
||||
//!dataSystem
|
||||
|
||||
G::LoadSystem('inputfilter');
|
||||
$filter = new InputFilter();
|
||||
$_SERVER["REQUEST_URI"] = $filter->xssFilterHard($_SERVER["REQUEST_URI"]);
|
||||
@@ -1090,7 +1089,13 @@ class adminProxy extends HttpProxyController
|
||||
$uploaded = $filter->validateInput($uploaded,'int');
|
||||
$files_img_type = $filter->xssFilterHard($files_img_type);
|
||||
$failed = $filter->validateInput($failed,'int');
|
||||
echo '{success: true, failed: ' . $failed . ', uploaded: ' . $uploaded . ', type: "' . $files_img_type . '"}';
|
||||
$resp = array(
|
||||
'success' => true,
|
||||
'failed' => $failed,
|
||||
'uploaded' => $uploaded,
|
||||
'type' => $files_img_type
|
||||
);
|
||||
echo G::json_encode($resp);
|
||||
exit();
|
||||
}
|
||||
|
||||
|
||||
@@ -843,10 +843,10 @@ class Installer extends Controller
|
||||
$query = sprintf( "USE %s;", $wf_workpace );
|
||||
$this->mysqlQuery( $query );
|
||||
|
||||
$query = sprintf( "UPDATE USERS SET USR_USERNAME = '%s', USR_LASTNAME = '%s', USR_PASSWORD = '%s' WHERE USR_UID = '00000000000000000000000000000001' ", $adminUsername, $adminUsername, md5( $adminPassword ) );
|
||||
$query = sprintf( "UPDATE USERS SET USR_USERNAME = '%s', USR_LASTNAME = '%s', USR_PASSWORD = '%s' WHERE USR_UID = '00000000000000000000000000000001' ", $adminUsername, $adminUsername, G::encryptOld( $adminPassword ) );
|
||||
$this->mysqlQuery( $query );
|
||||
|
||||
$query = sprintf( "UPDATE RBAC_USERS SET USR_USERNAME = '%s', USR_LASTNAME = '%s', USR_PASSWORD = '%s' WHERE USR_UID = '00000000000000000000000000000001' ", $adminUsername, $adminUsername, md5( $adminPassword ) );
|
||||
$query = sprintf( "UPDATE RBAC_USERS SET USR_USERNAME = '%s', USR_LASTNAME = '%s', USR_PASSWORD = '%s' WHERE USR_UID = '00000000000000000000000000000001' ", $adminUsername, $adminUsername, G::encryptOld( $adminPassword ) );
|
||||
$this->mysqlQuery( $query );
|
||||
|
||||
// Write the paths_installed.php file (contains all the information configured so far)
|
||||
@@ -1237,35 +1237,35 @@ class Installer extends Controller
|
||||
$info = new stdclass();
|
||||
|
||||
if ($_REQUEST['db_engine'] == 'mysql') {
|
||||
$_REQUEST['db_hostname'] = $filter->validateInput($_REQUEST['db_hostname']);
|
||||
$_REQUEST['db_username'] = $filter->validateInput($_REQUEST['db_username']);
|
||||
$_REQUEST['db_password'] = $filter->validateInput($_REQUEST['db_password']);
|
||||
$link = @mysql_connect( $_REQUEST['db_hostname'], $_REQUEST['db_username'], $_REQUEST['db_password'] );
|
||||
$_REQUEST['wfDatabase'] = $filter->validateInput($_REQUEST['wfDatabase'], 'nosql');
|
||||
$db_hostname = $filter->validateInput($_REQUEST['db_hostname']);
|
||||
$db_username = $filter->validateInput($_REQUEST['db_username']);
|
||||
$db_password = $filter->validateInput($_REQUEST['db_password']);
|
||||
$link = @mysql_connect( $db_hostname, $db_username, $db_password );
|
||||
$wfDatabase = $filter->validateInput($_REQUEST['wfDatabase'], 'nosql');
|
||||
$query = "show databases like '%s' ";
|
||||
$query = $filter->preventSqlInjection( $query, array($_REQUEST['wfDatabase']) );
|
||||
$query = $filter->preventSqlInjection( $query, array($wfDatabase) );
|
||||
$dataset = @mysql_query( $query, $link );
|
||||
$info->wfDatabaseExists = (@mysql_num_rows( $dataset ) > 0);
|
||||
} else if ($_REQUEST['db_engine'] == 'mssql') {
|
||||
$link = @mssql_connect( $_REQUEST['db_hostname'], $_REQUEST['db_username'], $_REQUEST['db_password'] );
|
||||
$_REQUEST['wfDatabase'] = $filter->validateInput($_REQUEST['wfDatabase'], 'nosql');
|
||||
$link = @mssql_connect( $db_hostname, $db_username, $db_password );
|
||||
$wfDatabase = $filter->validateInput($_REQUEST['wfDatabase'], 'nosql');
|
||||
$query = "select * from sys.databases where name = '%s' ";
|
||||
$query = $filter->preventSqlInjection( $query, array($_REQUEST['wfDatabase']) );
|
||||
$query = $filter->preventSqlInjection( $query, array($wfDatabase) );
|
||||
$dataset = @mssql_query( $query , $link );
|
||||
$info->wfDatabaseExists = (@mssql_num_rows( $dataset ) > 0);
|
||||
} else if ($_REQUEST['db_engine'] == 'sqlsrv') {
|
||||
$arguments = array("UID" => $_REQUEST['db_username'], "PWD" => $_REQUEST['db_password']);
|
||||
$link = @sqlsrv_connect( $_REQUEST['db_hostname'], $arguments);
|
||||
$_REQUEST['wfDatabase'] = $filter->validateInput($_REQUEST['wfDatabase'], 'nosql');
|
||||
$arguments = array("UID" => $db_username, "PWD" => $db_password);
|
||||
$link = @sqlsrv_connect( $db_hostname, $arguments);
|
||||
$wfDatabase = $filter->validateInput($_REQUEST['wfDatabase'], 'nosql');
|
||||
$query = "select * from sys.databases where name = '%s' ";
|
||||
$query = $filter->preventSqlInjection( $query, array($_REQUEST['wfDatabase']) );
|
||||
$query = $filter->preventSqlInjection( $query, array($wfDatabase) );
|
||||
$dataset = @sqlsrv_query( $link, $query );
|
||||
$info->wfDatabaseExists = (@sqlsrv_num_rows( $dataset ) > 0);
|
||||
} else {
|
||||
$link = @mssql_connect( $_REQUEST['db_hostname'], $_REQUEST['db_username'], $_REQUEST['db_password'] );
|
||||
$_REQUEST['wfDatabase'] = $filter->validateInput($_REQUEST['wfDatabase'], 'nosql');
|
||||
$link = @mssql_connect( $db_hostname, $db_username, $db_password );
|
||||
$wfDatabase = $filter->validateInput($_REQUEST['wfDatabase'], 'nosql');
|
||||
$query = "select * from sys.databases where name = '%s' ";
|
||||
$query = $filter->preventSqlInjection( $query, array($_REQUEST['wfDatabase']) );
|
||||
$query = $filter->preventSqlInjection( $query, array($wfDatabase) );
|
||||
$dataset = @mssql_query( $query , $link );
|
||||
$info->wfDatabaseExists = (@mssql_num_rows( $dataset ) > 0);
|
||||
}
|
||||
@@ -1670,6 +1670,7 @@ class Installer extends Controller
|
||||
$db_password = trim( $_REQUEST['db_password'] );
|
||||
$db_password = $filter->validateInput($db_password);
|
||||
$wf = trim( $_REQUEST['wfDatabase'] );
|
||||
$wf = $filter->validateInput($wf);
|
||||
|
||||
$db_host = ($db_port != '' && $db_port != 3306) ? $db_hostname . ':' . $db_port : $db_hostname;
|
||||
|
||||
@@ -1701,4 +1702,3 @@ class Installer extends Controller
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -671,11 +671,11 @@ class pmTablesProxy extends HttpProxyController
|
||||
$filter = new InputFilter();
|
||||
$countRow = 250;
|
||||
$tmpfilename = $_FILES['form']['tmp_name']['CSV_FILE'];
|
||||
$tmpfilename = $filter->xssFilterHard($tmpfilename, 'path');
|
||||
//$tmpfilename = $filter->xssFilterHard($tmpfilename, 'path');
|
||||
if (preg_match( '/[\x00-\x08\x0b-\x0c\x0e\x1f]/', file_get_contents( $tmpfilename ) ) === 0) {
|
||||
$filename = $_FILES['form']['name']['CSV_FILE'];
|
||||
$filename = $filter->xssFilterHard($filename, 'path');
|
||||
if ($oFile = fopen( $tmpfilename, 'r' )) {
|
||||
//$filename = $filter->xssFilterHard($filename, 'path');
|
||||
if ($oFile = fopen( $filter->xssFilterHard($tmpfilename, 'path'), 'r' )) {
|
||||
require_once 'classes/model/AdditionalTables.php';
|
||||
$oAdditionalTables = new AdditionalTables();
|
||||
$aAdditionalTables = $oAdditionalTables->load( $_POST['form']['ADD_TAB_UID'], true );
|
||||
@@ -771,11 +771,11 @@ class pmTablesProxy extends HttpProxyController
|
||||
G::LoadSystem('inputfilter');
|
||||
$filter = new InputFilter();
|
||||
$tmpfilename = $_FILES['form']['tmp_name']['CSV_FILE'];
|
||||
$tmpfilename = $filter->xssFilterHard($tmpfilename, 'path');
|
||||
//$tmpfilename = $filter->xssFilterHard($tmpfilename, 'path');
|
||||
if (preg_match( '/[\x00-\x08\x0b-\x0c\x0e\x1f]/', file_get_contents( $tmpfilename ) ) === 0) {
|
||||
$filename = $_FILES['form']['name']['CSV_FILE'];
|
||||
$filename = $filter->xssFilterHard($filename, 'path');
|
||||
if ($oFile = fopen( $tmpfilename, 'r' )) {
|
||||
if ($oFile = fopen( $filter->xssFilterHard($tmpfilename, 'path'), 'r' )) {
|
||||
require_once 'classes/model/AdditionalTables.php';
|
||||
$oAdditionalTables = new AdditionalTables();
|
||||
$aAdditionalTables = $oAdditionalTables->load( $_POST['form']['ADD_TAB_UID'], true );
|
||||
|
||||
@@ -59991,7 +59991,7 @@ INSERT INTO CATALOG (CAT_UID, CAT_LABEL_ID, CAT_TYPE, CAT_FLAG, CAT_OBSERVATION,
|
||||
('400','ID_YEAR','PERIODICITY','','','2015-03-04','2015-03-04'),
|
||||
('1010','ID_PROCESS_EFFICIENCE','INDICATOR','','','2015-03-04','2015-03-04'),
|
||||
('1030','ID_EMPLYEE_EFFICIENCIE','INDICATOR','','','2015-03-04','2015-03-04'),
|
||||
('1050','ID_OVER_DUE','INDICATOR','%','Unit for displaying','2015-03-04','2015-03-04'),
|
||||
('1050','ID_OVER_DUE','INDICATOR','%','Unit for displaying','2015-03-04','2015-03-04');
|
||||
|
||||
INSERT INTO ADDONS_MANAGER (ADDON_DESCRIPTION,ADDON_ID,ADDON_NAME,ADDON_NICK,ADDON_PUBLISHER,ADDON_RELEASE_TYPE,ADDON_STATUS,STORE_ID,ADDON_TYPE,ADDON_DOWNLOAD_URL,ADDON_VERSION,ADDON_DOWNLOAD_PROGRESS) VALUES
|
||||
('Enables de Actions By Email feature.','actionsByEmail','actionsByEmail','actionsByEmail','Colosa','localRegistry','ready','00000000000000000000000000010004','features','','','0'),
|
||||
|
||||
@@ -1,134 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* inc.JSForms.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.
|
||||
*
|
||||
*/
|
||||
|
||||
G::LoadSystem('inputfilter');
|
||||
$filter = new InputFilter();
|
||||
global $HTTP_SESSION_VARS;
|
||||
global $G_FORM;
|
||||
$HTTP_SESSION_VARS = $filter->xssFilterHard($HTTP_SESSION_VARS);
|
||||
$HTTP_GET_VARS = $filter->xssFilterHard($HTTP_GET_VARS);
|
||||
$_GET = $filter->xssFilterHard($_GET);
|
||||
|
||||
$path = '';
|
||||
$showFieldAjax = 'showFieldAjax.php';
|
||||
|
||||
$serverAjax = G::encryptLink($path.$showFieldAjax);
|
||||
$serverAjax = $filter->xssFilterHard($serverAjax);
|
||||
|
||||
?>
|
||||
<script language="JavaScript">
|
||||
function RefreshDependentFields(ObjectName, Fields, InitValue) {
|
||||
|
||||
<?php
|
||||
//global $G_FORM;
|
||||
$HTTP_SESSION_VARS['INIT_VALUES'] = $G_FORM->Values;
|
||||
global $HTTP_GET_VARS;
|
||||
if ($HTTP_SESSION_VARS['CURRENT_APPLICATION'] == '') $HTTP_SESSION_VARS['CURRENT_APPLICATION'] = '0';
|
||||
$appid = $HTTP_SESSION_VARS['CURRENT_APPLICATION'];
|
||||
$appid = $filter->xssFilterHard($appid);
|
||||
if ($HTTP_GET_VARS['dynaform'] != ''){
|
||||
$Dynaform = '&__dynaform__=' . $HTTP_GET_VARS['dynaform'];
|
||||
$Dynaform = $filter->xssFilterHard($Dynaform);
|
||||
}
|
||||
if ($HTTP_GET_VARS['filename'] != ''){
|
||||
$Dynaform = '&__filename__=' . $HTTP_GET_VARS['filename'];
|
||||
$Dynaform = $filter->xssFilterHard($Dynaform);
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
if (getField)
|
||||
TheObject = getField(ObjectName);
|
||||
|
||||
if (TheObject) {
|
||||
Fields = Fields.split(',');
|
||||
for (i=0; i<Fields.length; i++) {
|
||||
DivObj = document.getElementById('FLD_' + Fields[i]);
|
||||
FldObj = document.getElementById('form[' + Fields[i] + ']');
|
||||
|
||||
if(FldObj){
|
||||
if(FldObj.type == 'text'){
|
||||
refillText( Fields[i],'<?php echo $serverAjax?>', 'function=text&field=' + Fields[i] + '&parent=' + ObjectName + '&value=' + TheObject.value + '<?php echo $Dynaform?>'+ '&application=' + '<?php echo $appid?>'+ '&Dynaform=' + '<?php echo $Dynaform?>' );
|
||||
}
|
||||
if(FldObj.type == 'hidden'){
|
||||
refillText( Fields[i],'<?php echo $serverAjax?>', 'function=text&field=' + Fields[i] + '&parent=' + ObjectName + '&value=' + TheObject.value + '<?php echo $Dynaform?>'+ '&application=' + '<?php echo $appid?>'+ '&Dynaform=' + '<?php echo $Dynaform?>' );
|
||||
}
|
||||
|
||||
if(FldObj.type == 'select-one') {
|
||||
refillDropdown( Fields[i],'<?php echo $serverAjax?>', 'function=dropdown&field=' + Fields[i] + '&parent=' + ObjectName + '&value=' + TheObject.value + '<?php echo $Dynaform?>'+ '&application=' + '<?php echo $appid?>'+ '&Dynaform=' + '<?php echo $Dynaform?>'+ '&InitValue=' + InitValue , InitValue);
|
||||
}
|
||||
}else{
|
||||
if(DivObj)
|
||||
refillCaption( Fields[i],'<?php echo $serverAjax?>', 'function=text&field=' + Fields[i] + '&parent=' + ObjectName + '&value=' + TheObject.value + '<?php echo $Dynaform?>'+ '&application=' + '<?php echo $appid?>'+ '&Dynaform=' + '<?php echo $Dynaform?>' );
|
||||
}
|
||||
}
|
||||
}
|
||||
<?php
|
||||
// }
|
||||
?>
|
||||
}
|
||||
|
||||
function registerDate ( field, options ) {
|
||||
var opts = options.split(',');
|
||||
var fieldName = 'form['+field+']';
|
||||
var divName = 'DIV['+field+']';
|
||||
Obj = getField( divName);
|
||||
value = Obj.value;
|
||||
myDatePicker = new Bs_DatePicker();
|
||||
<?php
|
||||
global $G_DATE_FORMAT;
|
||||
global $HTTP_SESSION_VARS;
|
||||
|
||||
$classfile = PATH_CORE . 'classes/class.user.php';
|
||||
if(file_exists($classfile))
|
||||
{
|
||||
G::LoadClass('user');
|
||||
$DateFormat = User::Get_User_Date_Format($HTTP_SESSION_VARS['USER_LOGGED']);
|
||||
}
|
||||
|
||||
if ($DateFormat == '')
|
||||
if (defined('DATE_FORMAT'))
|
||||
$TheDateFormat = DATE_FORMAT;
|
||||
else
|
||||
$TheDateFormat = $G_DATE_FORMAT;
|
||||
else
|
||||
switch ($DateFormat) {
|
||||
case 'en':
|
||||
$TheDateFormat = 'us';
|
||||
break;
|
||||
case 'es':
|
||||
$TheDateFormat = 'es';
|
||||
break;
|
||||
}
|
||||
?>
|
||||
myDatePicker.displayDateFormat = '<?php echo $TheDateFormat?>';
|
||||
myDatePicker.fieldName = fieldName;
|
||||
myDatePicker.loadSkin('win2k');
|
||||
myDatePicker.daysNumChars = 2;
|
||||
myDatePicker.setDateByIso( value);
|
||||
myDatePicker.drawInto(divName);
|
||||
}
|
||||
</script>
|
||||
<script language="JavaScript" src="/skins/JSForms.js"></script>
|
||||
@@ -15,6 +15,16 @@ ViewDashboardHelper.prototype.stringIfNull = function (val){
|
||||
return val;
|
||||
};
|
||||
|
||||
ViewDashboardHelper.prototype.zeroIfNull = function (val) {
|
||||
var retval = 0;
|
||||
if(val === null || val === undefined || val === "") {
|
||||
retval = 0;
|
||||
} else {
|
||||
retval = val;
|
||||
}
|
||||
return retval;
|
||||
};
|
||||
|
||||
ViewDashboardHelper.prototype.labelIfEmpty = function (val){
|
||||
if(val === null || val == undefined || val == ""){
|
||||
val = "(No Name)";
|
||||
|
||||
@@ -87,37 +87,20 @@ ViewDashboardPresenter.prototype.dashboardIndicatorsViewModel = function(data) {
|
||||
: "normal";
|
||||
|
||||
//rounding
|
||||
newObject.comparative = Math.round(newObject.comparative*1000)/1000;
|
||||
newObject.comparative = Math.round(newObject.comparative*100)/100;
|
||||
newObject.comparative = ((newObject.comparative > 0)? "+": "") + newObject.comparative;
|
||||
|
||||
newObject.percentComparative = (newObject.percentComparative != '--')
|
||||
? '(' + newObject.percentComparative + '%)'
|
||||
: "";
|
||||
newObject.percentComparative = (newObject.comparative == 0)
|
||||
? "(0%)"
|
||||
: newObject.percentComparative;
|
||||
|
||||
|
||||
newObject.value = (newObject.category == "normal")
|
||||
? Math.round(newObject.value) + ""
|
||||
: Math.round(newObject.value*100)/100 + ""
|
||||
|
||||
newObject.value = that.roundedIndicatorValue(newObject.value);
|
||||
newObject.favorite = 0;
|
||||
|
||||
newObject.percentageOverdueWidth = Math.round(newObject.percentageOverdue);
|
||||
newObject.percentageAtRiskWidth = Math.round(newObject.percentageAtRisk);
|
||||
//to be sure that percentages sum up to 100 (the rounding will lose decimals)%
|
||||
newObject.percentageOnTimeWidth = 100 - newObject.percentageOverdueWidth - newObject.percentageAtRiskWidth;
|
||||
|
||||
newObject.percentageOverdueToShow = ((newObject.percentageOverdue == 0 ||newObject.percentageOverdue == null )
|
||||
? ""
|
||||
: newObject.percentageOverdueWidth + "%");
|
||||
|
||||
newObject.percentageAtRiskToShow = ((newObject.percentageAtRisk == 0 || newObject.percentageAtRisk == null)
|
||||
? ""
|
||||
: newObject.percentageAtRiskWidth + "%");
|
||||
|
||||
newObject.percentageOnTimeToShow = ((newObject.percentageOnTime == 0 || newObject.percentageOnTime == 0)
|
||||
? G_STRING['ID_INBOX'] + ' ' + G_STRING['ID_EMPTY']
|
||||
: newObject.percentageOnTimeWidth + "%");
|
||||
|
||||
that.setStatusButtonWidthsAndDisplayValues(newObject);
|
||||
newObject.overdueVisibility = (newObject.percentageOverdueWidth > 0) ? "visible" : "hidden";
|
||||
newObject.atRiskVisibility = (newObject.percentageAtRiskWidth > 0) ? "visible" : "hidden";
|
||||
newObject.onTimeVisibility = (newObject.percentageOnTimeWidth > 0) ? "visible" : "hidden";
|
||||
@@ -135,6 +118,93 @@ ViewDashboardPresenter.prototype.dashboardIndicatorsViewModel = function(data) {
|
||||
return returnList;
|
||||
};
|
||||
|
||||
|
||||
ViewDashboardPresenter.prototype.roundedIndicatorValue = function (value) {
|
||||
if (value == 0) {
|
||||
return "0";
|
||||
}
|
||||
/*if (value > 0 && value < 0.1) {
|
||||
return "<0.1";
|
||||
}*/
|
||||
return Math.round(value*100)/100 + "";
|
||||
|
||||
}
|
||||
|
||||
ViewDashboardPresenter.prototype.setStatusButtonWidthsAndDisplayValues = function (data) {
|
||||
var minPercent = 10;
|
||||
var barsLessThanMin = [];
|
||||
var barsNormal = [];
|
||||
|
||||
var classifyBar = function (bar) {
|
||||
if (bar.valueRounded <= minPercent && bar.valueRounded > 0) {
|
||||
barsLessThanMin.push (bar);
|
||||
} else {
|
||||
barsNormal.push (bar)
|
||||
}
|
||||
}
|
||||
|
||||
var atRisk = {
|
||||
type : "atRisk",
|
||||
value : data.percentageAtRisk,
|
||||
valueRounded : Math.round(data.percentageAtRisk)
|
||||
};
|
||||
|
||||
var overdue = {
|
||||
type : "overdue",
|
||||
value : data.percentageOverdue,
|
||||
valueRounded : Math.round(data.percentageOverdue)
|
||||
};
|
||||
|
||||
var onTime = {
|
||||
type : "onTime",
|
||||
value : data.percentageOnTime,
|
||||
valueRounded : Math.round(data.percentageOnTime)
|
||||
};
|
||||
|
||||
atRisk.valueToShow = (this.helper.zeroIfNull(atRisk.valueRounded) == 0)
|
||||
? ""
|
||||
: atRisk.valueRounded + "%";
|
||||
|
||||
overdue.valueToShow = (this.helper.zeroIfNull(overdue.valueRounded) == 0)
|
||||
? ""
|
||||
: overdue.valueRounded + "%";
|
||||
|
||||
onTime.valueToShow = (this.helper.zeroIfNull(onTime.valueRounded) == 0)
|
||||
? ""
|
||||
: onTime.valueRounded + "%";
|
||||
|
||||
classifyBar(atRisk);
|
||||
classifyBar(overdue);
|
||||
classifyBar(onTime);
|
||||
|
||||
var widthToDivide = 100 - barsLessThanMin.length * minPercent;
|
||||
var normalsSum = 0;
|
||||
$.each (barsNormal, function() {
|
||||
normalsSum += this.valueRounded;
|
||||
});
|
||||
|
||||
$.each(barsNormal, function(key, bar) {
|
||||
bar.width = widthToDivide * bar.valueRounded / normalsSum;
|
||||
});
|
||||
|
||||
$.each(barsLessThanMin, function(key, bar) {
|
||||
bar.width = minPercent;
|
||||
});
|
||||
|
||||
if (atRisk.valueToShow == 0 && overdue.valueToShow == 0 && onTime.valueToShow == 0) {
|
||||
onTime.valueToShow = G_STRING['ID_INBOX'] + ' ' + G_STRING['ID_EMPTY'];
|
||||
onTime.width = 100;
|
||||
}
|
||||
|
||||
data.percentageOverdueWidth = overdue.width;
|
||||
data.percentageOnTimeWidth = onTime.width;
|
||||
data.percentageAtRiskWidth = atRisk.width;
|
||||
|
||||
data.percentageOverdueToShow = overdue.valueToShow;
|
||||
data.percentageAtRiskToShow = atRisk.valueToShow;
|
||||
data.percentageOnTimeToShow = onTime.valueToShow;
|
||||
}
|
||||
|
||||
/*++++++++ FIRST LEVEL INDICATOR DATA +++++++++++++*/
|
||||
ViewDashboardPresenter.prototype.getIndicatorData = function (indicatorId, indicatorType, initDate, endDate) {
|
||||
var that = this;
|
||||
@@ -184,8 +254,8 @@ ViewDashboardPresenter.prototype.peiViewModel = function(data) {
|
||||
};
|
||||
var newObject = that.helper.merge(originalObject, {}, map);
|
||||
graphData.push(newObject);
|
||||
originalObject.efficiencyIndexToShow = that.roundedIndicatorValue(originalObject.efficiencyIndex);
|
||||
originalObject.inefficiencyCostToShow = Math.round(originalObject.inefficiencyCost);
|
||||
originalObject.efficiencyIndexToShow = Math.round(originalObject.efficiencyIndex * 100) / 100;
|
||||
originalObject.indicatorId = data.id;
|
||||
originalObject.json = JSON.stringify(originalObject);
|
||||
});
|
||||
@@ -197,7 +267,7 @@ ViewDashboardPresenter.prototype.peiViewModel = function(data) {
|
||||
retval.dataToDraw = this.adaptGraphData(graphData);
|
||||
|
||||
retval.inefficiencyCostToShow = Math.round(retval.inefficiencyCost);
|
||||
retval.efficiencyIndexToShow = Math.round(retval.efficiencyIndex * 100) / 100;
|
||||
retval.efficiencyIndexToShow = that.roundedIndicatorValue(retval.efficiencyIndex);
|
||||
return retval;
|
||||
};
|
||||
|
||||
@@ -215,7 +285,7 @@ ViewDashboardPresenter.prototype.ueiViewModel = function(data) {
|
||||
var newObject = that.helper.merge(originalObject, {}, map);
|
||||
graphData.push(newObject);
|
||||
originalObject.inefficiencyCostToShow = Math.round(originalObject.inefficiencyCost);
|
||||
originalObject.efficiencyIndexToShow = Math.round(originalObject.efficiencyIndex * 100) / 100;
|
||||
originalObject.efficiencyIndexToShow = that.roundedIndicatorValue(originalObject.efficiencyIndex);
|
||||
originalObject.indicatorId = data.id;
|
||||
originalObject.json = JSON.stringify(originalObject);
|
||||
});
|
||||
@@ -226,7 +296,7 @@ ViewDashboardPresenter.prototype.ueiViewModel = function(data) {
|
||||
retval.dataToDraw = this.adaptGraphData(graphData);
|
||||
|
||||
retval.inefficiencyCostToShow = Math.round(retval.inefficiencyCost);
|
||||
retval.efficiencyIndexToShow = Math.round(retval.efficiencyIndex * 100) / 100;
|
||||
retval.efficiencyIndexToShow = that.roundedIndicatorValue(retval.efficiencyIndex);
|
||||
return retval;
|
||||
};
|
||||
|
||||
@@ -344,7 +414,7 @@ ViewDashboardPresenter.prototype.returnIndicatorSecondLevelPei = function(modelD
|
||||
};
|
||||
var newObject = that.helper.merge(originalObject, {}, map);
|
||||
originalObject.inefficiencyCostToShow = Math.round(originalObject.inefficiencyCost);
|
||||
originalObject.efficiencyIndexToShow = Math.round(originalObject.efficiencyIndex * 100) / 100;
|
||||
originalObject.efficiencyIndexToShow = that.roundedIndicatorValue(originalObject.efficiencyIndex);
|
||||
originalObject.deviationTimeToShow = Math.round(originalObject.deviationTime);
|
||||
originalObject.rankToShow = originalObject.rank + "/" + modelData.length;
|
||||
graphData.push(newObject);
|
||||
@@ -371,7 +441,7 @@ ViewDashboardPresenter.prototype.returnIndicatorSecondLevelUei = function(modelD
|
||||
};
|
||||
var newObject = that.helper.merge(originalObject, {}, map);
|
||||
originalObject.inefficiencyCostToShow = Math.round(originalObject.inefficiencyCost);
|
||||
originalObject.efficiencyIndexToShow = Math.round(originalObject.efficiencyIndex * 100) / 100;
|
||||
originalObject.efficiencyIndexToShow = that.roundedIndicatorValue(originalObject.efficiencyIndex);
|
||||
originalObject.deviationTimeToShow = Math.round(originalObject.deviationTime);
|
||||
originalObject.rankToShow = originalObject.rank + "/" + modelData.length;
|
||||
graphData.push(newObject);
|
||||
|
||||
@@ -195,6 +195,18 @@ WidgetBuilder.prototype.getIndicatorLoadedById = function (searchedIndicatorId)
|
||||
return retval;
|
||||
}
|
||||
|
||||
WidgetBuilder.prototype.getDashboardLoadedById = function (searchedDashboardId) {
|
||||
var retval = null;
|
||||
for (key in window.loadedDashboards) {
|
||||
var dashboard = window.loadedDashboards[key];
|
||||
if (dashboard.id == searchedDashboardId) {
|
||||
retval = dashboard;
|
||||
}
|
||||
}
|
||||
if (retval == null) { throw new Error(searchedIndicatorId + " was not found in the loaded indicators.");}
|
||||
return retval;
|
||||
}
|
||||
|
||||
WidgetBuilder.prototype.buildGeneralIndicatorFirstView = function (indicatorData) {
|
||||
_.templateSettings.variable = "indicator";
|
||||
var template = _.template ($("script.generalIndicatorMainPanel").html());
|
||||
@@ -223,6 +235,7 @@ model = new ViewDashboardModel(token, urlProxy, ws[3]);
|
||||
presenter = new ViewDashboardPresenter(model);
|
||||
|
||||
window.loadedIndicators = []; //updated in das-title-selector.click->fillIndicatorWidgets, ready->fillIndicatorWidgets
|
||||
window.loadedDashboards = [];
|
||||
window.currentEntityData = null;
|
||||
window.currentIndicator = null;//updated in ind-button-selector.click ->loadIndicator, ready->loadIndicator
|
||||
window.currentDashboardId = null;
|
||||
@@ -354,6 +367,7 @@ $(document).ready(function() {
|
||||
.done(function(indicatorsVM) {
|
||||
fillIndicatorWidgets(indicatorsVM);
|
||||
loadIndicator(getFavoriteIndicator().id, defaultInitDate(), defaultEndDate());
|
||||
setActiveDashboard();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -424,13 +438,23 @@ var selectedOrderOfDetailList = function () {
|
||||
|
||||
var selectDefaultMonthAndYear = function () {
|
||||
var compareDate = new Date();
|
||||
compareDate.setDate(1);
|
||||
compareDate.setMonth(compareDate.getMonth() - 1);
|
||||
var compareMonth = compareDate.getMonth() + 1;
|
||||
var compareYear = compareDate.getYear();
|
||||
var compareYear = compareDate.getFullYear();
|
||||
$('#month').val(compareMonth);
|
||||
$('#year').val(compareYear);
|
||||
}
|
||||
|
||||
var setActiveDashboard = function () {
|
||||
var builder = new WidgetBuilder();
|
||||
var dashboard = builder.getDashboardLoadedById(window.currentDashboardId);
|
||||
if (dashboard == null) {
|
||||
return;
|
||||
}
|
||||
$('#titleH4').text(dashboard.title);
|
||||
}
|
||||
|
||||
var initialDraw = function () {
|
||||
selectDefaultMonthAndYear();
|
||||
presenter.getUserDashboards(pageUserId)
|
||||
@@ -442,6 +466,7 @@ var initialDraw = function () {
|
||||
.done(function(indicatorsVM) {
|
||||
fillIndicatorWidgets(indicatorsVM);
|
||||
loadIndicator(getFavoriteIndicator().id, defaultInitDate(), defaultEndDate());
|
||||
setActiveDashboard();
|
||||
});
|
||||
});
|
||||
}
|
||||
@@ -514,6 +539,7 @@ var fillDashboardsList = function (presenterData) {
|
||||
}
|
||||
_.templateSettings.variable = "dashboard";
|
||||
var template = _.template ($("script.dashboardButtonTemplate").html())
|
||||
window.loadedDashboards = presenterData;
|
||||
for (key in presenterData) {
|
||||
var dashboard = presenterData[key];
|
||||
$('#dashboardsList').append(template(dashboard));
|
||||
@@ -624,7 +650,7 @@ var fillSpecialIndicatorFirstView = function(presenterData) {
|
||||
graph: {
|
||||
allowDrillDown:false,
|
||||
allowTransition:true,
|
||||
showTip: true,
|
||||
showTip: false,
|
||||
allowZoom: false,
|
||||
gapWidth:0.3,
|
||||
useShadows: true,
|
||||
@@ -648,10 +674,11 @@ var fillSpecialIndicatorFirstView = function(presenterData) {
|
||||
axisY:{ showAxis: true, label: G_STRING['ID_COSTS']},
|
||||
gridLinesX:false,
|
||||
gridLinesY:true,
|
||||
showTip: true,
|
||||
showTip: false,
|
||||
allowZoom: false,
|
||||
useShadows: true,
|
||||
paddingTop: 50
|
||||
paddingTop: 50,
|
||||
colorPalette: ['#5486bf','#bf8d54','#acb30c','#7a0c0c','#bc0000','#906090','#007efb','#62284a','#0c7a7a','#74a9a9']
|
||||
}
|
||||
};
|
||||
|
||||
@@ -720,7 +747,7 @@ var fillSpecialIndicatorSecondView = function(presenterData) {
|
||||
graph: {
|
||||
allowTransition: false,
|
||||
allowDrillDown: true,
|
||||
showTip: true,
|
||||
showTip: false,
|
||||
allowZoom: false,
|
||||
useShadows: false,
|
||||
gridLinesX: true,
|
||||
@@ -728,7 +755,8 @@ var fillSpecialIndicatorSecondView = function(presenterData) {
|
||||
area: {visible: false, css:"area"},
|
||||
axisX:{ showAxis: true, label: G_STRING['ID_USER'] },
|
||||
axisY:{ showAxis: true, label: G_STRING['ID_COSTS'] },
|
||||
showErrorBars: true
|
||||
showErrorBars: true,
|
||||
colorPalette: ['#5486bf','#bf8d54','#acb30c','#7a0c0c','#bc0000','#906090','#007efb','#62284a','#0c7a7a','#74a9a9']
|
||||
|
||||
}
|
||||
};
|
||||
@@ -809,7 +837,7 @@ var fillGeneralIndicatorFirstView = function (presenterData) {
|
||||
graph: {
|
||||
allowTransition: false,
|
||||
allowDrillDown: true,
|
||||
showTip: true,
|
||||
showTip: false,
|
||||
allowZoom: false,
|
||||
useShadows: false,
|
||||
gridLinesX: true,
|
||||
@@ -831,7 +859,7 @@ var fillGeneralIndicatorFirstView = function (presenterData) {
|
||||
graph: {
|
||||
allowTransition: false,
|
||||
allowDrillDown: true,
|
||||
showTip: true,
|
||||
showTip: false,
|
||||
allowZoom: false,
|
||||
useShadows: false,
|
||||
gridLinesX: true,
|
||||
@@ -857,7 +885,7 @@ var fillGeneralIndicatorFirstView = function (presenterData) {
|
||||
axisY:{ showAxis: true, label: G_STRING.ID_TIME_HOURS },
|
||||
gridLinesX:false,
|
||||
gridLinesY:true,
|
||||
showTip: true,
|
||||
showTip: false,
|
||||
allowZoom: false,
|
||||
useShadows: true,
|
||||
paddingTop: 50,
|
||||
@@ -879,7 +907,7 @@ var fillGeneralIndicatorFirstView = function (presenterData) {
|
||||
axisY:{ showAxis: true, label: G_STRING.ID_TIME_HOURS },
|
||||
gridLinesX:false,
|
||||
gridLinesY:true,
|
||||
showTip: true,
|
||||
showTip: false,
|
||||
allowZoom: false,
|
||||
useShadows: true,
|
||||
paddingTop: 50,
|
||||
|
||||
@@ -254,13 +254,13 @@ switch (($_POST['action']) ? $_POST['action'] : $_REQUEST['action']) {
|
||||
switch ($_POST['TAS_ASSIGN_TYPE']) {
|
||||
// switch verify $_POST['TAS_ASSIGN_TYPE']
|
||||
case 'BALANCED':
|
||||
$_POST['USR_UID'] = $filter->xssFilterHard($_POST['USR_UID']);
|
||||
$USR_UID = $filter->xssFilterHard($_POST['USR_UID']);
|
||||
G::LoadClass( 'user' );
|
||||
$oUser = new User( new DBConnection() );
|
||||
$oUser->load( $_POST['USR_UID'] );
|
||||
$oUser->load( $USR_UID );
|
||||
$oUser->Fields['USR_FIRSTNAME'] = $filter->xssFilterHard($oUser->Fields['USR_FIRSTNAME']);
|
||||
$oUser->Fields['USR_LASTNAME'] = $filter->xssFilterHard($oUser->Fields['USR_LASTNAME']);
|
||||
echo $oUser->Fields['USR_FIRSTNAME'] . ' ' . $oUser->Fields['USR_LASTNAME'] . '<input type="hidden" name="form[TASKS][1][USR_UID]" id="form[TASKS][1][USR_UID]" value="' . $_POST['USR_UID'] . '">';
|
||||
echo $oUser->Fields['USR_FIRSTNAME'] . ' ' . $oUser->Fields['USR_LASTNAME'] . '<input type="hidden" name="form[TASKS][1][USR_UID]" id="form[TASKS][1][USR_UID]" value="'.$USR_UID.'">';
|
||||
break;
|
||||
case 'MANUAL':
|
||||
$sAux = '<select name="form[TASKS][1][USR_UID]" id="form[TASKS][1][USR_UID]">';
|
||||
@@ -311,15 +311,15 @@ switch (($_POST['action']) ? $_POST['action'] : $_REQUEST['action']) {
|
||||
echo $sAux;
|
||||
break;
|
||||
case 'EVALUATE':
|
||||
$_POST['TAS_ASSIGN_VARIABLE'] = $filter->xssFilterHard($_POST['TAS_ASSIGN_VARIABLE']);
|
||||
$_SESSION['APPLICATION'] = $filter->xssFilterHard($_SESSION['APPLICATION']);
|
||||
$TAS_ASSIGN_VARIABLE = $filter->xssFilterHard($_POST['TAS_ASSIGN_VARIABLE']);
|
||||
$APPLICATION = $filter->xssFilterHard($_SESSION['APPLICATION']);
|
||||
G::LoadClass( 'application' );
|
||||
$oApplication = new Application( new DBConnection() );
|
||||
$oApplication->load( $_SESSION['APPLICATION'] );
|
||||
$oApplication->load( $APPLICATION );
|
||||
$sUser = '';
|
||||
if ($_POST['TAS_ASSIGN_VARIABLE'] != '') {
|
||||
if (isset( $oApplication->Fields['APP_DATA'][str_replace( '@@', '', $_POST['TAS_ASSIGN_VARIABLE'] )] )) {
|
||||
$sUser = $oApplication->Fields['APP_DATA'][str_replace( '@@', '', $_POST['TAS_ASSIGN_VARIABLE'] )];
|
||||
if ($TAS_ASSIGN_VARIABLE != '') {
|
||||
if (isset( $oApplication->Fields['APP_DATA'][str_replace( '@@', '', $TAS_ASSIGN_VARIABLE )] )) {
|
||||
$sUser = $oApplication->Fields['APP_DATA'][str_replace( '@@', '', $TAS_ASSIGN_VARIABLE )];
|
||||
}
|
||||
}
|
||||
if ($sUser != '') {
|
||||
@@ -329,7 +329,7 @@ switch (($_POST['action']) ? $_POST['action'] : $_REQUEST['action']) {
|
||||
echo $oUser->Fields['USR_FIRSTNAME'] . ' ' . $oUser->Fields['USR_LASTNAME'] . '<input type="hidden" name="form[TASKS][1][USR_UID]" id="form[TASKS][1][USR_UID]" value="' . $sUser . '">';
|
||||
} else {
|
||||
$ID_EMPTY = $filter->xssFilterHard(G::LoadTranslation( 'ID_EMPTY' ));
|
||||
echo '<strong>Error: </strong>' . $_POST['TAS_ASSIGN_VARIABLE'] . ' ' . $ID_EMPTY;
|
||||
echo '<strong>Error: </strong>' . $TAS_ASSIGN_VARIABLE . ' ' . $ID_EMPTY;
|
||||
echo '<input type="hidden" name="_ERROR_" id="_ERROR_" value="">';
|
||||
}
|
||||
break;
|
||||
@@ -461,14 +461,15 @@ switch (($_POST['action']) ? $_POST['action'] : $_REQUEST['action']) {
|
||||
$cases->reassignCase( $_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['USER_LOGGED'], $_POST['USR_UID'], $_POST['THETYPE'] );
|
||||
break;
|
||||
case 'toRevisePanel':
|
||||
$_POST['APP_UID'] = $filter->xssFilterHard($_POST['APP_UID']);
|
||||
$_POST['DEL_INDEX'] = $filter->xssFilterHard($_POST['DEL_INDEX']);
|
||||
$APP_UID = $filter->xssFilterHard($_POST['APP_UID']);
|
||||
$DEL_INDEX = $filter->xssFilterHard($_POST['DEL_INDEX']);
|
||||
|
||||
$_GET['APP_UID'] = $_POST['APP_UID'];
|
||||
$_GET['DEL_INDEX'] = $_POST['DEL_INDEX'];
|
||||
$_GET['APP_UID'] = $APP_UID
|
||||
$_GET['DEL_INDEX'] = $DEL_INDEX;
|
||||
$G_PUBLISH = new Publisher();
|
||||
|
||||
echo "<iframe scrolling='no' style='border:none;height=300px;width:240px;'" . " src='casesToRevisePanelExtJs?APP_UID={$_GET['APP_UID']}&DEL_INDEX={$_GET['DEL_INDEX']}'></iframe>";
|
||||
|
||||
echo "<iframe scrolling='no' style='border:none;height=300px;width:240px;'" . " src='casesToRevisePanelExtJs?APP_UID=$APP_UID&DEL_INDEX=$DEL_INDEX'></iframe>";
|
||||
// $G_PUBLISH->AddContent( 'smarty', 'cases/cases_toRevise' );
|
||||
// $G_PUBLISH->AddContent('smarty', 'cases/cases_toReviseIn', '', '', array());
|
||||
G::RenderPage( 'publish', 'raw' );
|
||||
@@ -1025,4 +1026,3 @@ function getCasesTypeIds ()
|
||||
$aTypes = Array ('to_do','draft','cancelled','sent','paused','completed','selfservice','to_revise','to_reassign');
|
||||
return $aTypesID;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,21 +16,21 @@ if (!isset($_SESSION['USER_LOGGED'])) {
|
||||
|
||||
try {
|
||||
$userUid = $_SESSION['USER_LOGGED'];
|
||||
$filters["paged"] = isset( $_REQUEST["paged"] ) ? $_REQUEST["paged"] : true;
|
||||
$filters['paged'] = isset( $_REQUEST["paged"] ) ? $_REQUEST["paged"] : true;
|
||||
$filters['count'] = isset( $_REQUEST['count'] ) ? $_REQUEST['count'] : true;
|
||||
$filters["category"] = isset( $_REQUEST["category"] ) ? $_REQUEST["category"] : "";
|
||||
$filters["process"] = isset( $_REQUEST["process"] ) ? $_REQUEST["process"] : "";
|
||||
$filters["search"] = isset( $_REQUEST["search"] ) ? $_REQUEST["search"] : "";
|
||||
$filters["filter"] = isset( $_REQUEST["filter"] ) ? $_REQUEST["filter"] : "";
|
||||
$filters["dateFrom"] = (!empty( $_REQUEST["dateFrom"] )) ? substr( $_REQUEST["dateFrom"], 0, 10 ) : "";
|
||||
$filters["dateTo"] = (!empty( $_REQUEST["dateTo"] )) ? substr( $_REQUEST["dateTo"], 0, 10 ) : "";
|
||||
$filters['category'] = isset( $_REQUEST["category"] ) ? $_REQUEST["category"] : "";
|
||||
$filters['process'] = isset( $_REQUEST["process"] ) ? $_REQUEST["process"] : "";
|
||||
$filters['search'] = isset( $_REQUEST["search"] ) ? $_REQUEST["search"] : "";
|
||||
$filters['filter'] = isset( $_REQUEST["filter"] ) ? $_REQUEST["filter"] : "";
|
||||
$filters['dateFrom'] = (!empty( $_REQUEST["dateFrom"] )) ? substr( $_REQUEST["dateFrom"], 0, 10 ) : "";
|
||||
$filters['dateTo'] = (!empty( $_REQUEST["dateTo"] )) ? substr( $_REQUEST["dateTo"], 0, 10 ) : "";
|
||||
|
||||
$filters["start"] = isset( $_REQUEST["start"] ) ? $_REQUEST["start"] : "0";
|
||||
$filters["limit"] = isset( $_REQUEST["limit"] ) ? $_REQUEST["limit"] : "25";
|
||||
$filters["sort"] = isset( $_REQUEST["sort"] ) ? $_REQUEST["sort"] : "";
|
||||
$filters["dir"] = isset( $_REQUEST["dir"] ) ? $_REQUEST["dir"] : "DESC";
|
||||
$filters['start'] = isset( $_REQUEST["start"] ) ? $_REQUEST["start"] : "0";
|
||||
$filters['limit'] = isset( $_REQUEST["limit"] ) ? $_REQUEST["limit"] : "25";
|
||||
$filters['sort'] = isset( $_REQUEST["sort"] ) ? $_REQUEST["sort"] : "";
|
||||
$filters['dir'] = isset( $_REQUEST["dir"] ) ? $_REQUEST["dir"] : "DESC";
|
||||
|
||||
$filters["action"] = isset( $_REQUEST["action"] ) ? $_REQUEST["action"] : "";
|
||||
$filters['action'] = isset( $_REQUEST["action"] ) ? $_REQUEST["action"] : "";
|
||||
$listName = isset( $_REQUEST["list"] ) ? $_REQUEST["list"] : "inbox";
|
||||
|
||||
// Select list
|
||||
@@ -72,83 +72,98 @@ try {
|
||||
|
||||
|
||||
// Validate filters
|
||||
$filters["start"] = (int)$filters["start"];
|
||||
$filters["start"] = abs($filters["start"]);
|
||||
if ($filters["start"] != 0) {
|
||||
$filters["start"]+1;
|
||||
$filters['start'] = (int)$filters['start'];
|
||||
$filters['start'] = abs($filters['start']);
|
||||
if ($filters['start'] != 0) {
|
||||
$filters['start']+1;
|
||||
}
|
||||
|
||||
$filters["limit"] = (int)$filters["limit"];
|
||||
$filters["limit"] = abs($filters["limit"]);
|
||||
if ($filters["limit"] == 0) {
|
||||
$filters['limit'] = (int)$filters['limit'];
|
||||
$filters['limit'] = abs($filters['limit']);
|
||||
if ($filters['limit'] == 0) {
|
||||
G::LoadClass("configuration");
|
||||
$conf = new Configurations();
|
||||
$generalConfCasesList = $conf->getConfiguration('ENVIRONMENT_SETTINGS', '');
|
||||
if (isset($generalConfCasesList['casesListRowNumber'])) {
|
||||
$filters["limit"] = (int)$generalConfCasesList['casesListRowNumber'];
|
||||
$filters['limit'] = (int)$generalConfCasesList['casesListRowNumber'];
|
||||
} else {
|
||||
$filters["limit"] = 25;
|
||||
$filters['limit'] = 25;
|
||||
}
|
||||
} else {
|
||||
$filters["limit"] = (int)$filters["limit"];
|
||||
$filters['limit'] = (int)$filters['limit'];
|
||||
}
|
||||
|
||||
$filters["sort"] = G::toUpper($filters["sort"]);
|
||||
$filters['sort'] = G::toUpper($filters['sort']);
|
||||
$columnsList = $listpeer::getFieldNames(BasePeer::TYPE_FIELDNAME);
|
||||
if (!(in_array($filters["sort"], $columnsList))) {
|
||||
$filters["sort"] = '';
|
||||
if (!(in_array($filters['sort'], $columnsList))) {
|
||||
$filters['sort'] = '';
|
||||
}
|
||||
|
||||
$filters["dir"] = G::toUpper($filters["dir"]);
|
||||
if (!($filters["dir"] == 'DESC' || $filters["dir"] == 'ASC')) {
|
||||
$filters["dir"] = 'DESC';
|
||||
$filters['dir'] = G::toUpper($filters['dir']);
|
||||
if (!($filters['dir'] == 'DESC' || $filters['dir'] == 'ASC')) {
|
||||
$filters['dir'] = 'DESC';
|
||||
}
|
||||
|
||||
$result = $list->loadList($userUid, $filters);
|
||||
if (!empty($result)) {
|
||||
foreach ($result as &$value) {
|
||||
if (isset($value['DEL_PREVIOUS_USR_UID'])) {
|
||||
$value['PREVIOUS_USR_UID'] = $value['DEL_PREVIOUS_USR_UID'];
|
||||
$value['PREVIOUS_USR_USERNAME'] = $value['DEL_PREVIOUS_USR_USERNAME'];
|
||||
$value['PREVIOUS_USR_FIRSTNAME'] = $value['DEL_PREVIOUS_USR_FIRSTNAME'];
|
||||
$value['PREVIOUS_USR_LASTNAME'] = $value['DEL_PREVIOUS_USR_LASTNAME'];
|
||||
}
|
||||
if (isset($value['DEL_DUE_DATE'])) {
|
||||
$value['DEL_TASK_DUE_DATE'] = $value['DEL_DUE_DATE'];
|
||||
}
|
||||
if (isset($value['APP_PAUSED_DATE'])) {
|
||||
$value['APP_UPDATE_DATE'] = $value['APP_PAUSED_DATE'];
|
||||
}
|
||||
if (isset($value['DEL_CURRENT_USR_USERNAME'])) {
|
||||
$value['USR_USERNAME'] = $value['DEL_CURRENT_USR_USERNAME'];
|
||||
$value['USR_FIRSTNAME'] = $value['DEL_CURRENT_USR_FIRSTNAME'];
|
||||
$value['USR_LASTNAME'] = $value['DEL_CURRENT_USR_LASTNAME'];
|
||||
$value['APP_UPDATE_DATE'] = $value['DEL_DELEGATE_DATE'];
|
||||
}
|
||||
if (isset($value['APP_STATUS'])) {
|
||||
$value['APP_STATUS_LABEL'] = G::LoadTranslation( "ID_{$value['APP_STATUS']}" );
|
||||
$result = $list->loadList(
|
||||
$userUid,
|
||||
$filters,
|
||||
function (array $record)
|
||||
{
|
||||
try {
|
||||
if (isset($record["DEL_PREVIOUS_USR_UID"])) {
|
||||
$record["PREVIOUS_USR_UID"] = $record["DEL_PREVIOUS_USR_UID"];
|
||||
$record["PREVIOUS_USR_USERNAME"] = $record["DEL_PREVIOUS_USR_USERNAME"];
|
||||
$record["PREVIOUS_USR_FIRSTNAME"] = $record["DEL_PREVIOUS_USR_FIRSTNAME"];
|
||||
$record["PREVIOUS_USR_LASTNAME"] = $record["DEL_PREVIOUS_USR_LASTNAME"];
|
||||
}
|
||||
|
||||
//$value = array_change_key_case($value, CASE_LOWER);
|
||||
if (isset($record["DEL_DUE_DATE"])) {
|
||||
$record["DEL_TASK_DUE_DATE"] = $record["DEL_DUE_DATE"];
|
||||
}
|
||||
|
||||
if (isset($record["APP_PAUSED_DATE"])) {
|
||||
$record["APP_UPDATE_DATE"] = $record["APP_PAUSED_DATE"];
|
||||
}
|
||||
|
||||
if (isset($record["DEL_CURRENT_USR_USERNAME"])) {
|
||||
$record["USR_USERNAME"] = $record["DEL_CURRENT_USR_USERNAME"];
|
||||
$record["USR_FIRSTNAME"] = $record["DEL_CURRENT_USR_FIRSTNAME"];
|
||||
$record["USR_LASTNAME"] = $record["DEL_CURRENT_USR_LASTNAME"];
|
||||
$record["APP_UPDATE_DATE"] = $record["DEL_DELEGATE_DATE"];
|
||||
}
|
||||
|
||||
if (isset($record["APP_STATUS"])) {
|
||||
$record["APP_STATUS_LABEL"] = G::LoadTranslation("ID_" . $record["APP_STATUS"]);
|
||||
}
|
||||
|
||||
//Return
|
||||
return $record;
|
||||
} catch (Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
$filtersData = array();
|
||||
$filtersData['start'] = $filters["start"];
|
||||
$filtersData['limit'] = $filters["limit"];
|
||||
$filtersData['sort'] = G::toLower($filters["sort"]);
|
||||
$filtersData['dir'] = G::toLower($filters["dir"]);
|
||||
$filtersData['cat_uid'] = $filters["category"];
|
||||
$filtersData['pro_uid'] = $filters["process"];
|
||||
$filtersData['search'] = $filters["search"];
|
||||
$filtersData['date_from'] = $filters["dateFrom"];
|
||||
$filtersData['date_to'] = $filters["dateTo"];
|
||||
$filtersData['start'] = $filters['start'];
|
||||
$filtersData['limit'] = $filters['limit'];
|
||||
$filtersData['sort'] = G::toLower($filters['sort']);
|
||||
$filtersData['dir'] = G::toLower($filters['dir']);
|
||||
$filtersData['cat_uid'] = $filters['category'];
|
||||
$filtersData['pro_uid'] = $filters['process'];
|
||||
$filtersData['search'] = $filters['search'];
|
||||
$filtersData['date_from'] = $filters['dateFrom'];
|
||||
$filtersData['date_to'] = $filters['dateTo'];
|
||||
$filtersData["action"] = $filters["action"];
|
||||
|
||||
$response = array();
|
||||
$response['filters'] = $filtersData;
|
||||
$response['data'] = $result;
|
||||
$filtersData['action'] = $filters["action"];
|
||||
$response['totalCount'] = $list->countTotal($userUid, $filtersData);
|
||||
|
||||
$response = $filter->xssFilterHard($response);
|
||||
|
||||
$response["data"] = $result;
|
||||
|
||||
echo G::json_encode($response);
|
||||
} catch (Exception $e) {
|
||||
$msg = array("error" => $e->getMessage());
|
||||
|
||||
@@ -44,13 +44,13 @@ $filter = new InputFilter();
|
||||
$pluginName = $_REQUEST['pluginUid'];
|
||||
$pluginName = $filter->xssFilterHard($pluginName);
|
||||
|
||||
if (file_exists( PATH_PLUGINS . $pluginName . ".php" )) {
|
||||
if (file_exists( PATH_PLUGINS . $pluginName . '.php' )) {
|
||||
$pluginRegistry = &PMPluginRegistry::getSingleton();
|
||||
|
||||
$pluginRegistry->uninstallPlugin( $pluginName );
|
||||
$path = $filter->validateInput(PATH_DATA_SITE . 'plugin.singleton', 'path');
|
||||
$pluginRegistry->unSerializeInstance( file_get_contents( $path ) );
|
||||
}
|
||||
G::auditLog("RemovePlugin","Plugin Name: ".$pluginName);
|
||||
G::auditLog('RemovePlugin','Plugin Name: '.$pluginName);
|
||||
echo $pluginName . ' ' . nl2br( $filter->xssFilterHard(G::LoadTranslation( 'ID_MSG_REMOVE_PLUGIN_SUCCESS' )) );
|
||||
|
||||
|
||||
@@ -200,7 +200,7 @@ switch ($_POST['action']) {
|
||||
}
|
||||
$aData['USR_STATUS'] = $statusWF;
|
||||
$aData['USR_UID'] = $sUserUID;
|
||||
$aData['USR_PASSWORD'] = md5($sUserUID); //fake :p
|
||||
$aData['USR_PASSWORD'] = G::encryptOld($sUserUID); //fake :p
|
||||
$aData['USR_COUNTRY'] = $form['USR_COUNTRY'];
|
||||
$aData['USR_CITY'] = $form['USR_CITY'];
|
||||
$aData['USR_LOCATION'] = $form['USR_LOCATION'];
|
||||
|
||||
@@ -334,9 +334,9 @@ class Consolidated
|
||||
$sort = $filter->validateInput($sort);
|
||||
if (in_array($sort, $arrayReportTableVar)) {
|
||||
$sort = strtoupper($sort);
|
||||
eval("\$field = " . $tableName . "Peer::" . $sort . ";");
|
||||
eval('$field = ' . $tableName . 'Peer::' . $sort . ';');
|
||||
} else {
|
||||
eval("\$field = AppCacheViewPeer::" . $sort . ";");
|
||||
eval('$field = AppCacheViewPeer::' . $sort . ';');
|
||||
}
|
||||
|
||||
if ($dir == "ASC") {
|
||||
|
||||
@@ -353,6 +353,10 @@ class Bpmn extends Handler
|
||||
$data["ACT_UID"] = (array_key_exists("ACT_UID", $data))? $data["ACT_UID"] : Common::generateUID();
|
||||
$data["PRO_UID"] = $processUid;
|
||||
|
||||
if (isset($data["ACT_LOOP_TYPE"]) && $data["ACT_LOOP_TYPE"] == "NONE") {
|
||||
$data["ACT_LOOP_TYPE"] = "EMPTY";
|
||||
}
|
||||
|
||||
try {
|
||||
self::log("Add Activity with data: ", $data);
|
||||
|
||||
@@ -400,6 +404,10 @@ class Bpmn extends Handler
|
||||
public function updateActivity($actUid, $data)
|
||||
{
|
||||
try {
|
||||
if (isset($data["ACT_LOOP_TYPE"]) && $data["ACT_LOOP_TYPE"] == "NONE") {
|
||||
$data["ACT_LOOP_TYPE"] = "EMPTY";
|
||||
}
|
||||
|
||||
self::log("Update Activity: $actUid, with data: ", $data);
|
||||
|
||||
$activity = ActivityPeer::retrieveByPk($actUid);
|
||||
|
||||
@@ -257,7 +257,7 @@ Ext.onReady(function() {
|
||||
waitTitle : " ",
|
||||
success : function(form, o) {
|
||||
obj = Ext.util.JSON.decode(o.response.responseText);
|
||||
if (obj.failed == '0' && obj.uploaded != '0') {
|
||||
if ((obj.failed == '' || obj.failed == '0') && obj.uploaded != '0') {
|
||||
PMExt.notify(_('ID_SUCCESS'), _('ID_YOUR_IMAGE_HAS_BEEN_SUCCESSFULLY'));
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -37,6 +37,10 @@
|
||||
body, table {
|
||||
font-family: tahoma,arial,verdana,sans-serif;
|
||||
}
|
||||
|
||||
p {
|
||||
line-height: 0.5em;
|
||||
}
|
||||
span.cMargLeft { padding-left: 20; }
|
||||
|
||||
.cell2 {
|
||||
@@ -90,7 +94,7 @@
|
||||
<a target="_blank" href="http://www.processmaker.com"><img src="/images/get_started.png" border="0" width="163" height="438"></a>
|
||||
</td>
|
||||
<td class="cell2" valign="top">
|
||||
<p><b><span class="cLow">Welcome to ProcessMaker 3.</span></b></p>
|
||||
<p><b><span class="cLow">Welcome to ProcessMaker 3.</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">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>
|
||||
|
||||
@@ -503,7 +503,7 @@ Ext.onReady( function() {
|
||||
enableTabScroll : true,
|
||||
//anchor : '98%',
|
||||
width : '100%',
|
||||
height : 260,
|
||||
height : 160,
|
||||
defaults : {
|
||||
autoScroll :true
|
||||
},
|
||||
@@ -733,7 +733,7 @@ var addTab = function (flag) {
|
||||
width : "100%",
|
||||
items : [
|
||||
new Ext.Panel({
|
||||
height : 230,
|
||||
height : 130,
|
||||
width : "100%",
|
||||
border : true,
|
||||
bodyStyle : 'padding:10px',
|
||||
@@ -1156,12 +1156,12 @@ var saveAllIndicators = function (DAS_UID) {
|
||||
|
||||
data[field] = value.trim();
|
||||
}
|
||||
saveDashboardIndicator(data);
|
||||
saveDashboardIndicator(data, fieldsTab[0].id);
|
||||
}
|
||||
window.location = 'dashboardList';
|
||||
};
|
||||
|
||||
var saveDashboardIndicator = function (options) {
|
||||
var saveDashboardIndicator = function (options, id) {
|
||||
var data = {};
|
||||
data["DAS_UID"] = options['DAS_UID'];
|
||||
data["DAS_IND_TYPE"] = options['DAS_IND_TYPE'];
|
||||
@@ -1184,7 +1184,7 @@ var saveDashboardIndicator = function (options) {
|
||||
},
|
||||
data: JSON.stringify(data),
|
||||
success: function (response) {
|
||||
var jsonResp = Ext.util.JSON.decode(response.responseText);
|
||||
Ext.getCmp(id).setValue(response);
|
||||
},
|
||||
failure: function (response) {
|
||||
var jsonResp = Ext.util.JSON.decode(response.responseText);
|
||||
|
||||
@@ -31,8 +31,27 @@
|
||||
var oClientWinSize = getClientWindowSize();
|
||||
|
||||
var autoResizeScreen = function () {
|
||||
var dashboardFrame;
|
||||
var containerList1, containerList2;
|
||||
|
||||
dashboardFrame = document.getElementById('dashboardFrame');
|
||||
|
||||
containerList1 = document.getElementById("pm_header");
|
||||
if (document.getElementById("mainMenuBG") &&
|
||||
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;
|
||||
dashboardFrame.style.height = height;
|
||||
if (dashboardFrame.height ) {
|
||||
dashboardFrame.height = height;
|
||||
}
|
||||
} else {
|
||||
if (dashboardFrame) {
|
||||
height = getClientWindowSize().height-90;
|
||||
if (typeof dashboardFrame.style != 'undefined') {
|
||||
@@ -48,5 +67,6 @@
|
||||
setTimeout('autoResizeScreen()', 2000);
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</html>
|
||||
@@ -14,9 +14,6 @@
|
||||
<link href="/css/general.css" rel="stylesheet">
|
||||
<link href="/css/dashboardStylesForIE.css" rel="stylesheet">
|
||||
|
||||
<link href='http://fonts.googleapis.com/css?family=Montserrat:400,700' rel='stylesheet' type='text/css'>
|
||||
<link href='http://fonts.googleapis.com/css?family=Chivo:400,400italic' rel='stylesheet' type='text/css'>
|
||||
|
||||
<script type="text/javascript" src="/js/jquery/jquery-1.7.1.min.js"></script>
|
||||
<script type="text/javascript" src="/js/jquery/jquery-ui-1.11.2.min.js" ></script>
|
||||
<script src="/lib/pmdynaform/libs/bootstrap-3.1.1/js/bootstrap.min.js"></script>
|
||||
@@ -65,7 +62,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-footer text-center ind-title-selector">
|
||||
<%- indicator.title %>
|
||||
<div class="ellipsis"><%- indicator.title %></div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
@@ -108,7 +105,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-footer text-center ind-title-selector" style="clear:both; color:#606368;">
|
||||
<%- indicator.title %>
|
||||
<div class="ellipsis"><%- indicator.title %></div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
@@ -139,9 +136,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-footer text-center ind-title-selector">
|
||||
<span>
|
||||
<%- indicator.title %>
|
||||
</span>
|
||||
<div class="ellipsis"><%- indicator.title %></div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
@@ -360,7 +355,7 @@
|
||||
<i class="fa fa-bar-chart fa-2x"></i>
|
||||
<i class="fa fa-chevron-down fa-1x"></i>
|
||||
</a>
|
||||
<h4 id="titleH4" class="header-dashboard">{translate label="ID_MANAGERS_DASHBOARDS"}</h4>
|
||||
<h4 id="titleH4" class="header-dashboard"></h4>
|
||||
<div class="pull-right dashboard-right container-fluid">
|
||||
|
||||
<div class="row pull-left">
|
||||
@@ -375,7 +370,7 @@
|
||||
<script>
|
||||
now = new Date();
|
||||
anio = now.getFullYear();
|
||||
for(a=anio;a>=anio-7;a--){
|
||||
for(a=anio;a>=anio-10;a--){
|
||||
document.write('<option value="'+a+'">'+a+'</option>');
|
||||
}
|
||||
</script>
|
||||
@@ -435,7 +430,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="relatedLabel" style="clear:both; visibility:hidden;">
|
||||
<div id="relatedLabel" class="col-lg-12 col-md-12 bottom" style="clear:both; visibility:hidden;">
|
||||
<div>
|
||||
<center><h3></h3></center>
|
||||
</div>
|
||||
|
||||
@@ -77,13 +77,13 @@
|
||||
$config['wsdl_cache'] = $filter->validateInput($config['wsdl_cache'],'int');
|
||||
$config['time_zone'] = $filter->validateInput($config['time_zone']);
|
||||
// Do not change any of these settings directly, use env.ini instead
|
||||
ini_set( 'display_errors', $config['display_errors']);
|
||||
ini_set( 'error_reporting', $config['error_reporting']);
|
||||
ini_set( 'display_errors', $filter->validateInput($config['display_errors']) );
|
||||
ini_set( 'error_reporting', $filter->validateInput($config['error_reporting']) );
|
||||
ini_set('short_open_tag', 'On');
|
||||
ini_set('default_charset', "UTF-8");
|
||||
ini_set('memory_limit', $config['memory_limit']);
|
||||
ini_set('memory_limit', $filter->validateInput($config['memory_limit']) );
|
||||
ini_set('soap.wsdl_cache_enabled', $config['wsdl_cache']);
|
||||
ini_set('date.timezone', $config['time_zone']);
|
||||
ini_set('date.timezone', $filter->validateInput($config['time_zone']) );
|
||||
|
||||
define ('DEBUG_SQL_LOG', $config['debug_sql']);
|
||||
define ('DEBUG_TIME_LOG', $config['debug_time']);
|
||||
@@ -713,7 +713,7 @@
|
||||
} elseif ($isRestRequest) {
|
||||
G::dispatchRestService(SYS_TARGET, $restConfig, $restApiClassPath);
|
||||
} else {
|
||||
require_once $phpFile;
|
||||
require_once $filter->validateInput($phpFile,'path');
|
||||
}
|
||||
|
||||
if (defined('SKIP_HEADERS')){
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
.grid-stack-item[data-gs-x="2"] { left: 16.66666667% }
|
||||
.grid-stack-item[data-gs-x="1"] { left: 8.33333333% }
|
||||
|
||||
@media (max-width: 768px) {
|
||||
@media (max-width: 1000px) {
|
||||
.grid-stack-item {
|
||||
position: relative !important;
|
||||
width: auto !important;
|
||||
|
||||
@@ -4,6 +4,36 @@
|
||||
* For details, see http://www.apache.org/licenses/LICENSE-2.0.
|
||||
*/
|
||||
|
||||
@font-face {
|
||||
font-family: 'Montserrat';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Montserrat-Regular'), url('/fonts/zhcz-_WihjSQC0oHJ9TCYPk_vArhqVIZ0nv9q090hN8.woff2') format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Montserrat';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: local('Montserrat-Bold'), url('/fonts/IQHow_FEYlDC4Gzy_m8fcoWiMMZ7xLd792ULpGE4W_Y.woff2') format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Chivo';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Chivo'), local('Chivo-Regular'), url('/fonts/UZPPER-oWTCIdBggEtZvZA.woff2') format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Chivo';
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
src: local('Chivo-Italic'), url('/fonts/Sj1QqLyoKuAyWOdnG3PRjw.woff2') format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: #f5f5f5;
|
||||
font-size: 15px;
|
||||
@@ -336,7 +366,8 @@ table.dataTable thead .sorting:after {
|
||||
.panel-red .panel-heading {
|
||||
border-color: #e14333;
|
||||
color: #fff;
|
||||
background-color: #e14333;
|
||||
/*background-color: #e14333;*/
|
||||
background-color: #EA3C53;
|
||||
}
|
||||
|
||||
.panel-red a {
|
||||
|
||||
Binary file not shown.
BIN
workflow/public_html/fonts/Sj1QqLyoKuAyWOdnG3PRjw.woff2
Normal file
BIN
workflow/public_html/fonts/Sj1QqLyoKuAyWOdnG3PRjw.woff2
Normal file
Binary file not shown.
BIN
workflow/public_html/fonts/UZPPER-oWTCIdBggEtZvZA.woff2
Normal file
BIN
workflow/public_html/fonts/UZPPER-oWTCIdBggEtZvZA.woff2
Normal file
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user