/** * Fetches the list of actions for a single module, saved to the session for performance reasons * * @param class_module_system_module $objModule * @static * * @return array */ public static function getModuleActionNaviHelper(class_module_system_module $objModule) { if (class_carrier::getInstance()->getObjSession()->isLoggedin()) { $strKey = __CLASS__ . "adminNaviEntries" . $objModule->getSystemid() . class_module_system_aspect::getCurrentAspectId(); $arrFinalItems = class_carrier::getInstance()->getObjSession()->getSession($strKey); if ($arrFinalItems !== false) { return $arrFinalItems; } $objAdminInstance = $objModule->getAdminInstanceOfConcreteModule(); $arrItems = $objAdminInstance->getOutputModuleNavi(); $arrItems = array_merge($arrItems, $objAdminInstance->getModuleRightNaviEntry()); $arrFinalItems = array(); //build array of final items $intI = 0; foreach ($arrItems as $arrOneItem) { if ($arrOneItem[0] == "") { $bitAdd = true; } else { $bitAdd = class_carrier::getInstance()->getObjRights()->validatePermissionString($arrOneItem[0], $objModule); } if ($bitAdd || $arrOneItem[1] == "") { if ($arrOneItem[1] != "" || (!isset($arrFinalItems[$intI - 1]) || $arrFinalItems[$intI - 1] != "")) { $arrFinalItems[] = $arrOneItem[1]; $intI++; } } } //if the last one is a divider, remove it if ($arrFinalItems[count($arrFinalItems) - 1] == "") { unset($arrFinalItems[count($arrFinalItems) - 1]); } class_carrier::getInstance()->getObjSession()->setSession($strKey, $arrFinalItems); return $arrFinalItems; } return array(); }
/** * Validates if the requested module is valid for the current aspect. * If necessary, the current aspect is updated. * * @return void */ private function validateAndUpdateCurrentAspect() { if (_xmlLoader_ === true || $this->getArrModule("template") == "/folderview.tpl") { return; } $objModule = $this->getObjModule(); $strCurrentAspect = class_module_system_aspect::getCurrentAspectId(); if ($objModule != null && $objModule->getStrAspect() != "") { $arrAspects = explode(",", $objModule->getStrAspect()); if (count($arrAspects) == 1 && $arrAspects[0] != $strCurrentAspect) { $objAspect = new class_module_system_aspect($arrAspects[0]); if ($objAspect->rightView()) { class_module_system_aspect::setCurrentAspectId($arrAspects[0]); } } } }
/** * Renders the list of aspects available * * @param string $strLastModule * @param string $strLastAction * @param string $strLastSystemid * * @return string * @todo param handling? remove params? */ public function getAspectChooser($strLastModule, $strLastAction, $strLastSystemid) { $strTemplateID = $this->objTemplate->readTemplate("/elements.tpl", "aspect_chooser"); $strTemplateRowID = $this->objTemplate->readTemplate("/elements.tpl", "aspect_chooser_entry"); $arrTemplate = array(); $arrTemplate["options"] = ""; //process rows $strCurrentId = class_module_system_aspect::getCurrentAspectId(); $arrAspects = class_module_system_aspect::getActiveObjectList(); $intNrOfAspects = 0; foreach ($arrAspects as $objSingleAspect) { if ($objSingleAspect->rightView()) { $arrSubtemplate = array(); //start on dashboard since the current module may not be visible in another aspect $arrSubtemplate["value"] = getLinkAdminHref("dashboard", "", "&aspect=" . $objSingleAspect->getSystemid()); $arrSubtemplate["name"] = $objSingleAspect->getStrDisplayName(); $arrSubtemplate["selected"] = $strCurrentId == $objSingleAspect->getSystemid() ? "selected=\"selected\"" : ""; $arrTemplate["options"] .= $this->objTemplate->fillTemplate($arrSubtemplate, $strTemplateRowID); $intNrOfAspects++; } } if ($arrTemplate["options"] == "" || $intNrOfAspects < 2) { return ""; } return $this->objTemplate->fillTemplate($arrTemplate, $strTemplateID); }
/** * Searches the root-node for a users' widgets. * If not given, the node is created on the fly. * Those nodes are required to ensure a proper sort-handling on the system-table * * @param string $strUserid * @param string $strAspectId * @return string * @static */ public static function getWidgetsRootNodeForUser($strUserid, $strAspectId = "") { if ($strAspectId == "") { $strAspectId = class_module_system_aspect::getCurrentAspectId(); } $strQuery = "SELECT system_id\n \t\t\t FROM " . _dbprefix_ . "dashboard,\n \t\t\t \t " . _dbprefix_ . "system\n \t\t\t WHERE dashboard_id = system_id\n \t\t\t AND system_prev_id = ?\n \t\t\t AND dashboard_user = ?\n \t\t\t AND dashboard_aspect = ?\n \t\t\t AND dashboard_class = ?\n \t ORDER BY system_sort ASC "; $arrRow = class_carrier::getInstance()->getObjDB()->getPRow($strQuery, array(class_module_system_module::getModuleByName("dashboard")->getSystemid(), $strUserid, $strAspectId, "root_node")); if (!isset($arrRow["system_id"]) || !validateSystemid($arrRow["system_id"])) { //Create a new root-node on the fly $objWidget = new class_module_dashboard_widget(); $objWidget->setStrAspect($strAspectId); $objWidget->setStrUser($strUserid); $objWidget->setStrClass("root_node"); $objWidget->updateObjectToDb(class_module_system_module::getModuleByName("dashboard")->getSystemid()); $strReturnId = $objWidget->getSystemid(); } else { $strReturnId = $arrRow["system_id"]; } return $strReturnId; }
/** * Generates the forms to add a widget to the dashboard * * @return string, "" in case of success * @autoTestable * @permissions edit */ protected function actionAddWidgetToDashboard() { $strReturn = ""; //step 1: select a widget, plz if ($this->getParam("step") == "") { $arrWidgetsAvailable = class_module_dashboard_widget::getListOfWidgetsAvailable(); $arrDD = array(); foreach ($arrWidgetsAvailable as $strOneWidget) { /** @var $objWidget interface_adminwidget|class_adminwidget */ $objWidget = new $strOneWidget(); $arrDD[$strOneWidget] = $objWidget->getWidgetName(); } $arrColumnsAvailable = array(); foreach ($this->arrColumnsOnDashboard as $strOneColumn) { $arrColumnsAvailable[$strOneColumn] = $this->getLang($strOneColumn); } $strReturn .= $this->objToolkit->formHeader(class_link::getLinkAdminHref("dashboard", "addWidgetToDashboard")); $strReturn .= $this->objToolkit->formInputDropdown("widget", $arrDD, $this->getLang("widget")); $strReturn .= $this->objToolkit->formInputDropdown("column", $arrColumnsAvailable, $this->getLang("column")); $strReturn .= $this->objToolkit->formInputHidden("step", "2"); $strReturn .= $this->objToolkit->formInputSubmit($this->getLang("addWidgetNextStep")); $strReturn .= $this->objToolkit->formClose(); $strReturn .= $this->objToolkit->setBrowserFocus("widget"); } else { if ($this->getParam("step") == "2") { $strWidgetClass = $this->getParam("widget"); /** @var class_adminwidget|interface_adminwidget $objWidget */ $objWidget = new $strWidgetClass(); if ($objWidget->getEditForm() == "") { $this->adminReload(class_link::getLinkAdminHref("dashboard", "addWidgetToDashboard", "&step=3&widget=" . $strWidgetClass . "&column=" . $this->getParam("column"))); } else { //ask the widget to generate its form-parts and wrap our elements around $strReturn .= $this->objToolkit->formHeader(class_link::getLinkAdminHref("dashboard", "addWidgetToDashboard")); $strReturn .= $objWidget->getEditForm(); $strReturn .= $this->objToolkit->formInputHidden("step", "3"); $strReturn .= $this->objToolkit->formInputHidden("widget", $strWidgetClass); $strReturn .= $this->objToolkit->formInputHidden("column", $this->getParam("column")); $strReturn .= $this->objToolkit->formInputSubmit($this->getLang("commons_save")); $strReturn .= $this->objToolkit->formClose(); } } else { if ($this->getParam("step") == "3") { //instantiate the concrete widget $strWidgetClass = $this->getParam("widget"); /** @var class_adminwidget|interface_adminwidget $objWidget */ $objWidget = new $strWidgetClass(); //let it process its fields $objWidget->loadFieldsFromArray($this->getAllParams()); //and save the dashboard-entry $objDashboard = new class_module_dashboard_widget(); $objDashboard->setStrClass($strWidgetClass); $objDashboard->setStrContent($objWidget->getFieldsAsString()); $objDashboard->setStrColumn($this->getParam("column")); $objDashboard->setStrUser($this->objSession->getUserID()); $objDashboard->setStrAspect(class_module_system_aspect::getCurrentAspectId()); if ($objDashboard->updateObjectToDb(class_module_dashboard_widget::getWidgetsRootNodeForUser($this->objSession->getUserID(), class_module_system_aspect::getCurrentAspectId()))) { $this->adminReload(class_link::getLinkAdminHref($this->getArrModule("modul"))); } else { return $this->getLang("errorSavingWidget"); } } } } return $strReturn; }