new menubar for Case Open View

This commit is contained in:
Erik Amaru Ortiz
2011-02-04 15:00:20 +00:00
parent 2bbbe029c2
commit ba8adc87ce
16 changed files with 865 additions and 23 deletions

118
gulliver/js/ext/pmos-common.js Executable file
View File

@@ -0,0 +1,118 @@
PMExtJSCommon = function() {
this.version = '1.8';
this.confirm = function(title, msg, fnYes, fnNo)
{
Ext.MessageBox.confirm(title, msg, function(btn, text){
if ( btn == 'yes' )
setTimeout(fnYes, 0)
else if( fnNo != undefined )
setTimeout(fnNo, 0)
});
}
this.info = function(title, msg, fn) {
Ext.MessageBox.show({
title: title,
msg: msg,
buttons: Ext.MessageBox.OK,
animEl: 'mb9',
fn: fn != undefined ? fn: function(){},
icon: Ext.MessageBox.INFO
});
}
this.question = function(title, msg, fn) {
Ext.MessageBox.show({
title: title,
msg: msg,
buttons: Ext.MessageBox.OK,
animEl: 'mb9',
fn: fn != undefined ? fn: function(){},
icon: Ext.MessageBox.QUESTION
});
}
this.warning = function(title, msg, fn) {
Ext.MessageBox.show({
title: title,
msg: msg,
buttons: Ext.MessageBox.OK,
animEl: 'mb9',
fn: fn != undefined ? fn: function(){},
icon: Ext.MessageBox.WARNING
});
}
this.error = function(title, msg, fn) {
Ext.MessageBox.show({
title: title,
msg: msg,
buttons: Ext.MessageBox.OK,
animEl: 'mb9',
fn: fn != undefined ? fn: function(){},
icon: Ext.MessageBox.ERROR
});
}
this.notify = function(title, msg)
{
Ext.msgBoxSlider.msg(title, msg);
}
}
var PMExt = new PMExtJSCommon();
/**
* Common Ext Functions
*/
Ext.msgBoxSlider = function(){
var msgCt;
function createBox(t, s){
return [
'<div class="msg">',
'<div class="x-box-tl"><div class="x-box-tr"><div class="x-box-tc"></div></div></div>',
'<div class="x-box-ml"><div class="x-box-mr"><div id="x-box-mc-inner" class="x-box-mc"><h3>', t, '</h3>', s, '</div></div></div>',
'<div class="x-box-bl"><div class="x-box-br"><div class="x-box-bc"></div></div></div>',
'</div>'
].join('');
}
return {
msg : function(title, format) {
if( ! msgCt ) {
msgCt = Ext.DomHelper.insertFirst(document.body, {id:'msg-div'}, true);
}
msgCt.alignTo(document, 't-t');
var s = String.format.apply(String, Array.prototype.slice.call(arguments, 1));
var m = Ext.DomHelper.append(msgCt, {html:createBox(title, s)}, true);
m.setWidth(400 );
m.position(null, 5000 );
m.alignTo(document, 't-t');
Ext.get('x-box-mc-inner' ).setStyle('background-image', 'url("<?php echo _EXT_URL ?>/images/_accept.png")');
Ext.get('x-box-mc-inner' ).setStyle('background-position', '5px 10px');
Ext.get('x-box-mc-inner' ).setStyle('background-repeat', 'no-repeat');
Ext.get('x-box-mc-inner' ).setStyle('padding-left', '35px');
m.slideIn('t').pause(3).ghost("t", {remove:true});
}
};
}();
/**
* Translator function for internationalization
*/
function _(ID_LABEL)
{
if( typeof(TRANSLATIONS) != 'undefined' ) {
if( typeof(TRANSLATIONS[ID_LABEL]) != 'undefined' ) {
trn = TRANSLATIONS[ID_LABEL];
} else {
trn = '**' + ID_LABEL + '**';
}
} else {
PMExt.error('Processmaker JS Core Error', 'The TRANSLATIONS global object is not loaded!');
trn = '';
}
return trn;
}

7
gulliver/js/ext/ux/miframe.js Executable file

File diff suppressed because one or more lines are too long

View File

@@ -18,6 +18,13 @@ switch($type){
$helper->serve();
break;
case 'js-translations':
$locale = $_GET['locale'];
G::LoadTranslationObject($locale);
global $translation;
print 'var TRANSLATIONS = ' . G::json_encode($translation) . ';';
break;
}

View File

