diff --git a/gulliver/system/class.publisher.php b/gulliver/system/class.publisher.php index 40b7fc20e..e398cba52 100755 --- a/gulliver/system/class.publisher.php +++ b/gulliver/system/class.publisher.php @@ -294,10 +294,10 @@ class Publisher //This dynaform has show/hide field conditions if (isset($_SESSION['CURRENT_DYN_UID']) && $_SESSION['CURRENT_DYN_UID'] != '') { - $ConditionalShowHideRoutines = $oFieldCondition->getConditionScript($_SESSION["CURRENT_DYN_UID"]); //lsl + $ConditionalShowHideRoutines = $oFieldCondition->getConditionScript($_SESSION["CURRENT_DYN_UID"]); } else { if (isset($_SESSION['CONDITION_DYN_UID']) && $_SESSION['CONDITION_DYN_UID'] != '') { - $ConditionalShowHideRoutines = $oFieldCondition->getConditionScript($_SESSION["CONDITION_DYN_UID"]); //lsl + $ConditionalShowHideRoutines = $oFieldCondition->getConditionScript($_SESSION["CONDITION_DYN_UID"]); } } } @@ -649,4 +649,3 @@ class Publisher $G_TABLE = null; } } - diff --git a/workflow/engine/classes/class.licensedFeatures.php b/workflow/engine/classes/class.licensedFeatures.php index f2aef8649..dcf2161bb 100644 --- a/workflow/engine/classes/class.licensedFeatures.php +++ b/workflow/engine/classes/class.licensedFeatures.php @@ -27,6 +27,127 @@ class PMLicensedFeatures { private $featuresDetails = array (); private $features = array (); + private $newFeatures = array( + 0 => array( + "description" => "Enables de Actions By Email feature.", + "enabled" => false, + "id" => "actionsByEmail", + "latest_version" => "", + "log" => null, + "name" => "actionsByEmail", + "nick" => "actionsByEmail", + "progress" => 0, + "publisher" => "Colosa", + "release_type" => "localRegistry", + "status" => "ready", + "store" => "00000000000000000000000000010004", + "type" => "features", + "url" => "", + "version" => "" + ), + 1 => array( + "description" => "Enables de Batch Routing feature.", + "enabled" => false, + "id" => "pmConsolidatedCL", + "latest_version" => "", + "log" => null, + "name" => "pmConsolidatedCL", + "nick" => "pmConsolidatedCL", + "progress" => 0, + "publisher" => "Colosa", + "release_type" => "localRegistry", + "status" => "ready", + "store" => "00000000000000000000000000010005", + "type" => "features", + "url" => "", + "version" => "" + ), + 2 => array( + "description" => "Dashboard with improved charting graphics and optimized to show strategic information like Process Efficiency and User Efficiency indicators.", + "enabled" => false, + "id" => "strategicDashboards", + "latest_version" => "", + "log" => null, + "name" => "strategicDashboards", + "nick" => "Strategic Dashboards", + "progress" => 0, + "publisher" => "Colosa", + "release_type" => "localRegistry", + "status" => "ready", + "store" => "00000000000000000000000000010006", + "type" => "features", + "url" => "", + "version" => "" + ), + 3 => array( + "description" => "Enables the configuration of a second database connection in order to divide the database requests in read and write operations. This features is used with database clusters to improve the application performance.", + "enabled" => false, + "id" => "secondDatabaseConnection", + "latest_version" => "", + "log" => null, + "name" => "secondDatabaseConnection", + "nick" => "secondDatabaseConnection", + "progress" => 0, + "publisher" => "Colosa", + "release_type" => "localRegistry", + "status" => "ready", + "store" => "00000000000000000000000000010000", + "type" => "features", + "url" => "", + "version" => "" + ), + 4 => array( + "description" => "Registers every admin action in a log. The actions in administration settings options are registered in the log.", + "enabled" => false, + "id" => "auditLog", + "latest_version" => "", + "log" => null, + "name" => "auditLog", + "nick" => "auditLog", + "progress" => 0, + "publisher" => "Colosa", + "release_type" => "localRegistry", + "status" => "ready", + "store" => "00000000000000000000000000010001", + "type" => "features", + "url" => "", + "version" => "" + ), + 5 => array( + "description" => "A more secure option to store user passwords in ProcessMaker. The modern algorithm SHA-2 is used to store the passwords.", + "enabled" => false, + "id" => "secureUserPasswordHash", + "latest_version" => "", + "log" => null, + "name" => "secureUserPasswordHash", + "nick" => "secureUserPasswordHash", + "progress" => 0, + "publisher" => "Colosa", + "release_type" => "localRegistry", + "status" => "ready", + "store" => "00000000000000000000000000010002", + "type" => "features", + "url" => "", + "version" => "" + ), + 6 => array( + "description" => "This functionality enables the flexibility to send mails from different email servers or configurations.", + "enabled" => false, + "id" => "sendEmailFromDifferentEmailServers", + "latest_version" => "", + "log" => null, + "name" => "sendEmailFromDifferentEmailServers", + "nick" => "sendEmailFromDifferentEmailServers", + "progress" => 0, + "publisher" => "Colosa", + "release_type" => "localRegistry", + "status" => "ready", + "store" => "00000000000000000000000000010003", + "type" => "features", + "url" => "", + "version" => "" + ) + ); private static $instancefeature = null; @@ -87,6 +208,132 @@ class PMLicensedFeatures $this->featuresDetails[$value[0]]->enabled = $enable; return $enable; } + + public function addNewFeatures ($data) + { + $newFeaturesList = $this->newFeatures; + $newData = array(); + $newFeaturesIds = array(); + foreach($newFeaturesList as $val) { + $newFeaturesIds[] = $val['id']; + } + $criteria = new Criteria(); + $criteria->addSelectColumn(AddonsManagerPeer::ADDON_ID); + $criteria->add(AddonsManagerPeer::ADDON_ID, $newFeaturesIds, Criteria::IN); + $criteria->add(AddonsManagerPeer::ADDON_TYPE, 'features'); + $rs = AddonsManagerPeer::doSelectRS($criteria); + $rs->next(); + $row = $rs->getRow(); + if(sizeof($row)) { + while (is_array($row)) { + $ids[] = $row[0]; + $rs->next(); + $row = $rs->getRow(); + } + $toUpdate = array_diff($newFeaturesIds,$ids); + + if(sizeof($toUpdate)){ + $newFeaturesListAux = array(); + foreach($toUpdate as $index => $v) { + $newFeaturesListAux[] = $newFeaturesList[$index]; + } + unset($newFeaturesList); + $newFeaturesList = array_values($newFeaturesListAux); + } else { + return $data; + } + } + + foreach($newFeaturesList as $k => $newFeature){ + $newData[] = array ( + 'db' => 'wf', + 'table' => 'ADDONS_MANAGER', + 'keys' => + array ( + 0 => 'ADDON_ID', + ), + 'data' => + array ( + 0 => + array ( + 'field' => 'ADDON_DESCRIPTION', + 'type' => 'text', + 'value' => $newFeature['description'], + ), + 1 => + array ( + 'field' => 'ADDON_ID', + 'type' => 'text', + 'value' => $newFeature['id'], + ), + 2 => + array ( + 'field' => 'ADDON_NAME', + 'type' => 'text', + 'value' => $newFeature['name'], + ), + 3 => + array ( + 'field' => 'ADDON_NICK', + 'type' => 'text', + 'value' => $newFeature['nick'], + ), + 4 => + array ( + 'field' => 'ADDON_PUBLISHER', + 'type' => 'text', + 'value' => $newFeature['publisher'], + ), + 5 => + array ( + 'field' => 'ADDON_RELEASE_TYPE', + 'type' => 'text', + 'value' => $newFeature['release_type'], + ), + 6 => + array ( + 'field' => 'ADDON_STATUS', + 'type' => 'text', + 'value' => $newFeature['status'], + ), + 7 => + array ( + 'field' => 'STORE_ID', + 'type' => 'text', + 'value' => $newFeature['store'], + ), + 8 => + array ( + 'field' => 'ADDON_TYPE', + 'type' => 'text', + 'value' => $newFeature['type'], + ), + 9 => + array ( + 'field' => 'ADDON_DOWNLOAD_URL', + 'type' => 'text', + 'value' => $newFeature['url'], + ), + 10 => + array ( + 'field' => 'ADDON_VERSION', + 'type' => 'text', + 'value' => $newFeature['version'], + ), + 11 => + array ( + 'field' => 'ADDON_DOWNLOAD_PROGRESS', + 'type' => 'text', + 'value' => $newFeature['progress'], + ) + ), + 'action' => 1, + ); + + $i++; + } + return array_merge($data, $newData); + } /*----------------------------------********---------------------------------*/ } diff --git a/workflow/engine/classes/class.pmDynaform.php b/workflow/engine/classes/class.pmDynaform.php index 52d6fa84c..cb703e3ff 100644 --- a/workflow/engine/classes/class.pmDynaform.php +++ b/workflow/engine/classes/class.pmDynaform.php @@ -3,7 +3,7 @@ /** * class.pmDynaform.php * Implementing pmDynaform library in the running case. - * + * * @author Roly Rudy Gutierrez Pinto * @package engine.classes */ @@ -80,19 +80,37 @@ class pmDynaform public function jsonr(&$json) { - foreach ($json as $key => $value) { + foreach ($json as $key => &$value) { $sw1 = is_array($value); $sw2 = is_object($value); if ($sw1 || $sw2) { $this->jsonr($value); } if (!$sw1 && !$sw2) { - //property + //set properties from trigger $prefixs = array("@@", "@#", "@%", "@?", "@$", "@="); if (is_string($value) && in_array(substr($value, 0, 2), $prefixs)) { $triggerValue = substr($value, 2); if (isset($this->fields["APP_DATA"][$triggerValue])) { - $json->$key = $this->fields["APP_DATA"][$triggerValue]; + $json->{$key} = $this->fields["APP_DATA"][$triggerValue]; + } + } + //set properties from 'formInstance' variable + if (isset($this->fields["APP_DATA"]["formInstance"])) { + $formInstance = $this->fields["APP_DATA"]["formInstance"]; + if (!is_array($formInstance)) { + $formInstance = array($formInstance); + } + $nfi = count($formInstance); + for ($ifi = 0; $ifi < $nfi; $ifi++) { + $fi = $formInstance[$ifi]; + if (is_object($fi) && isset($fi->id) && $key === "id" && $json->{$key} === $fi->id) { + foreach ($fi as $keyfi => $valuefi) { + if (isset($json->{$keyfi})) { + $json->{$keyfi} = $valuefi; + } + } + } } } //query & options @@ -136,11 +154,17 @@ class pmDynaform array_push($json->options, $option); } } catch (Exception $e) { - + } } if (isset($json->options[0])) { $json->data = $json->options[0]; + $no = count($json->options); + for ($io = 0; $io < $no; $io++) { + if ($json->options[$io]["value"] === $json->defaultValue) { + $json->data = $json->options[$io]; + } + } } } //data @@ -187,7 +211,7 @@ class pmDynaform if ($column->type === "text" || $column->type === "textarea" || $column->type === "dropdown" || $column->type === "datetime" || $column->type === "checkbox" || $column->type === "file" || $column->type === "link") { array_push($cells, array( "value" => isset($row[$column->name]) ? $row[$column->name] : "", - "label" => isset($row[$column->name . "_label"]) ? $row[$column->name . "_label"] : "" + "label" => isset($row[$column->name . "_label"]) ? $row[$column->name . "_label"] : (isset($row[$column->name]) ? $row[$column->name] : "") )); } if ($column->type === "suggest") { @@ -208,11 +232,15 @@ class pmDynaform $this->lang = $json->language; } if ($this->langs !== null) { - if (($key === "label" || $key === "hint" || $key === "placeholder" || $key === "validateMessage" || $key === "alternateText" || $key === "comment" || $key === "alt") && isset($json->{$key}) && isset($this->langs->{$this->lang})) { + if (($key === "label" || $key === "title" || $key === "hint" || $key === "placeholder" || $key === "validateMessage" || $key === "alternateText" || $key === "comment" || $key === "alt") && isset($this->langs->{$this->lang})) { $langs = $this->langs->{$this->lang}->Labels; foreach ($langs as $langsValue) { - if ($json->{$key} === $langsValue->msgid) + if (is_object($json) && $json->{$key} === $langsValue->msgid) { $json->{$key} = $langsValue->msgstr; + } + if (is_array($json) && $json[$key] === $langsValue->msgid) { + $json[$key] = $langsValue->msgstr; + } } } } @@ -225,6 +253,72 @@ class pmDynaform return $this->record != null && $this->record["DYN_VERSION"] == 2 ? true : false; } + public function printViewWithoutSubmit() + { + ob_clean(); + + $json = G::json_decode($this->record["DYN_CONTENT"]); + + foreach ($json->items[0]->items as $key => $value) { + switch ($json->items[0]->items[$key][0]->type) { + case "submit": + unset($json->items[0]->items[$key]); + break; + } + } + + $this->jsonr($json); + + $javascript = " + + +
+
< " . G::LoadTranslation("ID_BACK") . "
+
+
+ "; + + $file = file_get_contents(PATH_HOME . "public_html" . PATH_SEP . "lib" . PATH_SEP . "pmdynaform" . PATH_SEP . "build" . PATH_SEP . "pmdynaform.html"); + $file = str_replace("{javascript}", $javascript, $file); + + echo $file; + exit(0); + } + public function printView() { ob_clean(); @@ -409,6 +503,8 @@ class pmDynaform $json->name = $newVariable["VAR_NAME"]; if (isset($json->dbConnection) && $json->dbConnection === $oldVariable["VAR_DBCONNECTION"]) $json->dbConnection = $newVariable["VAR_DBCONNECTION"]; + if (isset($json->dbConnectionLabel) && $json->dbConnectionLabel === $oldVariable["VAR_DBCONNECTION_LABEL"]) + $json->dbConnectionLabel = $newVariable["VAR_DBCONNECTION_LABEL"]; if (isset($json->sql) && $json->sql === $oldVariable["VAR_SQL"]) $json->sql = $newVariable["VAR_SQL"]; if (isset($json->options) && G::json_encode($json->options) === $oldVariable["VAR_ACCEPTED_VALUES"]) { diff --git a/workflow/engine/classes/class.processMap.php b/workflow/engine/classes/class.processMap.php index 3d65399c7..7dd4742f1 100755 --- a/workflow/engine/classes/class.processMap.php +++ b/workflow/engine/classes/class.processMap.php @@ -1588,8 +1588,9 @@ class processMap $numRows = DynaformPeer::doCount($oCriteria); if ($numRows == 0) { - echo "
".G::LoadTranslation('ID_ALERT')."
".G::LoadTranslation('ID_CONSOLIDATED_DYNAFORM_REQUIRED')."
"; - die; + $aFields['TITLE_ALERT'] = G::LoadTranslation('ID_ALERT'); + $aFields['SUBTITLE_MESSAGE'] = G::LoadTranslation('ID_CONSOLIDATED_DYNAFORM_REQUIRED'); + $sFilename = 'tasks/tasks_Consolidated_Error.xml'; } } diff --git a/workflow/engine/classes/class.wsTools.php b/workflow/engine/classes/class.wsTools.php index cea83655a..6483a4afb 100755 --- a/workflow/engine/classes/class.wsTools.php +++ b/workflow/engine/classes/class.wsTools.php @@ -919,6 +919,10 @@ class workspaceTools if (file_exists(PATH_CORE . 'data' . PATH_SEP . 'check.data')) { $checkData = unserialize(file_get_contents(PATH_CORE . 'data' . PATH_SEP . 'check.data')); if (is_array($checkData)) { + /*----------------------------------********---------------------------------*/ + $licensedFeatures = & PMLicensedFeatures::getSingleton(); + $checkData = $licensedFeatures->addNewFeatures($checkData); + /*----------------------------------********---------------------------------*/ foreach ($checkData as $checkThis) { $this->updateThisRegistry($checkThis); } diff --git a/workflow/engine/methods/cases/cases_Step.php b/workflow/engine/methods/cases/cases_Step.php index df4224e1e..f3af8eb91 100755 --- a/workflow/engine/methods/cases/cases_Step.php +++ b/workflow/engine/methods/cases/cases_Step.php @@ -908,7 +908,7 @@ try { $daysSelected = "selected = 'selected'"; } - $sAux = ''; @@ -921,7 +921,7 @@ try { $calendarSelected = "selected = 'selected'"; } - $sAux = ''; diff --git a/workflow/engine/methods/cases/pmDynaform.php b/workflow/engine/methods/cases/pmDynaform.php index 97041fb70..7cbab53dd 100644 --- a/workflow/engine/methods/cases/pmDynaform.php +++ b/workflow/engine/methods/cases/pmDynaform.php @@ -1,6 +1,7 @@ $DYN_UID)); $a->printPmDynaform(); diff --git a/workflow/engine/methods/tracker/tracker_Show.php b/workflow/engine/methods/tracker/tracker_Show.php index 652b24949..5259a7447 100755 --- a/workflow/engine/methods/tracker/tracker_Show.php +++ b/workflow/engine/methods/tracker/tracker_Show.php @@ -54,11 +54,27 @@ switch ($_GET['CTO_TYPE_OBJ']) { $Fields['APP_DATA']['__DYNAFORM_OPTIONS']['PRINT_PREVIEW'] = '#'; $Fields['APP_DATA']['__DYNAFORM_OPTIONS']['PRINT_PREVIEW_ACTION'] = 'tracker_PrintView?CTO_UID_OBJ=' . $_GET['CTO_UID_OBJ'] . '&CTO_TYPE_OBJ=PRINT_PREVIEW'; $_SESSION['CTO_UID_OBJ'] = $_GET['CTO_UID_OBJ']; - $G_PUBLISH = new Publisher(); - $G_PUBLISH->AddContent( 'dynaform', 'xmlform', $_SESSION['PROCESS'] . '/' . $_GET['CTO_UID_OBJ'], '', $Fields['APP_DATA'], '', '', 'view' ); - G::RenderPage( 'publish' ); - break; + $dynaForm = new Dynaform(); + $arrayDynaFormData = $dynaForm->Load($_GET["CTO_UID_OBJ"]); + + if (isset($arrayDynaFormData["DYN_VERSION"]) && $arrayDynaFormData["DYN_VERSION"] == 2) { + G::LoadClass("pmDynaform"); + + $Fields["PRO_UID"] = $_SESSION["PROCESS"]; + $Fields["CURRENT_DYNAFORM"] = $_GET["CTO_UID_OBJ"]; + + $pmDynaForm = new pmDynaform($Fields); + + if ($pmDynaForm->isResponsive()) { + $pmDynaForm->printViewWithoutSubmit(); + } + } else { + $G_PUBLISH = new Publisher(); + $G_PUBLISH->AddContent("dynaform", "xmlform", $_SESSION["PROCESS"] . "/" . $_GET["CTO_UID_OBJ"], "", $Fields["APP_DATA"], "", "", "view"); + G::RenderPage("publish"); + } + break; case 'INPUT_DOCUMENT': G::LoadClass( 'case' ); $oCase = new Cases(); diff --git a/workflow/engine/skinEngine/neoclassic/css/loginStyle.css b/workflow/engine/skinEngine/neoclassic/css/loginStyle.css index bcf5c1cb2..f6e2b7fe2 100644 --- a/workflow/engine/skinEngine/neoclassic/css/loginStyle.css +++ b/workflow/engine/skinEngine/neoclassic/css/loginStyle.css @@ -1,9 +1,18 @@ /* * LOGIN PM3 STYLES */ + +@font-face { + font-family: "Chivo"; + font-style: normal; + font-weight: normal; + src: local("?"), url("/fonts/Chivo-Regular.ttf") format("truetype"); + } body.login { background: url("/images/backgroundpm3.jpg") repeat scroll 0 0 / cover rgba(0, 0, 0, 0); - //background-position-y: -30px; + //background-position-y: -30px; + font-family: "Chivo",sans-serif; + height: 100%; } .vertical-offset-100 { @@ -48,7 +57,8 @@ img.img-responsive { .module_app_input___gray { - background-color: #fff; + font-family: "Chivo",sans-serif; + background-color: #fff; background-image: none; border: 1px solid #ccc; border-radius: 4px; @@ -71,9 +81,11 @@ img.img-responsive { color: #555; display: block; font-size: 14px; - height: 45px; + //height: 45px; + box-sizing: border-box; + //padding-top: 12px; line-height: 1.42857; - padding: 9px 12px; + //padding: 9px 12px; transition: border-color 0.15s ease-in-out 0s, box-shadow 0.15s ease-in-out 0s; width: 100%; } @@ -82,6 +94,7 @@ img.img-responsive { box-sizing: border-box; color: #444; font-family: "Open Sans",Arial,Helvetica,sans-serif; + //font-family: "Chivo",sans-serif; font-size: 16px; height: 45px; padding: 10px; @@ -89,6 +102,12 @@ img.img-responsive { margin-bottom: 6px; } + +.form-signin .module_app_input___gray:-ms-input-placeholder { + font-family: "Open Sans",Arial,Helvetica,sans-serif; + color:#999; + } + .module_app_input___gray::-moz-placeholder { color: #999; opacity: 1; @@ -159,7 +178,7 @@ p { font-weight: 700; //transition: all 0.3s ease-in-out 0s; max-width: 400px; - filter:none; + filter:none; } .button-login-success:hover{ @@ -211,13 +230,10 @@ p { font-size: 11px; } -.footer-login .content{ +.footer-login span{ color: white; font-weight: 900; -} - -.footer-login{ - text-align: center; + font-size: 12px; } .login_result span{ @@ -227,6 +243,7 @@ p { .login .module_app_inputFailed___gray{ + font-family: "Chivo",sans-serif; background-color: #fff; background-image: none; border: 1px solid #ccc; @@ -241,4 +258,29 @@ p { transition: border-color 0.15s ease-in-out 0s, box-shadow 0.15s ease-in-out 0s; width: 100%; border:1px solid #e14333; -} \ No newline at end of file +} + +.page-wrap{ + height: auto; + margin: 0 auto -60px; + min-height: 95%; + padding: 0 0 60px; +} + +.page-wrap:after{ + width: 100%; + display:block; + clear:both; +} + +.footer-login{ + text-align: center; + height: auto; + margin: -0px auto 0; +} + +#form[FORGOT_PASWORD_LINK]{ + font-family: Chivo; + font-size: 14px; + padding-top: 10px; +} diff --git a/workflow/engine/skinEngine/neoclassic/layout.html b/workflow/engine/skinEngine/neoclassic/layout.html index af628788d..a2996d5ba 100644 --- a/workflow/engine/skinEngine/neoclassic/layout.html +++ b/workflow/engine/skinEngine/neoclassic/layout.html @@ -78,10 +78,8 @@ {else} - - + +
@@ -102,8 +100,13 @@
- + {/if} diff --git a/workflow/engine/skinEngine/skinEngine.php b/workflow/engine/skinEngine/skinEngine.php index fd3d6a9da..e6a7290a7 100755 --- a/workflow/engine/skinEngine/skinEngine.php +++ b/workflow/engine/skinEngine/skinEngine.php @@ -377,8 +377,8 @@ class SkinEngine if (strpos($_SERVER['REQUEST_URI'], '/login/login') !== false) { $freeOfChargeText = ""; if (! defined('SKIP_FREE_OF_CHARGE_TEXT')) - $freeOfChargeText = "Supplied free of charge with no support, certification, warranty,
maintenance nor indemnity by Colosa and its Certified Partners."; - if(class_exists('pmLicenseManager')) $freeOfChargeText=""; + $freeOfChargeText = "Supplied free of charge with no support, certification, warranty,
maintenance nor indemnity by Processmaker and its Certified Partners."; + if(file_exists(PATH_CLASSES."class.pmLicenseManager.php")) $freeOfChargeText=""; $fileFooter = PATH_SKINS . SYS_SKIN . PATH_SEP . 'footer.html'; if (file_exists($fileFooter)) { @@ -392,7 +392,7 @@ class SkinEngine if (file_exists($fileFooter)) { $footer .= file_get_contents($fileFooter); } else { - $footer .= "
Copyright © 2000-" . date('Y') . " ProcessMaker Inc. All rights reserved.
$freeOfChargeText " . "

"; + $footer .= "$freeOfChargeText
Copyright © 2000-" . date('Y') . " ProcessMaker Inc. All rights reserved.
" . "

"; } } } @@ -505,7 +505,7 @@ class SkinEngine if (file_exists($fileFooter)) { $footer .= file_get_contents($fileFooter); } else { - $footer .= "
Copyright © 2000-" . date('Y') . " ProcessMaker Inc. All rights reserved.
$freeOfChargeText " . "

"; + $footer .= "$freeOfChargeText
Copyright © 2000-" . date('Y') . " ProcessMaker Inc. All rights reserved.
" . "

"; } } } @@ -698,8 +698,8 @@ class SkinEngine if (strpos($_SERVER['REQUEST_URI'], '/login/login') !== false) { $freeOfChargeText = ""; if (! defined('SKIP_FREE_OF_CHARGE_TEXT')) - $freeOfChargeText = "Supplied free of charge with no support, certification, warranty, maintenance nor indemnity by Colosa and its Certified Partners."; - if(class_exists('pmLicenseManager')) $freeOfChargeText=""; + $freeOfChargeText = "Supplied free of charge with no support, certification, warranty, maintenance nor indemnity by ProcessMaker and its Certified Partners."; + if(file_exists(PATH_CLASSES."class.pmLicenseManager.php")) $freeOfChargeText=""; $fileFooter = PATH_SKINS . SYS_SKIN . PATH_SEP . 'footer.html'; if (file_exists($fileFooter)) { @@ -713,7 +713,7 @@ class SkinEngine if (file_exists($fileFooter)) { $footer .= file_get_contents($fileFooter); } else { - $footer .= " $freeOfChargeText
Copyright © 2000-" . date('Y') . " ProcessMaker Inc. All rights reserved.
" . "

"; + $footer .= "$freeOfChargeText
Copyright © 2000-" . date('Y') . " ProcessMaker Inc. All rights reserved.
" . "

"; } } } diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Variable.php b/workflow/engine/src/ProcessMaker/BusinessModel/Variable.php index fc4d5b237..8e0e25ffd 100755 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Variable.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Variable.php @@ -129,10 +129,13 @@ class Variable $cnn = \Propel::getConnection("workflow"); try { $variable = \ProcessVariablesPeer::retrieveByPK($variableUid); + $dbConnection = \DbSourcePeer::retrieveByPK($variable->getVarDbconnection(), $variable->getPrjUid()); + $oldVariable = array( "VAR_NAME" => $variable->getVarName(), "VAR_FIELD_TYPE" => $variable->getVarFieldType(), "VAR_DBCONNECTION" => $variable->getVarDbconnection(), + "VAR_DBCONNECTION_LABEL" => $dbConnection !== null ? '[' . $dbConnection->getDbsServer() . ':' . $dbConnection->getDbsPort() . '] ' . $dbConnection->getDbsType() . ': ' . $dbConnection->getDbsDatabaseName() : 'PM Database', "VAR_SQL" => $variable->getVarSql(), "VAR_ACCEPTED_VALUES" => $variable->getVarAcceptedValues() ); @@ -170,10 +173,12 @@ class Variable $variable->save(); $cnn->commit(); //update dynaforms + $dbConnection = \DbSourcePeer::retrieveByPK($variable->getVarDbconnection(), $variable->getPrjUid()); $newVariable = array( "VAR_NAME" => $variable->getVarName(), "VAR_FIELD_TYPE" => $variable->getVarFieldType(), "VAR_DBCONNECTION" => $variable->getVarDbconnection(), + "VAR_DBCONNECTION_LABEL" => $dbConnection !== null ? '[' . $dbConnection->getDbsServer() . ':' . $dbConnection->getDbsPort() . '] ' . $dbConnection->getDbsType() . ': ' . $dbConnection->getDbsDatabaseName() : 'PM Database', "VAR_SQL" => $variable->getVarSql(), "VAR_ACCEPTED_VALUES" => $variable->getVarAcceptedValues() ); @@ -265,9 +270,14 @@ class Variable $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_NULL); $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_DEFAULT); $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_ACCEPTED_VALUES); + $criteria->addSelectColumn(\DbSourcePeer::DBS_SERVER); + $criteria->addSelectColumn(\DbSourcePeer::DBS_PORT); + $criteria->addSelectColumn(\DbSourcePeer::DBS_DATABASE_NAME); + $criteria->addSelectColumn(\DbSourcePeer::DBS_TYPE); $criteria->add(\ProcessVariablesPeer::PRJ_UID, $processUid, \Criteria::EQUAL); $criteria->add(\ProcessVariablesPeer::VAR_UID, $variableUid, \Criteria::EQUAL); + $criteria->addJoin(\ProcessVariablesPeer::VAR_DBCONNECTION, \DbSourcePeer::DBS_UID, \Criteria::LEFT_JOIN); $rsCriteria = \ProcessVariablesPeer::doSelectRS($criteria); @@ -283,7 +293,8 @@ class Variable 'var_field_type' => $aRow['VAR_FIELD_TYPE'], 'var_field_size' => (int)$aRow['VAR_FIELD_SIZE'], 'var_label' => $aRow['VAR_LABEL'], - 'var_dbconnection' => $aRow['VAR_DBCONNECTION'], + 'var_dbconnection' => $aRow['VAR_DBCONNECTION'] === 'none' ? 'workflow' : $aRow['VAR_DBCONNECTION'], + 'var_dbconnection_label' => $aRow['DBS_SERVER'] !== null ? '[' . $aRow['DBS_SERVER'] . ':' . $aRow['DBS_PORT'] . '] ' . $aRow['DBS_TYPE'] . ': ' . $aRow['DBS_DATABASE_NAME'] : 'PM Database', 'var_sql' => $aRow['VAR_SQL'], 'var_null' => (int)$aRow['VAR_NULL'], 'var_default' => $aRow['VAR_DEFAULT'], @@ -326,8 +337,13 @@ class Variable $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_NULL); $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_DEFAULT); $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_ACCEPTED_VALUES); + $criteria->addSelectColumn(\DbSourcePeer::DBS_SERVER); + $criteria->addSelectColumn(\DbSourcePeer::DBS_PORT); + $criteria->addSelectColumn(\DbSourcePeer::DBS_DATABASE_NAME); + $criteria->addSelectColumn(\DbSourcePeer::DBS_TYPE); $criteria->add(\ProcessVariablesPeer::PRJ_UID, $processUid, \Criteria::EQUAL); + $criteria->addJoin(\ProcessVariablesPeer::VAR_DBCONNECTION, \DbSourcePeer::DBS_UID, \Criteria::LEFT_JOIN); $rsCriteria = \ProcessVariablesPeer::doSelectRS($criteria); @@ -343,7 +359,8 @@ class Variable 'var_field_type' => $aRow['VAR_FIELD_TYPE'], 'var_field_size' => (int)$aRow['VAR_FIELD_SIZE'], 'var_label' => $aRow['VAR_LABEL'], - 'var_dbconnection' => $aRow['VAR_DBCONNECTION'], + 'var_dbconnection' => $aRow['VAR_DBCONNECTION'] === 'none' ? 'workflow' : $aRow['VAR_DBCONNECTION'], + 'var_dbconnection_label' => $aRow['DBS_SERVER'] !== null ? '[' . $aRow['DBS_SERVER'] . ':' . $aRow['DBS_PORT'] . '] ' . $aRow['DBS_TYPE'] . ': ' . $aRow['DBS_DATABASE_NAME'] : 'PM Database', 'var_sql' => $aRow['VAR_SQL'], 'var_null' => (int)$aRow['VAR_NULL'], 'var_default' => $aRow['VAR_DEFAULT'], @@ -690,4 +707,3 @@ class Variable } } } - diff --git a/workflow/engine/templates/enterprise/addonsStore.js b/workflow/engine/templates/enterprise/addonsStore.js index 5a265e9df..898899bb1 100644 --- a/workflow/engine/templates/enterprise/addonsStore.js +++ b/workflow/engine/templates/enterprise/addonsStore.js @@ -1443,54 +1443,6 @@ Ext.onReady(function() { } return ''; } - }, - { - id : "status-feature", - header : _('ID_STATUS'), - width : 60, - sortable : false, - hideable : false, - dataIndex: "status", - renderer: function (val) { - var str = ""; - var text = ""; - - switch (val) { - case "available": text = _('ID_BUY_NOW'); break; - case "installed": text = _('ID_INSTALLED'); break; - case "ready": text = _('ID_INSTALL_NOW'); break; - case "upgrade": text = _('ID_UPGRADE_NOW'); break; - case "download": text = _('ID_CANCEL'); break; - case "install": text = _('ID_INSTALLING'); break; - case "cancel": text = _('ID_CANCELLING'); break; - case "disabled": text = _('ID_DISABLED'); break; - case "download-start": text = ""; break; - default: text = val; break; - } - - switch (val) { - case "available": - case "ready": - case "upgrade": - case "download": - case "install": - case "cancel": - case "download-start": - str = "
" + text + "
"; - break; - - case "installed": - case "disabled": - str = "
" + text + "
"; - break; - - default: - str = "
" + text + "
"; - break; - } - - return (str); - } } ] }); diff --git a/workflow/engine/xmlform/login/forgotPasswordpm3.xml b/workflow/engine/xmlform/login/forgotPasswordpm3.xml index 204c4d134..98122fc1f 100755 --- a/workflow/engine/xmlform/login/forgotPasswordpm3.xml +++ b/workflow/engine/xmlform/login/forgotPasswordpm3.xml @@ -6,7 +6,7 @@ - + diff --git a/workflow/engine/xmlform/login/sysLoginNoWSpm3.xml b/workflow/engine/xmlform/login/sysLoginNoWSpm3.xml index a0c0202a3..5dd893ede 100755 --- a/workflow/engine/xmlform/login/sysLoginNoWSpm3.xml +++ b/workflow/engine/xmlform/login/sysLoginNoWSpm3.xml @@ -29,7 +29,7 @@ window.onload= function(){ document.getElementById('form[USR_PASSWORD_MASK]').placeholder = _('ID_PASSWORD'); document.getElementById('form[USER_ENV]').placeholder = _('ID_WORKSPACE'); document.getElementById('form[BSUBMIT]').classList.remove('module_app_button___gray'); - document.getElementById('form[BSUBMIT]').classList.add('button-login-success'); + document.getElementById('form[BSUBMIT]').classList.add('button-login-success'); }; setFocus (getField ('USR_USERNAME')); diff --git a/workflow/engine/xmlform/tasks/tasks_Consolidated_Error.xml b/workflow/engine/xmlform/tasks/tasks_Consolidated_Error.xml new file mode 100644 index 000000000..7c449fe4d --- /dev/null +++ b/workflow/engine/xmlform/tasks/tasks_Consolidated_Error.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/workflow/public_html/fonts/Chivo-Regular.ttf b/workflow/public_html/fonts/Chivo-Regular.ttf new file mode 100644 index 000000000..30f8143c8 Binary files /dev/null and b/workflow/public_html/fonts/Chivo-Regular.ttf differ