diff --git a/workflow/engine/classes/class.case.php b/workflow/engine/classes/class.case.php index f3b6e4eab..7cca7456e 100755 --- a/workflow/engine/classes/class.case.php +++ b/workflow/engine/classes/class.case.php @@ -83,7 +83,7 @@ class Cases * @param string $sUIDUser * @return boolean */ - public function canStartCase($sUIDUser = '') + public function canStartCase($sUIDUser = '', $processUid = '') { $c = new Criteria(); $c->clearSelectColumns(); @@ -93,6 +93,9 @@ class Cases $c->add(ProcessPeer::PRO_STATUS, 'ACTIVE'); $c->add(TaskPeer::TAS_START, 'TRUE'); $c->add(TaskUserPeer::USR_UID, $sUIDUser); + if ($processUid != '') { + $c->add(TaskPeer::PRO_UID, $processUid); + } $rs = TaskPeer::doSelectRS($c); $rs->next(); @@ -115,6 +118,9 @@ class Cases $c->add(ProcessPeer::PRO_STATUS, 'ACTIVE'); $c->add(TaskPeer::TAS_START, 'TRUE'); $c->add(TaskUserPeer::USR_UID, $aGroups, Criteria::IN); + if ($processUid != '') { + $c->add(TaskPeer::PRO_UID, $processUid); + } $rs = TaskPeer::doSelectRS($c); $rs->next(); diff --git a/workflow/engine/classes/class.wsBase.php b/workflow/engine/classes/class.wsBase.php index 41725cef4..8dc96cde9 100755 --- a/workflow/engine/classes/class.wsBase.php +++ b/workflow/engine/classes/class.wsBase.php @@ -103,6 +103,7 @@ class wsBase $uid = $RBAC->VerifyLogin($userid , $password); switch ($uid) { + case '': case -1: //The user doesn't exist $wsResponse = new wsResponse(3, G::loadTranslation('ID_USER_NOT_REGISTERED')); break; @@ -116,7 +117,7 @@ class wsBase break; } - if ($uid < 0 ) { + if ($uid < 0 || $uid == '') { throw (new Exception(serialize($wsResponse))); } diff --git a/workflow/engine/methods/cases/cases_SchedulerValidateUser.php b/workflow/engine/methods/cases/cases_SchedulerValidateUser.php index fcce79e8e..146c805f9 100755 --- a/workflow/engine/methods/cases/cases_SchedulerValidateUser.php +++ b/workflow/engine/methods/cases/cases_SchedulerValidateUser.php @@ -45,29 +45,27 @@ $endpoint = $http . $_SERVER['HTTP_HOST'] . '/sys' . SYS_SYS . '/' . SYS_LANG . $user = $sWS_USER; $pass = $sWS_PASS; -$params = array ('userid' => $user, 'password' => $pass ); -$result = $client->__SoapCall ( 'login', array ($params ) ); +$params = array('userid' => $user, 'password' => $pass); +$result = $client->__SoapCall('login', array($params)); +if ($result->status_code == 0) { + if (!class_exists('Users')) { + require ("classes/model/UsersPeer.php"); + } + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn('USR_UID'); + $oCriteria->add(UsersPeer::USR_USERNAME, $sWS_USER); + $resultSet = UsersPeer::doSelectRS($oCriteria); + $resultSet->next(); + $user_id = $resultSet->getRow(); + $result->message = $user_id[0]; + G::LoadClass('case'); + $caseInstance = new Cases(); + if (!$caseInstance->canStartCase($result->message, $_REQUEST['PRO_UID'])) { + $result->status_code = -1000; + $result->message = G::LoadTranslation('ID_USER_CASES_NOT_START'); + } +} -$fields ['status_code'] = $result->status_code; -$fields ['message'] = 'ProcessMaker WebService version: ' . $result->version . "\n" . $result->message; -$fields ['version'] = $result->version; -$fields ['time_stamp'] = $result->timestamp; -$messageCode = $result->message; -if($result->status_code == 0){ - if(!class_exists('Users')) { - require ("classes/model/UsersPeer.php"); - } - - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn('USR_UID'); - $oCriteria->add(UsersPeer::USR_USERNAME, $sWS_USER); - $resultSet = UsersPeer::doSelectRS($oCriteria); - $resultSet->next(); - $user_id = $resultSet->getRow(); - - $messageCode = $user_id[0]; - } -echo ($messageCode); -?> +die(G::json_encode($result)); diff --git a/workflow/engine/xmlform/cases/cases_Scheduler_Edit.xml b/workflow/engine/xmlform/cases/cases_Scheduler_Edit.xml index e09931fc9..767e434fc 100755 --- a/workflow/engine/xmlform/cases/cases_Scheduler_Edit.xml +++ b/workflow/engine/xmlform/cases/cases_Scheduler_Edit.xml @@ -8,7 +8,7 @@ General Information -Enter the username and password for the user who will be assigned to the initial task in the case(s). +Enter the username and password of the user who will be assigned to the initial task in the case. @@ -356,7 +356,7 @@ function hideAll() { contractSubtitle('SELECT_2'); contractSubtitle('SELECT_3'); contractSubtitle('SELECT_EVERY'); - + //contractSubtitle('ADVANCED_4'); document.getElementById('startTime').style.display='none'; document.getElementById('everyTime').style.display='none'; @@ -420,7 +420,7 @@ 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=''; @@ -432,7 +432,7 @@ 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=''; @@ -457,7 +457,7 @@ 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=''; @@ -467,7 +467,7 @@ function showSelection(opt) { 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=''; @@ -478,7 +478,7 @@ function showSelection(opt) { 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'; @@ -647,22 +647,25 @@ leimnud.event.add(getField('SCH_REPEAT_UNTIL'), 'change', function() { * @return void */ function case_userSchedulerValidate(username, password) { - //G.alert(username); - //G.alert(password); var user_uid; var oRPC = new leimnud.module.rpc.xmlhttp({ url : '../cases/cases_SchedulerValidateUser', async : true, method: 'POST', - args : "USERNAME="+username+"&PASSWORD="+password + args : "USERNAME="+username+"&PASSWORD="+password+"&PRO_UID="+$_GET('PRO_UID') }); oRPC.callback = function(rpc){ - //msgBox(rpc.xmlhttp.responseText,"alert"); - getField('SCH_USER_UID').value = rpc.xmlhttp.responseText; - user_uid = rpc.xmlhttp.responseText; - //alert(user_uid); + sresponse = rpc.xmlhttp.responseText.parseJSON(); + + if (sresponse.status_code != 0) { + msgBox(sresponse.message, "alert"); + return false; + } + + getField('SCH_USER_UID').value = sresponse.message; + user_uid = sresponse.message; var oRPCProcess = new leimnud.module.rpc.xmlhttp({ url : '../cases/cases_SchedulerGetProcesses', @@ -684,15 +687,7 @@ function case_userSchedulerValidate(username, password) { oRPCProcess.make(); - /* if(rpc.xmlhttp.responseText>=1){ - //getField('SEARCH').disabled = false; - msgBox("User successfully logged","alert"); - getField('SCH_USR_UID').value = rpc.xmlhttp.responseText; - } else { - //getField('SEARCH').disabled = true; - msgBox(rpc.xmlhttp.responseText,"alert"); - } - */ + }.extend(this); oRPC.make(); diff --git a/workflow/engine/xmlform/cases/cases_Scheduler_New.xml b/workflow/engine/xmlform/cases/cases_Scheduler_New.xml index c0b307d43..a79c8ec05 100755 --- a/workflow/engine/xmlform/cases/cases_Scheduler_New.xml +++ b/workflow/engine/xmlform/cases/cases_Scheduler_New.xml @@ -1,852 +1,844 @@ - - - - - - - -General Information - - - -Enter the username and password for the user who will be assigned to the initial task in the case(s). - - - - - - - - - - - -User Name - - -Password - - - - Test User - - - Edit User - - - -Properties - - - - - - -Task - - - -Description - - - -Perform this task - - - - - - - - - - -Select the date and time for case(s) to be initiated. - - - -Execution time - - - -Select date - - - -Start date - - - - Daily - - - - - - - Weekly - - - -Every - - - -Select the day(s) of the week below - - - - - - - - - - - - - - - - Monthly - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Of the month(s) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -End Date - - -Repeat Task - - - - - -Execute every - - - - - - - - - - - - - - - - - - -Start a case based on following registered Plugin. - - - -Save - - - -Cancel - - -=1 && days<=365)){ - msgBox('Days must be between 1 and 365', 'alert'); // confirm, info - getField('SCH_DAYS_PERFORM_TASK_OPT_3').value = '1'; - } -}); - -leimnud.event.add(getField('SCH_EVERY_DAYS'), 'change', function() { - days = getField('SCH_EVERY_DAYS').value; - if(!(days>=1 && days<=52) ) { - msgBox('Weeks must be between 1 and 52', 'alert'); - getField('SCH_EVERY_DAYS').value = ''; - } -}); - -leimnud.event.add(getField('SCH_START_DAY_OPT_1'), 'change', function() { - days = getField('SCH_START_DAY_OPT_1').value; - if(!(days>=1 && days<=31) ) { - msgBox('The days must be between 1 and 31', 'alert'); - getField('SCH_START_DAY_OPT_1').value = '1'; - } -}); - -leimnud.event.add(getField('SCH_START_TIME'), 'keyup', function() { - if (getField('SCH_START_TIME').value.charAt(0)) { - if (isNaN(getField('SCH_START_TIME').value.charAt(0)) == true) { - getField('SCH_START_TIME').value = getField('SCH_START_TIME').value.slice(0, -1); - } - } - if (getField('SCH_START_TIME').value.charAt(1)) { - if (isNaN(getField('SCH_START_TIME').value.charAt(1)) == true) { - getField('SCH_START_TIME').value = getField('SCH_START_TIME').value.slice(0, -1); - } - } - var oVar = getField('SCH_START_TIME').value.charAt(2); - if (isNaN(oVar) == true) { - if (! getField('SCH_START_TIME').value.charAt(3)) { - getField('SCH_START_TIME').value = getField('SCH_START_TIME').value.slice(0, -1); - } - if (getField('SCH_START_TIME').value.charAt(4)) { - if (isNaN(getField('SCH_START_TIME').value.charAt(4)) == true) { - getField('SCH_START_TIME').value = getField('SCH_START_TIME').value.slice(0, -1); - } - } - } -}); - -leimnud.event.add(getField('SCH_START_TIME'), 'change', function() { - hours = getField('SCH_START_TIME').value; - answer = hours; - var parties = answer.split(':'); - - if(parties[0]>23){ - msgBox(G_STRINGS.ID_SCHEDULER_CANT_PUT_TIME, 'alert'); - getField('SCH_START_TIME').value=''; - //getField('SCH_REPEAT_UNTIL').value=''; - //getField('SCH_REPEAT_UNTIL').focus(); - getField('SAVE').focus(); - - } - if(parties[1]>59){ - msgBox('The minutes can not be greater than 59', 'alert'); - getField('SCH_START_TIME').value=''; - //getField('SCH_REPEAT_UNTIL').value=''; - //getField('SCH_REPEAT_UNTIL').focus(); - getField('SAVE').focus(); - } -}); - -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() { - showSelection('1'); -}); -leimnud.event.add(getField('SCH_OPTION][2'), 'change', function() { - showSelection('2'); -}); -leimnud.event.add(getField('SCH_OPTION][3'), 'change', function() { - showSelection('3'); -}); -leimnud.event.add(getField('SCH_OPTION][4'), 'change', function() { - showSelection('4'); -}); -*/ - -function case_userSchedulerValidate(username, password) { - //G.alert(username); - //G.alert(password); - var user_uid; - - if(username=='' || password==''){ - msgBox(G_STRINGS.ID_CASE_SCHEDULER_VALIDATE_ALERT, "alert"); - return false; - } - - var oRPC = new leimnud.module.rpc.xmlhttp({ - url : '../cases/cases_SchedulerValidateUser', - async : true, - method: 'POST', - args : "USERNAME="+username+"&PASSWORD="+password - }); - - oRPC.callback = function(rpc){ - //msgBox(rpc.xmlhttp.responseText,"alert"); - sresponse = rpc.xmlhttp.responseText; - - switch(sresponse){ - case "User does not have access to the system": - case "Wrong password": - case "User inactive!": - msgBox(rpc.xmlhttp.responseText,"alert"); - getField('BTNCANCEL').focus(); - return false; - break - } - - getField('SCH_USER_UID').value = rpc.xmlhttp.responseText; - user_uid = rpc.xmlhttp.responseText; - //alert(user_uid); - - var oRPCProcess = new leimnud.module.rpc.xmlhttp({ - url : '../cases/cases_SchedulerGetProcesses', - async : true, - method: 'POST', - args : "USR_UID="+user_uid+"&PRO_UID="+$_GET('PRO_UID') - }); - - oRPCProcess.callback = function(rpc){ - if (getField('PRO_UID')!=null){ - var process_uid = getField('PRO_UID').value; - } else { - var process_uid = gup('PRO_UID'); - } - loadTasksDropdown(process_uid,user_uid); - - }.extend(this); - - oRPCProcess.make(); - - - }.extend(this); - oRPC.make(); - - -} -/* - * @function validateSchedulerFields - * @author gustavo cruz gustavo[at]colsoa[dot]com - * @desc This function validates the special cases for the scheduler data fields. - * @return true/false boolean - */ - -function validateSchedulerFields(){ -var validFields = true; -var requiredFields = ''; -var badFormatFields = ''; -var startDate = document.getElementById('form[SCH_START_DATE]').value; -var endDate = document.getElementById('form[SCH_END_DATE]').value; - -startDate = startDate.split("-"); -endDate = endDate.split("-"); -startDate = new Date(startDate[0],startDate[1],startDate[2]); -endDate = new Date(endDate[0],endDate[1],endDate[2]); - - if (document.getElementById('form[SCH_START_DATE]').value==''){ - requiredFields = requiredFields + 'Start Date,'; - validFields = false; - } else { - if (document.getElementById('form[SCH_END_DATE]').value!='') - if (startDate>endDate){ - badFormatFields = badFormatFields + 'Start Date can\'t be greater than End Date'; - validFields = false; - } - } - // check if the field time is compliant with the regular expression - // for time format hh:mm - var regExpString = "([0-1]\\d|2[0-3]):([0-5]\\d)"; - var timeRegexp = new RegExp(regExpString); - 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 - case '1': - //if(document.getElementById('form[SCH_DAYS_PERFORM_TASK][1]').checked==true||document.getElementById('form[SCH_DAYS_PERFORM_TASK][2]').checked==true||document.getElementById('form[SCH_DAYS_PERFORM_TASK][3]').checked==true){ - if(document.getElementById('form[SCH_DAYS_PERFORM_TASK]').value!=''){ - validFields = true; - } else { - requiredFields = requiredFields + 'Weekdays,'; - validFields = false; - } - - break; - // weekly - case '2': - if (document.getElementById('form[SCH_EVERY_DAYS]').value==''){ - requiredFields = requiredFields + 'Number of Weeks,'; - validFields = false; - } else { - for (week=1;week<=4;week++){ - weekIdOne = 'form[SCH_WEEK_DAYS]['+week+']'; - if (document.getElementById(weekIdOne).checked==true){ - validFields = true; - break; - } else { - validFields = false; - } - } - if (!validFields){ - for (week=1;week<=3;week++){ - weekIdTwo = 'form[SCH_WEEK_DAYS_2]['+(week+4)+']'; - if (document.getElementById(weekIdTwo).checked==true){ - validFields = true; - break; - } else { - validFields = false; - } - } - } - if (!validFields){ - requiredFields = requiredFields + 'Weeks,'; - validFields = false; - } - } - break; - //monthly - case '3': - if (document.getElementById('form[SCH_START_DAY][1]').checked==true||document.getElementById('form[SCH_START_DAY][2]').checked==true){ - for (month=1;month<=4;month++){ - monthIdOne = 'form[SCH_MONTHS]['+month+']'; - monthIdTwo = 'form[SCH_MONTHS_2]['+(month+4)+']'; - monthIdThree = 'form[SCH_MONTHS_3]['+(month+8)+']'; - - if (document.getElementById(monthIdOne).checked==true||document.getElementById(monthIdTwo).checked==true||document.getElementById(monthIdThree).checked==true){ - validFields = true; - break; - } else { - validFields = false; - } - } - if (!validFields){ - requiredFields = requiredFields + 'Months,'; - validFields = false; - } - } else { - requiredFields = requiredFields + 'Start Day,'; - validFields = false; - } - - - break; - //run once - case '4': - - validFields = true; - - break; - //run every - case '5': - - validFields = true; - - break; - default: - validFields = false; - break; - } - if (requiredFields!='') { - var message = "The fields "+requiredFields+" can\'t be empty"; - msgBox(message, 'alert'); - return false; - } else { - if (badFormatFields!=''){ - var message = badFormatFields; - msgBox(message, 'alert'); - return false; - } else { - return true; - } - } -} - -function resetForm(){ -document.getElementById('form[SCH_USER_NAME]').readOnly=false; -document.getElementById('form[SCH_USER_PASSWORD]').readOnly=false; -document.getElementById('form[TEST_CONNECTION]').style.display=''; -hideAll(); -hideProperties(); -} - -function loadTasksDropdown(process,user_uid){ - //alert(process); - var oRPCTasks = new leimnud.module.rpc.xmlhttp({ - url : '../cases/cases_SchedulerGetTasks', - async : true, - method: 'POST', - args : "USR_UID="+user_uid+"&PRO_UID="+process - }); - - oRPCTasks.callback = function(rpc){ - document.getElementById("taskListDropdown").innerHTML = rpc.xmlhttp.responseText; - // if the user is assigned to the task the default task value will be diferent than char - - if (getField('TAS_UID').value!='char'){ - showProperties(); - } else { - msgBox("The User login data seems to be invalid.","alert"); - } - }.extend(this); - oRPCTasks.make(); -} -leimnud.event.add(getField('SCH_REPEAT_TASK_CHK'), 'click', function() { - if(getField('SCH_REPEAT_TASK_CHK').checked){ - enable(getField('SCH_REPEAT_EVERY')); - enable(getField('SCH_REPEAT_EVERY_OPT')); - // enable(getField('SCH_REPEAT_UNTIL')); - // enable(getField('SCH_REPEAT_STOP_IF_RUNNING')); - } else { - - - // disable(getField('SCH_REPEAT_UNTIL')); - // disable(getField('SCH_REPEAT_STOP_IF_RUNNING')); - } - -}); - - -function collapseAdvancedOptions(){ - var flag = document.getElementById('EditLogAdvancedOptions').innerHTML; - if (flag=='visible'){ - //contractSubtitle('ADVANCED_4'); - document.getElementById('EditLogAdvancedOptions').innerHTML = 'hidden'; - document.getElementById('checkAdvanced').checked = false; - - //document.getElementById('form[SCH_END_DATE]').value = ''; - document.getElementById('form[SCH_END_DATE][div]').innerHTML = ''; - document.getElementById('form[SCH_REPEAT_TASK_CHK]').checked = false; - - - } else { - //expandSubtitle('ADVANCED_4'); - document.getElementById('checkAdvanced').checked = true; - document.getElementById('EditLogAdvancedOptions').innerHTML = 'visible'; - } -} - -function gup( name ) -{ - name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); - var regexS = "[\\?&]"+name+"=([^&#]*)"; - var regex = new RegExp( regexS ); - var results = regex.exec( window.location.href ); - if( results == null ) - return ""; - else - return results[1]; -} - -]]> - + + + + + + + +General Information + + + +Enter the username and password of the user who will be assigned to the initial task in the case. + + + + + + + + + + + +User Name + + +Password + + + + Test User + + + Edit User + + + +Properties + + + + + + +Task + + + +Description + + + +Perform this task + + + + + + + + + + +Select the date and time for case(s) to be initiated. + + + +Execution time + + + +Select date + + + +Start date + + + + Daily + + + + + + + Weekly + + + +Every + + + +Select the day(s) of the week below + + + + + + + + + + + + + + + + Monthly + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Of the month(s) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +End Date + + +Repeat Task + + + + + +Execute every + + + + + + + + + + + + + + + + + + +Start a case based on following registered Plugin. + + + +Save + + + +Cancel + + +=1 && days<=365)){ + msgBox('Days must be between 1 and 365', 'alert'); // confirm, info + getField('SCH_DAYS_PERFORM_TASK_OPT_3').value = '1'; + } +}); + +leimnud.event.add(getField('SCH_EVERY_DAYS'), 'change', function() { + days = getField('SCH_EVERY_DAYS').value; + if(!(days>=1 && days<=52) ) { + msgBox('Weeks must be between 1 and 52', 'alert'); + getField('SCH_EVERY_DAYS').value = ''; + } +}); + +leimnud.event.add(getField('SCH_START_DAY_OPT_1'), 'change', function() { + days = getField('SCH_START_DAY_OPT_1').value; + if(!(days>=1 && days<=31) ) { + msgBox('The days must be between 1 and 31', 'alert'); + getField('SCH_START_DAY_OPT_1').value = '1'; + } +}); + +leimnud.event.add(getField('SCH_START_TIME'), 'keyup', function() { + if (getField('SCH_START_TIME').value.charAt(0)) { + if (isNaN(getField('SCH_START_TIME').value.charAt(0)) == true) { + getField('SCH_START_TIME').value = getField('SCH_START_TIME').value.slice(0, -1); + } + } + if (getField('SCH_START_TIME').value.charAt(1)) { + if (isNaN(getField('SCH_START_TIME').value.charAt(1)) == true) { + getField('SCH_START_TIME').value = getField('SCH_START_TIME').value.slice(0, -1); + } + } + var oVar = getField('SCH_START_TIME').value.charAt(2); + if (isNaN(oVar) == true) { + if (! getField('SCH_START_TIME').value.charAt(3)) { + getField('SCH_START_TIME').value = getField('SCH_START_TIME').value.slice(0, -1); + } + if (getField('SCH_START_TIME').value.charAt(4)) { + if (isNaN(getField('SCH_START_TIME').value.charAt(4)) == true) { + getField('SCH_START_TIME').value = getField('SCH_START_TIME').value.slice(0, -1); + } + } + } +}); + +leimnud.event.add(getField('SCH_START_TIME'), 'change', function() { + hours = getField('SCH_START_TIME').value; + answer = hours; + var parties = answer.split(':'); + + if(parties[0]>23){ + msgBox(G_STRINGS.ID_SCHEDULER_CANT_PUT_TIME, 'alert'); + getField('SCH_START_TIME').value=''; + //getField('SCH_REPEAT_UNTIL').value=''; + //getField('SCH_REPEAT_UNTIL').focus(); + getField('SAVE').focus(); + + } + if(parties[1]>59){ + msgBox('The minutes can not be greater than 59', 'alert'); + getField('SCH_START_TIME').value=''; + //getField('SCH_REPEAT_UNTIL').value=''; + //getField('SCH_REPEAT_UNTIL').focus(); + getField('SAVE').focus(); + } +}); + +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() { + showSelection('1'); +}); +leimnud.event.add(getField('SCH_OPTION][2'), 'change', function() { + showSelection('2'); +}); +leimnud.event.add(getField('SCH_OPTION][3'), 'change', function() { + showSelection('3'); +}); +leimnud.event.add(getField('SCH_OPTION][4'), 'change', function() { + showSelection('4'); +}); +*/ + +function case_userSchedulerValidate(username, password) { + var user_uid; + + if(username=='' || password==''){ + msgBox(G_STRINGS.ID_CASE_SCHEDULER_VALIDATE_ALERT, "alert"); + return false; + } + + var oRPC = new leimnud.module.rpc.xmlhttp({ + url : '../cases/cases_SchedulerValidateUser', + async : true, + method: 'POST', + args : "USERNAME="+username+"&PASSWORD="+password+"&PRO_UID="+$_GET('PRO_UID') + }); + + oRPC.callback = function(rpc){ + sresponse = rpc.xmlhttp.responseText.parseJSON(); + + if (sresponse.status_code != 0) { + msgBox(sresponse.message, "alert"); + getField('BTNCANCEL').focus(); + return false; + } + + getField('SCH_USER_UID').value = sresponse.message; + user_uid = sresponse.message; + + var oRPCProcess = new leimnud.module.rpc.xmlhttp({ + url : '../cases/cases_SchedulerGetProcesses', + async : true, + method: 'POST', + args : "USR_UID="+user_uid+"&PRO_UID="+$_GET('PRO_UID') + }); + + oRPCProcess.callback = function(rpc){ + if (getField('PRO_UID')!=null){ + var process_uid = getField('PRO_UID').value; + } else { + var process_uid = gup('PRO_UID'); + } + loadTasksDropdown(process_uid,user_uid); + + }.extend(this); + + oRPCProcess.make(); + + + }.extend(this); + oRPC.make(); + + +} +/* + * @function validateSchedulerFields + * @author gustavo cruz gustavo[at]colsoa[dot]com + * @desc This function validates the special cases for the scheduler data fields. + * @return true/false boolean + */ + +function validateSchedulerFields(){ +var validFields = true; +var requiredFields = ''; +var badFormatFields = ''; +var startDate = document.getElementById('form[SCH_START_DATE]').value; +var endDate = document.getElementById('form[SCH_END_DATE]').value; + +startDate = startDate.split("-"); +endDate = endDate.split("-"); +startDate = new Date(startDate[0],startDate[1],startDate[2]); +endDate = new Date(endDate[0],endDate[1],endDate[2]); + + if (document.getElementById('form[SCH_START_DATE]').value==''){ + requiredFields = requiredFields + 'Start Date,'; + validFields = false; + } else { + if (document.getElementById('form[SCH_END_DATE]').value!='') + if (startDate>endDate){ + badFormatFields = badFormatFields + 'Start Date can\'t be greater than End Date'; + validFields = false; + } + } + // check if the field time is compliant with the regular expression + // for time format hh:mm + var regExpString = "([0-1]\\d|2[0-3]):([0-5]\\d)"; + var timeRegexp = new RegExp(regExpString); + 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 + case '1': + //if(document.getElementById('form[SCH_DAYS_PERFORM_TASK][1]').checked==true||document.getElementById('form[SCH_DAYS_PERFORM_TASK][2]').checked==true||document.getElementById('form[SCH_DAYS_PERFORM_TASK][3]').checked==true){ + if(document.getElementById('form[SCH_DAYS_PERFORM_TASK]').value!=''){ + validFields = true; + } else { + requiredFields = requiredFields + 'Weekdays,'; + validFields = false; + } + + break; + // weekly + case '2': + if (document.getElementById('form[SCH_EVERY_DAYS]').value==''){ + requiredFields = requiredFields + 'Number of Weeks,'; + validFields = false; + } else { + for (week=1;week<=4;week++){ + weekIdOne = 'form[SCH_WEEK_DAYS]['+week+']'; + if (document.getElementById(weekIdOne).checked==true){ + validFields = true; + break; + } else { + validFields = false; + } + } + if (!validFields){ + for (week=1;week<=3;week++){ + weekIdTwo = 'form[SCH_WEEK_DAYS_2]['+(week+4)+']'; + if (document.getElementById(weekIdTwo).checked==true){ + validFields = true; + break; + } else { + validFields = false; + } + } + } + if (!validFields){ + requiredFields = requiredFields + 'Weeks,'; + validFields = false; + } + } + break; + //monthly + case '3': + if (document.getElementById('form[SCH_START_DAY][1]').checked==true||document.getElementById('form[SCH_START_DAY][2]').checked==true){ + for (month=1;month<=4;month++){ + monthIdOne = 'form[SCH_MONTHS]['+month+']'; + monthIdTwo = 'form[SCH_MONTHS_2]['+(month+4)+']'; + monthIdThree = 'form[SCH_MONTHS_3]['+(month+8)+']'; + + if (document.getElementById(monthIdOne).checked==true||document.getElementById(monthIdTwo).checked==true||document.getElementById(monthIdThree).checked==true){ + validFields = true; + break; + } else { + validFields = false; + } + } + if (!validFields){ + requiredFields = requiredFields + 'Months,'; + validFields = false; + } + } else { + requiredFields = requiredFields + 'Start Day,'; + validFields = false; + } + + + break; + //run once + case '4': + + validFields = true; + + break; + //run every + case '5': + + validFields = true; + + break; + default: + validFields = false; + break; + } + if (requiredFields!='') { + var message = "The fields "+requiredFields+" can\'t be empty"; + msgBox(message, 'alert'); + return false; + } else { + if (badFormatFields!=''){ + var message = badFormatFields; + msgBox(message, 'alert'); + return false; + } else { + return true; + } + } +} + +function resetForm(){ +document.getElementById('form[SCH_USER_NAME]').readOnly=false; +document.getElementById('form[SCH_USER_PASSWORD]').readOnly=false; +document.getElementById('form[TEST_CONNECTION]').style.display=''; +hideAll(); +hideProperties(); +} + +function loadTasksDropdown(process,user_uid){ + //alert(process); + var oRPCTasks = new leimnud.module.rpc.xmlhttp({ + url : '../cases/cases_SchedulerGetTasks', + async : true, + method: 'POST', + args : "USR_UID="+user_uid+"&PRO_UID="+process + }); + + oRPCTasks.callback = function(rpc){ + document.getElementById("taskListDropdown").innerHTML = rpc.xmlhttp.responseText; + // if the user is assigned to the task the default task value will be diferent than char + + if (getField('TAS_UID').value!='char'){ + showProperties(); + } else { + msgBox("The User login data seems to be invalid.","alert"); + } + }.extend(this); + oRPCTasks.make(); +} +leimnud.event.add(getField('SCH_REPEAT_TASK_CHK'), 'click', function() { + if(getField('SCH_REPEAT_TASK_CHK').checked){ + enable(getField('SCH_REPEAT_EVERY')); + enable(getField('SCH_REPEAT_EVERY_OPT')); + // enable(getField('SCH_REPEAT_UNTIL')); + // enable(getField('SCH_REPEAT_STOP_IF_RUNNING')); + } else { + + + // disable(getField('SCH_REPEAT_UNTIL')); + // disable(getField('SCH_REPEAT_STOP_IF_RUNNING')); + } + +}); + + +function collapseAdvancedOptions(){ + var flag = document.getElementById('EditLogAdvancedOptions').innerHTML; + if (flag=='visible'){ + //contractSubtitle('ADVANCED_4'); + document.getElementById('EditLogAdvancedOptions').innerHTML = 'hidden'; + document.getElementById('checkAdvanced').checked = false; + + //document.getElementById('form[SCH_END_DATE]').value = ''; + document.getElementById('form[SCH_END_DATE][div]').innerHTML = ''; + document.getElementById('form[SCH_REPEAT_TASK_CHK]').checked = false; + + + } else { + //expandSubtitle('ADVANCED_4'); + document.getElementById('checkAdvanced').checked = true; + document.getElementById('EditLogAdvancedOptions').innerHTML = 'visible'; + } +} + +function gup( name ) +{ + name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); + var regexS = "[\\?&]"+name+"=([^&#]*)"; + var regex = new RegExp( regexS ); + var results = regex.exec( window.location.href ); + if( results == null ) + return ""; + else + return results[1]; +} + +]]> +