diff --git a/README.md b/README.md index fc83d200f..1c612271d 100644 --- a/README.md +++ b/README.md @@ -14,11 +14,11 @@ ProcessMaker "Michelangelo" Overview -------- -ProcessMaker is an open source, workflow management software suite, which +ProcessMaker is an open source, workflow management software suite, which includes tools to automate your workflow, design forms, create documents, assign roles and users, create routing rules, and map an individual process quickly and easily. It's relatively lightweight and doesn't require any kind of installation -on the client computer. This file describes the requirements and installation +on the client computer. This file describes the requirements and installation steps for the server. License @@ -32,3 +32,4 @@ http://www.affero.org/oagpl.html For further information visit: http://www.processmaker.com/ + diff --git a/gulliver/system/class.publisher.php b/gulliver/system/class.publisher.php index 0000e8c93..40b7fc20e 100755 --- a/gulliver/system/class.publisher.php +++ b/gulliver/system/class.publisher.php @@ -293,15 +293,13 @@ class Publisher $oFieldCondition = new FieldCondition(); //This dynaform has show/hide field conditions - $dynUid = ''; if (isset($_SESSION['CURRENT_DYN_UID']) && $_SESSION['CURRENT_DYN_UID'] != '') { - $dynUid = $_SESSION['CURRENT_DYN_UID']; + $ConditionalShowHideRoutines = $oFieldCondition->getConditionScript($_SESSION["CURRENT_DYN_UID"]); //lsl } else { if (isset($_SESSION['CONDITION_DYN_UID']) && $_SESSION['CONDITION_DYN_UID'] != '') { - $dynUid = $_SESSION['CONDITION_DYN_UID']; + $ConditionalShowHideRoutines = $oFieldCondition->getConditionScript($_SESSION["CONDITION_DYN_UID"]); //lsl } } - $ConditionalShowHideRoutines = $oFieldCondition->getConditionScript($dynUid); } } diff --git a/gulliver/system/class.xmlform.php b/gulliver/system/class.xmlform.php index aa8c38a31..b8dc6db09 100755 --- a/gulliver/system/class.xmlform.php +++ b/gulliver/system/class.xmlform.php @@ -3178,17 +3178,12 @@ class XmlForm_Field_Checkbox extends XmlForm_Field $checked = (isset( $value ) && ($value == $this->value)) ? 'checked' : ''; if ($this->labelOnRight) { $html = ''; - $html = "NSFieldType() . " name='form[" . $this->name . "]' type='checkbox' $checked $readOnly disabled > + $html = "NSFieldType() . " type='checkbox' $checked $readOnly disabled /> " . $this->label . ''; } else { - $html = "NSFieldType() . " name='form[" . $this->name . "]' type='checkbox' $checked $readOnly disabled/>"; + $html = "NSFieldType() . " type='checkbox' $checked $readOnly disabled />"; } $html .= ""; - // if($this->hint){ - // $html .= ' - // - // '; - // } return $html; } } @@ -3360,11 +3355,6 @@ class XmlForm_Field_Submit extends XmlForm_Field $sLinkNextStep = 'window.location=("casesSaveDataView?UID=' . $_SESSION['CURRENT_DYN_UID'] . '");'; $html = 'NSFieldType() . ' name="form[' . $this->name . ']" type="button" value="' . G::LoadTranslation( 'ID_CONTINUE' ) . '" onclick="' . htmlentities( $sLinkNextStep, ENT_COMPAT, 'utf-8' ) . '" />'; } - - $html .= 'name . ']" '; - $html .= 'name="form[' . $this->name . ']" '; - $html .= 'type="hidden" value="' . $this->htmlentities( $this->label, ENT_QUOTES, 'utf-8' ) . '" />'; return $html; } else { return $this->htmlentities( $value, ENT_COMPAT, 'utf-8' ); @@ -3616,7 +3606,7 @@ class XmlForm_Field_Dropdown extends XmlForm_Field $html = $html . ""; } - if ($value !== $findValue) { + if ($value !== $findValue && $this->renderMode == 'view') { $html .= ""; } diff --git a/gulliver/thirdparty/propel-generator/classes/propel/engine/builder/om/php5/PHP5BasicObjectBuilder.php b/gulliver/thirdparty/propel-generator/classes/propel/engine/builder/om/php5/PHP5BasicObjectBuilder.php index 7a656ac87..a448320c8 100755 --- a/gulliver/thirdparty/propel-generator/classes/propel/engine/builder/om/php5/PHP5BasicObjectBuilder.php +++ b/gulliver/thirdparty/propel-generator/classes/propel/engine/builder/om/php5/PHP5BasicObjectBuilder.php @@ -588,7 +588,15 @@ abstract class ".$this->getClassname()." extends ".ClassTools::classname($this-> $script .= " if (\$v !== null && !is_int(\$v)) { - \$ts = strtotime(\$v); + \$ts = strtotime(\$v);"; + if ($col->getPhpDefaultValue() != 1) { + $script .= " + //Date/time accepts null values + if (\$v == '') { + \$ts = null; + }"; + } + $script .=" if (\$ts === -1 || \$ts === false) { throw new PropelException(\"Unable to parse date/time value for [$clo] from input: \" . var_export(\$v, true)); diff --git a/workflow/engine/classes/class.pmFunctions.php b/workflow/engine/classes/class.pmFunctions.php index 1c769798a..b7d3c486d 100755 --- a/workflow/engine/classes/class.pmFunctions.php +++ b/workflow/engine/classes/class.pmFunctions.php @@ -2843,8 +2843,9 @@ function PMFAddAttachmentToArray($arrayData, $index, $value, $suffix = " Copy({i * * It delete the mask a field. * - * @name PMFAddAttachmentToArray - * + * @name PMFRemoveMask + * @label PMF Remove Mask + * * @param string | $field | Value the field * @param string | $separator | Separator of thousands (, or .) * @param string | $currency | symbol of currency @@ -2852,7 +2853,7 @@ function PMFAddAttachmentToArray($arrayData, $index, $value, $suffix = " Copy({i * */ -function PMRemoveMask ($field, $separator = '.', $currency = '') +function PMFRemoveMask ($field, $separator = '.', $currency = '') { $sep = array(); if ( trim($currency) != '') { diff --git a/workflow/engine/classes/class.wsBase.php b/workflow/engine/classes/class.wsBase.php index f3f7732db..667c5a878 100755 --- a/workflow/engine/classes/class.wsBase.php +++ b/workflow/engine/classes/class.wsBase.php @@ -3125,7 +3125,6 @@ class wsBase return $result; } - if (empty( $userUid )) { $result = new wsResponse( 100, G::LoadTranslation( "ID_REQUIRED_FIELD" ) . " userUid" ); @@ -3133,8 +3132,7 @@ class wsBase return $result; } - - if (! empty( $unpauseDate )) { + if( strlen($unpauseDate) >=10 ){ if (! preg_match( "/^\d{4}-\d{2}-\d{2}| \d{2}:\d{2}:\d{2}$/", $unpauseDate )) { $result = new wsResponse( 100, G::LoadTranslation( "ID_INVALID_DATA" ) . " $unpauseDate" ); @@ -3142,8 +3140,9 @@ class wsBase return $result; } + } else { + $unpauseDate = null; } - $case = new Cases(); $case->pauseCase( $caseUid, $delIndex, $userUid, $unpauseDate ); @@ -3154,7 +3153,6 @@ class wsBase ); $g->sessionVarRestore(); - return $result; } catch (Exception $e) { $result = new wsResponse(100, $e->getMessage()); diff --git a/workflow/engine/methods/appFolder/appFolderAjax.php b/workflow/engine/methods/appFolder/appFolderAjax.php index 9f07313e3..6ee91744a 100755 --- a/workflow/engine/methods/appFolder/appFolderAjax.php +++ b/workflow/engine/methods/appFolder/appFolderAjax.php @@ -20,12 +20,6 @@ if (! isset ($_REQUEST ['action'])) { print G::json_encode ($res); die (); } -if (! function_exists ($_REQUEST['action']) || !G::isUserFunction($_REQUEST['action'])) { - $res ['success'] = false; - $res ['message'] = 'The requested action does not exist'; - print G::json_encode ($res); - die (); -} if (($_REQUEST['action']) != 'rename') { $functionName = $_REQUEST ['action']; @@ -48,6 +42,12 @@ if (($_REQUEST['action']) != 'rename') { renameFolder ($oldname, $newname, $uid); } +if (! function_exists ($_REQUEST['action']) || !G::isUserFunction($_REQUEST['action'])) { + $res ['success'] = false; + $res ['message'] = 'The requested action does not exist'; + print G::json_encode ($res); + die (); +} ///////////////////////////////////////////// function renameFolder($oldname, $newname, $uid) diff --git a/workflow/engine/templates/cases/casesDocuments.js b/workflow/engine/templates/cases/casesDocuments.js index a5be99239..72ea9ff29 100755 --- a/workflow/engine/templates/cases/casesDocuments.js +++ b/workflow/engine/templates/cases/casesDocuments.js @@ -34,6 +34,7 @@ catch(z){ itemSelected = ""; lastDir = ""; var conn = new Ext.data.Connection(); +var showDirs = 'noFolders'; streamFilefromPM=function(fileStream) { Ext.Ajax.request({ @@ -605,6 +606,9 @@ function getRequestParams() { } else { sOptiondir='documents'; + if (selectedRows[0].data.owner == '') { + sOptiondir='directory'; + } selitems = Array(selectedRows.length); if( selectedRows.length > 0 ) { @@ -1128,18 +1132,10 @@ var gridtb = new Ext.Toolbar( handler : function(btn, e) { if (btn.pressed) { datastore.sendWhat = 'both'; - loadDir(); } else { datastore.sendWhat = 'files'; - loadDir(); - } - if (showDirs) { - Ext.getCmp("showOrHiDirs").setText(_('ID_SHOW_DIRS')); - showDirs = false; - } else { - Ext.getCmp("showOrHiDirs").setText(_('ID_HIDE_DIRS')); - showDirs = true; } + loadDir(); } }), '-', new Ext.form.TextField({ name : "filterValue", @@ -1321,11 +1317,15 @@ rowExpander, { header: _("ID_SIZE"), dataIndex: "size", width: 50, + sortable: false, + hideable: false, hidden: true }, { header: _("ID_PERMISSIONS"), dataIndex: "perms", width: 100, + sortable: false, + hideable: false, hidden: true }, { dataIndex: "is_deletable", @@ -1373,28 +1373,34 @@ rowExpander, { cm.defaultSortable = true; function handleRowClick(sm, rowIndex) {//alert(rowIndex); - // console.log("Row Clicked: "+rowIndex); - var selections = sm.getSelections(); - tb = ext_itemgrid.getTopToolbar(); - if (selections.length > 1) { -// tb.items.get('tb_delete').enable(); - tb.items.get('tb_delete')[permitodelete==1 ? 'enable': 'disable'](); - tb.items.get('tb_rename').disable(); - tb.items.get('tb_download').hide(); - //tb.items.get('tb_download').disable(); - } else if (selections.length == 1) { - -// tb.items.get('tb_delete')[selections[0].get('is_deletable') ? 'enable': 'disable'](); - tb.items.get('tb_delete')[permitodelete==1 ? 'enable': 'disable'](); - tb.items.get('tb_rename')[selections[0].get('is_deletable') ? 'disable': 'disable'](); - tb.items.get('tb_download')[selections[0].get('is_readable') - && selections[0].get('is_file') ? 'show' : 'hide'](); - } else { - tb.items.get('tb_delete').disable(); - tb.items.get('tb_rename').disable(); - tb.items.get('tb_download').hide(); - } - return true; + //console.log("Row Clicked: ", rowIndex); + var selections = sm.getSelections(); + tb = ext_itemgrid.getTopToolbar(); + if (selections.length > 1) { + //tb.items.get('tb_delete').enable(); + tb.items.get('tb_delete')[permitodelete==1 ? 'enable': 'disable'](); + tb.items.get('tb_rename').disable(); + tb.items.get('tb_download').hide(); + //tb.items.get('tb_download').disable(); + } else if (selections.length == 1) { + //tb.items.get('tb_delete')[selections[0].get('is_deletable') ? 'enable': 'disable'](); + tb.items.get('tb_delete')[permitodelete==1 ? 'enable': 'disable'](); + tb.items.get('tb_rename')[selections[0].get('is_deletable') ? 'disable': 'disable'](); + tb.items.get('tb_download')[selections[0].get('is_readable') + && selections[0].get('is_file') ? 'show' : 'hide'](); + if (showDirs == 'folders') { + Ext.getCmp("showOrHiDirs").setText(_('ID_SHOW_DIRS')); + showDirs = 'noFolders'; + } else { + Ext.getCmp("showOrHiDirs").setText(_('ID_HIDE_DIRS')); + showDirs = 'folders'; + } + } else { + tb.items.get('tb_delete').disable(); + tb.items.get('tb_rename').disable(); + tb.items.get('tb_download').hide(); + } + return true; } @@ -1402,18 +1408,23 @@ function handleRowClick(sm, rowIndex) {//alert(rowIndex); function loadDir() { // console.info("loadDir"); // console.trace(); - itemSelected = "loadDir"; - datastore.load({ - params : { - start: 0, - limit: 100, - dir : datastore.directory, - node : datastore.directory, - option : 'gridDocuments', - action : 'expandNode', - sendWhat : datastore.sendWhat + itemSelected = "loadDir"; + datastore.load({ + params : { + start: 0, + limit: 100, + dir : datastore.directory, + node : datastore.directory, + option : 'gridDocuments', + action : 'expandNode', + sendWhat : datastore.sendWhat + } + }); + if (datastore.sendWhat == 'files') { + Ext.getCmp("showOrHiDirs").setText(_('ID_SHOW_DIRS')); + } else { + Ext.getCmp("showOrHiDirs").setText(_('ID_HIDE_DIRS')); } - }); } function rowContextMenu(grid, rowIndex, e, f) { @@ -1438,6 +1449,14 @@ function rowContextMenu(grid, rowIndex, e, f) { gridCtxMenu.items.get('gc_rename')[selections[0].get('is_deletable') ? 'disable': 'disable'](); gridCtxMenu.items.get('gc_download')[selections[0].get('is_readable') && selections[0].get('is_file') ? 'enable' : 'disable'](); + if (showDirs == 'folders') { + Ext.getCmp("showOrHiDirs").setText(_('ID_SHOW_DIRS')); + showDirs = 'noFolders'; + } else { + Ext.getCmp("showOrHiDirs").setText(_('ID_HIDE_DIRS')); + showDirs = 'folders'; + } + } gridCtxMenu.show(e.getTarget(), 'tr-br?'); diff --git a/workflow/engine/templates/dashboard/dashletsList.js b/workflow/engine/templates/dashboard/dashletsList.js index 6a2107b51..f4b11e8d2 100644 --- a/workflow/engine/templates/dashboard/dashletsList.js +++ b/workflow/engine/templates/dashboard/dashletsList.js @@ -399,11 +399,9 @@ statusDashletInstance = function(){ var data = { DAS_INS_UID: rows[i].data.DAS_INS_UID, DAS_INS_TITLE: rows[i].data.DAS_INS_TITLE, - DAS_UID: rows[i].data.DAS_INS_UID, - DAS_INS_STATUS: status, - DAS_STATUS: status + DAS_INS_STATUS: status }; - + Ext.Ajax.request({ url: 'saveDashletInstance', method: 'POST', diff --git a/workflow/engine/xmlform/tracker/tracker_Configuration.xml b/workflow/engine/xmlform/tracker/tracker_Configuration.xml index 2df2d08a4..c721b4c93 100755 --- a/workflow/engine/xmlform/tracker/tracker_Configuration.xml +++ b/workflow/engine/xmlform/tracker/tracker_Configuration.xml @@ -64,9 +64,9 @@ var editStagesMap = function(sProcessUID) { oPanel.events = { remove: function() { delete(oPanel); - if(menu_edit.maked === true){ + if(typeof menu_edit != "undefined" && menu_edit.maked === true){ menu_edit.remove(); - } else if (menu_add.maked === true) { + } else if (typeof menu_add != "undefined" && menu_add.maked === true) { menu_add.remove(); } }.extend(this)