diff --git a/workflow/engine/bin/cron_single.php b/workflow/engine/bin/cron_single.php index 0e8b450fa..4446f633a 100755 --- a/workflow/engine/bin/cron_single.php +++ b/workflow/engine/bin/cron_single.php @@ -482,6 +482,8 @@ function saveLog($sSource, $sType, $sDescription) G::verifyPath(PATH_DATA . 'log' . PATH_SEP, true); + //setExecutionMessage( PATH_DATA."log".PATH_SEP); + if ($sType == 'action') { $oFile = @fopen(PATH_DATA . 'log' . PATH_SEP . 'cron.log', 'a+'); } else { diff --git a/workflow/engine/classes/model/AppEvent.php b/workflow/engine/classes/model/AppEvent.php index c282e6432..ac791e4b2 100755 --- a/workflow/engine/classes/model/AppEvent.php +++ b/workflow/engine/classes/model/AppEvent.php @@ -113,72 +113,80 @@ class AppEvent extends BaseAppEvent { } } - function getAppEventsCriteria($sProcessUid, $sStatus = '', $EVN_ACTION='') { - try { - require_once 'classes/model/Event.php'; - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(AppEventPeer::APP_UID); - $oCriteria->addSelectColumn(AppEventPeer::DEL_INDEX); - $oCriteria->addSelectColumn(AppEventPeer::EVN_UID); - $oCriteria->addSelectColumn(AppEventPeer::APP_EVN_ACTION_DATE); - $oCriteria->addSelectColumn(AppEventPeer::APP_EVN_ATTEMPTS); - $oCriteria->addSelectColumn(AppEventPeer::APP_EVN_LAST_EXECUTION_DATE); - $oCriteria->addSelectColumn(AppEventPeer::APP_EVN_STATUS); - $oCriteria->addSelectColumn(EventPeer::PRO_UID); - $oCriteria->addSelectColumn(EventPeer::EVN_WHEN_OCCURS); - $oCriteria->addSelectColumn(EventPeer::EVN_ACTION); - $oCriteria->addAsColumn('EVN_DESCRIPTION', 'C1.CON_VALUE'); - $oCriteria->addAsColumn('TAS_TITLE', 'C2.CON_VALUE'); - $oCriteria->addAsColumn('APP_TITLE', 'C3.CON_VALUE'); - $oCriteria->addAlias('C1', 'CONTENT'); - $oCriteria->addAlias('C2', 'CONTENT'); - $oCriteria->addAlias('C3', 'CONTENT'); - $oCriteria->addJoin(AppEventPeer::EVN_UID, EventPeer::EVN_UID, Criteria::LEFT_JOIN); - $del = DBAdapter::getStringDelimiter(); - $aConditions = array(); - $aConditions[] = array(EventPeer::EVN_UID, 'C1.CON_ID'); - $aConditions[] = array('C1.CON_CATEGORY', $del . 'EVN_DESCRIPTION' . $del); - $aConditions[] = array('C1.CON_LANG', $del . SYS_LANG . $del); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $aConditions = array(); - $aConditions[] = array(AppEventPeer::APP_UID, AppDelegationPeer::APP_UID); - $aConditions[] = array(AppEventPeer::DEL_INDEX, AppDelegationPeer::DEL_INDEX); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $aConditions = array(); - $aConditions[] = array(AppDelegationPeer::TAS_UID, 'C2.CON_ID'); - $aConditions[] = array('C2.CON_CATEGORY', $del . 'TAS_TITLE' . $del); - $aConditions[] = array('C2.CON_LANG', $del . SYS_LANG . $del); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $aConditions = array(); - $aConditions[] = array(AppDelegationPeer::APP_UID, 'C3.CON_ID'); - $aConditions[] = array('C3.CON_CATEGORY', $del . 'APP_TITLE' . $del); - $aConditions[] = array('C3.CON_LANG', $del . SYS_LANG . $del); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(AppEventPeer::EVN_UID, '', Criteria::NOT_EQUAL); - $oCriteria->add(EventPeer::PRO_UID, $sProcessUid); - - if($EVN_ACTION != ''){ - $oCriteria->add(EventPeer::EVN_ACTION, $EVN_ACTION); - } - - switch ($sStatus) { - case '': - //Nothing - break; - case 'PENDING': - $oCriteria->add(AppEventPeer::APP_EVN_STATUS, 'OPEN'); - break; - case 'COMPLETED': - $oCriteria->add(AppEventPeer::APP_EVN_STATUS, 'CLOSE'); - break; - } - $oCriteria->addDescendingOrderByColumn(AppEventPeer::APP_EVN_ACTION_DATE); - return $oCriteria; + function getAppEventsCriteria($sProcessUid='', $sStatus = '', $EVN_ACTION='') { + try { + require_once 'classes/model/Event.php'; + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(AppEventPeer::APP_UID); + $oCriteria->addSelectColumn(AppEventPeer::DEL_INDEX); + $oCriteria->addSelectColumn(AppEventPeer::EVN_UID); + $oCriteria->addSelectColumn(AppEventPeer::APP_EVN_ACTION_DATE); + $oCriteria->addSelectColumn(AppEventPeer::APP_EVN_ATTEMPTS); + $oCriteria->addSelectColumn(AppEventPeer::APP_EVN_LAST_EXECUTION_DATE); + $oCriteria->addSelectColumn(AppEventPeer::APP_EVN_STATUS); + $oCriteria->addSelectColumn(EventPeer::PRO_UID); + $oCriteria->addSelectColumn(EventPeer::EVN_WHEN_OCCURS); + $oCriteria->addSelectColumn(EventPeer::EVN_ACTION); + $oCriteria->addAsColumn('EVN_DESCRIPTION', 'C1.CON_VALUE'); + $oCriteria->addAsColumn('TAS_TITLE', 'C2.CON_VALUE'); + $oCriteria->addAsColumn('APP_TITLE', 'C3.CON_VALUE'); + $oCriteria->addAsColumn('PRO_TITLE', 'C4.CON_VALUE'); + $oCriteria->addAlias('C1', 'CONTENT'); + $oCriteria->addAlias('C2', 'CONTENT'); + $oCriteria->addAlias('C3', 'CONTENT'); + $oCriteria->addAlias('C4', 'CONTENT'); + $oCriteria->addJoin(AppEventPeer::EVN_UID, EventPeer::EVN_UID, Criteria::LEFT_JOIN); + $del = DBAdapter::getStringDelimiter(); + $aConditions = array(); + $aConditions[] = array(EventPeer::EVN_UID, 'C1.CON_ID'); + $aConditions[] = array('C1.CON_CATEGORY', $del . 'EVN_DESCRIPTION' . $del); + $aConditions[] = array('C1.CON_LANG', $del . SYS_LANG . $del); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $aConditions = array(); + $aConditions[] = array(AppEventPeer::APP_UID, AppDelegationPeer::APP_UID); + $aConditions[] = array(AppEventPeer::DEL_INDEX, AppDelegationPeer::DEL_INDEX); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $aConditions = array(); + $aConditions[] = array(AppDelegationPeer::TAS_UID, 'C2.CON_ID'); + $aConditions[] = array('C2.CON_CATEGORY', $del . 'TAS_TITLE' . $del); + $aConditions[] = array('C2.CON_LANG', $del . SYS_LANG . $del); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $aConditions = array(); + $aConditions[] = array(AppDelegationPeer::APP_UID, 'C3.CON_ID'); + $aConditions[] = array('C3.CON_CATEGORY', $del . 'APP_TITLE' . $del); + $aConditions[] = array('C3.CON_LANG', $del . SYS_LANG . $del); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $aConditions = array(); + $aConditions[] = array(AppDelegationPeer::PRO_UID, 'C4.CON_ID'); + $aConditions[] = array('C4.CON_CATEGORY', $del . 'PRO_TITLE' . $del); + $aConditions[] = array('C4.CON_LANG', $del . SYS_LANG . $del); + + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(AppEventPeer::EVN_UID, '', Criteria::NOT_EQUAL); + if($sProcessUid != ''){ + $oCriteria->add(EventPeer::PRO_UID, $sProcessUid); + } + if($EVN_ACTION != ''){ + $oCriteria->add(EventPeer::EVN_ACTION, $EVN_ACTION); + } + switch ($sStatus) { + case '': + //Nothing + break; + case 'PENDING': + $oCriteria->add(AppEventPeer::APP_EVN_STATUS, 'OPEN'); + break; + case 'COMPLETED': + $oCriteria->add(AppEventPeer::APP_EVN_STATUS, 'CLOSE'); + break; + } + //$oCriteria->addDescendingOrderByColumn(AppEventPeer::APP_EVN_ACTION_DATE); + return $oCriteria; + } + catch (Exception $oError) { + throw($oError); + } } - catch (Exception $oError) { - throw($oError); - } - } function executeEvents($sNow, $debug=false, &$log=array()) { diff --git a/workflow/engine/classes/model/CaseScheduler.php b/workflow/engine/classes/model/CaseScheduler.php index 63739842d..4ac96a90c 100755 --- a/workflow/engine/classes/model/CaseScheduler.php +++ b/workflow/engine/classes/model/CaseScheduler.php @@ -346,6 +346,8 @@ class CaseScheduler extends BaseCaseScheduler { case '4' : $aRow ['SCH_STATE'] = 'PROCESSED'; break; + case '5' : + break; } @@ -505,7 +507,7 @@ class CaseScheduler extends BaseCaseScheduler { $newCaseLog->saveLogParameters ( $paramsLog ); $newCaseLog->save (); - if ($sOption != '4') { + if ($sOption != '4' && $sOption != '5') { $nSchLastRunTime = $sActualTime; $dEstimatedDate = $this->updateNextRun ( $sOption, $sValue, $sActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths ); @@ -521,12 +523,14 @@ class CaseScheduler extends BaseCaseScheduler { $nSchTimeNextRun = $dEstimatedDate; $this->updateDate ( $sSchedulerUid, $nSchTimeNextRun, $nSchLastRunTime ); - } else { + } elseif($sOption != '5'){ $Fields = $this->Load ( $sSchedulerUid ); $Fields ['SCH_LAST_STATE'] = $aRow ['SCH_STATE']; $Fields ['SCH_LAST_RUN_TIME'] = $Fields ['SCH_TIME_NEXT_RUN']; $Fields ['SCH_STATE'] = 'PROCESSED'; $this->Update ( $Fields ); + } else { + } } else if ($sActualDataHour == $dActualSysHour && $sActualDataMinutes <= $dActualSysMinutes) { @@ -629,7 +633,7 @@ class CaseScheduler extends BaseCaseScheduler { $newCaseLog->saveLogParameters ( $paramsLog ); $newCaseLog->save (); - if ($sOption != '4') { + if ($sOption != '4' && $sOption != '5') { $nSchLastRunTime = $sActualTime; $dEstimatedDate = $this->updateNextRun ( $sOption, $sValue, $sActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths ); @@ -646,12 +650,24 @@ class CaseScheduler extends BaseCaseScheduler { $nSchTimeNextRun = $dEstimatedDate; $this->updateDate ( $sSchedulerUid, $nSchTimeNextRun, $nSchLastRunTime ); - } else { + } elseif ($sOption != '5'){ $Fields = $this->Load ( $sSchedulerUid ); $Fields ['SCH_LAST_STATE'] = $aRow ['SCH_STATE']; $Fields ['SCH_LAST_RUN_TIME'] = $Fields ['SCH_TIME_NEXT_RUN']; $Fields ['SCH_STATE'] = 'PROCESSED'; $this->Update ( $Fields ); + } else { + $nSchLastRunTime = $sActualTime; + $Fields = $this->Load ( $sSchedulerUid ); + $Fields ['SCH_LAST_RUN_TIME'] = $Fields ['SCH_TIME_NEXT_RUN']; + + $nSchTimeNextRun = strtotime($Fields ['SCH_TIME_NEXT_RUN']); + $nextRun = $Fields ['SCH_REPEAT_EVERY']*60*60; + $nSchTimeNextRun += $nextRun; + $nSchTimeNextRun = date("Y-m-d H:i", $nSchTimeNextRun ); + + + $this->updateDate ( $sSchedulerUid, $nSchTimeNextRun, $nSchLastRunTime ); } } diff --git a/workflow/engine/menus/setup.php b/workflow/engine/menus/setup.php index 55228f116..adb669db4 100755 --- a/workflow/engine/menus/setup.php +++ b/workflow/engine/menus/setup.php @@ -58,7 +58,7 @@ if ($RBAC->userCanAccess('PM_SETUP') == 1) { $G_TMP_MENU->AddIdRawOption('PM_TABLES', '../pmTables', G::LoadTranslation('ID_ADDITIONAL_TABLES'), 'icon-tables.png','', 'settings'); $G_TMP_MENU->AddIdRawOption('WEBSERVICES', 'webServices', G::LoadTranslation('ID_WEB_SERVICES'), 'icon-webservices.png', '', 'settings'); - $G_TMP_MENU->AddIdRawOption('LOG_CASE_SCHEDULER', '../cases/cases_Scheduler_Log', G::LoadTranslation('ID_LOG_CASE_SCHEDULER'), "icon-logs-list.png",'', 'settings'); + //$G_TMP_MENU->AddIdRawOption('LOG_CASE_SCHEDULER', '../cases/cases_Scheduler_Log', G::LoadTranslation('ID_LOG_CASE_SCHEDULER'), "icon-logs-list.png",'', 'settings'); $G_TMP_MENU->AddIdRawOption('LOGIN', 'loginSettings', G::LoadTranslation('LOGIN'), "",'', 'settings'); $G_TMP_MENU->AddIdRawOption('DASHBOARD', '../dashboard/dashletsList', ucfirst(G::LoadTranslation('ID_DASHBOARD')), '', '', 'settings'); } @@ -82,4 +82,9 @@ if ($RBAC->userCanAccess('PM_SETUP_ADVANCE') == 1) { $G_TMP_MENU->AddIdRawOption('SYSTEM', '../admin/system', G::LoadTranslation('ID_SYSTEM'), '', '', 'settings'); } +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_LOG_CASE_SCHEDULER'), "icon-logs-list.png",'', 'logs'); +} + diff --git a/workflow/engine/methods/cases/cases_Scheduler_Save.php b/workflow/engine/methods/cases/cases_Scheduler_Save.php index 4be825646..7435a1b1b 100755 --- a/workflow/engine/methods/cases/cases_Scheduler_Save.php +++ b/workflow/engine/methods/cases/cases_Scheduler_Save.php @@ -63,17 +63,19 @@ try { $sOption = $_POST['form']['SCH_OPTION']; $aData['SCH_OPTION'] = $sOption; - if ($_POST['form']['SCH_START_DATE']!=''){ - $sDateTmp = $_POST['form']['SCH_START_DATE']; - } else { - $sDateTmp = date('Y-m-d'); - } - $sTimeTmp = $_POST['form']['SCH_START_TIME']; - $aData['SCH_START_TIME'] = date('Y-m-d', strtotime($sDateTmp)) . ' ' . date('H:i:s', strtotime($sTimeTmp)); - $aData['SCH_START_DATE'] = date('Y-m-d', strtotime($sDateTmp)) . ' ' . date('H:i:s', strtotime($sTimeTmp)); - $nActualTime = $_POST['form']['SCH_START_TIME']; // time(); - // $nActualDate = date("Y-m-d H:i:s", $nActualTime); + + if ($_POST['form']['SCH_START_DATE']!=''){ + $sDateTmp = $_POST['form']['SCH_START_DATE']; + } else { + $sDateTmp = date('Y-m-d'); + } + $sTimeTmp = $_POST['form']['SCH_START_TIME']; + $aData['SCH_START_TIME'] = date('Y-m-d', strtotime($sDateTmp)) . ' ' . date('H:i:s', strtotime($sTimeTmp)); + $aData['SCH_START_DATE'] = date('Y-m-d', strtotime($sDateTmp)) . ' ' . date('H:i:s', strtotime($sTimeTmp)); + + $nActualTime = $_POST['form']['SCH_START_TIME']; // time(); + // $nActualDate = date("Y-m-d H:i:s", $nActualTime); $sValue = ''; $sDaysPerformTask = ''; @@ -161,7 +163,8 @@ try { } - if(($sOption!='1') && ($sOption!='4')) { + echo "
sOption: ".$sOption; + if(($sOption!='1') && ($sOption!='4') && ($sOption!='5') ) { if ($sStartDay==''){ $sStartDay = date('Y-m-d'); } @@ -190,8 +193,17 @@ try { $aData['SCH_END_DATE'] = $aData['SCH_START_TIME']; } $aData['SCH_TIME_NEXT_RUN'] = $aData['SCH_START_TIME']; + if ($sOption == 5) { + $aData['SCH_START_TIME'] = time(); + $aData['SCH_START_DATE'] = $aData['SCH_START_TIME']; + $nextRun = $_POST['form']['SCH_REPEAT_EVERY']*60*60; + $aData['SCH_REPEAT_EVERY'] = $_POST['form']['SCH_REPEAT_EVERY']; + $date = $aData['SCH_START_TIME']; + $date += $nextRun; + $date = date("Y-m-d H:i", $date ); + $aData['SCH_TIME_NEXT_RUN'] = $date; + } } - if(trim($_POST['form']['SCH_END_DATE'])!=''){ $aData['SCH_END_DATE'] = $_POST['form']['SCH_END_DATE']; } diff --git a/workflow/engine/methods/cases/cases_Scheduler_Update.php b/workflow/engine/methods/cases/cases_Scheduler_Update.php index 46ffbf845..ef3f7cbb7 100755 --- a/workflow/engine/methods/cases/cases_Scheduler_Update.php +++ b/workflow/engine/methods/cases/cases_Scheduler_Update.php @@ -46,7 +46,6 @@ try { if (empty($_POST)) { die('The information sended is empty!'); } - $aData['SCH_UID'] = $_POST['form']['SCH_UID']; $aData['SCH_NAME'] = $_POST['form']['SCH_NAME']; $aData['PRO_UID'] = $_POST['form']['PRO_UID']; @@ -162,7 +161,7 @@ try { $aData['SCH_END_DATE'] = $_POST['form']['SCH_END_DATE']; } // if the start date has changed then recalculate the next run time - if ($_POST['form']['SCH_START_DATE']==$_POST['form']['PREV_SCH_START_DATE']){ + if ($_POST['form']['SCH_START_DATE']==$_POST['form']['PREV_SCH_START_DATE']) { $recalculateDate = false; } else { $recalculateDate = true; @@ -177,7 +176,7 @@ try { // var_dump($recalculateTime); // die(); $nActualTime = $_POST['form']['SCH_START_TIME']; - if(($sOption!='1') && ($sOption!='4')) { + if(($sOption!='1') && ($sOption!='4') && ($sOption!='5')) { if ($sStartDay==''){ $sStartDay = date('Y-m-d'); } @@ -230,6 +229,18 @@ try { // var_dump($recalculateTime); // var_dump($aData['SCH_TIME_NEXT_RUN']); // die; + if ($sOption=='5') { + $date = $oCaseScheduler->getSchLastRunTime(); + if ($date == null) { + $date = $oCaseScheduler->getSchStartTime(); + } + $date = strtotime($date); + $nextRun = $_POST['form']['SCH_REPEAT_EVERY']*60*60; + $aData['SCH_REPEAT_EVERY'] = $_POST['form']['SCH_REPEAT_EVERY']; + $date += $nextRun; + $date = date("Y-m-d H:i", $date ); + $aData['SCH_TIME_NEXT_RUN'] = $date; + } } if(!empty($_POST['form']['SCH_REPEAT_TASK_CHK'])){ diff --git a/workflow/engine/methods/events/eventList.php b/workflow/engine/methods/events/eventList.php new file mode 100644 index 000000000..f59820ca0 --- /dev/null +++ b/workflow/engine/methods/events/eventList.php @@ -0,0 +1,95 @@ +. + * + * 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 = 'EVENT'; + +//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("PENDING",G::LoadTranslation('ID_OPEN')), + array("COMPLETED",G::LoadTranslation('ID_CLOSE'))); +$type = array( + array('', G::LoadTranslation('ID_ALL')), + array('SEND_MESSAGE',G::LoadTranslation('ID_EVENT_MESSAGE')), + array('EXECUTE_TRIGGER',G::LoadTranslation('ID_EVENT_TIMER')), + array('EXECUTE_CONDITIONAL_TRIGGER',G::LoadTranslation('ID_EVENT_CONDITIONAL'))); +$processes = getProcessArray($userUid ); + +$G_PUBLISH = new Publisher; + +$oHeadPublisher =& headPublisher::getSingleton(); +$oHeadPublisher->addExtJsScript('events/eventList', false); //adding a javascript file .js +$oHeadPublisher->addContent('events/eventList'); //adding a html file .html. +//sending the columns to display in grid +$oHeadPublisher->assign( 'typeValues', $type ); +$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/events/eventsAjax.php b/workflow/engine/methods/events/eventsAjax.php index 639d731d8..852204690 100755 --- a/workflow/engine/methods/events/eventsAjax.php +++ b/workflow/engine/methods/events/eventsAjax.php @@ -1,74 +1,74 @@ ''"; - */ - $sDataBase = 'database_' . strtolower(DB_ADAPTER); - if(G::LoadSystemExist($sDataBase)){ - G::LoadSystem($sDataBase); - $oDataBase = new database(); - $sConcat = $oDataBase->concatString("USR_FIRSTNAME", "' '" , "USR_LASTNAME") ; - } - $sql = " SELECT USR_UID, USR_EMAIL, " . - $sConcat . - " AS USR_FULLNAME FROM USERS " . - " WHERE USR_STATUS = 'ACTIVE' AND USR_EMAIL <> ''"; + /* + $sql = "SELECT USR_UID, USR_EMAIL, CONCAT(USR_FIRSTNAME, ' ' , USR_LASTNAME) AS USR_FULLNAME FROM USERS WHERE USR_STATUS = 'ACTIVE' AND USR_EMAIL <> ''"; + */ + $sDataBase = 'database_' . strtolower(DB_ADAPTER); + if (G::LoadSystemExist($sDataBase)) { + G::LoadSystem($sDataBase); + $oDataBase = new database(); + $sConcat = $oDataBase->concatString("USR_FIRSTNAME", "' '" , "USR_LASTNAME") ; + } + $sql = " SELECT USR_UID, USR_EMAIL, " . + $sConcat . + " AS USR_FULLNAME FROM USERS " . + " WHERE USR_STATUS = 'ACTIVE' AND USR_EMAIL <> ''"; - $oCriteria = new Criteria('workflow'); - $del = DBAdapter::getStringDelimiter(); + $oCriteria = new Criteria('workflow'); + $del = DBAdapter::getStringDelimiter(); - $con = Propel::getConnection("workflow"); - $stmt = $con->prepareStatement($sql); - $rs = $stmt->executeQuery(); + $con = Propel::getConnection("workflow"); + $stmt = $con->prepareStatement($sql); + $rs = $stmt->executeQuery(); - $aRows[] = array('USR_UID'=>'char', 'USR_EMAIL'=>'char', 'USR_FULLNAME'=>'char'); - while($rs->next()){ - $aRows[] = array('USR_UID'=>$rs->getString('USR_UID'), 'USR_EMAIL'=>$rs->getString('USR_EMAIL'), 'USR_FULLNAME'=>$rs->getString('USR_FULLNAME')); - } - //echo '
';		print_r($aRows);
+        $aRows[] = array('USR_UID'=>'char', 'USR_EMAIL'=>'char', 'USR_FULLNAME'=>'char');
+        while($rs->next()){
+            $aRows[] = array('USR_UID'=>$rs->getString('USR_UID'), 'USR_EMAIL'=>$rs->getString('USR_EMAIL'), 'USR_FULLNAME'=>$rs->getString('USR_FULLNAME'));
+        }
+        //echo '
';     print_r($aRows);
 
