diff --git a/workflow/engine/classes/class.pmDashlet.php b/workflow/engine/classes/class.pmDashlet.php index 12d084d99..dc3ed9763 100644 --- a/workflow/engine/classes/class.pmDashlet.php +++ b/workflow/engine/classes/class.pmDashlet.php @@ -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); diff --git a/workflow/engine/controllers/dashboard.php b/workflow/engine/controllers/dashboard.php index fdf5522f9..ef445479a 100644 --- a/workflow/engine/controllers/dashboard.php +++ b/workflow/engine/controllers/dashboard.php @@ -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(); } } diff --git a/workflow/engine/templates/dashboard/dashletsList.js b/workflow/engine/templates/dashboard/dashletsList.js index 5b7616714..378ea1547 100644 --- a/workflow/engine/templates/dashboard/dashletsList.js +++ b/workflow/engine/templates/dashboard/dashletsList.js @@ -277,6 +277,10 @@ Ext.onReady(function(){ infoGrid ] }); + + if (typeof(__DASHBOARD_ERROR__) !== 'undefined') { + PMExt.notify(_('ID_DASHBOARD'), __DASHBOARD_ERROR__); + } }); //Funtion Handles Context Menu Opening diff --git a/workflow/engine/templates/dashboard/index.js b/workflow/engine/templates/dashboard/index.js index c449589bf..79b02820f 100644 --- a/workflow/engine/templates/dashboard/index.js +++ b/workflow/engine/templates/dashboard/index.js @@ -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); });