diff --git a/gulliver/system/class.xmlform.php b/gulliver/system/class.xmlform.php index 56c7ea2a2..589007a0c 100755 --- a/gulliver/system/class.xmlform.php +++ b/gulliver/system/class.xmlform.php @@ -807,7 +807,7 @@ class XmlForm_Field public function NSGridLabel ($show = false) { - $idv = 'pm:label="' . $this->pmLabel . '"'; + $idv = 'pm:label="' . htmlentities($this->pmLabel, ENT_COMPAT, 'utf-8') . '"'; if ($show) { return $idv; } else { diff --git a/workflow/engine/classes/class.pmFunctions.php b/workflow/engine/classes/class.pmFunctions.php index 937b8bdd5..f6cd3314a 100755 --- a/workflow/engine/classes/class.pmFunctions.php +++ b/workflow/engine/classes/class.pmFunctions.php @@ -1530,7 +1530,7 @@ function PMFGenerateOutputDocument ($outputID, $sApplication = null, $index = nu G::LoadClass( 'case' ); $oCase = new Cases(); - $oCase->thisIsTheCurrentUser( $sApplication, $index, $sUserLogged, '', 'cases_List' ); + $oCase->thisIsTheCurrentUser( $sApplication, $index, $sUserLogged, '', 'casesListExtJs' ); //require_once 'classes/model/OutputDocument.php'; $oOutputDocument = new OutputDocument(); @@ -2109,7 +2109,7 @@ function jumping ($caseId, $delIndex) } catch (Exception $oException) { G::SendTemporalMessage( 'ID_NOT_DERIVATED', 'error', 'labels' ); } - G::header( 'Location: cases_List' ); + G::header( 'Location: casesListExtJs' ); } /** diff --git a/workflow/engine/classes/model/AppMessage.php b/workflow/engine/classes/model/AppMessage.php index 0ce2e71bc..9b4996dbc 100755 --- a/workflow/engine/classes/model/AppMessage.php +++ b/workflow/engine/classes/model/AppMessage.php @@ -120,5 +120,13 @@ class AppMessage extends BaseAppMessage return $this->getAppMsgUid(); } } + + public function updateStatus($msgUid, $msgStatus) + { + $message = AppMessagePeer::retrieveByPk( $msgUid ); + $message->fromArray( $message, BasePeer::TYPE_FIELDNAME ); + $message->setAppMsgStatus($msgStatus); + $message->save(); + } } diff --git a/workflow/engine/menus/setup.php b/workflow/engine/menus/setup.php index bd0fd6a6f..7f562e290 100755 --- a/workflow/engine/menus/setup.php +++ b/workflow/engine/menus/setup.php @@ -85,5 +85,6 @@ if ($RBAC->userCanAccess('PM_SETUP') == 1) { $G_TMP_MENU->AddIdRawOption('EVENT', '../events/eventList', G::LoadTranslation('ID_EVENTS'), '', '', 'logs'); $G_TMP_MENU->AddIdRawOption('LOG_CASE_SCHEDULER', '../cases/cases_Scheduler_Log', G::LoadTranslation('ID_CASE_SCHEDULER'), "icon-logs-list.png",'', 'logs'); $G_TMP_MENU->AddIdRawOption("CRON", "../setup/cron", G::LoadTranslation("ID_CRON_ACTIONS"), null, null, "logs"); + $G_TMP_MENU->AddIdRawOption('EMAILS', '../mails/emailList', ucfirst (strtolower ( G::LoadTranslation('ID_EMAILS'))), '', '', 'logs'); } diff --git a/workflow/engine/methods/cases/casesSaveDataView.php b/workflow/engine/methods/cases/casesSaveDataView.php index b57cbe498..43ad3f696 100755 --- a/workflow/engine/methods/cases/casesSaveDataView.php +++ b/workflow/engine/methods/cases/casesSaveDataView.php @@ -31,7 +31,7 @@ G::LoadClass( 'case' ); //load the variables $oCase = new Cases(); -$oCase->thisIsTheCurrentUser( $_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['USER_LOGGED'], 'REDIRECT', 'cases_List' ); +$oCase->thisIsTheCurrentUser( $_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['USER_LOGGED'], 'REDIRECT', 'casesListExtJs' ); $Fields = $oCase->loadCase( $_SESSION['APPLICATION'] ); $Fields['APP_DATA'] = array_merge( $Fields['APP_DATA'], G::getSystemConstants() ); $Fields['APP_DATA'] = array_merge( $Fields['APP_DATA'], (array) $_POST['form'] ); diff --git a/workflow/engine/methods/cases/cases_DeleteDocument.php b/workflow/engine/methods/cases/cases_DeleteDocument.php index 6c3a589a8..26db38ec9 100755 --- a/workflow/engine/methods/cases/cases_DeleteDocument.php +++ b/workflow/engine/methods/cases/cases_DeleteDocument.php @@ -45,7 +45,7 @@ G::LoadClass( 'case' ); $oAppDocument = new AppDocument(); $oAppDocument->remove( $_GET['DOC'] ); $oCase = new Cases(); -$oCase->thisIsTheCurrentUser( $_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['USER_LOGGED'], 'REDIRECT', 'cases_List' ); +$oCase->thisIsTheCurrentUser( $_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['USER_LOGGED'], 'REDIRECT', 'casesListExtJs' ); if ($_GET['TYPE'] == 'INPUT') { $aNextStep = $oCase->getNextStep( $_SESSION['PROCESS'], $_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['STEP_POSITION'] - 1 ); } diff --git a/workflow/engine/methods/cases/cases_Derivate.php b/workflow/engine/methods/cases/cases_Derivate.php index c9f89b657..2d8a6ea2c 100755 --- a/workflow/engine/methods/cases/cases_Derivate.php +++ b/workflow/engine/methods/cases/cases_Derivate.php @@ -53,7 +53,7 @@ try { //load data $oCase = new Cases(); //warning: we are not using the result value of function thisIsTheCurrentUser, so I'm commenting to optimize speed. - //$oCase->thisIsTheCurrentUser( $_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['USER_LOGGED'], 'REDIRECT', 'cases_List'); + //$oCase->thisIsTheCurrentUser( $_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['USER_LOGGED'], 'REDIRECT', 'casesListExtJs'); $appFields = $oCase->loadCase( $_SESSION['APPLICATION'] ); $appFields['APP_DATA'] = array_merge( $appFields['APP_DATA'], G::getSystemConstants() ); //cleaning debug variables diff --git a/workflow/engine/methods/cases/cases_List.php b/workflow/engine/methods/cases/cases_List.php index 714c862f4..83a70c558 100755 --- a/workflow/engine/methods/cases/cases_List.php +++ b/workflow/engine/methods/cases/cases_List.php @@ -1,182 +1,3 @@ . - * - * For more information, contact Colosa Inc, 2566 Le Jeune Rd., - * Coral Gables, FL, 33134, USA, or email info@colosa.com. - */ - -/** - * Cases list (Refactored) - * By Erik A. - * O. - */ - -/* Permissions */ -if (($RBAC_Response = $RBAC->userCanAccess( "PM_CASES" )) != 1) { - return $RBAC_Response; -} - - /* Includes */ -G::LoadClass( 'case' ); -G::LoadClass( 'configuration' ); - -// $_GET['l'] has the type of cases list like todo,pause,cancel, all - - -$conf = new Configurations(); -if (! isset( $_GET['l'] )) { - $confCasesList = $conf->loadObject( 'ProcessMaker', 'cases_List', '', $_SESSION['USER_LOGGED'], '' ); - if (is_array( $confCasesList )) { - $sTypeList = $confCasesList['sTypeList']; - } else { - $sTypeList = 'to_do'; - } -} else { - $sTypeList = $_GET['l']; - $confCasesList = array ('sTypeList' => $sTypeList - ); - $conf->saveObject( $confCasesList, 'ProcessMaker', 'cases_List', '', $_SESSION['USER_LOGGED'], '' ); -} - -$sUIDUserLogged = $_SESSION['USER_LOGGED']; -$_SESSION['CASES_MENU_OPTION'] = $sTypeList; - -$oCases = new Cases(); - -/** - * here we verify if there is a any case with a unpause on this day - */ -if ($sTypeList === 'to_do' or $sTypeList === 'draft' or $sTypeList === 'paused') { - $oCases->ThrowUnpauseDaemon( date( 'Y-m-d' ) ); -} - -/* * - * Prepare the addtional filters before to show - * By Erik - */ - -$aAdditionalFilter = Array (); - -if (isset( $_GET['PROCESS_UID'] ) and $_GET['PROCESS_UID'] != "0" && $_GET['PROCESS_UID'] != "") { - $PRO_UID = $_GET['PROCESS_UID']; - $aAdditionalFilter['PRO_UID'] = $PRO_UID; -} else { - $PRO_UID = "0"; -} -if (isset( $_GET['READ'] ) and $_GET['READ'] == "1") { - $aAdditionalFilter['READ'] = $_GET['READ']; -} -if (isset( $_GET['UNREAD'] ) and $_GET['UNREAD'] == "1") { - $aAdditionalFilter['UNREAD'] = $_GET['UNREAD']; -} - -if (isset( $_GET['APP_STATUS_FILTER'] ) and $_GET['APP_STATUS_FILTER'] != "ALL") { - $aAdditionalFilter['APP_STATUS_FILTER'] = $_GET['APP_STATUS_FILTER']; -} - -if (isset( $_GET['MINE'] ) and $_GET['MINE'] == "1") { - $aAdditionalFilter['MINE'] = $_GET['MINE']; -} - -switch ($sTypeList) { - case 'to_do': - if (defined( 'ENABLE_CASE_LIST_OPTIMIZATION' )) { - $aCriteria = $oCases->prepareCriteriaForToDo( $sUIDUserLogged ); - $xmlfile = 'cases/cases_ListTodoNew'; - } else { - list ($aCriteria, $xmlfile) = $oCases->getConditionCasesList( $sTypeList, $sUIDUserLogged, true, $aAdditionalFilter ); - } - break; - default: - list ($aCriteria, $xmlfile) = $oCases->getConditionCasesList( $sTypeList, $sUIDUserLogged, true, $aAdditionalFilter ); -} - -/* -$rs = ApplicationPeer::doSelectRS($aCriteria); - $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $aRows1 = Array(); - while($rs->next()) { - $aRows1[] = $rs->getRow(); - - } - -g::pr($aRows1);die;*/ -/* GET , POST & $_SESSION Vars */ - -if (! isset( $_GET['PROCESS_UID'] )) { - $oCase = new Cases(); - $rs = ApplicationPeer::doSelectRS( $aCriteria ); - $rs->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - - $aProcess = Array (); - while ($rs->next()) { - $aRow = $rs->getRow(); - //g::pr($aRow); die; - if (! InAssocArray( $aRow, 'PRO_UID', $aRow['PRO_UID'] )) { - array_push( $aProcess, Array ('PRO_UID' => $aRow['PRO_UID'],'PRO_TITLE' => $aRow['APP_PRO_TITLE'] ) ); - } - } - - $_DBArray['_PROCESSES'] = array_merge( Array (Array ('PRO_UID' => 'char','PRO_TITLE' => 'char' ) ), $aProcess ); - $_SESSION['_DBArray'] = $_DBArray; -} else { - $_DBArray = $_SESSION['_DBArray']; -} - -/* Render page */ -$G_PUBLISH = new Publisher(); -$G_PUBLISH->ROWS_PER_PAGE = 12; - -if ($sTypeList == 'to_reassign') { - $G_PUBLISH->AddContent( 'xmlform', 'xmlform', 'cases/cases_ReassignBy', '', array ('REASSIGN_BY' => 1 ) ); -} - -$aData = Array ('PROCESS_FILTER' => $PRO_UID,'APP_STATUS_FILTER' => (isset( $_GET['APP_STATUS_FILTER'] ) ? $_GET['APP_STATUS_FILTER'] : '0') -); - -$G_PUBLISH->AddContent( 'propeltable', 'paged-table', $xmlfile, $aCriteria, $aData ); - -G::RenderPage( 'publish', 'blank' ); - -function InAssocArray ($a, $k, $v) -{ - foreach ($a as $item) { - if (isset( $item[$k] ) && $v == $item[$k]) { - return true; - } - } - return false; -} - -?> - -getConditionCasesList( 'to_do', $sUserToReassign ); - list ($oCriteriaDraft, $sXMLFile) = $oCases->getConditionCasesList( 'draft', $sUserToReassign ); + $oAppCache = new AppCacheView(); + + $oCriteriaToDo = $oAppCache->getToDoListCriteria($sUserToReassign); + $oCriteriaDraft = $oAppCache->getDraftListCriteria($sUserToReassign); $aCasesList = Array (); diff --git a/workflow/engine/methods/cases/cases_SaveData.php b/workflow/engine/methods/cases/cases_SaveData.php index 59826c77b..8586c5335 100755 --- a/workflow/engine/methods/cases/cases_SaveData.php +++ b/workflow/engine/methods/cases/cases_SaveData.php @@ -39,7 +39,7 @@ try { //Load the variables $oCase = new Cases(); - $oCase->thisIsTheCurrentUser( $_SESSION["APPLICATION"], $_SESSION["INDEX"], $_SESSION["USER_LOGGED"], "REDIRECT", "cases_List" ); + $oCase->thisIsTheCurrentUser( $_SESSION["APPLICATION"], $_SESSION["INDEX"], $_SESSION["USER_LOGGED"], "REDIRECT", "casesListExtJs" ); $Fields = $oCase->loadCase( $_SESSION["APPLICATION"] ); $Fields["APP_DATA"] = array_merge( $Fields["APP_DATA"], G::getSystemConstants() ); diff --git a/workflow/engine/methods/cases/cases_SaveDocument.php b/workflow/engine/methods/cases/cases_SaveDocument.php index 21f64884f..5e37770ea 100755 --- a/workflow/engine/methods/cases/cases_SaveDocument.php +++ b/workflow/engine/methods/cases/cases_SaveDocument.php @@ -69,7 +69,7 @@ $appDocComment = (isset($_POST["form"]["APP_DOC_COMMENT"]))? $_POST["form"]["APP $actionType = $_POST["form"]["actionType"]; $case = new Cases(); -$case->thisIsTheCurrentUser($_SESSION["APPLICATION"], $_SESSION["INDEX"], $_SESSION["USER_LOGGED"], "REDIRECT", "cases_List"); +$case->thisIsTheCurrentUser($_SESSION["APPLICATION"], $_SESSION["INDEX"], $_SESSION["USER_LOGGED"], "REDIRECT", "casesListExtJs"); //Load the fields $arrayField = $case->loadCase($_SESSION["APPLICATION"]); diff --git a/workflow/engine/methods/cases/cases_Step.php b/workflow/engine/methods/cases/cases_Step.php index 31d8f0328..92d484498 100755 --- a/workflow/engine/methods/cases/cases_Step.php +++ b/workflow/engine/methods/cases/cases_Step.php @@ -160,7 +160,7 @@ if (isset( $_GET['breakpoint'] )) { #end trigger debug session....... -//$oCase->thisIsTheCurrentUser($_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['USER_LOGGED'], 'REDIRECT', 'cases_List'); +//$oCase->thisIsTheCurrentUser($_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['USER_LOGGED'], 'REDIRECT', 'casesListExtJs'); //Save data - Start diff --git a/workflow/engine/methods/inputdocs/inputdocs_Save.php b/workflow/engine/methods/inputdocs/inputdocs_Save.php index 0bbcc6554..4daa9be8d 100755 --- a/workflow/engine/methods/inputdocs/inputdocs_Save.php +++ b/workflow/engine/methods/inputdocs/inputdocs_Save.php @@ -36,16 +36,17 @@ try { break; } + $sfunction = ''; if (isset( $_POST['function'] )) { $sfunction = $_POST['function']; - } else { + } elseif (isset( $_POST['functions'] )){ $sfunction = $_POST['functions']; - } - + } + // Bootstrap::mylog("post:".$_POST['function']); switch ($sfunction) { case 'lookForNameInput': - require_once ('classes/model/Content.php'); - require_once ("classes/model/InputDocument.php"); + //require_once ('classes/model/Content.php'); + //require_once ("classes/model/InputDocument.php"); $snameInput = urldecode( $_POST['NAMEINPUT'] ); $sPRO_UID = urldecode( $_POST['proUid'] ); @@ -77,7 +78,7 @@ try { print $flag; break; default: - require_once 'classes/model/InputDocument.php'; + //require_once 'classes/model/InputDocument.php'; G::LoadClass( 'processMap' ); $oInputDocument = new InputDocument(); diff --git a/workflow/engine/methods/mails/emailList.php b/workflow/engine/methods/mails/emailList.php new file mode 100644 index 000000000..590122672 --- /dev/null +++ b/workflow/engine/methods/mails/emailList.php @@ -0,0 +1,90 @@ +. + * + * For more information, contact Colosa Inc, 2566 Le Jeune Rd., + * Coral Gables, FL, 33134, USA, or email info@colosa.com. + */ + +global $RBAC; +if ($RBAC->userCanAccess( 'PM_SETUP_ADVANCE' ) != 1) { + G::SendTemporalMessage( 'ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels' ); + G::header( 'location: ../login/login' ); + die(); +} + +G::LoadClass( 'configuration' ); +$c = new Configurations(); +$configPage = $c->getConfiguration( 'eventList', 'pageSize', '', $_SESSION['USER_LOGGED'] ); +$Config['pageSize'] = isset( $configPage['pageSize'] ) ? $configPage['pageSize'] : 20; + +$G_MAIN_MENU = 'processmaker'; +$G_SUB_MENU = 'logs'; +$G_ID_MENU_SELECTED = 'logs'; +$G_ID_SUB_MENU_SELECTED = 'EMAILS'; + +//get values for the comboBoxes +$userUid = (isset( $_SESSION['USER_LOGGED'] ) && $_SESSION['USER_LOGGED'] != '') ? $_SESSION['USER_LOGGED'] : null; +$status = array ( + array ('',G::LoadTranslation( 'ID_ALL' )), + array ("sent", "Sent"), + array ("pending", "Pending") +); + +$processes = getProcessArray( $userUid ); + +$G_PUBLISH = new Publisher(); + +$oHeadPublisher = & headPublisher::getSingleton(); +$oHeadPublisher->addExtJsScript( 'mails/emailList', false ); //adding a javascript file .js +$oHeadPublisher->addContent( 'mails/emailList' ); //adding a html file .html. +//sending the columns to display in grid +$oHeadPublisher->assign( 'statusValues', $status ); +$oHeadPublisher->assign( 'processValues', $processes ); + +function getProcessArray ($userUid) +{ + global $oAppCache; + require_once ("classes/model/AppCacheView.php"); + + $processes = Array (); + $processes[] = array ('',G::LoadTranslation( 'ID_ALL_PROCESS' )); + + $cProcess = new Criteria( 'workflow' ); + $cProcess->clearSelectColumns(); + $cProcess->addSelectColumn( AppCacheViewPeer::PRO_UID ); + $cProcess->addSelectColumn( AppCacheViewPeer::APP_PRO_TITLE ); + $cProcess->setDistinct( AppCacheViewPeer::PRO_UID ); + + $cProcess->addAscendingOrderByColumn( AppCacheViewPeer::APP_PRO_TITLE ); + + $oDataset = AppCacheViewPeer::doSelectRS( $cProcess ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + + while ($aRow = $oDataset->getRow()) { + $processes[] = array ($aRow['PRO_UID'],$aRow['APP_PRO_TITLE']); + $oDataset->next(); + } + + return $processes; +} + +G::RenderPage( 'publish', 'extJs' ); + diff --git a/workflow/engine/methods/mails/emailsAjax.php b/workflow/engine/methods/mails/emailsAjax.php new file mode 100644 index 000000000..588761d33 --- /dev/null +++ b/workflow/engine/methods/mails/emailsAjax.php @@ -0,0 +1,154 @@ +status = 'OK'; + + $criteria = new Criteria(); + $criteria->addJoin(AppMessagePeer::APP_UID, ApplicationPeer::APP_UID); + if ($emailStatus != '') { + $criteria->add( AppMessagePeer::APP_MSG_STATUS, $emailStatus, Criteria::LESS_EQUAL ); + } + if ($proUid != '') { + $criteria->add( ApplicationPeer::PRO_UID, $proUid); + } + if ($dateFrom != '') { + if ($dateTo != '') { + $criteria->add( $criteria->getNewCriterion( AppMessagePeer::APP_MSG_DATE, $dateFrom, Criteria::GREATER_EQUAL )->addAnd( $criteria->getNewCriterion( AppMessagePeer::APP_MSG_DATE, $dateTo, Criteria::LESS_EQUAL ) ) ); + } else { + $criteria->add( AppMessagePeer::APP_MSG_DATE, $dateFrom, Criteria::GREATER_EQUAL ); + } + } elseif ($dateTo != '') { + $criteria->add( AppMessagePeer::APP_MSG_DATE, $dateTo, Criteria::LESS_EQUAL ); + } + + $result = AppMessagePeer::doSelectRS($criteria); + $result->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $data = Array(); + while ( $result->next() ) { + $data[] = $result->getRow(); + } + $totalCount = count($data); + + $criteria = new Criteria(); + $criteria->addSelectColumn(AppMessagePeer::APP_MSG_UID); + $criteria->addSelectColumn(AppMessagePeer::APP_UID); + $criteria->addSelectColumn(AppMessagePeer::DEL_INDEX); + $criteria->addSelectColumn(AppMessagePeer::APP_MSG_TYPE); + $criteria->addSelectColumn(AppMessagePeer::APP_MSG_SUBJECT); + $criteria->addSelectColumn(AppMessagePeer::APP_MSG_FROM); + + $criteria->addSelectColumn(AppMessagePeer::APP_MSG_TO); + $criteria->addSelectColumn(AppMessagePeer::APP_MSG_BODY); + $criteria->addSelectColumn(AppMessagePeer::APP_MSG_STATUS); + $criteria->addSelectColumn(AppMessagePeer::APP_MSG_DATE); + $criteria->addSelectColumn(AppMessagePeer::APP_MSG_SEND_DATE); + $criteria->addSelectColumn(AppMessagePeer::APP_MSG_SHOW_MESSAGE); + + $criteria->addSelectColumn(ApplicationPeer::PRO_UID); + + $criteria->addAsColumn('PRO_TITLE', 'C2.CON_VALUE'); + $criteria->addAlias('C2', 'CONTENT'); + + if ($emailStatus != '') { + $criteria->add( AppMessagePeer::APP_MSG_STATUS, $emailStatus, Criteria::LESS_EQUAL ); + } + if ($proUid != '') { + $criteria->add( ApplicationPeer::PRO_UID, $proUid); + } + if ($dateFrom != '') { + if ($dateTo != '') { + $criteria->add( $criteria->getNewCriterion( AppMessagePeer::APP_MSG_DATE, $dateFrom, Criteria::GREATER_EQUAL )->addAnd( $criteria->getNewCriterion( AppMessagePeer::APP_MSG_DATE, $dateTo, Criteria::LESS_EQUAL ) ) ); + } else { + $criteria->add( AppMessagePeer::APP_MSG_DATE, $dateFrom, Criteria::GREATER_EQUAL ); + } + } elseif ($dateTo != '') { + $criteria->add( AppMessagePeer::APP_MSG_DATE, $dateTo, Criteria::LESS_EQUAL ); + } + + if ($sort != '') { + if ($dir == 'ASC') { + $criteria->addAscendingOrderByColumn($sort); + } else { + $criteria->addDescendingOrderByColumn($sort); + } + } else { + $oCriteria->addDescendingOrderByColumn(AppMessagePeer::APP_MSG_SEND_DATE ); + } + if ($limit != '') { + $criteria->setLimit($limit); + $criteria->setOffset($start); + } + $criteria->addJoin(AppMessagePeer::APP_UID, ApplicationPeer::APP_UID); + + $conditions = array(); + $conditions[] = array(ApplicationPeer::PRO_UID, 'C2.CON_ID'); + $conditions[] = array( + 'C2.CON_CATEGORY', DBAdapter::getStringDelimiter() . 'PRO_TITLE' . DBAdapter::getStringDelimiter() + ); + $conditions[] = array( + 'C2.CON_LANG', DBAdapter::getStringDelimiter() . SYS_LANG . DBAdapter::getStringDelimiter() + ); + $criteria->addJoinMC($conditions, Criteria::LEFT_JOIN); + $result = AppMessagePeer::doSelectRS($criteria); + $result->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $data = Array(); + $dataPro = array(); + $index = 0; + $content = new Content(); + $tasTitleDefault = G::LoadTranslation('ID_TASK_NOT_RELATED'); + while ( $result->next() ) { + + $row = $result->getRow(); + $row['APP_MSG_FROM'] =htmlentities($row['APP_MSG_FROM'], ENT_QUOTES, "UTF-8"); + $row['APP_MSG_STATUS'] = ucfirst ( $row['APP_MSG_STATUS']); + $row['TAS_TITLE'] = $tasTitleDefault; + if ($row['DEL_INDEX'] != 0) { + $criteria = new Criteria(); + $criteria->addSelectColumn(AppDelegationPeer::PRO_UID); + $criteria->addSelectColumn(AppDelegationPeer::TAS_UID); + $criteria->addSelectColumn(AppDelegationPeer::DEL_INDEX); + $criteria->add(AppDelegationPeer::APP_UID, $row['APP_UID']); + $resultDelegation = AppDelegationPeer::doSelectRS($criteria); + $resultDelegation->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $row['TAS_TITLE'] = '-'; + while ($resultDelegation->next()) { + $rowDelegation = $resultDelegation->getRow(); + if ($row['DEL_INDEX'] == $rowDelegation['DEL_INDEX']) { + $row['TAS_TITLE'] = $content->load( 'TAS_TITLE', '', $rowDelegation['TAS_UID'], SYS_LANG ); + break; + } + } + } + + $data[] = $row; + } + $response = array(); + $response['totalCount'] = $totalCount; + $response['data'] = $data; + die(G::json_encode($response)); + break; + case 'updateStatusMessage': + if (isset($_REQUEST['APP_MSG_UID']) && isset($_REQUEST['APP_MSG_STATUS'])) { + $message = new AppMessage(); + $result = $message->updateStatus($_REQUEST['APP_MSG_UID'], $_REQUEST['APP_MSG_STATUS']); + } + break; +} + diff --git a/workflow/engine/templates/cases/casesDocuments.js b/workflow/engine/templates/cases/casesDocuments.js index 5f63c06d7..6574c617a 100755 --- a/workflow/engine/templates/cases/casesDocuments.js +++ b/workflow/engine/templates/cases/casesDocuments.js @@ -118,8 +118,8 @@ function chDir( directory, loadGridOnly ) { if( directory == '' || conn && !conn.isLoading()) { datastore.load({ params:{ - start:0, - limit:25, + start: 0, + limit: 100, dir: directory, node: directory, option:'gridDocuments', @@ -737,8 +737,8 @@ datastore = new Ext.data.Store({ url : "../appFolder/appFolderAjax.php", directory : "/", params : { - start : 0, - limit : 25, + start: 0, + limit: 100, dir : this.directory, node : this.directory, option : "gridDocuments", @@ -1082,11 +1082,11 @@ function filterDataStore(btn, e) { } // add a paging toolbar to the grid's footer var gridbb = new Ext.PagingToolbar({ - store : datastore, - pageSize : 25 , - displayInfo : true, - // displayMsg : '% % %', - emptyMsg : TRANSLATIONS.ID_DISPLAY_EMPTY, + store: datastore, + pageSize: 100, + displayInfo: true, + displayMsg: _("ID_DISPLAY_TOTAL"), + emptyMsg: _("ID_DISPLAY_EMPTY"), beforePageText : TRANSLATIONS.ID_PAGE, // afterPageText : 'of %', firstText : TRANSLATIONS.ID_FIRST, @@ -1299,8 +1299,8 @@ function loadDir() { // console.trace(); datastore.load({ params : { - start : 0, - limit : 25, + start: 0, + limit: 100, dir : datastore.directory, node : datastore.directory, option : 'gridDocuments', diff --git a/workflow/engine/templates/mails/emailList.html b/workflow/engine/templates/mails/emailList.html new file mode 100644 index 000000000..432f567b5 --- /dev/null +++ b/workflow/engine/templates/mails/emailList.html @@ -0,0 +1,3 @@ +
+
+
diff --git a/workflow/engine/templates/mails/emailList.js b/workflow/engine/templates/mails/emailList.js new file mode 100644 index 000000000..02cfc145f --- /dev/null +++ b/workflow/engine/templates/mails/emailList.js @@ -0,0 +1,352 @@ +/* + * @author: Marco Antonio + * Agos 17st, 2012 + */ +new Ext.KeyMap(document, [{ + key: Ext.EventObject.F5, + fn: function(keycode, e) { + if (! e.ctrlKey) { + if (Ext.isIE) { + // IE6 doesn't allow cancellation of the F5 key, so trick it into + // thinking some other key was pressed (backspace in this case) + e.browserEvent.keyCode = 8; + } + e.stopEvent(); + document.location = document.location; + } else { + Ext.Msg.alert('Refresh', 'You clicked: CTRL-F5'); + } + } +} +]); + +var store; +var cmodel; +var emailsGrid; +var actions; +var filterStatus = ''; + +Ext.onReady(function(){ + Ext.QuickTips.init(); + var resultTpl = new Ext.XTemplate( + '
', + ' {APP_PRO_TITLE}', + '
' + ); + + var columnRenderer = function(data, metadata, record, rowIndex,columnIndex, store) { + var new_text = metadata.style.split(';'); + var style = ''; + for (var i = 0; i < new_text.length -1 ; i++) { + var chain = new_text[i] +";"; + if (chain.indexOf('width') == -1) { + style = style + chain; + } + } + metadata.attr = 'ext:qtip="' + data + '" style="'+ style +' white-space: normal; "'; + return data; + }; + + var dateFrom = new Ext.form.DateField({ + id:'dateFrom', + format: 'Y-m-d', + width: 120, + value: '' + }); + + var dateTo = new Ext.form.DateField({ + id:'dateTo', + format: 'Y-m-d', + width: 120, + value: '' + }); + + // ComboBox Status + var comboStatus = new Ext.form.ComboBox({ + width : 90, + boxMaxWidth : 90, + editable : false, + mode : 'local', + emptyText: _('ID_SELECT_STATUS'), + store : new Ext.data.ArrayStore({ + fields: ['id', 'value'], + data : statusValues + }), + valueField : 'id', + displayField : 'value', + triggerAction : 'all', + listeners:{ + scope: this, + 'select': function() { + filterStatus = comboStatus.value; + store.setBaseParam( 'status', filterStatus); + store.setBaseParam( 'start', 0); + store.setBaseParam( 'limit', 25); + store.load(); + } + }, + iconCls: 'no-icon' + }); + + var comboProcess = new Ext.form.ComboBox({ + width : 200, + boxMaxWidth : 200, + editable : true, + displayField : 'APP_PRO_TITLE', + valueField : 'PRO_UID', + forceSelection: false, + emptyText: _('ID_EMPTY_PROCESSES'), + selectOnFocus: true, + tpl: resultTpl, + + typeAhead: true, + mode: 'local', + autocomplete: true, + triggerAction: 'all', + + store : new Ext.data.ArrayStore({ + fields : ['PRO_UID','APP_PRO_TITLE'], + data : processValues + }), + listeners:{ + scope: this, + 'select': function() { + filterProcess = comboProcess.value; + + store.setBaseParam('process', filterProcess); + store.setBaseParam( 'start', 0); + store.setBaseParam( 'limit', 25); + store.load(); + }}, + iconCls: 'no-icon' + }); + + actions = _addPluginActions([ {xtype: 'tbfill'}, _('ID_PROCESS'), comboProcess, '-', _('ID_STATUS'), comboStatus, _('ID_DELEGATE_DATE_FROM'), + + dateFrom, + ' ', + _('ID_TO'), + dateTo, + new Ext.Button ({ + text: _('ID_FILTER_BY_DELEGATED_DATE'), + handler: function(){ + store.setBaseParam('dateFrom', dateFrom.getValue()); + store.setBaseParam('dateTo', dateTo.getValue()); + store.load({params:{ start : 0 , limit : 25 }}); + } + }) + ]); + + var stepsFields = Ext.data.Record.create([ + {name : 'APP_MSG_TYPE', type: 'string'}, + {name : 'APP_MSG_FROM', type: 'string'}, + {name : 'APP_MSG_TO', type: 'string'}, + {name : 'APP_MSG_DATE', type: 'string'}, + {name : 'APP_MSG_STATUS', type: 'string'} + + ]); + + store = new Ext.data.Store( { + proxy : new Ext.data.HttpProxy({ + url: 'emailsAjax?request=MessageList' + }), + remoteSort : true, + sortInfo : stepsFields, + reader : new Ext.data.JsonReader( { + root: 'data', + totalProperty: 'totalCount', + fields : [ + {name : 'APP_MSG_UID'}, + {name : 'APP_UID'}, + {name : 'DEL_INDEX'}, + {name : 'PRO_UID'}, + {name : 'TAS_UID'}, + {name : 'PRO_TITLE'}, + {name : 'TAS_TITLE'}, + {name : 'APP_MSG_TYPE'}, + {name : 'APP_MSG_SUBJECT'}, + {name : 'APP_MSG_FROM'}, + {name : 'APP_MSG_TO'}, + {name : 'APP_MSG_STATUS'}, + {name : 'APP_MSG_DATE'}, + {name : 'APP_MSG_SEND_DATE'}, + {name : 'APP_MSG_BODY'} + ] + }) + }); + store.setDefaultSort('APP_MSG_DATE', 'desc'); + + var expander = new Ext.ux.grid.RowExpander({ + tpl : new Ext.Template( + "
"+ + _('ID_PREVIEW')+ + ":
"+ + "
"+ + "
 
"+ + "
{APP_MSG_BODY}
"+ + "
 
"+ + "
"+ + "

" + ) + }); + + var statusValuesGrid = statusValues; + statusValuesGrid.splice( 0, 1 ); + cmodel = new Ext.grid.ColumnModel({ + viewConfig: { + forceFit:true, + cls:"x-grid-empty", + emptyText: _('ID_NO_RECORDS_FOUND') + }, + defaults: { + width: 50 + }, + columns: [ + expander, + {id:'APP_MSG_UID', dataIndex: 'APP_MSG_UID', hidden:true, hideable:false}, + {header: 'APP_UID', dataIndex: 'APP_UID', hidden:true, hideable:false}, + {header: 'DEL_INDEX', dataIndex: 'DEL_INDEX', hidden:true, hideable:false}, + {header: 'PRO_UID', dataIndex: 'PRO_UID', hidden:true, hideable:false, sortable: false}, + {header: 'TAS_UID', dataIndex: 'TAS_UID', hidden:true, hideable:false, sortable: false}, + {header: _('ID_PROCESS'), dataIndex: 'PRO_TITLE', width: 100, hidden: false,renderer: columnRenderer, sortable: false}, + {header: _('ID_TASK'), dataIndex: 'TAS_TITLE', width: 100, hidden: false,renderer: columnRenderer, sortable: false}, + {header: _('ID_TYPE'), dataIndex: 'APP_MSG_TYPE', width: 50, hidden: false,renderer: columnRenderer, sortable: true}, + {header: _('ID_DATE_LABEL'), dataIndex: 'APP_MSG_DATE', width: 80,hidden:false, renderer: columnRenderer, sortable: true}, + {header: _('ID_SUBJECT'), dataIndex: 'APP_MSG_SUBJECT', width: 80,hidden:false, renderer: columnRenderer, sortable: true}, + {header: _('ID_FROM'), dataIndex: 'APP_MSG_FROM', width: 80,hidden:false,renderer: columnRenderer, sortable: true}, + {header: _('ID_TO'), dataIndex: 'APP_MSG_TO', width: 80,hidden:false,renderer: columnRenderer, sortable: true}, + + { + header: _('ID_STATUS'), + dataIndex: 'APP_MSG_STATUS', + width: 50, + renderer: columnRenderer, + editor: new Ext.form.ComboBox({ + listClass: 'x-combo-list-small', + mode: 'local', + displayField:'value', + lazyRender: true, + triggerAction: 'all', + valueField:'id', + editable: false, + store: new Ext.data.ArrayStore({ + fields: ['id', 'value'], + data : statusValuesGrid + }), + listeners: { + select: function(a, b) { + var row = emailsGrid.getSelectionModel().getSelected(); + Ext.MessageBox.show({ msg: _('ID_PROCESSING'), wait:true,waitConfig: {interval:200} }); + Ext.Ajax.request({ + url : 'emailsAjax' , + params : { + request : 'updateStatusMessage', + APP_MSG_UID: row.data.APP_MSG_UID, + APP_MSG_STATUS: this.value + }, + success: function ( result, request ) { + Ext.MessageBox.hide(); + }, + failure: function ( result, request) { + if (typeof(result.responseText) != 'undefined') { + Ext.MessageBox.alert(_('ID_FAILED'), result.responseText); + } + } + }); + } + } + }) + } + ] + }); + + smodel = new Ext.grid.RowSelectionModel({ + singleSelect: true + }); + + bbarpaging = new Ext.PagingToolbar({ + pageSize : 25, + store : store, + displayInfo : true, + displayMsg : _('ID_GRID_PAGE_DISPLAYING_EMAIL_MESSAGE') + '    ', + emptyMsg : _('ID_GRID_PAGE_NO_EMAIL_MESSAGE') + }); + + emailsGrid = new Ext.grid.EditorGridPanel({ + region: 'center', + layout: 'fit', + id: 'emailsGrid', + height:100, + autoWidth : true, + stateful : true, + stateId : 'grid', + enableColumnResize: true, + enableHdMenu: true, + frame:false, + columnLines: false, + viewConfig: { + forceFit:true + }, + clicksToEdit: 1, + title : _('ID_EMAILS'), + store: store, + cm: cmodel, + sm: smodel, + tbar: actions, + bbar: bbarpaging, + plugins: expander, + listeners: { + render: function(){ + this.loadMask = new Ext.LoadMask(this.body, {msg:_('ID_LOADING_GRID')}); + } + } + }); + + emailsGrid.store.load(); + + viewport = new Ext.Viewport({ + layout: 'fit', + autoScroll: false, + items: [ + emailsGrid + ] + }); + }); + +var _addPluginActions = function(defaultactions) { + try { + if (Ext.isArray(_pluginactions)) { + if (_pluginactions.length > 0) { + var positionToInsert = _tbfillPosition(defaultactions); + var leftactions = defaultactions.slice(0, positionToInsert); + var rightactions = defaultactions.slice(positionToInsert, defaultactions.length - 1); + return leftactions.concat(_pluginactions.concat(rightactions)); + } + else { + return defaultactions; + } + } + else { + return defaultactions; + } + } + catch (error) { + return defaultactions; + } +}; + +var _tbfillPosition = function(actions) { + try { + for (var i = 0; i < actions.length; i++) { + if (Ext.isObject(actions[i])) { + if (actions[i].xtype == 'tbfill') { + return i; + } + } + } + return i; + } + catch (error) { + return 0; + } +}; \ No newline at end of file diff --git a/workflow/engine/templates/setup/cron.js b/workflow/engine/templates/setup/cron.js index cff5c4382..6c793923e 100644 --- a/workflow/engine/templates/setup/cron.js +++ b/workflow/engine/templates/setup/cron.js @@ -61,17 +61,19 @@ cron.application = { { var record = grdpnlMain.getSelectionModel().getSelected(); - var strData = "" + _("ID_DATE_LABEL") + "
" + record.get("DATE") + "
"; - strData = strData + "" + _("ID_WORKSPACE") + "
" + record.get("WORKSPACE") + "
"; - strData = strData + "" + _("ID_ACTION") + "
" + record.get("ACTION") + "
"; - strData = strData + "" + _("ID_STATUS") + "
" + record.get("STATUS") + "
"; - strData = strData + "" + _("ID_DESCRIPTION") + "
" + record.get("DESCRIPTION") + "
"; + if (typeof record != "undefined") { + var strData = "" + _("ID_DATE_LABEL") + "
" + record.get("DATE") + "
"; + strData = strData + "" + _("ID_WORKSPACE") + "
" + record.get("WORKSPACE") + "
"; + strData = strData + "" + _("ID_ACTION") + "
" + record.get("ACTION") + "
"; + strData = strData + "" + _("ID_STATUS") + "
" + record.get("STATUS") + "
"; + strData = strData + "" + _("ID_DESCRIPTION") + "
" + record.get("DESCRIPTION") + "
"; - var formItems = Ext.getCmp("frmLogView").form.items; - formItems.items[0].setValue(strData); + var formItems = Ext.getCmp("frmLogView").form.items; + formItems.items[0].setValue(strData); - winLog.setTitle("Log - " + _("ID_WORKSPACE") + " " + record.get("WORKSPACE")); - winLog.show(); + winLog.setTitle("Log - " + _("ID_WORKSPACE") + " " + record.get("WORKSPACE")); + winLog.show(); + } } //Variables @@ -233,7 +235,7 @@ cron.application = { var btnInfoView = new Ext.Action({ id: "btnInfoView", - text: _("ID_VIEW_INFO"), + text: _("ID_CRON_INFO"), iconCls: "button_menu_ext ss_sprite ss_zoom", handler: function () @@ -456,4 +458,5 @@ cron.application = { } } -Ext.onReady(cron.application.init, cron.application); \ No newline at end of file +Ext.onReady(cron.application.init, cron.application); +