-		global $_DBArray;
-		$_DBArray['virtualtable']   = $aRows;
-		$_SESSION['_DBArray'] = $_DBArray;
-		G::LoadClass('ArrayPeer');
-		$oCriteria = new Criteria('dbarray');
-		$oCriteria->setDBArrayTable('virtualtable');
+        global $_DBArray;
+        $_DBArray['virtualtable']   = $aRows;
+        $_SESSION['_DBArray'] = $_DBArray;
+        G::LoadClass('ArrayPeer');
+        $oCriteria = new Criteria('dbarray');
+        $oCriteria->setDBArrayTable('virtualtable');
 
-		$G_PUBLISH = new Publisher();
-		$G_PUBLISH->AddContent('propeltable', 'paged-table', 'events/usermailList', $oCriteria);
-		G::RenderPage('publish', 'raw');
-	break;
+        $G_PUBLISH = new Publisher();
+        $G_PUBLISH->AddContent('propeltable', 'paged-table', 'events/usermailList', $oCriteria);
+        G::RenderPage('publish', 'raw');
+    break;
+    case 'showGroups':
+        G::LoadClass('groups');
+        $groups = new Groups();
+        $allGroups= $groups->getAllGroups();
 
-	case 'showGroups':
+        $aRows[] = array('GRP_UID' => 'char', 'GROUP_TITLE' => 'char');
+        foreach ($allGroups as $group) {
+            $UID         = htmlentities($group->getGrpUid());
+            $GROUP_TITLE = strip_tags($group->getGrpTitle());
+            $aRows[] = array('GRP_UID'=>$UID, 'GROUP_TITLE'=>$GROUP_TITLE);
+        }
 
