Merge remote-tracking branch 'origin/support/2.7' into develop

# Conflicts:
#	application/ui.extkeywidget.class.inc.php
#	pages/ajax.render.php
This commit is contained in:
Pierre Goiffon
2021-12-10 18:18:17 +01:00
2 changed files with 30 additions and 13 deletions

View File

@@ -79,11 +79,28 @@ class ObjectFormManager extends FormManager
protected $aCallbackUrls = array();
/**
* List of hidden fields, used for form update (eg. remove them from the form regarding they dependencies)
*
* @var array $aHiddenFieldsId
* @since 2.7.5
*/
protected $aHiddenFieldsId = array();
/**
* @param string|array $formManagerData value of the formmanager_data portal parameter, either JSON or object
*
* @return array formmanager_data as a PHP array
*
* @since 2.7.6 3.0.0 N°4384 method creation : factorize as this is used twice now
*/
protected static function DecodeFormManagerData($formManagerData)
{
if (is_array($formManagerData)) {
return $formManagerData;
}
return json_decode($formManagerData, true);
}
/**
* @param string $sJson JSON data that must contain at least :
* - formobject_class : The class of the object that is being edited/viewed
@@ -101,11 +118,7 @@ class ObjectFormManager extends FormManager
*/
public static function FromJSON($sJson, $bTrustContent = false)
{
if (is_array($sJson)) {
$aJson = $sJson;
} else {
$aJson = json_decode($sJson, true);
}
$aJson = static::DecodeFormManagerData($sJson);
$oConfig = utils::GetConfig();
$bIsContentCheckEnabled = $oConfig->GetModuleSetting(PORTAL_ID, 'enable_formmanager_content_check', true);
@@ -180,7 +193,7 @@ class ObjectFormManager extends FormManager
*/
public static function CanTrustFormLayoutContent($sPostedFormManagerData, $aOriginalFormProperties)
{
$aPostedFormManagerData = json_decode($sPostedFormManagerData, true);
$aPostedFormManagerData = static::DecodeFormManagerData($sPostedFormManagerData);
$sPostedFormLayoutType = (isset($aPostedFormManagerData['formproperties']['layout']['type'])) ? $aPostedFormManagerData['formproperties']['layout']['type'] : '';
if ($sPostedFormLayoutType === 'xhtml') {

View File

@@ -965,7 +965,7 @@ try
break;
case 'save_dashboard':
$sDashboardId = utils::ReadParam('dashboard_id', '', false, 'element_identifier');
$sDashboardId = utils::ReadParam('dashboard_id', '', false, 'context_param');
$aExtraParams = utils::ReadParam('extra_params', array(), false, 'raw_data');
$sReloadURL = utils::ReadParam('reload_url', '', false, 'raw_data');
appUserPreferences::SetPref('display_original_dashboard_'.$sDashboardId, false);
@@ -976,22 +976,26 @@ try
$aParams['auto_reload'] = utils::ReadParam('auto_reload', false);
$aParams['auto_reload_sec'] = utils::ReadParam('auto_reload_sec', 300);
$aParams['cells'] = utils::ReadParam('cells', array(), false, 'raw_data');
$oDashboard = new RuntimeDashboard($sDashboardId);
$oDashboard->FromParams($aParams);
$oDashboard->Save();
$sDashboardFile = addslashes(utils::ReadParam('file', '', false, 'string'));
$sDashboardDivId = preg_replace('/[^a-zA-Z0-9_]/', '', $sDashboardId);
// trigger a reload of the current page since the dashboard just changed
$oPage->add_script(
<<<EOF
$('.ibo-dashboard#$sDashboardId').block();
<<<JS
$('.ibo-dashboard#{$sDashboardDivId}').block();
$.post(GetAbsoluteUrlAppRoot()+'pages/ajax.render.php',
{ operation: 'reload_dashboard', dashboard_id: '$sDashboardId', file: '$sDashboardFile', extra_params: $sJSExtraParams, reload_url: '$sReloadURL'},
{ operation: 'reload_dashboard', dashboard_id: '{$sDashboardId}', file: '{$sDashboardFile}', extra_params: {$sJSExtraParams}, reload_url: '{$sReloadURL}'},
function(data){
$('.ibo-dashboard#$sDashboardId').html(data);
$('.ibo-dashboard#$sDashboardId').unblock();
$('.ibo-dashboard#{$sDashboardDivId}').html(data);
$('.ibo-dashboard#{$sDashboardDivId}').unblock();
}
);
EOF
JS
);
break;