BUG 8660 Problems in Case Tracker SOLVED

- The first problem, when the tab diagram showing the map did not hide when you selected the option NONE, and when they entered a white screen is displayed, the error speak second to show the dynaforms not present a session variable the which was shown as a notice.
- To display dinaforms valid only in the XmlForm class, and q if you increase the session showed the Dynaform across the page, to edit the first problem is how to obtain permits in class case by changing the role permission caseTrackerPermissions addition to improving function, also modified the way to generate depending on the function menu caseTrackerPermissions also modified the authentication to lead the tab corresponding to the relevant validations.
This commit is contained in:
Marco Antonio Nina
2012-03-08 11:11:47 -04:00
parent 20e11d747d
commit fadec156e5
7 changed files with 187 additions and 227 deletions

View File

@@ -2530,9 +2530,11 @@ class XmlForm_Field_Submit extends XmlForm_Field {
} elseif ($this->mode === 'view') { } elseif ($this->mode === 'view') {
// return "<input style=\"{$this->style};display:none\" disabled='disabled' class='module_app_button___gray module_app_buttonDisabled___gray {$this->className}' id=\"form[{$this->name}]\" name=\"form[{$this->name}]\" type='submit' value=\"{$this->label}\" " . (($this->onclick) ? 'onclick="' . htmlentities ( $onclick, ENT_COMPAT, 'utf-8' ) . '"' : '') . " />"; // return "<input style=\"{$this->style};display:none\" disabled='disabled' class='module_app_button___gray module_app_buttonDisabled___gray {$this->className}' id=\"form[{$this->name}]\" name=\"form[{$this->name}]\" type='submit' value=\"{$this->label}\" " . (($this->onclick) ? 'onclick="' . htmlentities ( $onclick, ENT_COMPAT, 'utf-8' ) . '"' : '') . " />";
//$sLinkNextStep = 'window.open("' . $owner->fields['__DYNAFORM_OPTIONS']->xmlMenu->values['NEXT_STEP'] . '", "_self");'; //$sLinkNextStep = 'window.open("' . $owner->fields['__DYNAFORM_OPTIONS']->xmlMenu->values['NEXT_STEP'] . '", "_self");';
$html = '';
$sLinkNextStep = 'window.location=("casesSaveDataView?UID='.$_SESSION['CURRENT_DYN_UID'].'");'; if (isset($_SESSION['CURRENT_DYN_UID'])) {
$html = '<input style="' . $this->style . '" class="module_app_button___gray '. $this->className .'" id="form['. $this->name .']" name="form['. $this->name .']" type="button" value="' .G::LoadTranslation('ID_CONTINUE') . '" onclick="' . htmlentities ( $sLinkNextStep, ENT_COMPAT, 'utf-8' ) . '" />'; $sLinkNextStep = 'window.location=("casesSaveDataView?UID='.$_SESSION['CURRENT_DYN_UID'].'");';
$html = '<input style="' . $this->style . '" class="module_app_button___gray '. $this->className .'" id="form['. $this->name .']" name="form['. $this->name .']" type="button" value="' .G::LoadTranslation('ID_CONTINUE') . '" onclick="' . htmlentities ( $sLinkNextStep, ENT_COMPAT, 'utf-8' ) . '" />';
}
$html .= '<input '; $html .= '<input ';
$html .= 'id="form['. $this->name . ']" '; $html .= 'id="form['. $this->name . ']" ';
$html .= 'name="form[' . $this->name . ']" '; $html .= 'name="form[' . $this->name . ']" ';

View File

@@ -4595,36 +4595,26 @@ class Cases {
} }
/* /*
* funcion permisos, by Everth * funcion caseTrackerPermissions, by Everth
* *
* @name Permisos * @name caseTrackerPermissions
* @param string $PRO_UID * @param string $PRO_UID
* @return string * @return string
*/ */
function Permisos($PRO_UID) { function caseTrackerPermissions($PRO_UID) {
$a = 0; $newCaseTracker = new CaseTracker();
$b = 0; $caseTracker = $newCaseTracker->load($PRO_UID);
$c = 0; if (is_array($caseTracker)) {
$d = 0; $caseTracker['CT_MAP_TYPE'] = ($caseTracker['CT_MAP_TYPE'] != 'NONE')? true : false;
$oCaseTracker = new CaseTracker(); //$caseTracker['CT_DERIVATION_HISTORY'] = ($caseTracker['CT_DERIVATION_HISTORY'] == 1)? true : false;
$aCaseTracker = $oCaseTracker->load($PRO_UID); //$caseTracker['CT_MESSAGE_HISTORY'] = ($caseTracker['CT_MESSAGE_HISTORY'] == 1)? true : false;
if (is_array($aCaseTracker)) {
if ($aCaseTracker['CT_MAP_TYPE'] != 'NONE')
$a = 1;
$oCriteria = new Criteria(); $criteria = new Criteria();
$oCriteria->add(CaseTrackerObjectPeer::PRO_UID, $PRO_UID); $criteria->add(CaseTrackerObjectPeer::PRO_UID, $PRO_UID);
if (CaseTrackerObjectPeer::doCount($oCriteria) > 0) $caseTracker['DYNADOC'] = (CaseTrackerObjectPeer::doCount($criteria) > 0)? true : false;
$b = 1;
if ($aCaseTracker['CT_DERIVATION_HISTORY'] == 1)
$c = 1;
if ($aCaseTracker['CT_MESSAGE_HISTORY'] == 1)
$d = 1;
} }
return $a . '-' . $b . '-' . $c . '-' . $d; return $caseTracker;
} }
/* /*

View File

@@ -23,7 +23,7 @@
* *
*/ */
/* /*
* Case Tracker Men<EFBFBD> * Case Tracker Menú
* *
* @author Everth S. Berrios Morales <everth@colosa.com> * @author Everth S. Berrios Morales <everth@colosa.com>
* *
@@ -31,46 +31,25 @@
global $G_TMP_MENU; global $G_TMP_MENU;
global $RBAC; global $RBAC;
$G_TMP_MENU->AddIdRawOption('MAP', 'tracker/tracker_ViewMap'); if (file_exists ( PATH_CORE . 'menus/plugin.php')) {
$G_TMP_MENU->AddIdRawOption('DYNADOC', 'tracker/tracker_DynaDocs'); require_once (PATH_CORE . 'menus/plugin.php');
$G_TMP_MENU->AddIdRawOption('HISTORY', 'tracker/tracker_History');
$G_TMP_MENU->AddIdRawOption('MESSAGES', 'tracker/tracker_Messages');
$G_TMP_MENU->Labels = array(
G::LoadTranslation('ID_MAP'),
G::LoadTranslation('ID_DYNADOC'),
G::LoadTranslation('ID_HISTORY'),
G::LoadTranslation('ID_HISTORY_MESSAGES')
);
if ( file_exists ( PATH_CORE . 'menus/plugin.php' ) ) {
require_once ( PATH_CORE . 'menus/plugin.php' );
} }
G::LoadClass('case'); G::LoadClass('case');
$oCase = new Cases(); $case = new Cases();
$per = $oCase->Permisos( $_SESSION['PROCESS']); $caseTracker = $case->caseTrackerPermissions( $_SESSION['PROCESS']);
if ($caseTracker['CT_MAP_TYPE']) {
$p = explode('-', $per); $G_TMP_MENU->AddIdRawOption('MAP', 'tracker/tracker_ViewMap', G::LoadTranslation('ID_MAP'));
}
if ($p[0] != 1) if ($caseTracker['DYNADOC']) {
{ $G_TMP_MENU->AddIdRawOption('DYNADOC', 'tracker/tracker_DynaDocs', G::LoadTranslation('ID_DYNADOC'));
$G_TMP_MENU->DisableOptionId('MAP'); }
} if ($caseTracker['CT_DERIVATION_HISTORY']) {
$G_TMP_MENU->AddIdRawOption('HISTORY', 'tracker/tracker_History', G::LoadTranslation('ID_HISTORY'));
if ($p[1] != 1) }
{ if ($caseTracker['CT_MESSAGE_HISTORY']) {
$G_TMP_MENU->DisableOptionId('DYNADOC'); $G_TMP_MENU->AddIdRawOption('MESSAGES', 'tracker/tracker_Messages', G::LoadTranslation('ID_HISTORY_MESSAGES'));
} }
if ($p[2] != 1)
{
$G_TMP_MENU->DisableOptionId('HISTORY');
}
if ($p[3] != 1)
{
$G_TMP_MENU->DisableOptionId('MESSAGES');
}

View File

@@ -29,98 +29,88 @@
* *
*/ */
if (!isset($_POST['form']) ) { if (!isset($_POST['form']) ) {
G::SendTemporalMessage ('ID_USER_HAVENT_RIGHTS_SYSTEM', "error"); G::SendTemporalMessage ('ID_USER_HAVENT_RIGHTS_SYSTEM', "error");
G::header ("location: login.php");die; G::header ("location: login.php");die;
} }
try { try {
$frm = $_POST['form']; $frm = $_POST['form'];
$case = ''; $case = '';
$pin = ''; $pin = '';
if (isset($frm['CASE'])) { if (isset($frm['CASE'])) {
$case = strtolower(trim($frm['CASE'])); $case = strtolower(trim($frm['CASE']));
$pin = trim($frm['PIN']); $pin = trim($frm['PIN']);
} }
G::LoadClass('case'); G::LoadClass('case');
$oCase = new Cases(); $cases = new Cases();
$uid = $oCase->verifyCaseTracker($case, $pin); $uid = $cases->verifyCaseTracker($case, $pin);
//print_r($uid); die; switch ($uid) {
switch ($uid) { //The case doesn't exist
//The case doesn't exist case -1:
case -1: G::SendTemporalMessage ('ID_CASE_NOT_EXISTS', "error");
G::SendTemporalMessage ('ID_CASE_NOT_EXISTS', "error"); break;
break; //The pin is invalid
//The pin is invalid case -2:
case -2: G::SendTemporalMessage ('ID_PIN_INVALID', "error");
G::SendTemporalMessage ('ID_PIN_INVALID', "error"); break;
break; }
}
if ($uid < 0 ) { if ($uid < 0 ) {
G::header ("location: login.php"); G::header ("location: login.php");
die; die;
} }
if(is_array($uid)) if(is_array($uid))
{ {
require_once ("classes/model/CaseTracker.php"); require_once ("classes/model/CaseTracker.php");
require_once ("classes/model/CaseTrackerObject.php"); require_once ("classes/model/CaseTrackerObject.php");
$_SESSION['CASE']=$case; $_SESSION['CASE'] = $case;
$_SESSION['PIN']=$pin; $_SESSION['PIN'] = $pin;
$_SESSION['PROCESS']=$uid['PRO_UID']; $_SESSION['PROCESS'] = $uid['PRO_UID'];
$_SESSION['APPLICATION']=$uid['APP_UID']; $_SESSION['APPLICATION'] = $uid['APP_UID'];
$_SESSION['TASK']=-1; $_SESSION['TASK'] = -1;
$_SESSION['INDEX']=-1; $_SESSION['INDEX'] = -1;
$a=0;
$b=0; $criteria = new Criteria();
$c=0; $criteria->add(CaseTrackerPeer::PRO_UID, $_SESSION['PROCESS']);
$oCriteria = new Criteria(); $caseTracker = new CaseTracker();
$oCriteria->add(CaseTrackerPeer::PRO_UID, $_SESSION['PROCESS']); if (CaseTrackerPeer::doCount($criteria) === 0) {
$oCaseTracker = new CaseTracker(); $permissionsCaseTracker = array('PRO_UID' => $_SESSION['PROCESS'],
if (CaseTrackerPeer::doCount($oCriteria) === 0) {
$aCaseTracker = array('PRO_UID' => $_SESSION['PROCESS'],
'CT_MAP_TYPE' => 'PROCESSMAP', 'CT_MAP_TYPE' => 'PROCESSMAP',
'CT_DERIVATION_HISTORY' => 1, 'CT_DERIVATION_HISTORY' => 1,
'CT_MESSAGE_HISTORY' => 1); 'CT_MESSAGE_HISTORY' => 1);
$oCaseTracker->create($aCaseTracker); $caseTracker->create($permissionsCaseTracker);
}
$caseTracker = $cases->caseTrackerPermissions( $_SESSION['PROCESS']);
if ($caseTracker['CT_MAP_TYPE']) {
G::header ('location: tracker_ViewMap');
} }
else { else {
$aCaseTracker = $oCaseTracker->load($_SESSION['PROCESS']); if ($caseTracker['DYNADOC']) {
} G::header ("location: tracker_DynaDocs");
}
if(is_array($aCaseTracker)) else {
{ if($aCaseTracker['CT_MAP_TYPE']!='NONE') if ($caseTracker['CT_DERIVATION_HISTORY']) {
{ $a=1; G::header ("location: tracker_History");
G::header ('location: tracker_ViewMap'); }
die; else {
} if ($caseTracker['CT_MESSAGE_HISTORY']) {
G::header ("location: tracker_No");
$oCriteria = new Criteria(); }
$oCriteria->add(CaseTrackerObjectPeer::PRO_UID, $_SESSION['PROCESS']); else {
if (CaseTrackerObjectPeer::doCount($oCriteria) > 0) G::header ("location: login.php");
{ $b=1; G::SendTemporalMessage ('ID_ACCOUNT_DISABLED_CONTACT_ADMIN', "error");
G::header ("location: tracker_DynaDocs"); }
die; }
} }
}
if($aCaseTracker['CT_DERIVATION_HISTORY']==1)
{ $c=1;
G::header ("location: tracker_History");
die;
}
G::header ("location: tracker_No");
}
} }
} }
catch ( Exception $e ) { catch ( Exception $e ) {
$aMessage['MESSAGE'] = $e->getMessage(); $aMessage['MESSAGE'] = $e->getMessage();
$G_PUBLISH = new Publisher; $G_PUBLISH = new Publisher;

View File

@@ -57,7 +57,6 @@
$Fields['APP_DATA']['__DYNAFORM_OPTIONS']['PRINT_PREVIEW'] = '#'; $Fields['APP_DATA']['__DYNAFORM_OPTIONS']['PRINT_PREVIEW'] = '#';
$Fields['APP_DATA']['__DYNAFORM_OPTIONS']['PRINT_PREVIEW_ACTION'] = 'tracker_PrintView?CTO_UID_OBJ=' . $_GET['CTO_UID_OBJ'] . '&CTO_TYPE_OBJ=PRINT_PREVIEW'; $Fields['APP_DATA']['__DYNAFORM_OPTIONS']['PRINT_PREVIEW_ACTION'] = 'tracker_PrintView?CTO_UID_OBJ=' . $_GET['CTO_UID_OBJ'] . '&CTO_TYPE_OBJ=PRINT_PREVIEW';
$_SESSION['CTO_UID_OBJ'] = $_GET['CTO_UID_OBJ']; $_SESSION['CTO_UID_OBJ'] = $_GET['CTO_UID_OBJ'];
$G_PUBLISH = new Publisher; $G_PUBLISH = new Publisher;
$G_PUBLISH->AddContent('dynaform', 'xmlform', $_SESSION['PROCESS']. '/' . $_GET['CTO_UID_OBJ'], '', $Fields['APP_DATA'],'','','view'); $G_PUBLISH->AddContent('dynaform', 'xmlform', $_SESSION['PROCESS']. '/' . $_GET['CTO_UID_OBJ'], '', $Fields['APP_DATA'],'','','view');
G::RenderPage('publish'); G::RenderPage('publish');

View File

@@ -29,95 +29,95 @@
* @author Everth S. Berrios Morales <everth@colosa.com> * @author Everth S. Berrios Morales <everth@colosa.com>
* *
*/ */
if (!isset($_SESSION['PROCESS'])) { if (!isset($_SESSION['PROCESS'])) {
G::header('location: login'); G::header('location: login');
} }
$G_MAIN_MENU = 'caseTracker'; $G_MAIN_MENU = 'caseTracker';
$G_ID_MENU_SELECTED = 'MAP'; $G_ID_MENU_SELECTED = 'MAP';
require_once 'classes/model/CaseTracker.php'; require_once 'classes/model/CaseTracker.php';
$oCaseTracker = new CaseTracker(); $oCaseTracker = new CaseTracker();
$aCaseTracker = $oCaseTracker->load($_SESSION['PROCESS']); $aCaseTracker = $oCaseTracker->load($_SESSION['PROCESS']);
switch (($aCaseTracker['CT_MAP_TYPE'])) { switch (($aCaseTracker['CT_MAP_TYPE'])) {
case 'NONE': case 'NONE':
//Nothing //Nothing
break; break;
case 'PROCESSMAP': case 'PROCESSMAP':
G::LoadClass('case'); G::LoadClass('case');
$oCase = new Cases(); $oCase = new Cases();
$aFields = $oCase->loadCase($_SESSION['APPLICATION']); $aFields = $oCase->loadCase($_SESSION['APPLICATION']);
if (isset($aFields['TITLE'])) { if (isset($aFields['TITLE'])) {
$aFields['APP_TITLE'] = $aFields['TITLE']; $aFields['APP_TITLE'] = $aFields['TITLE'];
} }
if ($aFields['APP_PROC_CODE'] != '') { if ($aFields['APP_PROC_CODE'] != '') {
$aFields['APP_NUMBER'] = $aFields['APP_PROC_CODE']; $aFields['APP_NUMBER'] = $aFields['APP_PROC_CODE'];
} }
$aFields['CASE'] = G::LoadTranslation('ID_CASE'); $aFields['CASE'] = G::LoadTranslation('ID_CASE');
$aFields['TITLE'] = G::LoadTranslation('ID_TITLE'); $aFields['TITLE'] = G::LoadTranslation('ID_TITLE');
$oTemplatePower = new TemplatePower(PATH_TPL . 'processes/processes_Map.html'); $oTemplatePower = new TemplatePower(PATH_TPL . 'processes/processes_Map.html');
$oTemplatePower->prepare(); $oTemplatePower->prepare();
$G_PUBLISH = new Publisher; $G_PUBLISH = new Publisher;
$G_PUBLISH->AddContent('smarty', 'cases/cases_title', '', '', $aFields); $G_PUBLISH->AddContent('smarty', 'cases/cases_title', '', '', $aFields);
$G_PUBLISH->AddContent('template', '', '', '', $oTemplatePower); $G_PUBLISH->AddContent('template', '', '', '', $oTemplatePower);
$oHeadPublisher =& headPublisher::getSingleton(); $oHeadPublisher =& headPublisher::getSingleton();
$oHeadPublisher->addScriptCode(' $oHeadPublisher->addScriptCode('
leimnud.event.add(window,"load",function(){ leimnud.event.add(window,"load",function(){
var pb=leimnud.dom.capture("tag.body 0"); var pb=leimnud.dom.capture("tag.body 0");
Pm=new processmap(); Pm=new processmap();
Pm.options = { Pm.options = {
target : "pm_target", target : "pm_target",
dataServer: "../processes/processes_Ajax", dataServer: "../processes/processes_Ajax",
uid : "' . $_SESSION['PROCESS'] . '", uid : "' . $_SESSION['PROCESS'] . '",
lang : "' . SYS_LANG . '", lang : "' . SYS_LANG . '",
theme : "processmaker", theme : "processmaker",
size : {w:pb.offsetWidth-10,h:pb.offsetHeight}, size : {w:pb.offsetWidth-10,h:pb.offsetHeight},
images_dir: "/jscore/processmap/core/images/", images_dir: "/jscore/processmap/core/images/",
rw : false, rw : false,
mi : false, mi : false,
ct : true, ct : true,
hideMenu : false hideMenu : false
} }
Pm.make(); Pm.make();
});'); });');
G::RenderPage('publish'); G::RenderPage('publish');
break; break;
case 'STAGES': case 'STAGES':
G::LoadClass('case'); G::LoadClass('case');
$oCase = new Cases(); $oCase = new Cases();
$aFields = $oCase->loadCase($_SESSION['APPLICATION']); $aFields = $oCase->loadCase($_SESSION['APPLICATION']);
if (isset($aFields['TITLE'])) { if (isset($aFields['TITLE'])) {
$aFields['APP_TITLE'] = $aFields['TITLE']; $aFields['APP_TITLE'] = $aFields['TITLE'];
} }
if ($aFields['APP_PROC_CODE'] != '') { if ($aFields['APP_PROC_CODE'] != '') {
$aFields['APP_NUMBER'] = $aFields['APP_PROC_CODE']; $aFields['APP_NUMBER'] = $aFields['APP_PROC_CODE'];
} }
$aFields['CASE'] = G::LoadTranslation('ID_CASE'); $aFields['CASE'] = G::LoadTranslation('ID_CASE');
$aFields['TITLE'] = G::LoadTranslation('ID_TITLE'); $aFields['TITLE'] = G::LoadTranslation('ID_TITLE');
$oTemplatePower = new TemplatePower(PATH_TPL . 'tracker/stages_Map.html'); $oTemplatePower = new TemplatePower(PATH_TPL . 'tracker/stages_Map.html');
$oTemplatePower->prepare(); $oTemplatePower->prepare();
$G_PUBLISH = new Publisher; $G_PUBLISH = new Publisher;
$G_PUBLISH->AddContent('smarty', 'cases/cases_title', '', '', $aFields); $G_PUBLISH->AddContent('smarty', 'cases/cases_title', '', '', $aFields);
$G_PUBLISH->AddContent('template', '', '', '', $oTemplatePower); $G_PUBLISH->AddContent('template', '', '', '', $oTemplatePower);
$oHeadPublisher =& headPublisher::getSingleton(); $oHeadPublisher =& headPublisher::getSingleton();
$oHeadPublisher->addScriptCode(' $oHeadPublisher->addScriptCode('
leimnud.Package.Load("stagesmap",{Type:"file",Absolute:true,Path:"/jscore/stagesmap/core/stagesmap.js"}); leimnud.Package.Load("stagesmap",{Type:"file",Absolute:true,Path:"/jscore/stagesmap/core/stagesmap.js"});
leimnud.event.add(window,"load",function(){ leimnud.event.add(window,"load",function(){
var pb=leimnud.dom.capture("tag.body 0"); var pb=leimnud.dom.capture("tag.body 0");
Sm=new stagesmap(); Sm=new stagesmap();
Sm.options = { Sm.options = {
target : "sm_target", target : "sm_target",
dataServer: "../tracker/tracker_Ajax", dataServer: "../tracker/tracker_Ajax",
uid : "' . $_SESSION['PROCESS'] . '", uid : "' . $_SESSION['PROCESS'] . '",
lang : "' . SYS_LANG . '", lang : "' . SYS_LANG . '",
theme : "processmaker", theme : "processmaker",
size : {w:"780",h:"540"}, size : {w:"780",h:"540"},
//size : {w:pb.offsetWidth-10,h:pb.offsetHeight}, //size : {w:pb.offsetWidth-10,h:pb.offsetHeight},
images_dir: "/jscore/processmap/core/images/", images_dir: "/jscore/processmap/core/images/",
rw : false, rw : false,
hideMenu : false hideMenu : false
}; };
Sm.make(); Sm.make();
});'); });');
G::RenderPage('publish'); G::RenderPage('publish');
break; break;
} }

View File

@@ -550,7 +550,7 @@
//checking method 'Permisos' //checking method 'Permisos'
$t->is ( $aMethods[60], 'Permisos', 'Permisos() is callable' ); $t->is ( $aMethods[60], 'Permisos', 'Permisos() is callable' );
//$result = $obj->Permisos ( $PRO_UID); //$result = $obj->caseTrackerPermissions ( $PRO_UID);
//$t->isa_ok( $result, 'NULL', 'call to method Permisos '); //$t->isa_ok( $result, 'NULL', 'call to method Permisos ');
$t->todo( "call to method Permisos using $PRO_UID "); $t->todo( "call to method Permisos using $PRO_UID ");