-		G::LoadClass('groups');
-		$groups = new Groups();
-		$allGroups= $groups->getAllGroups();
+        global $_DBArray;
+        $_DBArray['virtualtable']   = $aRows;
+        $_SESSION['_DBArray'] = $_DBArray;
+        G::LoadClass('ArrayPeer');
+        $oCriteria = new Criteria('dbarray');
+        $oCriteria->setDBArrayTable('virtualtable');
 
-		$aRows[] = array('GRP_UID' => 'char', 'GROUP_TITLE' => 'char');
-		foreach($allGroups as $group) {
-		    $UID         = htmlentities($group->getGrpUid());
-			$GROUP_TITLE = strip_tags($group->getGrpTitle());
-			$aRows[] = array('GRP_UID'=>$UID, 'GROUP_TITLE'=>$GROUP_TITLE);
-		}
-
-		global $_DBArray;
-		$_DBArray['virtualtable']   = $aRows;
-		$_SESSION['_DBArray'] = $_DBArray;
-		G::LoadClass('ArrayPeer');
-		$oCriteria = new Criteria('dbarray');
-		$oCriteria->setDBArrayTable('virtualtable');
-
-		$G_PUBLISH = new Publisher();
-		$G_PUBLISH->AddContent('propeltable', 'paged-table', 'events/groupmailList', $oCriteria);
-		G::RenderPage('publish', 'raw');
-	break;
-
-	case 'showDynavars':
+        $G_PUBLISH = new Publisher();
+        $G_PUBLISH->AddContent('propeltable', 'paged-table', 'events/groupmailList', $oCriteria);
+        G::RenderPage('publish', 'raw');
+    break;
+    case 'showDynavars':
         G::LoadClass('xmlfield_InputPM');
         $dynaformFields = getDynaformsVars($_SESSION['PROCESS'], false, false);
         $fields = array(array('id' => 'char', 'dynaform' => 'char', 'name' => 'char'));
