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

@@ -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) {

View File

@@ -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();
}
}

View File

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