Merge branch 'pm2153' of https://bitbucket.org/jonathanquispe/processmaker into pm2153
This commit is contained in:
@@ -2,7 +2,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: ProcessMaker 3.0\n"
|
||||
"POT-Creation-Date: \n"
|
||||
"PO-Revision-Date: 2015-05-04 12:02:00\n"
|
||||
"PO-Revision-Date: 2015-05-08 12:24:12\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Colosa Developers Team <developers@colosa.com>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -4294,8 +4294,8 @@ msgstr "Processes"
|
||||
# TRANSLATION
|
||||
# LABEL/ID_ENTER_SEARCH_TERM
|
||||
#: LABEL/ID_ENTER_SEARCH_TERM
|
||||
msgid "Enter search term"
|
||||
msgstr "Enter search term"
|
||||
msgid "Search..."
|
||||
msgstr "Search..."
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_DETAILS
|
||||
@@ -14968,8 +14968,8 @@ msgstr "At Risk"
|
||||
# TRANSLATION
|
||||
# LABEL/ID_OVERDUE
|
||||
#: LABEL/ID_OVERDUE
|
||||
msgid "Overdue"
|
||||
msgstr "Overdue"
|
||||
msgid "Task Status"
|
||||
msgstr "Task Status"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_SUCCESS_RECORD
|
||||
@@ -18340,8 +18340,8 @@ msgstr "No Dashboards to display"
|
||||
# TRANSLATION
|
||||
# LABEL/ID_CONFIRM_DELETE_DASHBOARD
|
||||
#: LABEL/ID_CONFIRM_DELETE_DASHBOARD
|
||||
msgid "Do you want to delete selected Dashboard?"
|
||||
msgstr "Do you want to delete selected Dashboard?"
|
||||
msgid "Are you sure you want to delete the selected Dashboard?"
|
||||
msgstr "Are you sure you want to delete the selected Dashboard?"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_DASHBOARD_SUCCESS_DELETE
|
||||
@@ -18364,8 +18364,8 @@ msgstr "No Owners to display"
|
||||
# TRANSLATION
|
||||
# LABEL/ID_OWNER_TYPE
|
||||
#: LABEL/ID_OWNER_TYPE
|
||||
msgid "Type owner"
|
||||
msgstr "Type owner"
|
||||
msgid "Owner type"
|
||||
msgstr "Owner type"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_OWNER_INFORMATION
|
||||
@@ -18472,8 +18472,8 @@ msgstr "Inefficience Cost By User"
|
||||
# TRANSLATION
|
||||
# LABEL/ID_OVER_DUE
|
||||
#: LABEL/ID_OVER_DUE
|
||||
msgid "[LABEL/ID_OVER_DUE] Status"
|
||||
msgstr "Status"
|
||||
msgid "Inbox Status"
|
||||
msgstr "Inbox Status"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_NEW_CASES
|
||||
@@ -18694,8 +18694,8 @@ msgstr "Efficiency Index"
|
||||
# TRANSLATION
|
||||
# LABEL/ID_INEFFICIENCY_COST
|
||||
#: LABEL/ID_INEFFICIENCY_COST
|
||||
msgid "Inefficiency Cost"
|
||||
msgstr "Inefficiency Cost"
|
||||
msgid "Costs or Savings"
|
||||
msgstr "Costs or Savings"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_EFFICIENCY_COST
|
||||
@@ -18865,6 +18865,42 @@ msgstr "No Inefficient Users"
|
||||
msgid "The marked fields in the form are required and/or have errors in their format. Please verify the fields before continuing."
|
||||
msgstr "The marked fields in the form are required and/or have errors in their format. Please verify the fields before continuing."
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_INBOX_EMPTY
|
||||
#: LABEL/ID_INBOX_EMPTY
|
||||
msgid "Your Inbox is empty..."
|
||||
msgstr "Your Inbox is empty..."
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_KPI
|
||||
#: LABEL/ID_KPI
|
||||
msgid "Key Performance Indicators"
|
||||
msgstr "Key Performance Indicators"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_INVALID_VALUE_EXPECTING_POSITIVE_DECIMAL
|
||||
#: LABEL/ID_INVALID_VALUE_EXPECTING_POSITIVE_DECIMAL
|
||||
msgid "Invalid value for \"{0}\". Please enter a positive decimal value."
|
||||
msgstr "Invalid value for \"{0}\". Please enter a positive decimal value."
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_CONFIRM_DELETE_DASHBOARD_OWNER
|
||||
#: LABEL/ID_CONFIRM_DELETE_DASHBOARD_OWNER
|
||||
msgid "Are you sure you want to delete this user?"
|
||||
msgstr "Are you sure you want to delete this user?"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_CASE_CODE
|
||||
#: LABEL/ID_CASE_CODE
|
||||
msgid "Case Code"
|
||||
msgstr "Case Code"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_PIN
|
||||
#: LABEL/ID_PIN
|
||||
msgid "Pin"
|
||||
msgstr "Pin"
|
||||
|
||||
# additionalTables/additionalTablesData.xml?ADD_TAB_NAME
|
||||
# additionalTables/additionalTablesData.xml
|
||||
#: text - ADD_TAB_NAME
|
||||
@@ -35810,13 +35846,13 @@ msgstr "CASE TRACKER"
|
||||
# tracker/login.xml?CASE
|
||||
# tracker/login.xml
|
||||
#: Text - CASE
|
||||
msgid "Case Code"
|
||||
msgid "[tracker/login.xml?CASE] Case Code"
|
||||
msgstr "Case Code"
|
||||
|
||||
# tracker/login.xml?PIN
|
||||
# tracker/login.xml
|
||||
#: password - PIN
|
||||
msgid "Pin"
|
||||
msgid "[tracker/login.xml?PIN] Pin"
|
||||
msgstr "Pin"
|
||||
|
||||
# tracker/login.xml?BSUBMIT
|
||||
|
||||
@@ -1642,13 +1642,16 @@ class pmTablesProxy extends HttpProxyController
|
||||
$index = 0;
|
||||
while ($oDataset->next()) {
|
||||
$row = $oDataset->getRow();
|
||||
array_push($fields, array(
|
||||
"FIELD_UID" => $row["VAR_NAME"] . "-" . $row["VAR_FIELD_TYPE"],
|
||||
"FIELD_NAME" => $row["VAR_NAME"],
|
||||
"FIELD_VALIDATE" => "any",
|
||||
"_index" => $index ++,
|
||||
"_isset" => true
|
||||
));
|
||||
$fieldType = isset($row["VAR_FIELD_TYPE"]) ? $row["VAR_FIELD_TYPE"]: '';
|
||||
if(! in_array( $fieldType, $excludeFieldsList )){
|
||||
array_push($fields, array(
|
||||
"FIELD_UID" => $row["VAR_NAME"] . "-" . $row["VAR_FIELD_TYPE"],
|
||||
"FIELD_NAME" => $row["VAR_NAME"],
|
||||
"FIELD_VALIDATE" => "any",
|
||||
"_index" => $index ++,
|
||||
"_isset" => true
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2832,7 +2832,7 @@ SELECT 'LABEL','ID_SELFSERVICE','en','Self Service','2014-01-15'
|
||||
UNION ALL
|
||||
SELECT 'LABEL','ID_PROCESSES','en','Processes','2014-01-15'
|
||||
UNION ALL
|
||||
SELECT 'LABEL','ID_ENTER_SEARCH_TERM','en','Enter search term','2014-01-15'
|
||||
SELECT 'LABEL','ID_ENTER_SEARCH_TERM','en','Search...','2015-05-08'
|
||||
UNION ALL
|
||||
SELECT 'LABEL','ID_DETAILS','en','Details','2014-01-15'
|
||||
UNION ALL
|
||||
@@ -6436,7 +6436,7 @@ SELECT 'LABEL','ID_ON_TIME','en','On Time','2014-01-15'
|
||||
UNION ALL
|
||||
SELECT 'LABEL','ID_AT_RISK','en','At Risk','2014-01-15'
|
||||
UNION ALL
|
||||
SELECT 'LABEL','ID_OVERDUE','en','Overdue','2014-01-15'
|
||||
SELECT 'LABEL','ID_OVERDUE','en','Task Status','2015-05-06'
|
||||
UNION ALL
|
||||
SELECT 'LABEL','ID_SUCCESS_RECORD','en','Success Records:','2014-01-15'
|
||||
UNION ALL
|
||||
@@ -7574,7 +7574,7 @@ SELECT 'LABEL','ID_GRID_PAGE_DISPLAYING_DASHBOARD_MESSAGE','en','Displaying Dash
|
||||
UNION ALL
|
||||
SELECT 'LABEL','ID_GRID_PAGE_NO_DASHBOARD_MESSAGE','en','No Dashboards to display','2015-03-09'
|
||||
UNION ALL
|
||||
SELECT 'LABEL','ID_CONFIRM_DELETE_DASHBOARD','en','Do you want to delete selected Dashboard?','2015-03-09'
|
||||
SELECT 'LABEL','ID_CONFIRM_DELETE_DASHBOARD','en','Are you sure you want to delete the selected Dashboard?','2015-05-06'
|
||||
UNION ALL
|
||||
SELECT 'LABEL','ID_DASHBOARD_SUCCESS_DELETE','en','Dashboard has been deleted correctly.','2015-03-09'
|
||||
UNION ALL
|
||||
@@ -7582,7 +7582,7 @@ SELECT 'LABEL','ID_GRID_PAGE_DISPLAYING_0WNER_MESSAGE','en','Displaying Owners {
|
||||
UNION ALL
|
||||
SELECT 'LABEL','ID_GRID_PAGE_NO_OWNER_MESSAGE','en','No Owners to display','2015-03-09'
|
||||
UNION ALL
|
||||
SELECT 'LABEL','ID_OWNER_TYPE','en','Type owner','2015-03-09'
|
||||
SELECT 'LABEL','ID_OWNER_TYPE','en','Owner type','2015-05-08'
|
||||
UNION ALL
|
||||
SELECT 'LABEL','ID_OWNER_INFORMATION','en','Owner Information','2015-03-09'
|
||||
UNION ALL
|
||||
@@ -7618,7 +7618,7 @@ SELECT 'LABEL','ID_EMPLYEE_EFFICIENCIE','en','Employee Efficience Index','2015-0
|
||||
UNION ALL
|
||||
SELECT 'LABEL','ID_USER_INEFFICIENCE','en','Inefficience Cost By User','2015-03-09'
|
||||
UNION ALL
|
||||
SELECT 'LABEL','ID_OVER_DUE','en','Status','2015-04-01'
|
||||
SELECT 'LABEL','ID_OVER_DUE','en','Inbox Status','2015-05-06'
|
||||
UNION ALL
|
||||
SELECT 'LABEL','ID_NEW_CASES','en','% New Cases','2015-04-06'
|
||||
UNION ALL
|
||||
@@ -7692,7 +7692,7 @@ SELECT 'LABEL','ID_NUMBER_CASES','en','Number cases','2015-03-30'
|
||||
UNION ALL
|
||||
SELECT 'LABEL','ID_EFFICIENCY_INDEX','en','Efficiency Index','2015-03-30'
|
||||
UNION ALL
|
||||
SELECT 'LABEL','ID_INEFFICIENCY_COST','en','Inefficiency Cost','2015-03-30'
|
||||
SELECT 'LABEL','ID_INEFFICIENCY_COST','en','Costs or Savings','2015-05-06'
|
||||
UNION ALL
|
||||
SELECT 'LABEL','ID_EFFICIENCY_COST','en','Efficiency cost','2015-03-30'
|
||||
UNION ALL
|
||||
@@ -7751,6 +7751,18 @@ SELECT 'LABEL','ID_NO_INEFFICIENT_USER_GROUPS','en','No Inefficient User Groups'
|
||||
SELECT 'LABEL','ID_NO_INEFFICIENT_USERS','en','No Inefficient Users','2015-04-29'
|
||||
UNION ALL
|
||||
SELECT 'LABEL','ID_REQUIRED_FIELDS_GRID','en','The marked fields in the form are required and/or have errors in their format. Please verify the fields before continuing.','2015-05-04'
|
||||
UNION ALL
|
||||
SELECT 'LABEL','ID_INBOX_EMPTY','en','Your Inbox is empty...','2015-05-06'
|
||||
UNION ALL
|
||||
SELECT 'LABEL','ID_KPI','en','Key Performance Indicators','2015-05-07'
|
||||
UNION ALL
|
||||
SELECT 'LABEL','ID_INVALID_VALUE_EXPECTING_POSITIVE_DECIMAL','en','Invalid value for "{0}". Please enter a positive decimal value.','2015-05-08'
|
||||
UNION ALL
|
||||
SELECT 'LABEL','ID_CONFIRM_DELETE_DASHBOARD_OWNER','en','Are you sure you want to delete this user?','2015-05-08'
|
||||
UNION ALL
|
||||
SELECT 'LABEL','ID_CASE_CODE','en','Case Code','2015-05-08'
|
||||
UNION ALL
|
||||
SELECT 'LABEL','ID_PIN','en','Pin','2015-05-08'
|
||||
;
|
||||
|
||||
INSERT INTO ISO_LOCATION ([IC_UID],[IL_UID],[IL_NAME],[IL_NORMAL_NAME],[IS_UID])
|
||||
|
||||
@@ -2119,7 +2119,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_CLEAR_CACHE_CONFIRM1','en','Clear all cache files now?','2014-01-15') ,
|
||||
( 'LABEL','ID_SELFSERVICE','en','Self Service','2014-01-15') ,
|
||||
( 'LABEL','ID_PROCESSES','en','Processes','2014-01-15') ,
|
||||
( 'LABEL','ID_ENTER_SEARCH_TERM','en','Enter search term','2014-01-15') ,
|
||||
( 'LABEL','ID_ENTER_SEARCH_TERM','en','Search...','2015-05-08') ,
|
||||
( 'LABEL','ID_DETAILS','en','Details','2014-01-15') ,
|
||||
( 'LABEL','ID_METHOD','en','Method','2014-01-15') ,
|
||||
( 'JAVASCRIPT','ID_FIELD_DUPLICATE','en','Duplicate Field','2014-01-15') ,
|
||||
@@ -3944,7 +3944,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_PREVIOUS_QUARTER','en','Previous quarter','2014-01-15') ,
|
||||
( 'LABEL','ID_ON_TIME','en','On Time','2014-01-15') ,
|
||||
( 'LABEL','ID_AT_RISK','en','At Risk','2014-01-15') ,
|
||||
( 'LABEL','ID_OVERDUE','en','Overdue','2014-01-15') ,
|
||||
( 'LABEL','ID_OVERDUE','en','Task Status','2015-05-06') ,
|
||||
( 'LABEL','ID_SUCCESS_RECORD','en','Success Records:','2014-01-15') ,
|
||||
( 'LABEL','ID_FILE_NUM_RECORD','en','PO File num. records:','2014-01-15') ,
|
||||
( 'LABEL','ID_FAILED_RECORD','en','Failed Records:','2014-01-15') ,
|
||||
@@ -4520,11 +4520,11 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_DEL_THREAD_STATUS','en','Thread Status','2015-02-27') ,
|
||||
( 'LABEL','ID_GRID_PAGE_DISPLAYING_DASHBOARD_MESSAGE','en','Displaying Dashboards {0} - {1} of {2}','2015-03-09') ,
|
||||
( 'LABEL','ID_GRID_PAGE_NO_DASHBOARD_MESSAGE','en','No Dashboards to display','2015-03-09') ,
|
||||
( 'LABEL','ID_CONFIRM_DELETE_DASHBOARD','en','Do you want to delete selected Dashboard?','2015-03-09') ,
|
||||
( 'LABEL','ID_CONFIRM_DELETE_DASHBOARD','en','Are you sure you want to delete the selected Dashboard?','2015-05-06') ,
|
||||
( 'LABEL','ID_DASHBOARD_SUCCESS_DELETE','en','Dashboard has been deleted correctly.','2015-03-09') ,
|
||||
( 'LABEL','ID_GRID_PAGE_DISPLAYING_0WNER_MESSAGE','en','Displaying Owners {0} - {1} of {2}','2015-03-09') ,
|
||||
( 'LABEL','ID_GRID_PAGE_NO_OWNER_MESSAGE','en','No Owners to display','2015-03-09') ,
|
||||
( 'LABEL','ID_OWNER_TYPE','en','Type owner','2015-03-09') ,
|
||||
( 'LABEL','ID_OWNER_TYPE','en','Owner type','2015-05-08') ,
|
||||
( 'LABEL','ID_OWNER_INFORMATION','en','Owner Information','2015-03-09') ,
|
||||
( 'LABEL','ID_NEW_TAB_INDICATOR','en','Add Indicator','2015-03-09') ,
|
||||
( 'LABEL','ID_TITLE_DASHBOARD','en','Dashboard Indicator Title','2015-03-09') ,
|
||||
@@ -4542,7 +4542,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_PROCESS_INEFFICIENCE','en','Process Inefficiency Cost','2015-04-01') ,
|
||||
( 'LABEL','ID_EMPLYEE_EFFICIENCIE','en','Employee Efficience Index','2015-03-09') ,
|
||||
( 'LABEL','ID_USER_INEFFICIENCE','en','Inefficience Cost By User','2015-03-09') ,
|
||||
( 'LABEL','ID_OVER_DUE','en','Status','2015-04-01') ,
|
||||
( 'LABEL','ID_OVER_DUE','en','Inbox Status','2015-05-06') ,
|
||||
( 'LABEL','ID_NEW_CASES','en','% New Cases','2015-04-06') ,
|
||||
( 'LABEL','ID_COMPLETED_CASES','en','Completed Cases','2015-03-09') ,
|
||||
( 'LABEL','ID_WORKING_CASES','en','% In Progress','2015-04-06') ,
|
||||
@@ -4579,7 +4579,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_WELL_DONE','en','Well Done!','2015-03-30') ,
|
||||
( 'LABEL','ID_NUMBER_CASES','en','Number cases','2015-03-30') ,
|
||||
( 'LABEL','ID_EFFICIENCY_INDEX','en','Efficiency Index','2015-03-30') ,
|
||||
( 'LABEL','ID_INEFFICIENCY_COST','en','Inefficiency Cost','2015-03-30') ,
|
||||
( 'LABEL','ID_INEFFICIENCY_COST','en','Costs or Savings','2015-05-06') ,
|
||||
( 'LABEL','ID_EFFICIENCY_COST','en','Efficiency cost','2015-03-30') ,
|
||||
( 'LABEL','ID_RELATED_PROCESS','en','Related Process','2015-03-30') ,
|
||||
( 'LABEL','ID_RELATED_GROUPS','en','Related Groups','2015-03-30') ,
|
||||
@@ -4609,7 +4609,13 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_NO_INEFFICIENT_TASKS','en','No Inefficient Tasks','2015-04-29') ,
|
||||
( 'LABEL','ID_NO_INEFFICIENT_USER_GROUPS','en','No Inefficient User Groups','2015-04-29') ,
|
||||
( 'LABEL','ID_NO_INEFFICIENT_USERS','en','No Inefficient Users','2015-04-29') ,
|
||||
( 'LABEL','ID_REQUIRED_FIELDS_GRID','en','The marked fields in the form are required and/or have errors in their format. Please verify the fields before continuing.','2015-05-04') ;
|
||||
( 'LABEL','ID_REQUIRED_FIELDS_GRID','en','The marked fields in the form are required and/or have errors in their format. Please verify the fields before continuing.','2015-05-04') ,
|
||||
( 'LABEL','ID_INBOX_EMPTY','en','Your Inbox is empty...','2015-05-06') ,
|
||||
( 'LABEL','ID_KPI','en','Key Performance Indicators','2015-05-07') ,
|
||||
( 'LABEL','ID_INVALID_VALUE_EXPECTING_POSITIVE_DECIMAL','en','Invalid value for "{0}". Please enter a positive decimal value.','2015-05-08') ,
|
||||
( 'LABEL','ID_CONFIRM_DELETE_DASHBOARD_OWNER','en','Are you sure you want to delete this user?','2015-05-08') ,
|
||||
( 'LABEL','ID_CASE_CODE','en','Case Code','2015-05-08') ,
|
||||
( 'LABEL','ID_PIN','en','Pin','2015-05-08') ;
|
||||
|
||||
INSERT INTO ISO_LOCATION (IC_UID,IL_UID,IL_NAME,IL_NORMAL_NAME,IS_UID) VALUES
|
||||
('AD','','',' ','') ,
|
||||
|
||||
@@ -22,6 +22,7 @@ ViewDashboardPresenter.prototype.userDashboardsViewModel = function(data) {
|
||||
//if null data is returned we default to an empty array
|
||||
if (data == null) { data = []; }
|
||||
var returnList = [];
|
||||
var hasFavorite = false;
|
||||
$.each(data, function(index, originalObject) {
|
||||
var map = {
|
||||
"DAS_TITLE" : "title",
|
||||
@@ -29,8 +30,17 @@ ViewDashboardPresenter.prototype.userDashboardsViewModel = function(data) {
|
||||
"DAS_FAVORITE" : "isFavorite"
|
||||
};
|
||||
var newObject = that.helper.merge(originalObject, {}, map);
|
||||
if (newObject.isFavorite == 1) {
|
||||
hasFavorite = true;
|
||||
}
|
||||
returnList.push(newObject);
|
||||
});
|
||||
|
||||
//if no favorite is selected, the first one is selected.
|
||||
if (!hasFavorite && returnList.length > 0 ) {
|
||||
returnList[0].isFavorite = 1;
|
||||
}
|
||||
|
||||
return returnList;
|
||||
};
|
||||
|
||||
@@ -88,12 +98,12 @@ ViewDashboardPresenter.prototype.dashboardIndicatorsViewModel = function(data) {
|
||||
|
||||
//rounding
|
||||
newObject.comparative = Math.round(newObject.comparative*100)/100;
|
||||
newObject.comparative = ((newObject.comparative > 0)? "+": "") + newObject.comparative;
|
||||
newObject.comparative = ((newObject.comparative > 0) ? "+": "") + newObject.comparative;
|
||||
|
||||
newObject.percentComparative = (newObject.percentComparative != '--')
|
||||
? '(' + newObject.percentComparative + '%)'
|
||||
: "";
|
||||
newObject.percentComparative = (newObject.comparative == 0)
|
||||
newObject.percentComparative = (newObject.comparative == 0 && newObject.percentComparative != '')
|
||||
? "(0%)"
|
||||
: newObject.percentComparative;
|
||||
|
||||
@@ -255,7 +265,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);
|
||||
//rounded to 1 decimal
|
||||
originalObject.inefficiencyCostToShow = Math.round(originalObject.inefficiencyCost * 10) / 10;
|
||||
originalObject.indicatorId = data.id;
|
||||
originalObject.json = JSON.stringify(originalObject);
|
||||
});
|
||||
@@ -266,7 +277,7 @@ ViewDashboardPresenter.prototype.peiViewModel = function(data) {
|
||||
this.makeShortLabel(graphData, 10);
|
||||
retval.dataToDraw = this.adaptGraphData(graphData);
|
||||
|
||||
retval.inefficiencyCostToShow = Math.round(retval.inefficiencyCost);
|
||||
retval.inefficiencyCostToShow = Math.round(retval.inefficiencyCost * 10) / 10;
|
||||
retval.efficiencyIndexToShow = that.roundedIndicatorValue(retval.efficiencyIndex);
|
||||
return retval;
|
||||
};
|
||||
@@ -284,7 +295,7 @@ ViewDashboardPresenter.prototype.ueiViewModel = function(data) {
|
||||
};
|
||||
var newObject = that.helper.merge(originalObject, {}, map);
|
||||
graphData.push(newObject);
|
||||
originalObject.inefficiencyCostToShow = Math.round(originalObject.inefficiencyCost);
|
||||
originalObject.inefficiencyCostToShow = Math.round(originalObject.inefficiencyCost * 10)/10;
|
||||
originalObject.efficiencyIndexToShow = that.roundedIndicatorValue(originalObject.efficiencyIndex);
|
||||
originalObject.indicatorId = data.id;
|
||||
originalObject.json = JSON.stringify(originalObject);
|
||||
@@ -295,7 +306,7 @@ ViewDashboardPresenter.prototype.ueiViewModel = function(data) {
|
||||
this.makeShortLabel(graphData, 10);
|
||||
retval.dataToDraw = this.adaptGraphData(graphData);
|
||||
|
||||
retval.inefficiencyCostToShow = Math.round(retval.inefficiencyCost);
|
||||
retval.inefficiencyCostToShow = Math.round(retval.inefficiencyCost * 10) / 10;
|
||||
retval.efficiencyIndexToShow = that.roundedIndicatorValue(retval.efficiencyIndex);
|
||||
return retval;
|
||||
};
|
||||
@@ -418,7 +429,7 @@ ViewDashboardPresenter.prototype.returnIndicatorSecondLevelPei = function(modelD
|
||||
"deviationTime" : "dispersion"
|
||||
};
|
||||
var newObject = that.helper.merge(originalObject, {}, map);
|
||||
originalObject.inefficiencyCostToShow = Math.round(originalObject.inefficiencyCost);
|
||||
originalObject.inefficiencyCostToShow = Math.round(originalObject.inefficiencyCost * 10) / 10;
|
||||
originalObject.efficiencyIndexToShow = that.roundedIndicatorValue(originalObject.efficiencyIndex);
|
||||
originalObject.deviationTimeToShow = Math.round(originalObject.deviationTime);
|
||||
originalObject.rankToShow = originalObject.rank + "/" + modelData.length;
|
||||
@@ -445,7 +456,7 @@ ViewDashboardPresenter.prototype.returnIndicatorSecondLevelUei = function(modelD
|
||||
"deviationTime" : "dispersion"
|
||||
};
|
||||
var newObject = that.helper.merge(originalObject, {}, map);
|
||||
originalObject.inefficiencyCostToShow = Math.round(originalObject.inefficiencyCost);
|
||||
originalObject.inefficiencyCostToShow = Math.round(originalObject.inefficiencyCost * 10) / 10;
|
||||
originalObject.efficiencyIndexToShow = that.roundedIndicatorValue(originalObject.efficiencyIndex);
|
||||
originalObject.deviationTimeToShow = Math.round(originalObject.deviationTime);
|
||||
originalObject.rankToShow = originalObject.rank + "/" + modelData.length;
|
||||
|
||||
@@ -535,7 +535,9 @@ var defaultEndDate = function () {
|
||||
|
||||
var fillDashboardsList = function (presenterData) {
|
||||
if (presenterData == null || presenterData.length == 0) {
|
||||
$('#dashboardsList').append(G_STRING['ID_NO_DATA_TO_DISPLAY']);
|
||||
$('#dashboardMessage').text(G_STRING['ID_GRID_PAGE_NO_DASHBOARD_MESSAGE']);
|
||||
$('#titleH4').text(G_STRING['ID_GRID_PAGE_NO_DASHBOARD_MESSAGE']);
|
||||
$('#compareIndicators').hide();
|
||||
}
|
||||
_.templateSettings.variable = "dashboard";
|
||||
var template = _.template ($("script.dashboardButtonTemplate").html())
|
||||
|
||||
@@ -160,16 +160,15 @@ if ($flagExecuteBeforeTriggers) {
|
||||
if (! isset( $_SESSION['_NO_EXECUTE_TRIGGERS_'] )) {
|
||||
//Execute before triggers - Start
|
||||
$Fields['APP_DATA'] = $oCase->ExecuteTriggers( $_SESSION['TASK'], $_GET['TYPE'], $_GET['UID'], 'BEFORE', $Fields['APP_DATA'] );
|
||||
$Fields['DEL_INDEX'] = $_SESSION['INDEX'];
|
||||
$Fields['TAS_UID'] = $_SESSION['TASK'];
|
||||
//Execute before triggers - End
|
||||
} else {
|
||||
unset( $_SESSION['_NO_EXECUTE_TRIGGERS_'] );
|
||||
$Fields['DEL_INDEX'] = $_SESSION['INDEX'];
|
||||
$Fields['TAS_UID'] = $_SESSION['TASK'];
|
||||
}
|
||||
}
|
||||
|
||||
$Fields["DEL_INDEX"] = $_SESSION["INDEX"];
|
||||
$Fields["TAS_UID"] = $_SESSION["TASK"];
|
||||
|
||||
if (isset( $_GET['breakpoint'] )) {
|
||||
$_POST['NextStep'] = $_SESSION['TRIGGER_DEBUG']['BREAKPAGE'];
|
||||
}
|
||||
@@ -518,7 +517,7 @@ try {
|
||||
$util = new Java( "com.processmaker.util.pmutils" );
|
||||
$util->setInputPath( $javaInput );
|
||||
$util->setOutputPath( $javaOutput );
|
||||
|
||||
|
||||
G::LoadSystem('inputfilter');
|
||||
$filter = new InputFilter();
|
||||
|
||||
@@ -553,17 +552,17 @@ try {
|
||||
$util = new Java( "com.processmaker.util.pmutils" );
|
||||
$util->setInputPath( $javaInput );
|
||||
$util->setOutputPath( $javaOutput );
|
||||
|
||||
|
||||
G::LoadSystem('inputfilter');
|
||||
$filter = new InputFilter();
|
||||
|
||||
|
||||
$locationFrom = PATH_DYNAFORM . $aOD['PRO_UID'] . PATH_SEP . $aOD['OUT_DOC_UID'] . '.pdf';
|
||||
$locationFrom = $filter->validateInput($locationFrom, "path");
|
||||
copy( $locationFrom, $javaInput . $aOD['OUT_DOC_UID'] . '.pdf' );
|
||||
|
||||
$outputFile = $javaOutput . $sFilename . '.pdf';
|
||||
print $util->writeVarsToAcroFields( $aOD['OUT_DOC_UID'] . '.pdf', $xmlData );
|
||||
|
||||
|
||||
$locationFrom = $javaOutput . $aOD['OUT_DOC_UID'] . '.pdf';
|
||||
$locationFrom = $filter->validateInput($locationFrom, "path");
|
||||
copy( $locationFrom, $pathOutput . $sFilename . '.pdf' );
|
||||
|
||||
@@ -123,7 +123,16 @@ $oDbConnections->loadAdditionalConnections();
|
||||
$G_PUBLISH = new Publisher();
|
||||
if ($_GET['DYN_UID'] != '') {
|
||||
$_SESSION['CURRENT_DYN_UID'] = $_GET['DYN_UID'];
|
||||
$G_PUBLISH->AddContent( 'dynaform', 'xmlform', $_SESSION['PROCESS'] . '/' . $_GET['DYN_UID'], '', $Fields['APP_DATA'], 'cases_SaveDataSupervisor?UID=' . $_GET['DYN_UID'] );
|
||||
G::LoadClass('pmDynaform');
|
||||
$FieldsPmDynaform = $Fields;
|
||||
$FieldsPmDynaform["PRO_UID"] = $_SESSION['PROCESS'];
|
||||
$FieldsPmDynaform["CURRENT_DYNAFORM"] = $_GET['DYN_UID'];
|
||||
$a = new pmDynaform($FieldsPmDynaform);
|
||||
if ($a->isResponsive()) {
|
||||
$a->printView();
|
||||
}else{
|
||||
$G_PUBLISH->AddContent( 'dynaform', 'xmlform', $_SESSION['PROCESS'] . '/' . $_GET['DYN_UID'], '', $Fields['APP_DATA'], 'cases_SaveDataSupervisor?UID=' . $_GET['DYN_UID'] );
|
||||
}
|
||||
}
|
||||
|
||||
G::RenderPage( 'publish', 'blank' );
|
||||
|
||||
@@ -39,7 +39,7 @@ WHERE
|
||||
APPLICATION.APP_INIT_DATE BETWEEN CAST(@INIT_DATE AS DATETIME) AND CAST(@FINISH_DATE AS DATETIME)
|
||||
GROUP BY APPLICATION.PRO_UID;
|
||||
|
||||
|
||||
#TODO task duration should be calculated with the calendar
|
||||
UPDATE PRO_REPORTING
|
||||
SET PRO_REPORTING.CONFIGURED_PROCESS_TIME = (
|
||||
SELECT SUM(if (TASK.TAS_TIMEUNIT = "DAYS", (TASK.TAS_DURATION*24), TASK.TAS_DURATION))
|
||||
|
||||
@@ -39,11 +39,15 @@ SELECT
|
||||
count(if(ACV.DEL_DELAY_DURATION > 0, 1, NULL)) AS TOTAL_CASES_OVERDUE,
|
||||
count(if(ACV.DEL_DELAY_DURATION <= 0, 1, NULL)) AS TOTAL_CASES_ON_TIME
|
||||
FROM
|
||||
APP_CACHE_VIEW AS ACV
|
||||
APP_CACHE_VIEW AS ACV
|
||||
WHERE
|
||||
ACV.DEL_INIT_DATE BETWEEN CAST(@INIT_DATE AS DATETIME) AND CAST(@FINISH_DATE AS DATETIME)
|
||||
GROUP BY ACV.USR_UID , ACV.TAS_UID , ACV.PRO_UID;
|
||||
|
||||
DELETE USR_REPORTING
|
||||
FROM USR_REPORTING
|
||||
INNER JOIN TASK ON TASK.TAS_UID = USR_REPORTING.TAS_UID
|
||||
WHERE TASK.TAS_TYPE NOT IN ('NORMAL', 'ADHOC');
|
||||
|
||||
UPDATE USR_REPORTING
|
||||
INNER JOIN
|
||||
@@ -52,10 +56,16 @@ ON USR_REPORTING.USR_UID = USERS.USR_UID
|
||||
SET USR_REPORTING.USER_HOUR_COST = USERS.USR_COST_BY_HOUR;
|
||||
|
||||
UPDATE USR_REPORTING
|
||||
INNER JOIN
|
||||
TASK
|
||||
ON USR_REPORTING.TAS_UID = TASK.TAS_UID
|
||||
SET USR_REPORTING.CONFIGURED_TASK_TIME = if (TASK.TAS_TIMEUNIT = "DAYS", (TASK.TAS_DURATION*24), TASK.TAS_DURATION)
|
||||
|
||||
INNER JOIN TASK ON USR_REPORTING.TAS_UID = TASK.TAS_UID
|
||||
SET USR_REPORTING.CONFIGURED_TASK_TIME =
|
||||
IF(TASK.TAS_TIMEUNIT = "DAYS",
|
||||
(TASK.TAS_DURATION *
|
||||
(IF ((SELECT CA.CALENDAR_UID FROM CALENDAR_ASSIGNMENTS AS CA WHERE CA.OBJECT_UID = TASK.TAS_UID limit 1) IS NOT NULL,
|
||||
(SELECT AVG(TIMEDIFF(STR_TO_DATE(CBH.CALENDAR_BUSINESS_END, '%H:%i'), STR_TO_DATE(CBH.CALENDAR_BUSINESS_START, '%H:%i')))/10000
|
||||
FROM CALENDAR_ASSIGNMENTS AS CA, CALENDAR_BUSINESS_HOURS AS CBH
|
||||
WHERE CA.OBJECT_UID = TASK.TAS_UID
|
||||
AND CA.CALENDAR_UID = CBH.CALENDAR_UID
|
||||
GROUP BY CA.CALENDAR_UID LIMIT 1) ,24)))
|
||||
,TASK.TAS_DURATION)
|
||||
|
||||
|
||||
|
||||
@@ -41,26 +41,27 @@ class Dashboard {
|
||||
$resp = array();
|
||||
$dashboards = $this->getDashboardsUidByUser($usr_uid);
|
||||
$existFavorite = false;
|
||||
$cont = 0;
|
||||
foreach($dashboards as $i=>$x) {
|
||||
//$resp[$i] = $this->getDashboard($x['DAS_UID']);
|
||||
$dashboardUser = $this->getDashboard($x['DAS_UID']);
|
||||
if ($dashboardUser['DAS_STATUS'] == 0) {
|
||||
continue;
|
||||
}
|
||||
$resp[$i] = $dashboardUser;
|
||||
$resp[$cont] = $dashboardUser;
|
||||
$Dashboard = new \ProcessMaker\BusinessModel\Dashboard();
|
||||
$dashConfig = $Dashboard->getConfig($usr_uid);
|
||||
$resp[$i]['DAS_FAVORITE'] = 0;
|
||||
$resp[$cont]['DAS_FAVORITE'] = 0;
|
||||
foreach ($dashConfig as $dashId=>$dashData) {
|
||||
if($dashId == $x['DAS_UID'] ) {
|
||||
$resp[$i]['DAS_FAVORITE'] = $dashData['dashFavorite'];
|
||||
$resp[$cont]['DAS_FAVORITE'] = $dashData['dashFavorite'];
|
||||
if ($dashData['dashFavorite']==1) {
|
||||
$existFavorite = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
$cont++;
|
||||
}
|
||||
|
||||
//if no favorite is set, the default favorite is the first one
|
||||
if ($existFavorite == false && $resp != null && sizeof($resp)>0) {
|
||||
$resp[0]['DAS_FAVORITE'] = 1;
|
||||
|
||||
@@ -83,6 +83,7 @@ class Bpmn extends Handler
|
||||
"lane" => array("BOU_ELEMENT_TYPE", "BOU_SIZE_IDENTICAL", "BOU_UID")
|
||||
);
|
||||
|
||||
private $arrayElementOriginChecked = array();
|
||||
|
||||
public function __construct($data = null)
|
||||
{
|
||||
@@ -1378,6 +1379,13 @@ class Bpmn extends Handler
|
||||
$index
|
||||
) {
|
||||
try {
|
||||
if (isset($this->arrayElementOriginChecked[$elementOriginUid]) && $this->arrayElementOriginChecked[$elementOriginUid] == $elementOriginType) {
|
||||
//Return
|
||||
return array();
|
||||
}
|
||||
|
||||
$this->arrayElementOriginChecked[$elementOriginUid] = $elementOriginType;
|
||||
|
||||
if ($elementOriginType == $elementDestType && $elementOriginUid == $elementDestUid) {
|
||||
$arrayEvent = array();
|
||||
$arrayEvent[$index] = array($elementDestUid, $elementDestType);
|
||||
@@ -1403,7 +1411,7 @@ class Bpmn extends Handler
|
||||
$index + 1
|
||||
);
|
||||
|
||||
if (count($arrayEvent) > 0) {
|
||||
if (!empty($arrayEvent)) {
|
||||
$arrayEvent[$index] = array($elementOriginUid, $elementOriginType);
|
||||
|
||||
//Return
|
||||
@@ -1431,6 +1439,8 @@ class Bpmn extends Handler
|
||||
$arrayEventType = array("END", "INTERMEDIATE");
|
||||
$arrayEventMarker = array("MESSAGETHROW");
|
||||
|
||||
$this->arrayElementOriginChecked = array();
|
||||
|
||||
$arrayEventAux = $this->getElementsBetweenElementOriginAndElementDest(
|
||||
$elementOriginUid,
|
||||
$elementOriginType,
|
||||
|
||||
@@ -170,7 +170,9 @@
|
||||
</script>
|
||||
|
||||
<script type="text/template" class="specialIndicatorDetail">
|
||||
<div class="process-div well hideme detail-button-selector" data-gs-no-resize="true"
|
||||
<div class="process-div well hideme detail-button-selector"
|
||||
data-gs-no-resize="true"
|
||||
style="cursor:pointer;"
|
||||
id="detailData-<%- detailData.uid %>"
|
||||
data-indicator-id="<%- detailData.indicatorId %>"
|
||||
data-detail-id="<%- detailData.uid %>"
|
||||
@@ -179,36 +181,12 @@
|
||||
data-detail-cost="<%- detailData.inefficiencyCost%>"
|
||||
data-detail-name="<%- detailData.name %>"
|
||||
>
|
||||
<div class="col-lg-12 vcenter-task">
|
||||
<a href="#" class="process-button">
|
||||
<div class="col-xs-5 text-left title-process">
|
||||
<div class="small grey detail-title-selector"> <%- detailData.name %></div>
|
||||
</div>
|
||||
<div class="col-xs-3 text-center ">
|
||||
<div class="blue"><%- detailData.efficiencyIndexToShow%></div>
|
||||
<div class="small grey detail-efficiency-selector ellipsis"></div>
|
||||
</div>
|
||||
<div class="col-xs-3 text-center ">
|
||||
<div class="red detail-cost-number-selector">{$unitCost}<%- detailData.inefficiencyCostToShow %></div>
|
||||
<div class="small grey detail-cost-selector ellipsis"></div>
|
||||
</div>
|
||||
<div class="col-xs-1 text-right arrow"><i class="fa fa-chevron-right fa-fw"></i></div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script type="text/template" class="specialIndicatorSecondViewDetailUei">
|
||||
<div class="process-div well hideme detail-button-selector-uei" data-gs-no-resize="true"
|
||||
id="detailData-<%- detailData.uid %>"
|
||||
data-indicator-id="<%- detailData.indicatorId %>"
|
||||
data-detail-id="<%- detailData.uid %>">
|
||||
<div class="panel-heading greenbg">
|
||||
<div class="col-xs-12 text-center detail-title-selector">
|
||||
<i class="fa fa-tasks fa-fw"></i>
|
||||
<span id="usrName"><%- detailData.name %> </span>
|
||||
<span>(<%- detailData.rankToShow %>)</span>
|
||||
<div class="col-xs-11 text-center detail-title-selector">
|
||||
<div class="ellipsis"><%- detailData.name %> </div>
|
||||
</div>
|
||||
<div class="col-xs-1 text-center detail-title-selector">
|
||||
<i class="fa fa-chevron-right fa-fw"></i>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
@@ -219,7 +197,36 @@
|
||||
<div class="smallB grey detail-efficiency-selector ellipsis"></div>
|
||||
</div>
|
||||
<div class="col-xs-6 ">
|
||||
<div class="small detail-cost-number-selector">{$unitCost}<%- detailData.inefficiencyCostToShow%></div>
|
||||
<div class="small detail-cost-number-selector">{$unitCost} <%- detailData.inefficiencyCostToShow%></div>
|
||||
<div class="smallB grey detail-cost-selector ellipsis"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script type="text/template" class="specialIndicatorSecondViewDetailUei">
|
||||
<div class="process-div well hideme detail-button-selector-uei" data-gs-no-resize="true"
|
||||
id="detailData-<%- detailData.uid %>"
|
||||
data-indicator-id="<%- detailData.indicatorId %>"
|
||||
data-detail-id="<%- detailData.uid %>">
|
||||
<div class="panel-heading greenbg">
|
||||
<div class="col-xs-12 text-center detail-title-selector ellipsis">
|
||||
<span id="usrName"><%- detailData.name %> </span>
|
||||
(Ranking: <%- detailData.rankToShow %>)
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
<div class="text-center huge">
|
||||
<div class="col-xs-12 vcenter-task">
|
||||
<div class="col-xs-6 ">
|
||||
<div class="blue small"><%- detailData.efficiencyIndexToShow%></div>
|
||||
<div class="smallB grey detail-efficiency-selector ellipsis"></div>
|
||||
</div>
|
||||
<div class="col-xs-6 ">
|
||||
<div class="small detail-cost-number-selector">{$unitCost} <%- detailData.inefficiencyCostToShow%></div>
|
||||
<div class="smallB grey detail-cost-selector ellipsis"></div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -234,7 +241,7 @@
|
||||
data-indicator-id="<%- detailData.indicatorId %>"
|
||||
data-detail-id="<%- detailData.uid %>">
|
||||
<div class="panel-heading greenbg">
|
||||
<div class="col-xs-12 text-center detail-title-selector">
|
||||
<div class="col-xs-12 text-center detail-title-selector ellipsis">
|
||||
<i class="fa fa-tasks fa-fw"></i>
|
||||
<span id="usrName"><%- detailData.name %> </span>
|
||||
</div>
|
||||
@@ -247,7 +254,7 @@
|
||||
<div class="smallB grey detail-efficiency-selector ellipsis"></div>
|
||||
</div>
|
||||
<div class="col-xs-6 ">
|
||||
<div class="small detail-cost-number-selector">{$unitCost}<%- detailData.inefficiencyCostToShow%></div>
|
||||
<div class="small detail-cost-number-selector">{$unitCost} <%- detailData.inefficiencyCostToShow%></div>
|
||||
<div class="smallB grey detail-cost-selector ellipsis"></div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -358,12 +365,11 @@
|
||||
<h4 id="titleH4" class="header-dashboard"></h4>
|
||||
<div class="pull-right dashboard-right container-fluid">
|
||||
|
||||
<div class="row pull-left">
|
||||
<div id="compareIndicators" class="row pull-left">
|
||||
<div class="span4 pull-left">
|
||||
<h5 class="pull-left">{translate label="ID_DASH_COMPARE_MONTH"}:</h5>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="span4 pull-left">
|
||||
<select id="year" class="form-control pull-right ">
|
||||
{literal}
|
||||
@@ -402,7 +408,7 @@
|
||||
<div class="clearfix"></div>
|
||||
<div class="collapse" id="collapseExample">
|
||||
<div class="well">
|
||||
<p class="text-center">{translate label="ID_DASH_CLICK_TO_VIEW"}</p>
|
||||
<p id="dashboardMessage" class="text-center">{translate label="ID_DASH_CLICK_TO_VIEW"}</p>
|
||||
<p>
|
||||
<!-- Split button -->
|
||||
<div id="dashboardsList">
|
||||
|
||||
@@ -1176,7 +1176,7 @@ function saveUser()
|
||||
}
|
||||
}
|
||||
if (!Ext.getCmp('USR_COST_BY_HOUR').isValid()) {
|
||||
PMExt.warning(_('ID_ERROR'), _('ID_INVALID_VALUE_EXPECTING_POSITIVE_INTEGER', _('ID_COST_BY_HOUR')));
|
||||
PMExt.warning(_('ID_ERROR'), _('ID_INVALID_VALUE_EXPECTING_POSITIVE_DECIMAL', _('ID_COST_BY_HOUR')));
|
||||
Ext.getCmp('USR_COST_BY_HOUR').focus(true,10);
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user