@@ -78,15 +78,70 @@ switch($req){
                               'name' => '@#' . $dynaformField['sName'] . '', 'label' => $dynaformField['sLabel']);
         }
 
-		global $_DBArray;
-		$_DBArray['virtualtable'] = $fields;
-		$_SESSION['_DBArray'] = $_DBArray;
-		G::LoadClass('ArrayPeer');
-		$oCriteria = new Criteria('dbarray');
-		$oCriteria->setDBArrayTable('virtualtable');
+        global $_DBArray;
+        $_DBArray['virtualtable'] = $fields;
+        $_SESSION['_DBArray'] = $_DBArray;
+        G::LoadClass('ArrayPeer');
+        $oCriteria = new Criteria('dbarray');
+        $oCriteria->setDBArrayTable('virtualtable');
 
-		$G_PUBLISH = new Publisher();
-		$G_PUBLISH->AddContent('propeltable', 'paged-table', 'events/dynavarsList', $oCriteria);
-		G::RenderPage('publish', 'raw');
-	break;
+        $G_PUBLISH = new Publisher();
+        $G_PUBLISH->AddContent('propeltable', 'paged-table', 'events/dynavarsList', $oCriteria);
+        G::RenderPage('publish', 'raw');
+    break;
+    case 'eventList':
+
+        $start      = (isset($_REQUEST['start']))?      $_REQUEST['start']      : '0';
+        $limit      = (isset($_REQUEST['limit']))?      $_REQUEST['limit']      : '25';
+        $proUid     = (isset($_REQUEST['process']))?    $_REQUEST['process']    : '';
+        $evenType   = (isset($_REQUEST['type']))?       $_REQUEST['type']       : '';
+        $evenStatus = (isset($_REQUEST['status']))?     $_REQUEST['status']     : '';
+        $sort       = isset($_REQUEST['sort']) ?        $_REQUEST['sort']       : '';
+        $dir        = isset($_REQUEST['dir']) ?         $_REQUEST['dir']        : 'ASC';
+
+        require_once 'classes/model/AppEvent.php';
+        $oAppEvent = new AppEvent();
+        // Initialize response object
+        $response = new stdclass();
+        $response->status = 'OK';
+
+        $criteria = new Criteria();
+        $criteria = $oAppEvent->getAppEventsCriteria($proUid, $evenStatus, $evenType);
+        $result = AppEventPeer::doSelectRS($criteria);
+        $result->setFetchmode(ResultSet::FETCHMODE_ASSOC);
+        $data = Array();
+        while( $result->next() ) {
+            $data[] = $result->getRow();
+        }
+        $totalCount = count($data);
+
+        $criteria = new Criteria();
+        $criteria = $oAppEvent->getAppEventsCriteria($proUid, $evenStatus, $evenType);
+        if ($sort != '') {
+            if ($dir == 'ASC') {
+                $criteria->addAscendingOrderByColumn($sort);
+            }
+            else {
+                $criteria->addDescendingOrderByColumn($sort);
+            }
+        } else {
+            $oCriteria->addDescendingOrderByColumn(AppEventPeer::APP_EVN_ACTION_DATE);
+        }
+        if ($limit != '') {
+            $criteria->setLimit($limit);
+            $criteria->setOffset($start);
+        }
+        $result = AppEventPeer::doSelectRS($criteria);
+        $result->setFetchmode(ResultSet::FETCHMODE_ASSOC);
+        $data = Array();
+        $dataPro = array();
+        $index = 0;
+        while( $result->next() ) {
+            $data[] = $result->getRow();
+        }
+        $response = array();
+        $response['totalCount'] = $totalCount;
+        $response['data']       = $data;
+        die(G::json_encode($response));
+    break;
 }
