BUG 0000 Rad Map Perdida de sesion cuando se ejecuta casos SOLVED
- Added Login modal to continue the session for dynaforms in cases.
This commit is contained in:
@@ -2903,6 +2903,15 @@ var changeStatusSubmitFields = function(newStatusTo) {
|
||||
**/
|
||||
|
||||
var validateForm = function(sRequiredFields) {
|
||||
|
||||
sFormName = document.getElementById('__DynaformName__');
|
||||
if ((typeof(sFormName) != 'undefined' && sFormName != 'login') && (typeof(usernameLogged) != 'undefined' && usernameLogged != '') ) {
|
||||
if (!sessionPersits()) {
|
||||
showPromptLogin('session');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Disabling submit buttons
|
||||
changeStatusSubmitFields('disabled');
|
||||
|
||||
@@ -3270,6 +3279,109 @@ var saveAndRefreshForm = function(oObject) {
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @function sessionPersits
|
||||
*
|
||||
* @returns {@exp;response@pro;status}
|
||||
*/
|
||||
var sessionPersits = function() {
|
||||
var rpc = new leimnud.module.rpc.xmlhttp({
|
||||
url: '../services/sessionPersists',
|
||||
args: 'dynaformRestoreValues=' + dynaformSVal,
|
||||
async: false
|
||||
});
|
||||
rpc.make();
|
||||
var response = rpc.xmlhttp.responseText.parseJSON();
|
||||
return response.status;
|
||||
};
|
||||
|
||||
/**
|
||||
* @function showPromptLogin
|
||||
*
|
||||
* @param {type} lastAction
|
||||
* @returns {showPrompt}
|
||||
*/
|
||||
var showPromptLogin = function(lastAction) {
|
||||
lastActionPerformed = lastAction;
|
||||
promptPanel = new leimnud.module.panel();
|
||||
promptPanel.options={
|
||||
statusBarButtons:[{value: _('LOGIN')}],
|
||||
position:{center:true},
|
||||
size:{w:300,h:130},
|
||||
control:{
|
||||
close:false,
|
||||
resize:false
|
||||
},
|
||||
fx:{
|
||||
modal:true
|
||||
}
|
||||
};
|
||||
promptPanel.setStyle={
|
||||
content:{
|
||||
padding:10,
|
||||
paddingBottom:2,
|
||||
textAlign:'left',
|
||||
paddingLeft:50,
|
||||
backgroundRepeat:'no-repeat',
|
||||
backgroundPosition:'10 50%',
|
||||
backgroundColor:'transparent',
|
||||
borderWidth:0
|
||||
}
|
||||
};
|
||||
promptPanel.make();
|
||||
promptPanel.addContent(_('ID_DYNAFORM_EDITOR_LOGIN_AGAIN'));
|
||||
promptPanel.addContent('<br />');
|
||||
var thePassword = $dce('input');
|
||||
thePassword.type = 'password';
|
||||
thePassword.id = 'thePassword';
|
||||
leimnud.dom.setStyle(thePassword,{
|
||||
font:'normal 8pt Tahoma,MiscFixed',
|
||||
color:'#000',
|
||||
width:'100%',
|
||||
marginTop:3,
|
||||
backgroundColor:'white',
|
||||
border:'1px solid #919B9C'
|
||||
});
|
||||
promptPanel.addContent(thePassword);
|
||||
thePassword.focus();
|
||||
thePassword.onkeyup=function(evt)
|
||||
{
|
||||
var evt = (window.event)?window.event:evt;
|
||||
var key = (evt.which)?evt.which:evt.keyCode;
|
||||
if(key == 13) {
|
||||
verifyLogin();
|
||||
}
|
||||
}.extend(this);
|
||||
promptPanel.fixContent();
|
||||
promptPanel.elements.statusBarButtons[0].onmouseup = verifyLogin;
|
||||
};
|
||||
|
||||
/**
|
||||
* @function verifyLogin
|
||||
*
|
||||
* @returns {unresolved}
|
||||
*/
|
||||
var verifyLogin = function() {
|
||||
if (document.getElementById('thePassword').value.trim() == '') {
|
||||
alert(_('ID_WRONG_PASS'));
|
||||
return;
|
||||
}
|
||||
var rpc = new leimnud.module.rpc.xmlhttp({
|
||||
url : '../login/authentication',
|
||||
args: 'form[USR_USERNAME]=' + usernameLogged + '&form[USR_PASSWORD]=' + document.getElementById('thePassword').value.trim() + '&form[USR_LANG]=' + SYS_LANG
|
||||
});
|
||||
rpc.callback = function(rpc) {
|
||||
if (rpc.xmlhttp.responseText.indexOf('form[USR_USERNAME]') == -1) {
|
||||
promptPanel.remove();
|
||||
lastActionPerformed = '';
|
||||
} else {
|
||||
alert(_('ID_WRONG_PASS'));
|
||||
}
|
||||
}.extend(this);
|
||||
rpc.make();
|
||||
};
|
||||
|
||||
/**
|
||||
* @function saveForm
|
||||
* @author gustavo cruz gustavo[at]colosa[dot]com
|
||||
|
||||
@@ -1194,7 +1194,8 @@ vtext.failed();}else{vtext.passed();}}
|
||||
dropdowns=grids[j].getElementsByTagName('select');for(i=0;i<dropdowns.length;i++){var vtext=new input(dropdowns[i]);if(dropdowns[i].getAttribute("pm:required")=="1"&&dropdowns[i].value==''){$label=dropdowns[i].name.split("[");$labelPM=dropdowns[i].getAttribute("pm:label");if($labelPM==''||$labelPM==null){$fieldName=$label[3].split("]")[0]+" "+$label[2].split("]")[0];}else{$fieldName=$labelPM+" "+$label[2].split("]")[0];}
|
||||
fieldGridName=$label[1]+"["+$label[2]+"["+$label[3].split("]")[0];if(!notValidateThisFields.inArray(fieldGridName)){invalidFields.push($fieldName);}
|
||||
vtext.failed();}else{vtext.passed();}}}
|
||||
return(invalidFields);};var changeStatusSubmitFields=function(newStatusTo){var newStatus=newStatusTo=='disabled';var formElements=document.getElementsByTagName('form');for(var i=0;i<formElements.length;i++){var inputElements=formElements[i].getElementsByTagName('input');for(var j=0;j<inputElements.length;j++){if(typeof(inputElements[j].type)!='undefined'){if(inputElements[j].type=='submit'){inputElements[j].disabled=newStatus;}}}}};var validateForm=function(sRequiredFields){changeStatusSubmitFields('disabled');if(typeof(sRequiredFields)!='object'||sRequiredFields.indexOf("%27")>0){sRequiredFields=sRequiredFields.replace(/%27/gi,'"');}
|
||||
return(invalidFields);};var changeStatusSubmitFields=function(newStatusTo){var newStatus=newStatusTo=='disabled';var formElements=document.getElementsByTagName('form');for(var i=0;i<formElements.length;i++){var inputElements=formElements[i].getElementsByTagName('input');for(var j=0;j<inputElements.length;j++){if(typeof(inputElements[j].type)!='undefined'){if(inputElements[j].type=='submit'){inputElements[j].disabled=newStatus;}}}}};var validateForm=function(sRequiredFields){sFormName=document.getElementById('__DynaformName__');if((typeof(sFormName)!='undefined'&&sFormName!='login')&&(typeof(usernameLogged)!='undefined'&&usernameLogged!='')){if(!sessionPersits()){showPromptLogin('session');return false;}}
|
||||
changeStatusSubmitFields('disabled');if(typeof(sRequiredFields)!='object'||sRequiredFields.indexOf("%27")>0){sRequiredFields=sRequiredFields.replace(/%27/gi,'"');}
|
||||
if(typeof(sRequiredFields)!='object'||sRequiredFields.indexOf("%39")>0){sRequiredFields=sRequiredFields.replace(/%39/gi,"'");}
|
||||
aRequiredFields=eval(sRequiredFields);var sMessage='';var invalid_fields=Array();var fielEmailInvalid=Array();for(var i=0;i<aRequiredFields.length;i++){aRequiredFields[i].label=(aRequiredFields[i].label=='')?aRequiredFields[i].name:aRequiredFields[i].label;if(!notValidateThisFields.inArray(aRequiredFields[i].name)){if(typeof aRequiredFields[i].required!='undefined'){required=aRequiredFields[i].required;}
|
||||
else{required=1;}
|
||||
@@ -1231,7 +1232,9 @@ else{var arrayForm=document.getElementsByTagName("form");var inputAux;var id="";
|
||||
var arrayLink=frm.getElementsByTagName("a");for(i2=0;i2<=arrayLink.length-1;i2++){var link=arrayLink[i2];if(typeof link.id!="undefined"&&link.id!=""&&link.id!="form[DYN_BACKWARD]"&&link.id!="form[DYN_FORWARD]"){var strHtml=link.parentNode.innerHTML;strHtml=stringReplace("\\x0A","",strHtml);strHtml=stringReplace("\\x0D","",strHtml);strHtml=stringReplace("\\x09","",strHtml);if(/^.*pm:field.*$/.test(strHtml)){id=link.id+"_";if(!document.getElementById(id)){var strAux=link.id.replace("form[","");strAux=strAux.substring(0,strAux.length-1);inputAux=document.createElement("input");inputAux.type="hidden";inputAux.id=id;inputAux.name=link.id;inputAux.value=link.href;frm.appendChild(inputAux);inputAux=document.createElement("input");inputAux.type="hidden";inputAux.id=id+"label";inputAux.name="form["+strAux+"_label]";inputAux.value=link.innerHTML;frm.appendChild(inputAux);}}}}}
|
||||
return true;}};var getObject=function(sObject){var i;var oAux=null;var iLength=__aObjects__.length;for(i=0;i<iLength;i++){oAux=__aObjects__[i].getElementByName(sObject);if(oAux){return oAux;}}
|
||||
return oAux;};var saveAndRefreshForm=function(oObject){if(oObject){oObject.form.action+='&_REFRESH_=1';oObject.form.submit();}
|
||||
else{var oAux=window.document.getElementsByTagName('form');if(oAux.length>0){oAux[0].action+='&_REFRESH_=1';oAux[0].submit();}}};var saveForm=function(oObject,actionParameter){if(oObject){var actionUrl=actionParameter||oObject.form.action.replace('cases_SaveData','saveForm');ajax_post(actionUrl,oObject.form,'POST');}
|
||||
else{var oAux=window.document.getElementsByTagName('form');if(oAux.length>0){oAux[0].action+='&_REFRESH_=1';oAux[0].submit();}}};var sessionPersits=function(){var rpc=new leimnud.module.rpc.xmlhttp({url:'../services/sessionPersists',args:'dynaformRestoreValues='+dynaformSVal,async:false});rpc.make();var response=rpc.xmlhttp.responseText.parseJSON();return response.status;};var showPromptLogin=function(lastAction){lastActionPerformed=lastAction;promptPanel=new leimnud.module.panel();promptPanel.options={statusBarButtons:[{value:_('LOGIN')}],position:{center:true},size:{w:300,h:130},control:{close:false,resize:false},fx:{modal:true}};promptPanel.setStyle={content:{padding:10,paddingBottom:2,textAlign:'left',paddingLeft:50,backgroundRepeat:'no-repeat',backgroundPosition:'10 50%',backgroundColor:'transparent',borderWidth:0}};promptPanel.make();promptPanel.addContent(_('ID_DYNAFORM_EDITOR_LOGIN_AGAIN'));promptPanel.addContent('<br />');var thePassword=$dce('input');thePassword.type='password';thePassword.id='thePassword';leimnud.dom.setStyle(thePassword,{font:'normal 8pt Tahoma,MiscFixed',color:'#000',width:'100%',marginTop:3,backgroundColor:'white',border:'1px solid #919B9C'});promptPanel.addContent(thePassword);thePassword.focus();thePassword.onkeyup=function(evt)
|
||||
{var evt=(window.event)?window.event:evt;var key=(evt.which)?evt.which:evt.keyCode;if(key==13){verifyLogin();}}.extend(this);promptPanel.fixContent();promptPanel.elements.statusBarButtons[0].onmouseup=verifyLogin;};var verifyLogin=function(){if(document.getElementById('thePassword').value.trim()==''){alert(_('ID_WRONG_PASS'));return;}
|
||||
var rpc=new leimnud.module.rpc.xmlhttp({url:'../login/authentication',args:'form[USR_USERNAME]='+usernameLogged+'&form[USR_PASSWORD]='+document.getElementById('thePassword').value.trim()+'&form[USR_LANG]='+SYS_LANG});rpc.callback=function(rpc){if(rpc.xmlhttp.responseText.indexOf('form[USR_USERNAME]')==-1){promptPanel.remove();lastActionPerformed='';}else{alert(_('ID_WRONG_PASS'));}}.extend(this);rpc.make();};var saveForm=function(oObject,actionParameter){if(oObject){var actionUrl=actionParameter||oObject.form.action.replace('cases_SaveData','saveForm');ajax_post(actionUrl,oObject.form,'POST');}
|
||||
else{var oAux=window.document.getElementsByTagName('form');if(oAux.length>0){var actionUrl=actionParameter||oAux[0].action.replace('cases_SaveData','saveForm');ajax_post(actionUrl,oAux[0],'POST');}}};var validateURL=function(url){var regexp=/http?s?:\/\/([-\w\.]+)+(:\d+)?(\/([\w/_\.]*(\?\S+)?)?)?/;if(regexp.test(url)){return true;}else{return false;}};var saveAndRedirectForm=function(oObject,oLocation){saveForm(oObject);if(validateURL(oLocation)){if(typeof(parent)!="undefined"){parent.location.href=oLocation;}else{document.location.href=oLocation;}}};var removeRequiredById=function(sFieldName){if(!notValidateThisFields.inArray(sFieldName)){notValidateThisFields.push(sFieldName);var oAux=document.getElementById('__notValidateThisFields__');if(oAux){oAux.value=notValidateThisFields.toJSONString();}}};var enableRequiredById=function(sFieldName){if(notValidateThisFields.inArray(sFieldName)){var i;var aAux=[];for(i=0;i<notValidateThisFields.length;i++){if(notValidateThisFields[i]!=sFieldName){aAux.push(notValidateThisFields[i]);}}
|
||||
notValidateThisFields=aAux;var oAux=document.getElementById('__notValidateThisFields__');if(oAux){oAux.value=notValidateThisFields.toJSONString();}}};function dynaformVerifyFieldName(){pme_validating=true;setTimeout('verifyFieldName1();',0);return true;}
|
||||
function verifyFieldName1(){if(getField('PME_VALIDATE_NAME').value=='__error_session__'){showPrompt('refreshDynaformEditor');return;}
|
||||
|
||||
@@ -90,6 +90,7 @@ class headPublisher
|
||||
{
|
||||
$this->addScriptFile("/js/maborak/core/maborak.js");
|
||||
$this->translationsFile = "/js/ext/translation." . SYS_LANG . ".js";
|
||||
$this->addScriptCode(' var usernameLogged = "' . (isset($_SESSION['USR_USERNAME']) ? $_SESSION['USR_USERNAME'] : '') . '";var SYS_LANG = "' . SYS_LANG . '";');
|
||||
}
|
||||
|
||||
public function &getSingleton()
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
* cases_SaveData.php
|
||||
*
|
||||
* ProcessMaker Open Source Edition
|
||||
* Copyright (C) 2004 - 2008 Colosa Inc.23
|
||||
* Copyright (C) 2004 - 2008 Colosa Inc.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
@@ -26,8 +26,7 @@
|
||||
|
||||
try {
|
||||
if ($_GET['APP_UID'] !== $_SESSION['APPLICATION']) {
|
||||
throw new Exception( G::LoadTranslation( 'ID_INVALID_APPLICATION_ID_MSG', array ('<a href=\'' . $_SERVER['HTTP_REFERER'] . '\'>{1}</a>',G::LoadTranslation( 'ID_REOPEN' )
|
||||
) ) );
|
||||
throw new Exception( G::LoadTranslation( 'ID_INVALID_APPLICATION_ID_MSG', array ('<a href=\'' . $_SERVER['HTTP_REFERER'] . '\'>{1}</a>',G::LoadTranslation( 'ID_REOPEN' ) ) ) );
|
||||
}
|
||||
|
||||
$oForm = new Form( $_SESSION["PROCESS"] . "/" . $_GET["UID"], PATH_DYNAFORM );
|
||||
@@ -227,11 +226,9 @@ try {
|
||||
$oFolder = new AppFolder();
|
||||
$documentFileStructure = $oFolder->getFolderStructure();
|
||||
|
||||
$aFields = array ("APP_UID" => $_SESSION["APPLICATION"],"DEL_INDEX" => $_SESSION["INDEX"],"USR_UID" => $_SESSION["USER_LOGGED"],"DOC_UID" => $indocUid,"APP_DOC_TYPE" => "INPUT","APP_DOC_CREATE_DATE" => date( "Y-m-d H:i:s" ),"APP_DOC_COMMENT" => "","APP_DOC_TITLE" => "","APP_DOC_FILENAME" => $arrayFileName[$i],"FOLDER_UID" => $oFolder->createFromPath( $aID["INP_DOC_DESTINATION_PATH"] ),"APP_DOC_TAGS" => $oFolder->parseTags( $aID["INP_DOC_TAGS"] ),"APP_DOC_FIELDNAME" => $fieldName
|
||||
);
|
||||
$aFields = array ("APP_UID" => $_SESSION["APPLICATION"],"DEL_INDEX" => $_SESSION["INDEX"],"USR_UID" => $_SESSION["USER_LOGGED"],"DOC_UID" => $indocUid,"APP_DOC_TYPE" => "INPUT","APP_DOC_CREATE_DATE" => date( "Y-m-d H:i:s" ),"APP_DOC_COMMENT" => "","APP_DOC_TITLE" => "","APP_DOC_FILENAME" => $arrayFileName[$i],"FOLDER_UID" => $oFolder->createFromPath( $aID["INP_DOC_DESTINATION_PATH"] ),"APP_DOC_TAGS" => $oFolder->parseTags( $aID["INP_DOC_TAGS"] ),"APP_DOC_FIELDNAME" => $fieldName);
|
||||
} else {
|
||||
$aFields = array ("APP_UID" => $_SESSION["APPLICATION"],"DEL_INDEX" => $_SESSION["INDEX"],"USR_UID" => $_SESSION["USER_LOGGED"],"DOC_UID" => - 1,"APP_DOC_TYPE" => "ATTACHED","APP_DOC_CREATE_DATE" => date( "Y-m-d H:i:s" ),"APP_DOC_COMMENT" => "","APP_DOC_TITLE" => "","APP_DOC_FILENAME" => $arrayFileName[$i],"APP_DOC_FIELDNAME" => $fieldName
|
||||
);
|
||||
$aFields = array ("APP_UID" => $_SESSION["APPLICATION"],"DEL_INDEX" => $_SESSION["INDEX"],"USR_UID" => $_SESSION["USER_LOGGED"],"DOC_UID" => - 1,"APP_DOC_TYPE" => "ATTACHED","APP_DOC_CREATE_DATE" => date( "Y-m-d H:i:s" ),"APP_DOC_COMMENT" => "","APP_DOC_TITLE" => "","APP_DOC_FILENAME" => $arrayFileName[$i],"APP_DOC_FIELDNAME" => $fieldName);
|
||||
}
|
||||
|
||||
$oAppDocument = new AppDocument();
|
||||
|
||||
@@ -177,6 +177,14 @@ try {
|
||||
}
|
||||
//Obtain previous and next step - End
|
||||
|
||||
$aRequiredFields = array(
|
||||
'APPLICATION' => $Fields['APP_DATA']['APPLICATION'],
|
||||
'PROCESS' => $Fields['APP_DATA']['PROCESS'],
|
||||
'TASK' => $Fields['APP_DATA']['TASK'],
|
||||
'INDEX' => $Fields['APP_DATA']['INDEX'],
|
||||
'APP_DATA' => $Fields['APP_DATA']
|
||||
);
|
||||
$oHeadPublisher->addScriptCode('var dynaformSVal = \'' . serialize($aRequiredFields) . '\';');
|
||||
|
||||
try {
|
||||
//Add content content step - Start
|
||||
|
||||
@@ -2,6 +2,27 @@
|
||||
$response = new stdclass();
|
||||
$response->status = isset($_SESSION['USER_LOGGED']);
|
||||
if (isset($_REQUEST['dynaformEditorParams'])) {
|
||||
$_SESSION['Current_Dynafom']['Parameters'] = unserialize(stripslashes($_REQUEST['dynaformEditorParams']));
|
||||
$_SESSION['Current_Dynafom']['Parameters'] = unserialize(stripslashes($_REQUEST['dynaformEditorParams']));
|
||||
}
|
||||
if (isset($_REQUEST['dynaformRestoreValues'])) {
|
||||
$aRetValues = unserialize(stripslashes($_REQUEST['dynaformRestoreValues']));
|
||||
if (isset($aRetValues['APPLICATION'])) {
|
||||
$_SESSION['APPLICATION'] = $aRetValues['APPLICATION'];
|
||||
}
|
||||
if (isset($aRetValues['PROCESS'])) {
|
||||
$_SESSION['PROCESS'] = $aRetValues['PROCESS'];
|
||||
}
|
||||
if (isset($aRetValues['TASK'])) {
|
||||
$_SESSION['TASK'] = $aRetValues['TASK'];
|
||||
}
|
||||
if (isset($aRetValues['INDEX'])) {
|
||||
$_SESSION['INDEX'] = $aRetValues['INDEX'];
|
||||
}
|
||||
if (isset($aRetValues['TRIGGER_DEBUG'])) {
|
||||
$_SESSION['TRIGGER_DEBUG'] = $aRetValues['TRIGGER_DEBUG'];
|
||||
}
|
||||
if (isset($aRetValues['APP_DATA'])) {
|
||||
$_SESSION['APP_DATA'] = $aRetValues['APP_DATA'];
|
||||
}
|
||||
}
|
||||
die(G::json_encode($response));
|
||||
@@ -8,6 +8,7 @@
|
||||
<td valign='top'>
|
||||
<input type="hidden" class="notValidateThisFields" name="__notValidateThisFields__" id="__notValidateThisFields__" value="{$form->objectRequiredFields}" />
|
||||
<input type="hidden" name="DynaformRequiredFields" id="DynaformRequiredFields" value="{$form->objectRequiredFields}" />
|
||||
<input type="hidden" name="__DynaformName__" id="__DynaformName__" value="{$form->name}" />
|
||||
<table cellspacing="0" cellpadding="0" border="0" width="100%">
|
||||
{foreach from=$form->fields item=field}
|
||||
{if ($field->type==='title')}
|
||||
|
||||
Reference in New Issue
Block a user