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:
@@ -20,7 +20,7 @@ class PMDashlet extends DashletInstance implements DashletInterface {
|
||||
foreach ($pluginsDashlets as $pluginDashlet) {
|
||||
set_include_path(get_include_path() . PATH_SEPARATOR . PATH_PLUGINS . $pluginDashlet . PATH_SEP);
|
||||
}
|
||||
|
||||
|
||||
require_once ("classes" . PATH_SEP . "class." . $className . ".php");
|
||||
}
|
||||
G::LoadClass($className);
|
||||
@@ -37,6 +37,9 @@ class PMDashlet extends DashletInstance implements DashletInterface {
|
||||
public function setup($dasInsUid) {
|
||||
try {
|
||||
$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'];
|
||||
G::LoadClass($className);
|
||||
if (!class_exists($className)) {
|
||||
@@ -45,8 +48,7 @@ class PMDashlet extends DashletInstance implements DashletInterface {
|
||||
foreach ($pluginsDashlets as $pluginDashlet) {
|
||||
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->setup($this->dashletInstance);
|
||||
@@ -97,10 +99,10 @@ class PMDashlet extends DashletInstance implements DashletInterface {
|
||||
$dataset->next();
|
||||
while ($row = $dataset->getRow()) {
|
||||
$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_TITLE"] = (isset($arrayField["DAS_INS_TITLE"]) && !empty($arrayField["DAS_INS_TITLE"]))? $arrayField["DAS_INS_TITLE"] : "";
|
||||
|
||||
|
||||
switch ($row['DAS_INS_OWNER_TYPE']) {
|
||||
case 'EVERYBODY':
|
||||
$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
|
||||
$dashlet = new Dashlet();
|
||||
$dashletFields = $dashlet->load($dashletInstance['DAS_UID']);
|
||||
if (is_null($dashletFields)) {
|
||||
$dashletFields = array();
|
||||
}
|
||||
return array_merge($dashletFields, $dashletInstance);
|
||||
}
|
||||
catch (Exception $error) {
|
||||
@@ -200,11 +205,11 @@ class PMDashlet extends DashletInstance implements DashletInterface {
|
||||
while ($row = $dataset->getRow()) {
|
||||
if (!isset($dashletsInstances[$row['DAS_INS_UID']])) {
|
||||
$arrayField = unserialize($row["DAS_INS_ADDITIONAL_PROPERTIES"]);
|
||||
|
||||
|
||||
$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"] = $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;
|
||||
}
|
||||
$dataset->next();
|
||||
@@ -225,11 +230,11 @@ class PMDashlet extends DashletInstance implements DashletInterface {
|
||||
while ($row = $dataset->getRow()) {
|
||||
if (!isset($dashletsInstances[$row['DAS_INS_UID']])) {
|
||||
$arrayField = unserialize($row["DAS_INS_ADDITIONAL_PROPERTIES"]);
|
||||
|
||||
|
||||
$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"] = $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;
|
||||
}
|
||||
$dataset->next();
|
||||
@@ -252,11 +257,11 @@ class PMDashlet extends DashletInstance implements DashletInterface {
|
||||
while ($row = $dataset->getRow()) {
|
||||
if (!isset($dashletsInstances[$row['DAS_INS_UID']])) {
|
||||
$arrayField = unserialize($row["DAS_INS_ADDITIONAL_PROPERTIES"]);
|
||||
|
||||
|
||||
$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"] = $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;
|
||||
}
|
||||
$dataset->next();
|
||||
@@ -281,11 +286,11 @@ class PMDashlet extends DashletInstance implements DashletInterface {
|
||||
while ($row = $dataset->getRow()) {
|
||||
if (!isset($dashletsInstances[$row['DAS_INS_UID']])) {
|
||||
$arrayField = unserialize($row["DAS_INS_ADDITIONAL_PROPERTIES"]);
|
||||
|
||||
|
||||
$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"] = $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;
|
||||
}
|
||||
$dataset->next();
|
||||
@@ -310,7 +315,7 @@ class PMDashlet extends DashletInstance implements DashletInterface {
|
||||
foreach ($pluginsDashlets as $pluginDashlet) {
|
||||
set_include_path(get_include_path() . PATH_SEPARATOR . PATH_PLUGINS . $pluginDashlet . PATH_SEP);
|
||||
}
|
||||
|
||||
|
||||
require_once ("classes" . PATH_SEP . "class." . $className . ".php");
|
||||
}
|
||||
G::LoadClass($className);
|
||||
|
||||
@@ -73,6 +73,10 @@ class Dashboard extends Controller {
|
||||
public function dashletsList() {
|
||||
try {
|
||||
$this->includeExtJS('dashboard/dashletsList');
|
||||
if (isset($_SESSION['__DASHBOARD_ERROR__'])) {
|
||||
$this->setJSVar('__DASHBOARD_ERROR__', $_SESSION['__DASHBOARD_ERROR__']);
|
||||
unset($_SESSION['__DASHBOARD_ERROR__']);
|
||||
}
|
||||
$this->setView('dashboard/dashletsList');
|
||||
G::RenderPage('publish', 'extJs');
|
||||
}
|
||||
@@ -128,8 +132,9 @@ class Dashboard extends Controller {
|
||||
return null;
|
||||
}
|
||||
catch (Exception $error) {
|
||||
//ToDo: Display a error message
|
||||
error_log($error->getMessage());
|
||||
$_SESSION['__DASHBOARD_ERROR__'] = $error->getMessage();
|
||||
G::header('Location: dashletsList');
|
||||
die();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -277,6 +277,10 @@ Ext.onReady(function(){
|
||||
infoGrid
|
||||
]
|
||||
});
|
||||
|
||||
if (typeof(__DASHBOARD_ERROR__) !== 'undefined') {
|
||||
PMExt.notify(_('ID_DASHBOARD'), __DASHBOARD_ERROR__);
|
||||
}
|
||||
});
|
||||
|
||||
//Funtion Handles Context Menu Opening
|
||||
|
||||
@@ -24,16 +24,16 @@ Ext.onReady(function(){
|
||||
handler : function(a) {
|
||||
var vp = Ext.getCmp('viewportDashboard');
|
||||
var pd = Ext.getCmp('portalDashboard');
|
||||
|
||||
|
||||
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[0].columnWidth = 0.33;
|
||||
pd.items.items[1].columnWidth = 0.33;
|
||||
pd.items.items[2].columnWidth = 0.33;
|
||||
pd.doLayout();
|
||||
|
||||
|
||||
tbDashboard.items.items[0].setDisabled(true);
|
||||
tbDashboard.items.items[1].setDisabled(false);
|
||||
}
|
||||
@@ -44,16 +44,16 @@ Ext.onReady(function(){
|
||||
handler : function(a) {
|
||||
var vp = Ext.getCmp('viewportDashboard');
|
||||
var pd = Ext.getCmp('portalDashboard');
|
||||
|
||||
|
||||
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[0].columnWidth = 0.49;
|
||||
pd.items.items[1].columnWidth = 0.49;
|
||||
pd.items.items[2].columnWidth = 0.01;
|
||||
pd.doLayout();
|
||||
|
||||
|
||||
tbDashboard.items.items[0].setDisabled(false);
|
||||
tbDashboard.items.items[1].setDisabled(true);
|
||||
}
|
||||
@@ -101,7 +101,7 @@ Ext.onReady(function(){
|
||||
});
|
||||
|
||||
var pd = Ext.getCmp('portalDashboard');
|
||||
|
||||
|
||||
for (var i = 0; i < dashletsInstances.length; i++) {
|
||||
var np = new Ext.ux.Portlet({
|
||||
title: dashletsInstances[i].DAS_TITLE,
|
||||
@@ -120,12 +120,12 @@ Ext.onReady(function(){
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
pd.items.items[i % 3].add(np);
|
||||
}
|
||||
|
||||
|
||||
pd.doLayout();
|
||||
|
||||
|
||||
tbDashboard.items.items[0].setDisabled(true);
|
||||
tbDashboard.items.items[1].setDisabled(false);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user