diff --git a/workflow/engine/skinEngine/base/css/pmos-xtheme-gray.css b/workflow/engine/skinEngine/base/css/pmos-xtheme-gray.css
index 177e8496c..82297b022 100755
--- a/workflow/engine/skinEngine/base/css/pmos-xtheme-gray.css
+++ b/workflow/engine/skinEngine/base/css/pmos-xtheme-gray.css
@@ -769,6 +769,12 @@ antes funcionaba.
 	background-position:0 -17011px !important;
 }
 
+.ICON_EVENT{
+	/*ss_table_gear*/
+	background-image:url( /images/icons_silk/sprites.png) !important;
+	background-position:0 -15517px !important;
+}
+
 .ICON_PROCESS_CATEGORY{
 	/*ss_sitemap_color*/
 	background-image:url( /images/icons_silk/sprites.png) !important;
diff --git a/workflow/engine/skinEngine/uxmodern/css/pmos-xtheme-gray.css b/workflow/engine/skinEngine/uxmodern/css/pmos-xtheme-gray.css
index 7c9008fdb..7d398f23c 100644
--- a/workflow/engine/skinEngine/uxmodern/css/pmos-xtheme-gray.css
+++ b/workflow/engine/skinEngine/uxmodern/css/pmos-xtheme-gray.css
@@ -793,6 +793,11 @@ antes funcionaba.
 	background-image:url( /images/icons_silk/sprites.png) !important;
 	background-position:0 -17011px !important;
 }
+.ICON_EVENT{
+	/*ss_table_gear*/
+	background-image:url( /images/icons_silk/sprites.png) !important;
+	background-position:0 -15517px !important;
+}
 
 .ICON_PROCESS_CATEGORY{
 	/*ss_sitemap_color*/
diff --git a/workflow/engine/skinEngine/uxs/css/pmos-xtheme-gray.css b/workflow/engine/skinEngine/uxs/css/pmos-xtheme-gray.css
index 8dfc9bf23..b8617724e 100644
--- a/workflow/engine/skinEngine/uxs/css/pmos-xtheme-gray.css
+++ b/workflow/engine/skinEngine/uxs/css/pmos-xtheme-gray.css
@@ -766,6 +766,12 @@ antes funcionaba.
 	background-position:0 -17011px !important;
 }
 
