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:
@@ -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);
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user