N°3739 - Change dashboard menu entries (Fix dashboard edition)

This commit is contained in:
Eric
2021-02-26 09:33:56 +01:00
parent a7fde78105
commit da4cf8b661
2 changed files with 50 additions and 10 deletions

View File

@@ -893,11 +893,53 @@ class RuntimeDashboard extends Dashboard
$oDashboard->FromXml($sDashboardDefinition); $oDashboard->FromXml($sDashboardDefinition);
$oDashboard->SetCustomFlag($bCustomized); $oDashboard->SetCustomFlag($bCustomized);
$oDashboard->SetDefinitionFile($sDashboardFile); $oDashboard->SetDefinitionFile($sDashboardFile);
} } else {
else
{
$oDashboard = null; $oDashboard = null;
} }
return $oDashboard;
}
/**
* @param string $sDashboardFile file name relative to the current module folder
* @param string $sDashBoardId code of the dashboard either menu_id or <class>__<attcode>
*
* @return null|RuntimeDashboard
* @throws \CoreException
* @throws \CoreUnexpectedValue
* @throws \MissingQueryArgument
* @throws \MySQLException
* @throws \MySQLHasGoneAwayException
* @throws \Exception
*/
public static function GetDashboardToEdit($sDashboardFile, $sDashBoardId)
{
$bCustomized = false;
// Search for an eventual user defined dashboard
$oUDSearch = new DBObjectSearch('UserDashboard');
$oUDSearch->AddCondition('user_id', UserRights::GetUserId(), '=');
$oUDSearch->AddCondition('menu_code', $sDashBoardId, '=');
$oUDSet = new DBObjectSet($oUDSearch);
if ($oUDSet->Count() > 0) {
// Assuming there is at most one couple {user, menu}!
$oUserDashboard = $oUDSet->Fetch();
$sDashboardDefinition = $oUserDashboard->Get('contents');
$bCustomized = true;
} else {
$sDashboardDefinition = @file_get_contents($sDashboardFile);
}
if ($sDashboardDefinition !== false) {
$oDashboard = new RuntimeDashboard($sDashBoardId);
$oDashboard->FromXml($sDashboardDefinition);
$oDashboard->SetCustomFlag($bCustomized);
$oDashboard->SetDefinitionFile($sDashboardFile);
} else {
$oDashboard = null;
}
return $oDashboard; return $oDashboard;
} }
@@ -907,8 +949,7 @@ class RuntimeDashboard extends Dashboard
*/ */
public function Render($oPage, $bEditMode = false, $aExtraParams = array(), $bCanEdit = true) public function Render($oPage, $bEditMode = false, $aExtraParams = array(), $bCanEdit = true)
{ {
if (!isset($aExtraParams['query_params']) && isset($aExtraParams['this->class'])) if (!isset($aExtraParams['query_params']) && isset($aExtraParams['this->class'])) {
{
$oObj = MetaModel::GetObject($aExtraParams['this->class'], $aExtraParams['this->id']); $oObj = MetaModel::GetObject($aExtraParams['this->class'], $aExtraParams['this->id']);
$aRenderParams = array('query_params' => $oObj->ToArgsForQuery()); $aRenderParams = array('query_params' => $oObj->ToArgsForQuery());
} }

View File

@@ -1030,6 +1030,7 @@ try
$sDashboardId = utils::ReadParam('dashboard_id', '', false, 'raw_data'); $sDashboardId = utils::ReadParam('dashboard_id', '', false, 'raw_data');
$aExtraParams = utils::ReadParam('extra_params', array(), false, 'raw_data'); $aExtraParams = utils::ReadParam('extra_params', array(), false, 'raw_data');
$sReloadURL = utils::ReadParam('reload_url', '', false, 'raw_data'); $sReloadURL = utils::ReadParam('reload_url', '', false, 'raw_data');
appUserPreferences::SetPref('display_original_dashboard_'.$sDashboardId, false);
$sJSExtraParams = json_encode($aExtraParams); $sJSExtraParams = json_encode($aExtraParams);
$aParams = array(); $aParams = array();
$aParams['layout_class'] = utils::ReadParam('layout_class', ''); $aParams['layout_class'] = utils::ReadParam('layout_class', '');
@@ -1105,11 +1106,9 @@ EOF
$sDashboardFile = utils::ReadParam('file', '', false, 'raw_data'); $sDashboardFile = utils::ReadParam('file', '', false, 'raw_data');
$sReloadURL = utils::ReadParam('reload_url', '', false, 'raw_data'); $sReloadURL = utils::ReadParam('reload_url', '', false, 'raw_data');
$oKPI = new ExecutionKPI(); $oKPI = new ExecutionKPI();
$oDashboard = RuntimeDashboard::GetDashboard($sDashboardFile, $sId); $oDashboard = RuntimeDashboard::GetDashboardToEdit($sDashboardFile, $sId);
if (!is_null($oDashboard)) if (!is_null($oDashboard)) {
{ if (!empty($sReloadURL)) {
if (!empty($sReloadURL))
{
$oDashboard->SetReloadURL($sReloadURL); $oDashboard->SetReloadURL($sReloadURL);
} }
$oDashboard->RenderEditor($oPage, $aExtraParams); $oDashboard->RenderEditor($oPage, $aExtraParams);