+.ICON_EVENT{
+	/*ss_table_gear*/
+	background-image:url( /images/icons_silk/sprites.png) !important;
+	background-position:0 -15517px !important;
+}
+
 .ICON_PROCESS_CATEGORY{
 	/*ss_sitemap_color*/
 	background-image:url( /images/icons_silk/sprites.png) !important;
diff --git a/workflow/engine/templates/events/eventList.html b/workflow/engine/templates/events/eventList.html
new file mode 100644
index 000000000..432f567b5
--- /dev/null
+++ b/workflow/engine/templates/events/eventList.html
@@ -0,0 +1,3 @@
+
+
+
diff --git a/workflow/engine/templates/events/eventList.js b/workflow/engine/templates/events/eventList.js new file mode 100644 index 000000000..bac4cb99f --- /dev/null +++ b/workflow/engine/templates/events/eventList.js @@ -0,0 +1,295 @@ +/* + * @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 eventsGrid; +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 = ''; + if ( !record.data['APP_EVN_LAST_EXECUTION_DATE'] ){ + record.data['APP_EVN_LAST_EXECUTION_DATE'] = ' - '; + } + switch (record.data['EVN_ACTION']) { + case 'EXECUTE_TRIGGER': record.data['EVN_ACTION'] = _('ID_EVENT_TIMER'); + break + case 'EXECUTE_CONDITIONAL_TRIGGER': record.data['EVN_ACTION'] = _('ID_EVENT_CONDITIONAL'); + break + case 'SEND_MESSAGE': record.data['EVN_ACTION'] = _('ID_EVENT_MESSAGE'); + break + } + 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; + }; + + // 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' + }); + + // ComboBox Type + var comboType = new Ext.form.ComboBox({ + width : 150, + boxMaxWidth : 150, + editable : false, + mode : 'local', + emptyText: _('ID_EMPTY_TYPE'), + store : new Ext.data.ArrayStore({ + fields: ['id', 'value'], + data : typeValues + }), + valueField : 'id', + displayField : 'value', + triggerAction : 'all', + listeners:{ + scope: this, + 'select': function() { + filterType = comboType.value; + store.setBaseParam( 'type', filterType); + 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_TYPE'), comboType, '-', _('ID_STATUS'), comboStatus]); + + var stepsFields = Ext.data.Record.create([ + {name : 'APP_EVN_ACTION_DATE', type: 'string'}, + {name : 'APP_EVN_ATTEMPTS', type: 'string'}, + {name : 'APP_EVN_LAST_EXECUTION_DATE', type: 'string'}, + {name : 'APP_EVN_STATUS', type: 'string'}, + {name : 'PRO_TITLE', type: 'string'}, + {name : 'EVN_ACTION', type: 'string'}, + {name : 'EVN_DESCRIPTION', type: 'string'}, + {name : 'TAS_TITLE', type: 'string'}, + {name : 'APP_TITLE', type: 'string'} + ]); + + store = new Ext.data.Store( { + proxy : new Ext.data.HttpProxy({ + url: 'eventsAjax?request=eventList' + }), + remoteSort : true, + sortInfo : stepsFields, + reader : new Ext.data.JsonReader( { + root: 'data', + totalProperty: 'totalCount', + fields : [ + {name : 'APP_UID'}, + {name : 'DEL_INDEX'}, + {name : 'EVN_UID'}, + {name : 'APP_EVN_ACTION_DATE'}, + {name : 'APP_EVN_ATTEMPTS'}, + {name : 'APP_EVN_LAST_EXECUTION_DATE'}, + {name : 'APP_EVN_STATUS'}, + {name : 'PRO_UID'}, + {name : 'PRO_TITLE'}, + {name : 'EVN_WHEN_OCCURS'}, + {name : 'EVN_ACTION'}, + {name : 'EVN_DESCRIPTION'}, + {name : 'TAS_TITLE'}, + {name : 'APP_TITLE'} + ] + }) + }); + store.setDefaultSort('APP_EVN_ACTION_DATE', 'desc'); + + cmodel = new Ext.grid.ColumnModel({ + defaults: { + width: 50 + }, + columns: [ + {id:'APP_UID', dataIndex: 'APP_UID', hidden:true, hideable:false}, + {header: 'PRO_UID', dataIndex: 'PRO_UID', hidden:true, hideable:false}, + {header: 'EVN_UID', dataIndex: 'EVN_UID', hidden:true, hideable:false}, + {header: _('ID_PROCESS'), dataIndex: 'PRO_TITLE', width: 150, hidden: false,renderer: columnRenderer, sortable: true}, + {header: _('ID_TASKS'), dataIndex: 'TAS_TITLE', width: 150, hidden: false,renderer: columnRenderer, sortable: true}, + {header: _('ID_CASE_TITLE'), dataIndex: 'APP_TITLE', width: 150, hidden: false,renderer: columnRenderer, sortable: true}, + {header: _('ID_EVENT_ACTION_DATE'), dataIndex: 'APP_EVN_ACTION_DATE', width: 90, hidden: false,renderer: columnRenderer, sortable: true}, + {header: _('ID_EVENT_LAST_EXECUTION_DATE'), dataIndex: 'APP_EVN_LAST_EXECUTION_DATE', width: 90, hidden: false ,renderer: columnRenderer, sortable: true}, + {header: _('ID_EVENT_DESCRIPTION'), dataIndex: 'EVN_DESCRIPTION', width: 150, hidden: false,renderer: columnRenderer}, + {header: _('ID_EVENT_ACTION'), dataIndex: 'EVN_ACTION', width: 100, hidden: false,renderer: columnRenderer}, + + {header: _('ID_DEL_INDEX'), dataIndex: 'DEL_INDEX', width: 40,hidden:true,hideable:false, renderer: columnRenderer}, + {header: _('APP_EVN_ATTEMPTS'), dataIndex: 'APP_EVN_ATTEMPTS', width: 50, hidden: true,hideable:false,renderer: columnRenderer}, + {header: _('ID_STATUS'), dataIndex: 'APP_EVN_STATUS', width: 40, hidden: false,renderer: columnRenderer} + ] + }); + + bbarpaging = new Ext.PagingToolbar({ + pageSize : 25, + store : store, + displayInfo : true, + displayMsg : _('ID_GRID_PAGE_DISPLAYING_EVENT_MESSAGE') + '    ', + emptyMsg : _('ID_GRID_PAGE_NO_EVENT_MESSAGE') + }); + + eventsGrid = new Ext.grid.GridPanel({ + region: 'center', + layout: 'fit', + id: 'eventsGrid', + height:100, + autoWidth : true, + stateful : true, + stateId : 'grid', + enableColumnResize: true, + enableHdMenu: true, + frame:false, + columnLines: false, + viewConfig: { + forceFit:true + }, + title : _('ID_EVENTS'), + store: store, + cm: cmodel, + tbar: actions, + bbar: bbarpaging, + listeners: { + render: function(){ + this.loadMask = new Ext.LoadMask(this.body, {msg:_('ID_LOADING_GRID')}); + } + } + }); + + eventsGrid.store.load(); + + viewport = new Ext.Viewport({ + layout: 'fit', + autoScroll: false, + items: [ + eventsGrid + ] + }); + }); + +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/xmlform/cases/cases_Scheduler_Edit.html b/workflow/engine/xmlform/cases/cases_Scheduler_Edit.html index 19db2e8b2..c75080f25 100755 --- a/workflow/engine/xmlform/cases/cases_Scheduler_Edit.html +++ b/workflow/engine/xmlform/cases/cases_Scheduler_Edit.html @@ -96,8 +96,30 @@ - * {$SCH_START_TIME} - {$form.SCH_START_TIME} + + {$form.SELECT_EVERY} + + + + + + + + + + +
* {$SCH_START_TIME}{$form.SCH_START_TIME} format 24 hrs. (HH:MM)
+ + + + + + + + + +
* {$SCH_REPEAT_EVERY}{$form.SCH_REPEAT_EVERY} hour(s).
+ @@ -197,11 +219,11 @@ {$form.SCH_REPEAT_TASK_CHK} - {$SCH_REPEAT_EVERY} + - +
{$form.SCH_REPEAT_EVERY} {$form.SCH_REPEAT_EVERY_OPT} {$SCH_REPEAT_EVERY_OPT}
diff --git a/workflow/engine/xmlform/cases/cases_Scheduler_Edit.xml b/workflow/engine/xmlform/cases/cases_Scheduler_Edit.xml index f8542fe7e..e09931fc9 100755 --- a/workflow/engine/xmlform/cases/cases_Scheduler_Edit.xml +++ b/workflow/engine/xmlform/cases/cases_Scheduler_Edit.xml @@ -210,8 +210,14 @@ WHERE A.PRO_UID='@#PRO_UID' AND A.TAS_START = 'TRUE' ]]> Repeat Task - -Every + + + + +Record the time. + + +Execute every @@ -273,6 +279,8 @@ switch (getField('SCH_OPTION').value){ break; case '4': getField('SCH_OPTION_VIEW').value = 'One Time Only'; + case '5': + getField('SCH_OPTION_VIEW').value = 'Every'; break; } @@ -289,7 +297,7 @@ function hideProperties(){ document.getElementById('form[PERFORM_TASK]').style.display='none'; document.getElementById('form[SELECT_TIME_DAY]').style.display='none'; document.getElementById('form[SELECT_PLUGIN]').style.display='none'; - document.getElementById('form[SELECT_PLUGIN]').style.display='none'; + document.getElementById('form[SELECT_EVERY]').style.display='none'; // end of enabling } @@ -301,7 +309,7 @@ function showProperties(){ document.getElementById('form[EDIT_USER]').style.display=''; document.getElementById('form[PERFORM_TASK]').style.display=''; document.getElementById('form[SELECT_TIME_DAY]').style.display=''; - + document.getElementById('form[SELECT_EVERY]').style.display=''; } @@ -327,7 +335,7 @@ if (getField('SCH_REPEAT_EVERY').value!=''){ function disableAdvanced(){ //disable(getField('SCH_END_DATE')); - disable(getField('SCH_REPEAT_EVERY')); + disable(getField('SCH_REPEAT_EVERY_OPT')); // disable(getField('SCH_REPEAT_UNTIL')); // disable(getField('SCH_REPEAT_STOP_IF_RUNNING')); @@ -347,7 +355,11 @@ function hideAll() { contractSubtitle('SELECT_1'); contractSubtitle('SELECT_2'); contractSubtitle('SELECT_3'); + contractSubtitle('SELECT_EVERY'); + //contractSubtitle('ADVANCED_4'); + document.getElementById('startTime').style.display='none'; + document.getElementById('everyTime').style.display='none'; } function showPluginSelection(opt,pro_uid) { @@ -408,7 +420,11 @@ function showSelection(opt) { expandSubtitle('SELECT_1'); contractSubtitle('SELECT_2'); contractSubtitle('SELECT_3'); + + document.getElementById('form[SELECT_EVERY]').style.display='none'; document.getElementById('endDateTable').style.display=''; + document.getElementById('startTime').style.display=''; + document.getElementById('everyTime').style.display='none'; // SCH_START_DATE break; case '2' : contractSubtitle('SELECT_DATE'); @@ -416,13 +432,16 @@ function showSelection(opt) { expandSubtitle('SELECT_2'); contractSubtitle('SELECT_3'); hideRow('SCH_EVERY_DAYS'); + + document.getElementById('form[SELECT_EVERY]').style.display='none'; document.getElementById('endDateTable').style.display=''; + document.getElementById('startTime').style.display=''; + document.getElementById('everyTime').style.display='none'; break; case '3' : contractSubtitle('SELECT_DATE'); contractSubtitle('SELECT_1'); contractSubtitle('SELECT_2'); expandSubtitle('SELECT_3'); - document.getElementById('endDateTable').style.display=''; if (getField('SCH_START_DAY][1').checked){ getField('SCH_START_DAY_OPT_1').disabled=false; getField('SCH_START_DAY_OPT_1').style.display=""; @@ -438,12 +457,32 @@ function showSelection(opt) { getField('SCH_START_DAY_OPT_2_DAYS_WEEK').disabled=false; getField('SCH_START_DAY_OPT_2_DAYS_WEEK').style.display=""; } + + document.getElementById('form[SELECT_EVERY]').style.display='none'; + document.getElementById('endDateTable').style.display=''; + document.getElementById('startTime').style.display=''; + document.getElementById('everyTime').style.display='none'; break; - case '4' : expandSubtitle('SELECT_DATE'); + case '4' : expandSubtitle('SELECT_DATE'); contractSubtitle('SELECT_1'); contractSubtitle('SELECT_2'); contractSubtitle('SELECT_3'); + + document.getElementById('form[SELECT_EVERY]').style.display='none'; + document.getElementById('endDateTable').style.display=''; + document.getElementById('startTime').style.display=''; + document.getElementById('everyTime').style.display='none'; + break; + case '5' : expandSubtitle('SELECT_EVERY'); + contractSubtitle('SELECT_1'); + contractSubtitle('SELECT_2'); + contractSubtitle('SELECT_3'); + enable(getField('SCH_REPEAT_EVERY')); + + document.getElementById('form[SELECT_TIME_DAY]').style.display='none'; document.getElementById('endDateTable').style.display='none'; + document.getElementById('startTime').style.display='none'; + document.getElementById('everyTime').style.display=''; break; } @@ -531,8 +570,8 @@ leimnud.event.add(getField('SCH_REPEAT_TASK_CHK'), 'click', function() { // enable(getField('SCH_REPEAT_UNTIL')); // enable(getField('SCH_REPEAT_STOP_IF_RUNNING')); } else { - disable(getField('SCH_REPEAT_EVERY')); - disable(getField('SCH_REPEAT_EVERY_OPT')); + + // disable(getField('SCH_REPEAT_UNTIL')); // disable(getField('SCH_REPEAT_STOP_IF_RUNNING')); } @@ -561,6 +600,24 @@ leimnud.event.add(getField('SCH_START_TIME'), 'change', function() { } }); +leimnud.event.add(getField('SCH_REPEAT_EVERY'), 'change', function() { + hours = getField('SCH_REPEAT_EVERY').value; + answer = hours; + var parties = answer.split('.'); + + if(parties[0]>23){ + msgBox(G_STRINGS.ID_SCHEDULER_CANT_PUT_TIME, 'alert'); + getField('SCH_REPEAT_EVERY').value=''; + getField('UPDATE').focus(); + + } + if(parties[1]>99){ + msgBox('The minutes can not be greater than 99', 'alert'); + getField('SCH_REPEAT_EVERY').value=''; + getField('UPDATE').focus(); + } +}); + leimnud.event.add(getField('SCH_REPEAT_UNTIL'), 'change', function() { @@ -741,6 +798,12 @@ endDate = new Date(endDate[0],endDate[1],endDate[2]); msgBox('The time format is invalid','alert'); return false; } + if (document.getElementById('form[SCH_OPTION]').value == 5) { + if (document.getElementById('form[SCH_REPEAT_EVERY]').value==''){ + requiredFields = requiredFields + 'Every,'; + validFields = false; + } + } switch(document.getElementById('form[SCH_OPTION]').value){ // daily case '1': @@ -818,6 +881,10 @@ endDate = new Date(endDate[0],endDate[1],endDate[2]); validFields = true; break; + //run once + case '5': + validFields = true; + break; default: validFields = false; break; diff --git a/workflow/engine/xmlform/cases/cases_Scheduler_New.html b/workflow/engine/xmlform/cases/cases_Scheduler_New.html index bd8e9686c..1954b2fbf 100755 --- a/workflow/engine/xmlform/cases/cases_Scheduler_New.html +++ b/workflow/engine/xmlform/cases/cases_Scheduler_New.html @@ -86,9 +86,26 @@   - * {$SCH_START_TIME} - {$form.SCH_START_TIME} format 24 hrs. (HH:MM) + + + + + + +
* {$SCH_START_TIME}{$form.SCH_START_TIME} format 24 hrs. (HH:MM)
+ + + + + + + + +
* {$SCH_REPEAT_EVERY}{$form.SCH_REPEAT_EVERY} Hour(s).
+ + + {$form.SELECT_DATE} @@ -190,11 +207,11 @@ {$form.SCH_REPEAT_TASK_CHK} - {$SCH_REPEAT_EVERY} + - +
{$form.SCH_REPEAT_EVERY} {$form.SCH_REPEAT_EVERY_OPT} {$SCH_REPEAT_EVERY_OPT}
diff --git a/workflow/engine/xmlform/cases/cases_Scheduler_New.xml b/workflow/engine/xmlform/cases/cases_Scheduler_New.xml index f1da35627..c0b307d43 100755 --- a/workflow/engine/xmlform/cases/cases_Scheduler_New.xml +++ b/workflow/engine/xmlform/cases/cases_Scheduler_New.xml @@ -56,6 +56,7 @@ + @@ -63,7 +64,7 @@ Select the date and time for case(s) to be initiated. - + Execution time @@ -103,6 +104,7 @@ Every + Select the day(s) of the week below @@ -198,9 +200,16 @@ Repeat Task - -Every + + + + +Execute every + + + + @@ -286,7 +295,8 @@ contractSubtitle('SELECT_PLUGIN'); document.getElementById('form[SELECT_1]').style.display='none'; document.getElementById('form[SELECT_2]').style.display='none'; document.getElementById('form[SELECT_3]').style.display='none'; - + document.getElementById('startTime').style.display='none'; + document.getElementById('everyTime').style.display='none'; } @@ -352,7 +362,10 @@ function showSelection(opt) { contractSubtitle('SELECT_3'); //document.getElementById('form[ADVANCED_4]').style.display=''; //expandSubtitle('ADVANCED_4'); + document.getElementById('endDateTable').style.display=''; + document.getElementById('startTime').style.display=''; + document.getElementById('everyTime').style.display='none'; break; case '2' : // Weekly contractSubtitle('SELECT_DATE'); @@ -361,8 +374,11 @@ function showSelection(opt) { contractSubtitle('SELECT_3'); //document.getElementById('form[ADVANCED_4]').style.display=''; hideRow('SCH_EVERY_DAYS'); - document.getElementById('endDateTable').style.display=''; //expandSubtitle('ADVANCED_4'); + + document.getElementById('endDateTable').style.display=''; + document.getElementById('startTime').style.display=''; + document.getElementById('everyTime').style.display='none'; break; case '3' : // Monthly contractSubtitle('SELECT_DATE'); @@ -376,20 +392,36 @@ function showSelection(opt) { getField('SCH_START_DAY_OPT_2_WEEKS').style.display="none"; getField('SCH_START_DAY_OPT_2_DAYS_WEEK').disabled=true; getField('SCH_START_DAY_OPT_2_DAYS_WEEK').style.display="none"; + document.getElementById('endDateTable').style.display=''; + document.getElementById('startTime').style.display=''; + document.getElementById('everyTime').style.display='none'; //expandSubtitle('ADVANCED_4'); break; - case '4' : // One time only + case '4' : // One time only expandSubtitle('SELECT_DATE'); contractSubtitle('SELECT_1'); contractSubtitle('SELECT_2'); contractSubtitle('SELECT_3'); + document.getElementById('endDateTable').style.display='none'; + document.getElementById('startTime').style.display=''; + document.getElementById('everyTime').style.display='none'; //document.getElementById('form[ADVANCED_4]').style.display=''; //expandSubtitle('ADVANCED_4'); break; - } + case '5' : // Every + contractSubtitle('SELECT_DATE'); + contractSubtitle('SELECT_1'); + contractSubtitle('SELECT_2'); + contractSubtitle('SELECT_3'); + + document.getElementById('endDateTable').style.display='none'; + document.getElementById('startTime').style.display='none'; + document.getElementById('everyTime').style.display=''; + break; + } } @@ -497,6 +529,24 @@ leimnud.event.add(getField('SCH_START_TIME'), 'change', function() { } }); +leimnud.event.add(getField('SCH_REPEAT_EVERY'), 'change', function() { + hours = getField('SCH_REPEAT_EVERY').value; + answer = hours; + var parties = answer.split('.'); + + if(parties[0]>23){ + msgBox(G_STRINGS.ID_SCHEDULER_CANT_PUT_TIME, 'alert'); + getField('SCH_REPEAT_EVERY').value=''; + getField('SAVE').focus(); + + } + if(parties[1]>99){ + msgBox('The minutes can not be greater than 99', 'alert'); + getField('SCH_REPEAT_EVERY').value=''; + getField('SAVE').focus(); + } +}); + /* leimnud.event.add(getField('SCH_OPTION][1'), 'change', function() { @@ -606,13 +656,20 @@ endDate = new Date(endDate[0],endDate[1],endDate[2]); // for time format hh:mm var regExpString = "([0-1]\\d|2[0-3]):([0-5]\\d)"; var timeRegexp = new RegExp(regExpString); - if (!timeRegexp.test(document.getElementById('form[SCH_START_TIME]').value)){ - msgBox('The time format is invalid','alert'); - return false; - } - if (document.getElementById('form[SCH_START_TIME]').value==''){ - requiredFields = requiredFields + 'Execution Time,'; - validFields = false; + if (document.getElementById('form[SCH_OPTION]').value != 5) { + if (!timeRegexp.test(document.getElementById('form[SCH_START_TIME]').value)){ + msgBox('The time format is invalid','alert'); + return false; + } + if (document.getElementById('form[SCH_START_TIME]').value==''){ + requiredFields = requiredFields + 'Execution Time,'; + validFields = false; + } + } else { + if (document.getElementById('form[SCH_REPEAT_EVERY]').value==''){ + requiredFields = requiredFields + 'Every,'; + validFields = false; + } } switch(document.getElementById('form[SCH_OPTION]').value){ // daily @@ -689,6 +746,12 @@ endDate = new Date(endDate[0],endDate[1],endDate[2]); validFields = true; + break; + //run every + case '5': + + validFields = true; + break; default: validFields = false; @@ -745,8 +808,8 @@ leimnud.event.add(getField('SCH_REPEAT_TASK_CHK'), 'click', function() { // enable(getField('SCH_REPEAT_UNTIL')); // enable(getField('SCH_REPEAT_STOP_IF_RUNNING')); } else { - disable(getField('SCH_REPEAT_EVERY')); - disable(getField('SCH_REPEAT_EVERY_OPT')); + + // disable(getField('SCH_REPEAT_UNTIL')); // disable(getField('SCH_REPEAT_STOP_IF_RUNNING')); } diff --git a/workflow/engine/xmlform/events/eventsOptions.xml b/workflow/engine/xmlform/events/eventsOptions.xml index 632ed18df..1febf63d5 100755 --- a/workflow/engine/xmlform/events/eventsOptions.xml +++ b/workflow/engine/xmlform/events/eventsOptions.xml @@ -5,23 +5,11 @@ New - - Pending - - - - Completed - - - - - - @@ -47,14 +35,6 @@ var eventsNew = function() { popupWindow('@G::LoadTranslation(ID_NEW_EVENT)', '@G::encryptlink(@#eventsNew)?PRO_UID=@%PRO_UID&EVN_TYPE=@%EVN_TYPE' , 540, 500); }; -var eventsPending = function() { - popupWindow('@G::LoadTranslation(ID_PENDING)', '@G::encryptlink(@#eventsPending)?PRO_UID=@%PRO_UID&EVN_TYPE=@%EVN_TYPE' , 800, 400); -}; - -var eventsCompleted = function() { - popupWindow('@G::LoadTranslation(ID_COMPLETED)', '@G::encryptlink(@#eventsCompleted)?PRO_UID=@%PRO_UID&EVN_TYPE=@%EVN_TYPE' , 800, 400); -}; - var eventsEdit = function(sUID) { popupWindow('@G::LoadTranslation(ID_EDIT_EVENT)', '@G::encryptlink(@#eventsEdit)?EVN_UID=' + sUID , 540, 500); };