BUG 8966 Mensaje "fatal error" en un custom drill down cuando se deshabilita...

- Faltaba agregar una validacion en el formulario de edicion en caso de que la clase del dashlet haya sido desactivada o borrada
- Ahora se redirecciona de nuevo al listado y se muestra un mensaje de error que indica que el objeto no existe y que posiblemente
el plugin relacionado haya sido desactivado
This commit is contained in:
Julio Cesar Laura
2012-04-13 16:13:19 -04:00
parent 6d7185e320
commit 02741317b2
4 changed files with 40 additions and 26 deletions

View File

@@ -20,7 +20,7 @@ class PMDashlet extends DashletInstance implements DashletInterface {
foreach ($pluginsDashlets as $pluginDashlet) { foreach ($pluginsDashlets as $pluginDashlet) {
set_include_path(get_include_path() . PATH_SEPARATOR . PATH_PLUGINS . $pluginDashlet . PATH_SEP); set_include_path(get_include_path() . PATH_SEPARATOR . PATH_PLUGINS . $pluginDashlet . PATH_SEP);
} }
require_once ("classes" . PATH_SEP . "class." . $className . ".php"); require_once ("classes" . PATH_SEP . "class." . $className . ".php");
} }
G::LoadClass($className); G::LoadClass($className);
@@ -37,6 +37,9 @@ class PMDashlet extends DashletInstance implements DashletInterface {
public function setup($dasInsUid) { public function setup($dasInsUid) {
try { try {
$this->dashletInstance = $this->loadDashletInstance($dasInsUid); $this->dashletInstance = $this->loadDashletInstance($dasInsUid);
if (!isset($this->dashletInstance['DAS_CLASS'])) {
throw new Exception(G::LoadTranslation('ID_ERROR_OBJECT_NOT_EXISTS') . ' - Probably the plugin related is disabled');
}
$className = $this->dashletInstance['DAS_CLASS']; $className = $this->dashletInstance['DAS_CLASS'];
G::LoadClass($className); G::LoadClass($className);
if (!class_exists($className)) { if (!class_exists($className)) {
@@ -45,8 +48,7 @@ class PMDashlet extends DashletInstance implements DashletInterface {
foreach ($pluginsDashlets as $pluginDashlet) { foreach ($pluginsDashlets as $pluginDashlet) {
set_include_path(get_include_path() . PATH_SEPARATOR . PATH_PLUGINS . $pluginDashlet . PATH_SEP); set_include_path(get_include_path() . PATH_SEPARATOR . PATH_PLUGINS . $pluginDashlet . PATH_SEP);
} }
require_once 'classes' . PATH_SEP . 'class.' . $className . '.php';
require_once ("classes" . PATH_SEP . "class." . $className . ".php");
} }
$this->dashletObject = new $className(); $this->dashletObject = new $className();
$this->dashletObject->setup($this->dashletInstance); $this->dashletObject->setup($this->dashletInstance);
@@ -97,10 +99,10 @@ class PMDashlet extends DashletInstance implements DashletInterface {
$dataset->next(); $dataset->next();
while ($row = $dataset->getRow()) { while ($row = $dataset->getRow()) {
$arrayField = unserialize($row["DAS_INS_ADDITIONAL_PROPERTIES"]); $arrayField = unserialize($row["DAS_INS_ADDITIONAL_PROPERTIES"]);
$row['DAS_INS_STATUS_LABEL'] = ($row['DAS_INS_STATUS'] == '1' ? G::LoadTranslation('ID_ACTIVE') : G::LoadTranslation('ID_INACTIVE')); $row['DAS_INS_STATUS_LABEL'] = ($row['DAS_INS_STATUS'] == '1' ? G::LoadTranslation('ID_ACTIVE') : G::LoadTranslation('ID_INACTIVE'));
$row["DAS_INS_TITLE"] = (isset($arrayField["DAS_INS_TITLE"]) && !empty($arrayField["DAS_INS_TITLE"]))? $arrayField["DAS_INS_TITLE"] : ""; $row["DAS_INS_TITLE"] = (isset($arrayField["DAS_INS_TITLE"]) && !empty($arrayField["DAS_INS_TITLE"]))? $arrayField["DAS_INS_TITLE"] : "";
switch ($row['DAS_INS_OWNER_TYPE']) { switch ($row['DAS_INS_OWNER_TYPE']) {
case 'EVERYBODY': case 'EVERYBODY':
$row['DAS_INS_OWNER_TITLE'] = G::LoadTranslation('ID_ALL_USERS'); $row['DAS_INS_OWNER_TITLE'] = G::LoadTranslation('ID_ALL_USERS');
@@ -155,6 +157,9 @@ class PMDashlet extends DashletInstance implements DashletInterface {
//Load data from the serialized field //Load data from the serialized field
$dashlet = new Dashlet(); $dashlet = new Dashlet();
$dashletFields = $dashlet->load($dashletInstance['DAS_UID']); $dashletFields = $dashlet->load($dashletInstance['DAS_UID']);
if (is_null($dashletFields)) {
$dashletFields = array();
}
return array_merge($dashletFields, $dashletInstance); return array_merge($dashletFields, $dashletInstance);
} }
catch (Exception $error) { catch (Exception $error) {
@@ -200,11 +205,11 @@ class PMDashlet extends DashletInstance implements DashletInterface {
while ($row = $dataset->getRow()) { while ($row = $dataset->getRow()) {
if (!isset($dashletsInstances[$row['DAS_INS_UID']])) { if (!isset($dashletsInstances[$row['DAS_INS_UID']])) {
$arrayField = unserialize($row["DAS_INS_ADDITIONAL_PROPERTIES"]); $arrayField = unserialize($row["DAS_INS_ADDITIONAL_PROPERTIES"]);
$row['DAS_XTEMPLATE'] = $this->getXTemplate($row['DAS_CLASS']); $row['DAS_XTEMPLATE'] = $this->getXTemplate($row['DAS_CLASS']);
$row["DAS_TITLE"] = (isset($arrayField["DAS_INS_TITLE"]) && !empty($arrayField["DAS_INS_TITLE"]))? $arrayField["DAS_INS_TITLE"] : $row["DAS_TITLE"]; $row["DAS_TITLE"] = (isset($arrayField["DAS_INS_TITLE"]) && !empty($arrayField["DAS_INS_TITLE"]))? $arrayField["DAS_INS_TITLE"] : $row["DAS_TITLE"];
$row["DAS_TITLE"] = $row["DAS_TITLE"] . ((isset($arrayField["DAS_INS_SUBTITLE"]) && !empty($arrayField["DAS_INS_SUBTITLE"]))? str_replace("@@USR_USERNAME", $_SESSION["USR_USERNAME"], $arrayField["DAS_INS_SUBTITLE"]) : null); $row["DAS_TITLE"] = $row["DAS_TITLE"] . ((isset($arrayField["DAS_INS_SUBTITLE"]) && !empty($arrayField["DAS_INS_SUBTITLE"]))? str_replace("@@USR_USERNAME", $_SESSION["USR_USERNAME"], $arrayField["DAS_INS_SUBTITLE"]) : null);
$dashletsInstances[$row['DAS_INS_UID']] = $row; $dashletsInstances[$row['DAS_INS_UID']] = $row;
} }
$dataset->next(); $dataset->next();
@@ -225,11 +230,11 @@ class PMDashlet extends DashletInstance implements DashletInterface {
while ($row = $dataset->getRow()) { while ($row = $dataset->getRow()) {
if (!isset($dashletsInstances[$row['DAS_INS_UID']])) { if (!isset($dashletsInstances[$row['DAS_INS_UID']])) {
$arrayField = unserialize($row["DAS_INS_ADDITIONAL_PROPERTIES"]); $arrayField = unserialize($row["DAS_INS_ADDITIONAL_PROPERTIES"]);
$row['DAS_XTEMPLATE'] = $this->getXTemplate($row['DAS_CLASS']); $row['DAS_XTEMPLATE'] = $this->getXTemplate($row['DAS_CLASS']);
$row["DAS_TITLE"] = (isset($arrayField["DAS_INS_TITLE"]) && !empty($arrayField["DAS_INS_TITLE"]))? $arrayField["DAS_INS_TITLE"] : $row["DAS_TITLE"]; $row["DAS_TITLE"] = (isset($arrayField["DAS_INS_TITLE"]) && !empty($arrayField["DAS_INS_TITLE"]))? $arrayField["DAS_INS_TITLE"] : $row["DAS_TITLE"];
$row["DAS_TITLE"] = $row["DAS_TITLE"] . ((isset($arrayField["DAS_INS_SUBTITLE"]) && !empty($arrayField["DAS_INS_SUBTITLE"]))? str_replace("@@USR_USERNAME", $_SESSION["USR_USERNAME"], $arrayField["DAS_INS_SUBTITLE"]) : null); $row["DAS_TITLE"] = $row["DAS_TITLE"] . ((isset($arrayField["DAS_INS_SUBTITLE"]) && !empty($arrayField["DAS_INS_SUBTITLE"]))? str_replace("@@USR_USERNAME", $_SESSION["USR_USERNAME"], $arrayField["DAS_INS_SUBTITLE"]) : null);
$dashletsInstances[$row['DAS_INS_UID']] = $row; $dashletsInstances[$row['DAS_INS_UID']] = $row;
} }
$dataset->next(); $dataset->next();
@@ -252,11 +257,11 @@ class PMDashlet extends DashletInstance implements DashletInterface {
while ($row = $dataset->getRow()) { while ($row = $dataset->getRow()) {
if (!isset($dashletsInstances[$row['DAS_INS_UID']])) { if (!isset($dashletsInstances[$row['DAS_INS_UID']])) {
$arrayField = unserialize($row["DAS_INS_ADDITIONAL_PROPERTIES"]); $arrayField = unserialize($row["DAS_INS_ADDITIONAL_PROPERTIES"]);
$row['DAS_XTEMPLATE'] = $this->getXTemplate($row['DAS_CLASS']); $row['DAS_XTEMPLATE'] = $this->getXTemplate($row['DAS_CLASS']);
$row["DAS_TITLE"] = (isset($arrayField["DAS_INS_TITLE"]) && !empty($arrayField["DAS_INS_TITLE"]))? $arrayField["DAS_INS_TITLE"] : $row["DAS_TITLE"]; $row["DAS_TITLE"] = (isset($arrayField["DAS_INS_TITLE"]) && !empty($arrayField["DAS_INS_TITLE"]))? $arrayField["DAS_INS_TITLE"] : $row["DAS_TITLE"];
$row["DAS_TITLE"] = $row["DAS_TITLE"] . ((isset($arrayField["DAS_INS_SUBTITLE"]) && !empty($arrayField["DAS_INS_SUBTITLE"]))? str_replace("@@USR_USERNAME", $_SESSION["USR_USERNAME"], $arrayField["DAS_INS_SUBTITLE"]) : null); $row["DAS_TITLE"] = $row["DAS_TITLE"] . ((isset($arrayField["DAS_INS_SUBTITLE"]) && !empty($arrayField["DAS_INS_SUBTITLE"]))? str_replace("@@USR_USERNAME", $_SESSION["USR_USERNAME"], $arrayField["DAS_INS_SUBTITLE"]) : null);
$dashletsInstances[$row['DAS_INS_UID']] = $row; $dashletsInstances[$row['DAS_INS_UID']] = $row;
} }
$dataset->next(); $dataset->next();
@@ -281,11 +286,11 @@ class PMDashlet extends DashletInstance implements DashletInterface {
while ($row = $dataset->getRow()) { while ($row = $dataset->getRow()) {
if (!isset($dashletsInstances[$row['DAS_INS_UID']])) { if (!isset($dashletsInstances[$row['DAS_INS_UID']])) {
$arrayField = unserialize($row["DAS_INS_ADDITIONAL_PROPERTIES"]); $arrayField = unserialize($row["DAS_INS_ADDITIONAL_PROPERTIES"]);
$row['DAS_XTEMPLATE'] = $this->getXTemplate($row['DAS_CLASS']); $row['DAS_XTEMPLATE'] = $this->getXTemplate($row['DAS_CLASS']);
$row["DAS_TITLE"] = (isset($arrayField["DAS_INS_TITLE"]) && !empty($arrayField["DAS_INS_TITLE"]))? $arrayField["DAS_INS_TITLE"] : $row["DAS_TITLE"]; $row["DAS_TITLE"] = (isset($arrayField["DAS_INS_TITLE"]) && !empty($arrayField["DAS_INS_TITLE"]))? $arrayField["DAS_INS_TITLE"] : $row["DAS_TITLE"];
$row["DAS_TITLE"] = $row["DAS_TITLE"] . ((isset($arrayField["DAS_INS_SUBTITLE"]) && !empty($arrayField["DAS_INS_SUBTITLE"]))? str_replace("@@USR_USERNAME", $_SESSION["USR_USERNAME"], $arrayField["DAS_INS_SUBTITLE"]) : null); $row["DAS_TITLE"] = $row["DAS_TITLE"] . ((isset($arrayField["DAS_INS_SUBTITLE"]) && !empty($arrayField["DAS_INS_SUBTITLE"]))? str_replace("@@USR_USERNAME", $_SESSION["USR_USERNAME"], $arrayField["DAS_INS_SUBTITLE"]) : null);
$dashletsInstances[$row['DAS_INS_UID']] = $row; $dashletsInstances[$row['DAS_INS_UID']] = $row;
} }
$dataset->next(); $dataset->next();
@@ -310,7 +315,7 @@ class PMDashlet extends DashletInstance implements DashletInterface {
foreach ($pluginsDashlets as $pluginDashlet) { foreach ($pluginsDashlets as $pluginDashlet) {
set_include_path(get_include_path() . PATH_SEPARATOR . PATH_PLUGINS . $pluginDashlet . PATH_SEP); set_include_path(get_include_path() . PATH_SEPARATOR . PATH_PLUGINS . $pluginDashlet . PATH_SEP);
} }
require_once ("classes" . PATH_SEP . "class." . $className . ".php"); require_once ("classes" . PATH_SEP . "class." . $className . ".php");
} }
G::LoadClass($className); G::LoadClass($className);

View File

@@ -73,6 +73,10 @@ class Dashboard extends Controller {
public function dashletsList() { public function dashletsList() {
try { try {
$this->includeExtJS('dashboard/dashletsList'); $this->includeExtJS('dashboard/dashletsList');
if (isset($_SESSION['__DASHBOARD_ERROR__'])) {
$this->setJSVar('__DASHBOARD_ERROR__', $_SESSION['__DASHBOARD_ERROR__']);
unset($_SESSION['__DASHBOARD_ERROR__']);
}
$this->setView('dashboard/dashletsList'); $this->setView('dashboard/dashletsList');
G::RenderPage('publish', 'extJs'); G::RenderPage('publish', 'extJs');
} }
@@ -128,8 +132,9 @@ class Dashboard extends Controller {
return null; return null;
} }
catch (Exception $error) { catch (Exception $error) {
//ToDo: Display a error message $_SESSION['__DASHBOARD_ERROR__'] = $error->getMessage();
error_log($error->getMessage()); G::header('Location: dashletsList');
die();
} }
} }

View File

@@ -277,6 +277,10 @@ Ext.onReady(function(){
infoGrid infoGrid
] ]
}); });
if (typeof(__DASHBOARD_ERROR__) !== 'undefined') {
PMExt.notify(_('ID_DASHBOARD'), __DASHBOARD_ERROR__);
}
}); });
//Funtion Handles Context Menu Opening //Funtion Handles Context Menu Opening

View File

@@ -24,16 +24,16 @@ Ext.onReady(function(){
handler : function(a) { handler : function(a) {
var vp = Ext.getCmp('viewportDashboard'); var vp = Ext.getCmp('viewportDashboard');
var pd = Ext.getCmp('portalDashboard'); var pd = Ext.getCmp('portalDashboard');
for (var i = 0; i <= dashletsInstances.length - 1; i++) { for (var i = 0; i <= dashletsInstances.length - 1; i++) {
pd.items.items[i % 3].add(pd.items.items[i % 2].items.items[0]); pd.items.items[i % 3].add(pd.items.items[i % 2].items.items[0]);
} }
pd.items.items[0].columnWidth = 0.33; pd.items.items[0].columnWidth = 0.33;
pd.items.items[1].columnWidth = 0.33; pd.items.items[1].columnWidth = 0.33;
pd.items.items[2].columnWidth = 0.33; pd.items.items[2].columnWidth = 0.33;
pd.doLayout(); pd.doLayout();
tbDashboard.items.items[0].setDisabled(true); tbDashboard.items.items[0].setDisabled(true);
tbDashboard.items.items[1].setDisabled(false); tbDashboard.items.items[1].setDisabled(false);
} }
@@ -44,16 +44,16 @@ Ext.onReady(function(){
handler : function(a) { handler : function(a) {
var vp = Ext.getCmp('viewportDashboard'); var vp = Ext.getCmp('viewportDashboard');
var pd = Ext.getCmp('portalDashboard'); var pd = Ext.getCmp('portalDashboard');
for (var i = 0; i <= dashletsInstances.length - 1; i++) { for (var i = 0; i <= dashletsInstances.length - 1; i++) {
pd.items.items[i % 2].add(pd.items.items[i % 3].items.items[0]); pd.items.items[i % 2].add(pd.items.items[i % 3].items.items[0]);
} }
pd.items.items[0].columnWidth = 0.49; pd.items.items[0].columnWidth = 0.49;
pd.items.items[1].columnWidth = 0.49; pd.items.items[1].columnWidth = 0.49;
pd.items.items[2].columnWidth = 0.01; pd.items.items[2].columnWidth = 0.01;
pd.doLayout(); pd.doLayout();
tbDashboard.items.items[0].setDisabled(false); tbDashboard.items.items[0].setDisabled(false);
tbDashboard.items.items[1].setDisabled(true); tbDashboard.items.items[1].setDisabled(true);
} }
@@ -101,7 +101,7 @@ Ext.onReady(function(){
}); });
var pd = Ext.getCmp('portalDashboard'); var pd = Ext.getCmp('portalDashboard');
for (var i = 0; i < dashletsInstances.length; i++) { for (var i = 0; i < dashletsInstances.length; i++) {
var np = new Ext.ux.Portlet({ var np = new Ext.ux.Portlet({
title: dashletsInstances[i].DAS_TITLE, title: dashletsInstances[i].DAS_TITLE,
@@ -120,12 +120,12 @@ Ext.onReady(function(){
} }
} }
}); });
pd.items.items[i % 3].add(np); pd.items.items[i % 3].add(np);
} }
pd.doLayout(); pd.doLayout();
tbDashboard.items.items[0].setDisabled(true); tbDashboard.items.items[0].setDisabled(true);
tbDashboard.items.items[1].setDisabled(false); tbDashboard.items.items[1].setDisabled(false);
}); });