@@ -1890,18 +1890,27 @@ class G
* @access public
* @parameter string msgID
* @parameter string file
* @parameter array data // erik: associative array within data input to replace for formatted string i.e "any messsage {replaced_label} that contains a replace label"
* @return string
*/
function LoadTranslation( $msgID , $lang = SYS_LANG )
function LoadTranslation( $msgID , $lang = SYS_LANG, $data = null)
{
global $translation;
if ( isset ( $translation[$msgID] ) ){
//return eregi_replace("[\n|\r|\n\r]", ' ', $translation[$msgID]);
return preg_replace("[\n|\r|\n\r]", ' ', $translation[$msgID]);
}else{
if(defined("UNTRANSLATED_MARK")){
$translationString = preg_replace("[\n|\r|\n\r]", ' ', $translation[$msgID]);
if( isset($data) && is_array($data) ) {
foreach($data as $label=>$value) {
$translationString = str_replace('{'.$label.'}', $value, $translationString);
}
}
return $translationString;
} else {
if( defined("UNTRANSLATED_MARK") ) {
$untranslatedMark = strip_tags(UNTRANSLATED_MARK);
}else{
} else {
$untranslatedMark = "**";
}
return $untranslatedMark . $msgID . $untranslatedMark;

View File

@@ -184,13 +184,10 @@ class headPublisher {
}
if ($this->disableHeaderScripts)
return '';
// die(SYS_LANG);
$this->addScriptFile ( "/js/widgets/js-calendar/lang/" . SYS_LANG . ".js" );
/*$this->addScriptFile("/js/widgets/calendar/pmcalendar.js");
/*$this->addScriptFile("/js/widgets/calendar/dhtmlSuite-common.js");
$this->addScriptFile("/js/widgets/calendar/dhtmlSuite-calendar.js");
$this->addScriptFile("/js/widgets/calendar/dhtmlSuite-dragDropSimple.js");
$this->addScriptFile("/js/widgets/calendar/neyek-abstractionCalendar.js");
*/
//$this->addScriptFile ( '/gulliver/loader?t=js-translations&locale='.SYS_LANG);
$head = '';
$head .= '<TITLE>' . $this->title . "</TITLE>\n";
@@ -282,6 +279,8 @@ class headPublisher {
$head .= " <script type='text/javascript' src='/js/ext/mootools.js'></script>\n";
$head .= " <script type='text/javascript' src='/js/ext/moocanvas.js'></script>\n";
$head .= " <script type='text/javascript' src='/js/ext/draw2d.js'></script>\n";
$head .= " <script type='text/javascript' src='/gulliver/loader?t=js-translations&locale=".SYS_LANG."'></script>\n";
$head .= " <script type='text/javascript' src='/js/ext/pmos-common.js'></script>\n";
if (! isset ( $this->extJsSkin ) || $this->extJsSkin == '') {
$this->extJsSkin = 'xtheme-gray';
@@ -307,7 +306,7 @@ class headPublisher {
//DEPRECATED, this will be removed in a future -->
//new interactive css decorator
$script .= " <link rel='stylesheet' type='text/css' href='/gulliver/decorator?t=extjs-cssExtended&s=".$this->extJsSkin."' />\n";
$script .= " <link rel='stylesheet' type='text/css' href='/gulliver/loader?t=extjs-cssExtended&s=".$this->extJsSkin."' />\n";
$script .= " <link rel='stylesheet' type='text/css' href='/images/icons_silk/sprite.css' />\n";
// Load external/plugin css

View File

@@ -5241,4 +5241,49 @@ class Cases {
}
}
function getUsersToReassign($TAS_UID, $USR_UID)
{
G::LoadClass('groups');
G::LoadClass('tasks');
$oTasks = new Tasks();
$aAux = $oTasks->getGroupsOfTask($TAS_UID, 1);
$row = array();
$groups = new Groups();
foreach($aAux as $aGroup) {
$aUsers = $groups->getUsersOfGroup($aGroup['GRP_UID']);
foreach($aUsers as $aUser) {
if($aUser['USR_UID'] != $USR_UID) {
$row[] = $aUser['USR_UID'];
}
}
}
$aAux = $oTasks->getUsersOfTask($TAS_UID, 1);
foreach($aAux as $aUser) {
if($aUser['USR_UID'] != $USR_UID) {
$row[] = $aUser['USR_UID'];
}
}
require_once 'classes/model/Users.php';
$c = new Criteria('workflow');
$c->addSelectColumn(UsersPeer::USR_UID);
$c->addSelectColumn(UsersPeer::USR_USERNAME);
$c->addSelectColumn(UsersPeer::USR_FIRSTNAME);
$c->addSelectColumn(UsersPeer::USR_LASTNAME);
$c->add(UsersPeer::USR_UID, $row, Criteria::IN);
$rs = UsersPeer::doSelectRs($c);
$rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$rows = Array();
while( $rs->next() ) {
$rows[] = $rs->getRow();
}
return $rows;
}
}

View File

@@ -420,5 +420,26 @@ class Configurations // extends Configuration
return $formats;
}
function getSystemDate($dateTime)
{
$oConf = new Configurations;
$oConf->loadConfig($obj, 'ENVIRONMENT_SETTINGS','');
$creationDateMask = isset($oConf->aConfig['dateFormat'])? $oConf->aConfig['dateFormat']: '';
if( $creationDateMask != '' ) {
if( strpos($dateTime, ' ') !== false ) {
list($date, $time) = explode(' ', $dateTime);
list($y, $m, $d) = explode('-', $date);
list($h, $i, $s) = explode(':', $time);
$dateTime = date($creationDateMask, mktime($h, $i, $s, $m, $d, $y));
} else {
list($y, $m, $d) = explode('-', $dateTime);
$dateTime = date($creationDateMask, mktime(0, 0, 0, $m, $d, $y));
}
}
return $dateTime;
}
}
?>

View File

@@ -560,4 +560,26 @@ public function kgetassigType($pro_uid, $tas){
$calendarObj->assignCalendarTo($taskUid,$calendarUid,'TASK');
}
function getDelegatedTaskData($TAS_UID, $APP_UID, $DEL_INDEX)
{
require_once 'classes/model/AppDelegation.php';
require_once 'classes/model/Task.php';
$oTask = new Task();
$aFields = $oTask->load($TAS_UID);
$oCriteria = new Criteria('workflow');
$oCriteria->add(AppDelegationPeer::APP_UID, $APP_UID);
$oCriteria->add(AppDelegationPeer::DEL_INDEX, $DEL_INDEX);
$oDataset = AppDelegationPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
$taskData = $oDataset->getRow();
$iDiff = strtotime($taskData['DEL_FINISH_DATE']) - strtotime($taskData['DEL_INIT_DATE']);
$aFields['INIT_DATE'] = ($taskData['DEL_INIT_DATE'] != null ? $taskData['DEL_INIT_DATE'] : G::LoadTranslation('ID_CASE_NOT_YET_STARTED'));
$aFields['DUE_DATE'] = ($taskData['DEL_TASK_DUE_DATE'] != null ? $taskData['DEL_TASK_DUE_DATE'] : G::LoadTranslation('ID_NOT_FINISHED'));
$aFields['FINISH'] = ($taskData['DEL_FINISH_DATE'] != null ? $taskData['DEL_FINISH_DATE'] : G::LoadTranslation('ID_NOT_FINISHED'));
$aFields['DURATION'] = ($taskData['DEL_FINISH_DATE'] != null ? (int) ($iDiff / 3600) . ' ' . ((int) ($iDiff / 3600) == 1 ? G::LoadTranslation('ID_HOUR') : G::LoadTranslation('ID_HOURS')) . ' ' . (int) (($iDiff % 3600) / 60) . ' ' . ((int) (($iDiff % 3600) / 60) == 1 ? G::LoadTranslation('ID_MINUTE') : G::LoadTranslation('ID_MINUTES')) . ' ' . (int) (($iDiff % 3600) % 60) . ' ' . ((int) (($iDiff % 3600) % 60) == 1 ? G::LoadTranslation('ID_SECOND') : G::LoadTranslation('ID_SECONDS')) : G::LoadTranslation('ID_NOT_FINISHED'));
return $aFields;
}
} // Task

View File

@@ -0,0 +1,550 @@
<?php
/**
* cases/ajaxListener.php Ajax Listener for Cases rpc requests
*
* ProcessMaker Open Source Edition
* Copyright (C) 2004 - 2008 Colosa Inc.23
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
*
*/
/**
* @author Erik Amaru Ortiz <erik@colosa.com>
* @date Jan 3th, 2010
*/
$action = $_REQUEST['action'];
$ajax = new Ajax();
$ajax->$action();
class Ajax
{
function steps()
{
require_once 'classes/model/Step.php';
require_once ( "classes/model/Content.php" );
require_once ( "classes/model/AppDocument.php" );
require_once ( "classes/model/InputDocumentPeer.php" );
require_once ( "classes/model/OutputDocument.php" );
require_once ( "classes/model/Dynaform.php" );
G::LoadClass('pmScript');
G::LoadClass('case');
$PRO_UID = $_SESSION['PROCESS'];
$TAS_UID = $_SESSION['TASK'];
$APP_UID = $_SESSION['APPLICATION'];
$tree = Array();
$case = new Cases;
$step = new Step;
$appDocument = new AppDocument;
$caseSteps = $step->getAllCaseSteps($PRO_UID, $TAS_UID, $APP_UID);
//g::pr($caseSteps);
//getting the case record
$caseData = $case->loadCase($APP_UID);
//getting externals steps
$oPluginRegistry = &PMPluginRegistry::getSingleton();
$externalSteps = $oPluginRegistry->getSteps();
$pmScript = new PMScript();
$pmScript->setFields($caseData['APP_DATA']);
foreach ($caseSteps as $caseStep) {
if( trim($caseStep->getStepCondition()) != '' ) {
$pmScript->setScript($caseStep->getStepCondition());
if( ! $pmScript->evaluate() )
continue;
}
$stepUidObj = $caseStep->getStepUidObj();
$stepTypeObj = $caseStep->getStepTypeObj();
$stepPosition = $caseStep->getStepPosition();
$node = new stdClass;
$node->id = $stepUidObj;
$node->draggable = false;
$node->hrefTarget = 'casesSubFrame';
switch( $caseStep->getStepTypeObj() ) {
case 'DYNAFORM':
$oDocument = DynaformPeer::retrieveByPK($caseStep->getStepUidObj());
$node->text = $oDocument->getDynTitle();
$node->iconCls = 'ss_sprite ss_application_form';
$node->leaf = true;
$node->url = "cases_Step?UID=$stepUidObj&TYPE=$stepTypeObj&POSITION=$stepPosition&ACTION=EDIT";
break;
case 'OUTPUT_DOCUMENT':
$oDocument = OutputDocumentPeer::retrieveByPK($caseStep->getStepUidObj());
$outputDoc = $appDocument->getObject($_SESSION['APPLICATION'], $_SESSION['INDEX'], $caseStep->getStepUidObj(), 'OUTPUT');
$node->text = $oDocument->getOutDocTitle();
$node->iconCls = 'ss_sprite ss_application_put';
$node->leaf = true;
$node->url = "cases_Step?UID=$stepUidObj&TYPE=$stepTypeObj&POSITION=$stepPosition&ACTION=VIEW&DOC={$outputDoc['APP_DOC_UID']}";
break;
case 'INPUT_DOCUMENT':
$oDocument = InputDocumentPeer::retrieveByPK($caseStep->getStepUidObj());
//$sType = $oDocument->getInpDocFormNeeded();
$node->text = $oDocument->getInpDocTitle();
$node->iconCls = 'ss_sprite ss_application_get';
$node->leaf = true;
$node->url = "cases_Step?UID=$stepUidObj&TYPE=$stepTypeObj&POSITION=$stepPosition&ACTION=ATTACH";
break;
case 'EXTERNAL':
$stepTitle = 'unknown ' . $caseStep->getStepUidObj();
$oPluginRegistry = PMPluginRegistry::getSingleton();
foreach ( $externalSteps as $externalStep ) {
if ( $externalStep->sStepId == $caseStep->getStepUidObj() ) {
$stepTitle = $externalStep->sStepTitle; //default title
$sNamespace = $externalStep->sNamespace;
$oPlugin =& $oPluginRegistry->getPlugin($sNamespace);
$classFile = PATH_PLUGINS . $oPlugin->sNamespace . PATH_SEP . 'class.' . $oPlugin->sNamespace .'.php';
if ( file_exists ( $classFile ) ) {
require_once ( $classFile );
$sClassName = $sNamespace . 'class';
$obj = new $sClassName( );
if (method_exists($obj, 'getExternalStepTitle')) {
$stepTitle = $obj->getExternalStepTitle( $caseStep->getStepUidObj(), $TAS_UID, $caseStep->getStepPosition());
}
if (method_exists($obj, 'getExternalStepAction')) {
$externalStepActions = $obj->getExternalStepAction( $aRow->getStepUidObj(), $aRow->getStepPosition());
}
}
break;
}
}
$node->text = $stepTitle;
$node->leaf = false;
$node->url = "";
$node->children = Array();
if( isset($externalStepActions) ) {
foreach ( $externalStepActions as $action => $label ) {
$childNode->text = $label;
$childNode->iconCls = 'ICON_EXTERNAL_STEP';
$childNode->leaf = true;
$childNode->url = "../cases/cases_Step?TYPE=$stepTypeObj&UID=stepUidObj&POSITION=$stepPosition&ACTION=$action";
$node->children[] = $childNode;
}
}
break;
}
$tree[] = $node;
}
//assign task
$node = new stdClass;
$node->id = 'ID_ASSIGN_TASK';
$node->draggable = false;
$node->hrefTarget = 'casesSubFrame';
$node->text = G::LoadTranslation('ID_ASSIGN_TASK');
$node->iconCls = 'ICON_ASSIGN_TASK';
$node->leaf = true;
$node->url = "../cases/cases_Step?TYPE=ASSIGN_TASK&UID=-1&POSITION=10000&ACTION=ASSIGN";
$tree[] = $node;
print(G::json_encode($tree));
}
function getInformationOptions()
{
$options = Array();
$options[] = Array('text' => G::LoadTranslation('ID_PROCESS_MAP'), 'fn'=>'processMap');
$options[] = Array('text' => G::LoadTranslation('ID_PROCESS_INFORMATION'), 'fn'=>'processInformation');
$options[] = Array('text' => G::LoadTranslation('ID_TASK_INFORMATION'), 'fn'=>'taskInformation');
$options[] = Array('text' => G::LoadTranslation('ID_CASE_HISTORY'), 'fn'=>'caseHistory');
$options[] = Array('text' => G::LoadTranslation('ID_HISTORY_MESSAGE_CASE'), 'fn'=>'messageHistory');
$options[] = Array('text' => G::LoadTranslation('ID_DYNAFORMS'), 'fn'=>'dynaformHistory');
$options[] = Array('text' => G::LoadTranslation('ID_UPLOADED_DOCUMENTS'), 'fn'=>'uploadedDocuments');
$options[] = Array('text' => G::LoadTranslation('ID_GENERATED_DOCUMENTS'), 'fn'=>'generatedDocuments');
print(G::json_encode($options));
}
function getActionOptions()
{
require_once 'classes/model/AppThread.php';
require_once 'classes/model/AppDelay.php';
G::LoadClass('tree');
G::LoadClass('case');
$APP_UID = $_SESSION['APPLICATION'];
$c = new Criteria('workflow');
$c->clearSelectColumns();
$c->addSelectColumn( AppThreadPeer::APP_THREAD_PARENT );
$c->add(AppThreadPeer::APP_UID, $APP_UID );
$c->add(AppThreadPeer::APP_THREAD_STATUS , 'OPEN' );
$cant = AppThreadPeer::doCount($c);
$oCase = new Cases();
$aFields = $oCase->loadCase( $_SESSION['APPLICATION'], $_SESSION['INDEX'] );
$oCriteria = new Criteria('workflow');
$oCriteria->add(AppDelayPeer::APP_UID, $_SESSION['APPLICATION']);
$oCriteria->add(AppDelayPeer::APP_DEL_INDEX, $_SESSION['INDEX']);
$oCriteria->add(AppDelayPeer::APP_TYPE, 'PAUSE');
$oCriteria->add(AppDelayPeer::APP_DISABLE_ACTION_USER, null);
$oDataset = AppDelayPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
$aRow = $oDataset->getRow();
GLOBAL $RBAC;
$options = Array();
switch($aFields['APP_STATUS'])
{
case 'DRAFT':
if( !$aRow ) {
$options[] = Array('text'=>G::LoadTranslation('ID_PAUSED_CASE'), 'fn'=>'setUnpauseCaseDate');
} else {
$options[] = Array('text'=>G::LoadTranslation('ID_UNPAUSE'), 'fn'=>'unpauseCase');
}
$options[] = Array('text'=>G::LoadTranslation('ID_DELETE'), 'fn'=>'deleteCase');
if( $RBAC->userCanAccess('PM_REASSIGNCASE')==1 ) {
$options[] = Array('text'=>G::LoadTranslation('ID_REASSIGN'), 'fn'=>'getUsersToReassign');
}
break;
case 'TO_DO':
if(!$aRow) {
$options[] = Array('text'=>G::LoadTranslation('ID_PAUSED_CASE'), 'fn'=>'setUnpauseCaseDate');
if ($cant == 1) {
$options[] = Array('text'=>G::LoadTranslation('ID_CANCEL'), 'fn'=>'cancelCase');
}
} else {
$options[] = Array('text'=>G::LoadTranslation('ID_UNPAUSE'), 'fn'=>'unpauseCase');
}
if($RBAC->userCanAccess('PM_REASSIGNCASE')==1) {
$options[] = Array('text'=>G::LoadTranslation('ID_REASSIGN'), 'fn'=>'getUsersToReassign');
}
break;
case 'CANCELLED':
$options[] = Array('text'=>G::LoadTranslation('ID_REACTIVATE'), 'fn'=>'reactivateCase');
break;
}
$oTask = new Task();
$aTask = $oTask->load($_SESSION['TASK']);
if ($aTask['TAS_TYPE'] == 'ADHOC') {
$options[] = Array('text'=>G::LoadTranslation('ID_ADHOC_ASSIGNMENT'), 'fn'=>'');
}
print(G::json_encode($options));
}
function processMap()
{
global $G_PUBLISH;
global $G_CONTENT;
global $G_FORM;
global $G_TABLE;
global $RBAC;
$oTemplatePower = new TemplatePower(PATH_TPL . 'processes/processes_Map.html');
$oTemplatePower->prepare();
$G_PUBLISH = new Publisher();
$G_PUBLISH->AddContent('template', '', '', '', $oTemplatePower);
$oHeadPublisher = & headPublisher::getSingleton();
//$oHeadPublisher->addScriptfile('/jscore/processmap/core/processmap.js');
$oHeadPublisher->addScriptCode('
window.onload = function(){
var pb=leimnud.dom.capture("tag.body 0");
Pm=new processmap();
var params = "{\"uid\":\"' . $_SESSION['PROCESS'] . '\",\"mode\":false,\"ct\":false}";
// maximun x and y position
var xPos = 0;
var yPos = 0;
//obtaining the processmap object for the current process
var oRPC = new leimnud.module.rpc.xmlhttp({
url : "../processes/processes_Ajax",
async : false,
method: "POST",
args : "action=load&data="+params
});
oRPC.make();
var response = eval(\'(\' + oRPC.xmlhttp.responseText + \')\');
for (var i in response){
if (i==\'task\'){
elements = response[i];
for (var j in elements){
if (elements[j].uid!=undefined){
if (elements[j].position.x > xPos){
xPos = elements[j].position.x;
}
if (elements[j].position.y > yPos){
yPos = elements[j].position.y;
}
}
}
}
}
Pm.options = {
target : "pm_target",
dataServer: "../processes/processes_Ajax",
uid : "' . $_SESSION['PROCESS'] . '",
lang : "' . SYS_LANG . '",
theme : "processmaker",
size : {w:xPos+800,h:yPos+150},
images_dir: "/jscore/processmap/core/images/",
rw : false,
hideMenu : false
}
Pm.make();
oLeyendsPanel = new leimnud.module.panel();
oLeyendsPanel.options = {
size :{w:160,h:140},
position:{x:((document.body.clientWidth * 95) / 100) - ((document.body.clientWidth * 95) / 100 - (((document.body.clientWidth * 95) / 100) - 160)),y:45,center:false},
title :G_STRINGS.ID_COLOR_LEYENDS,
theme :"processmaker",
statusBar:false,
control :{resize:false,roll:false,drag:true,close:false},
fx :{modal:false,opacity:false,blinkToFront:true,fadeIn:false,drag:false}
};
oLeyendsPanel.setStyle = {
content:{overflow:"hidden"}
};
oLeyendsPanel.events = {
remove: function() {delete(oLeyendsPanel);}.extend(this)
};
oLeyendsPanel.make();
oLeyendsPanel.loader.show();
var oRPC = new leimnud.module.rpc.xmlhttp({
url : "cases_Ajax",
args: "action=showLeyends"
});
oRPC.callback = function(rpc){
oLeyendsPanel.loader.hide();
var scs=rpc.xmlhttp.responseText.extractScript();
oLeyendsPanel.addContent(rpc.xmlhttp.responseText);
}.extend(this);
oRPC.make();
}');
G::RenderPage('publish', 'blank');
}
function getProcessInformation()
{
require_once 'classes/model/Process.php';
$process = new Process();
$processData = $process->load($_SESSION['PROCESS']);
require_once 'classes/model/Users.php';
$user = new Users();
try {
$userData = $user->load($processData['PRO_CREATE_USER']);
$processData['PRO_AUTHOR'] = $userData['USR_FIRSTNAME'] . ' ' . $userData['USR_LASTNAME'];
} catch ( Exception $oError ) {
$processData['PRO_AUTHOR'] = '(USER DELETED)';
}
$processData['PRO_CREATE_DATE'] = date('F j, Y', strtotime($processData['PRO_CREATE_DATE']));
print(G::json_encode($processData));
}
function getTaskInformation()
{
require_once 'classes/model/Task.php';
$task = new Task();
$taskData = $task->getDelegatedTaskData($_SESSION['TASK'], $_SESSION['APPLICATION'], $_SESSION['INDEX']);
print(G::json_encode($taskData));
}
function caseHistory()
{
global $G_PUBLISH;
G::LoadClass("case");
$c = Cases::getTransferHistoryCriteria($_SESSION['APPLICATION']);
$G_PUBLISH = new Publisher();
$G_PUBLISH->AddContent('propeltable', 'paged-table', 'cases/cases_TransferHistory', $c, array());
G::RenderPage('publish', 'blank');
}
function messageHistory()
{
global $G_PUBLISH;
G::LoadClass("case");
$oCase = new Cases();
$G_PUBLISH = new Publisher();
$G_PUBLISH->AddContent('propeltable', 'paged-table', 'cases/cases_Messages', $oCase->getHistoryMessagesTracker($_SESSION['APPLICATION']));
G::RenderPage('publish', 'blank');
}
function dynaformHistory()
{
global $G_PUBLISH;
G::LoadClass("case");
$oCase = new Cases();
$G_PUBLISH = new Publisher();
$G_PUBLISH->AddContent('propeltable', 'paged-table', 'cases/cases_AllDynaformsList', $oCase->getallDynaformsCriteria($_SESSION['PROCESS'], $_SESSION['APPLICATION'], $_SESSION['TASK'], $_SESSION['USER_LOGGED']));
G::RenderPage('publish', 'blank');
}
function uploadedDocuments()
{
global $G_PUBLISH;
G::LoadClass("case");
$oCase = new Cases();
$G_PUBLISH = new Publisher();
$G_PUBLISH->AddContent('propeltable', 'paged-table', 'cases/cases_AllInputdocsList', $oCase->getAllUploadedDocumentsCriteria($_SESSION['PROCESS'], $_SESSION['APPLICATION'], $_SESSION['TASK'], $_SESSION['USER_LOGGED']));
G::RenderPage('publish', 'blank');
}
function generatedDocuments()
{
global $G_PUBLISH;
G::LoadClass("case");
$oCase = new Cases();
$G_PUBLISH = new Publisher();
$G_PUBLISH->AddContent('propeltable', 'paged-table', 'cases/cases_AllOutputdocsList', $oCase->getAllGeneratedDocumentsCriteria($_SESSION['PROCESS'], $_SESSION['APPLICATION'], $_SESSION['TASK'], $_SESSION['USER_LOGGED']));
G::RenderPage('publish', 'blank');
}
function cancelCase()
{
G::LoadClass("case");
$oCase = new Cases();
$multiple = false;
if( isset($_POST['APP_UID']) && isset($_POST['DEL_INDEX']) ) {
$APP_UID = $_POST['APP_UID'];
$DEL_INDEX = $_POST['DEL_INDEX'];
$appUids = explode(',', $APP_UID);
$delIndexes = explode(',', $DEL_INDEX);
if( count($appUids) > 1 && count($delIndexes) > 1 )
$multiple = true;
} else if( isset($_POST['sApplicationUID']) && isset($_POST['iIndex']) ){
$APP_UID = $_POST['sApplicationUID'];
$DEL_INDEX = $_POST['iIndex'];
} else {
$APP_UID = $_SESSION['APPLICATION'];
$DEL_INDEX = $_SESSION['INDEX'];
}
if( $multiple ) {
foreach($appUids as $i=>$appUid)
$oCase->cancelCase($appUid, $delIndexes[$i], $_SESSION['USER_LOGGED']);
} else
$oCase->cancelCase($APP_UID, $DEL_INDEX, $_SESSION['USER_LOGGED']);
}
function getUsersToReassign()
{
G::LoadClass("case");
$case = new Cases();
$result->data = $case->getUsersToReassign($_SESSION['TASK'], $_SESSION['USER_LOGGED']);
print G::json_encode($result);
}
function reassignCase()
{
require_once 'classes/model/Application.php';
require_once 'classes/model/Users.php';
G::LoadClass("case");
$cases = new Cases();
$user = new Users();
$app = new Application();
$TO_USR_UID = $_POST['USR_UID'];
try{
$cases->reassignCase($_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['USER_LOGGED'], $TO_USR_UID);
$caseData = $app->load($_SESSION['APPLICATION']);
$userData = $user->load($TO_USR_UID);
//print_r($caseData);
$data['APP_NUMBER'] = $caseData['APP_NUMBER'];
$data['USER'] = $userData['USR_LASTNAME'].' '. $userData['USR_FIRSTNAME']; //TODO change with the farmated username from environment conf
$result->status = 0;
$result->msg = G::LoadTranslation('ID_REASSIGNMENT_SUCCESS', SYS_LANG, $data);
} catch(Exception $e){
$result->status = 1;
$result->msg = $e->getMessage();
}
print G::json_encode($result);
}
function pauseCase()
{
try{
G::LoadClass("case");
$unpauseDate = $_REQUEST['unpauseDate'];
$oCase = new Cases();
if( isset($_POST['APP_UID']) && isset($_POST['DEL_INDEX']) ) {
$APP_UID = $_POST['APP_UID'];
$DEL_INDEX = $_POST['DEL_INDEX'];
} else if( isset($_POST['sApplicationUID']) && isset($_POST['iIndex']) ){
$APP_UID = $_POST['sApplicationUID'];
$DEL_INDEX = $_POST['iIndex'];
} else {
$APP_UID = $_SESSION['APPLICATION'];
$DEL_INDEX = $_SESSION['INDEX'];
}
$oCase->pauseCase($APP_UID, $DEL_INDEX, $_SESSION['USER_LOGGED'], $unpauseDate);
$app = new Application();
$caseData = $app->load($APP_UID);
$data['APP_NUMBER'] = $caseData['APP_NUMBER'];
$data['UNPAUSE_DATE'] = $unpauseDate;
$result->success = true;
$result->msg = G::LoadTranslation('ID_CASE_PAUSED_SUCCESSFULLY', SYS_LANG, $data);
} catch(Exception $e) {
$result->success = false;
$result->msg = $e->getMessage();
}
echo G::json_encode($result);
}
}

View File

@@ -83,6 +83,7 @@ $G_SUB_MENU = 'caseOptions';
$G_ID_MENU_SELECTED = 'CASES';
$G_ID_SUB_MENU_SELECTED = '_';
$oHeadPublisher =& headPublisher::getSingleton();
$oHeadPublisher->addScriptCode("parent.showCaseNavigatorPanel(false, true, false)");
$oHeadPublisher->addScriptCode('
var Cse = {};
Cse.panels = {};
@@ -101,4 +102,4 @@ $oHeadPublisher->addScriptFile('/jscore/cases/core/cases_Step.js');
$G_PUBLISH = new Publisher;
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'cases/cases_CatchSelfService.xml', '', $Fields, 'cases_CatchExecute');
G::RenderPage( 'publish', 'green-submenu');
G::RenderPage( 'publish', 'blank');

View File

@@ -73,11 +73,13 @@
$Fields['STATUS'] = ucfirst(strtolower(G::LoadTranslation('ID_CANCELLED')));
break;
}
//$Fields['STATUS'] = $aRow['APP_TYPE'];
}
/* Render page */
$oHeadPublisher =& headPublisher::getSingleton();
$oHeadPublisher->addScriptCode("parent.showCaseNavigatorPanel(false, true, false)");
$oHeadPublisher->addScriptCode('
var Cse = {};
Cse.panels = {};
@@ -105,4 +107,4 @@
$oHeadPublisher->addScriptFile('/jscore/cases/core/cases_Step.js');
$G_PUBLISH = new Publisher;
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'cases/cases_Resume.xml', '', $Fields, '');
G::RenderPage( 'publish', 'green-submenu');
G::RenderPage( 'publish', 'blank');

View File

@@ -933,7 +933,7 @@
$oDbConnections = new dbConnections($_SESSION['PROCESS']);
$oDbConnections->loadAdditionalConnections();
$stepFilename = "$sNamespace/$sStepName";
$G_PUBLISH->AddContent('content', $stepFilename );
$G_PUBLISH->AddContent('content', $stepFilename);
break;
}
@@ -951,6 +951,7 @@
/* Render page */
$oHeadPublisher =& headPublisher::getSingleton();
$oHeadPublisher->addScriptCode("parent.showCaseNavigatorPanel(true, true, true);");
$oHeadPublisher->addScriptCode('
var showSteps = function()
{
@@ -993,7 +994,7 @@
else
$skin = "green";
G::RenderPage('publish', $skin . '-submenu');
G::RenderPage('publish', 'blank');
if( $_SESSION['TRIGGER_DEBUG']['ISSET'] ){
G::evalJScript('showdebug();');

View File

@@ -0,0 +1,47 @@
<?php
/**
* open.php Open Case main processor
*
* ProcessMaker Open Source Edition
* Copyright (C) 2004 - 2008 Colosa Inc.23
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
*
*/
/**
* @author Erik Amaru Ortiz <erik@colosa.com>
* @date Jan 3th, 2010
*/
$oHeadPublisher =& headPublisher::getSingleton();
$oHeadPublisher->usingExtJs('ux/miframe');
$oHeadPublisher->addExtJsScript('cases/open', true);
//
$uri = '';
foreach($_GET as $k=>$v)
$uri .= ($uri == '')? "$k=$v": "&$k=$v";
G::LoadClass("configuration");
G::LoadClass("case");
$conf = new Configurations;
$oHeadPublisher->assign('uri', 'cases_Open?' . $uri);
$oHeadPublisher->assign('_ENV_CURRENT_DATE', $conf->getSystemDate(date('Y-m-d')));
G::RenderPage('publish', 'extJs');

View File

@@ -48,7 +48,8 @@ function openCase(){
case 'sent': // = participated
params += 'APP_UID=' + appUid;
params += '&DEL_INDEX=' + delIndex;
requestFile = '../cases/cases_Open';
//requestFile = '../cases/cases_Open';
requestFile = 'open';
break;
case 'todo':
case 'draft':
@@ -57,10 +58,12 @@ function openCase(){
default:
params += 'APP_UID=' + appUid;
params += '&DEL_INDEX=' + delIndex;
requestFile = '../cases/cases_Open';
//requestFile = '../cases/cases_Open';
requestFile = 'open';
break;
}
parent._CASE_TITLE = caseTitle;
params += '&action=' + action;
redirect(requestFile + '?' + params);

View File

@@ -379,3 +379,10 @@ Pone en mayúsuclas el texto que se encuentra en el toolbar de arriba
border:1px solid #c1c1c1 !important;
border-right:none !important;
}
.ICON_STEPS {
background-image:url(/images/steps.png) !important;
}
.ICON_ASSIGN_TASK {
background-image:url(/images/flechav1A.png) !important;
}

View File

@@ -26,8 +26,8 @@ var debugVariablesFilter;
var ReloadTreeMenuItemDetail;
var NOTIFIER_FLAG = false;
var result;
var _action = '';
var _CASE_TITLE;
new Ext.KeyMap(document, {
key: Ext.EventObject.F5,
@@ -710,3 +710,6 @@ function setDefaultOption(){
//document.getElementById('casesSubFrame').src = "casesListExtJs";
}
var notify = function(title, msg){
PMExt.notify(title, msg);
}