/** * Returns a list of available placeholders & elements on this page * * @return string * @permissions edit */ protected function actionList() { $strReturn = ""; class_module_languages_admin::enableLanguageSwitch(); $objPage = new class_module_pages_page($this->getSystemid()); //get infos about the page $arrToolbarEntries = array(); $arrToolbarEntries[0] = "<a href=\"" . class_link::getLinkAdminHref("pages", "editPage", "&systemid=" . $this->getSystemid()) . "\">" . class_adminskin_helper::getAdminImage("icon_edit") . $this->getLang("contentToolbar_pageproperties") . "</a>"; $arrToolbarEntries[1] = "<a href=\"" . class_link::getLinkAdminHref("pages_content", "list", "&systemid=" . $this->getSystemid()) . "\">" . class_adminskin_helper::getAdminImage("icon_page") . $this->getLang("contentToolbar_content") . "</a>"; $arrToolbarEntries[2] = "<a href=\"" . class_link::getLinkPortalHref($objPage->getStrName(), "", "", "&preview=1", "", $this->getLanguageToWorkOn()) . "\" target=\"_blank\">" . class_adminskin_helper::getAdminImage("icon_lens") . $this->getLang("contentToolbar_preview") . "</a>"; if ($objPage->getIntType() != class_module_pages_page::$INT_TYPE_ALIAS) { $strReturn .= $this->objToolkit->getContentToolbar($arrToolbarEntries, 1); } $arrInfoRows = array(array($this->getLang("template"), $objPage->getStrTemplate()), array($this->getLang("lastuserTitle"), $objPage->getLastEditUser()), array($this->getLang("lasteditTitle"), timeToString($objPage->getIntLmTime()))); $strReturn .= $this->objToolkit->dataTable(null, $arrInfoRows); $strReturn .= $this->objToolkit->divider(); //try to load template, otherwise abort $strTemplateID = null; try { $strTemplateID = $this->objTemplate->readTemplate("/module_pages/" . $objPage->getStrTemplate(), "", false, true); } catch (class_exception $objException) { $strReturn .= $this->getLang("templateNotLoaded") . "<br />"; } //Load elements on template, master-page special case! if ($objPage->getStrName() == "master") { $arrElementsOnTemplate = $this->objTemplate->getElements($strTemplateID, 1); } else { $arrElementsOnTemplate = $this->objTemplate->getElements($strTemplateID, 0); } //Language-dependant loading of elements, if installed $arrElementsOnPage = class_module_pages_pageelement::getElementsOnPage($this->getSystemid(), false, $this->getLanguageToWorkOn()); //save a copy of the array to be able to check against all values later on $arrElementsOnPageCopy = $arrElementsOnPage; //Loading all Elements installed on the system ("RAW"-Elements) $arrElementsInSystem = class_module_pages_element::getObjectList(); //So, loop through the placeholders and check, if there's any element already belonging to this one $intI = 0; if (is_array($arrElementsOnTemplate) && count($arrElementsOnTemplate) > 0) { //Iterate over every single placeholder provided by the template foreach ($arrElementsOnTemplate as $arrOneElementOnTemplate) { $strOutputAtPlaceholder = ""; //Do we have one or more elements already in db at this placeholder? $bitHit = false; //Iterate over every single element-type provided by the placeholder foreach ($arrElementsOnPage as $intArrElementsOnPageKey => $objOneElementOnPage) { //Check, if its the same placeholder $bitSamePlaceholder = false; if ($arrOneElementOnTemplate["placeholder"] == $objOneElementOnPage->getStrPlaceholder()) { $bitSamePlaceholder = true; } if ($bitSamePlaceholder) { $bitHit = true; //try to unlock the record $objOneElementOnPage->getLockManager()->unlockRecord(); $strActions = $this->getActionIcons($objOneElementOnPage); //Put all Output together $strOutputAtPlaceholder .= $this->objToolkit->simpleAdminList($objOneElementOnPage, $strActions, $intI++); //remove the element from the array unset($arrElementsOnPage[$intArrElementsOnPageKey]); } } //Check, if one of the elements in the placeholder is allowed to be used multiple times foreach ($arrOneElementOnTemplate["elementlist"] as $arrSingleElementOnTemplateplaceholder) { /** @var class_module_pages_element $objOneElementInSystem */ foreach ($arrElementsInSystem as $objOneElementInSystem) { if ($objOneElementInSystem->getStrName() == $arrSingleElementOnTemplateplaceholder["element"]) { if ($objOneElementInSystem->getIntRepeat() == 1 || $bitHit === false) { //So, the Row for a new element: element is repeatable or not yet created $strActions = $this->objToolkit->listButton(class_link::getLinkAdmin("pages_content", "new", "&placeholder=" . $arrOneElementOnTemplate["placeholder"] . "&element=" . $arrSingleElementOnTemplateplaceholder["element"] . "&systemid=" . $this->getSystemid(), "", $this->getLang("element_anlegen"), "icon_new")); $strOutputAtPlaceholder .= $this->objToolkit->genericAdminList("", $objOneElementInSystem->getStrDisplayName(), "", $strActions, $intI++); } else { //element not repeatable. //Is there already one element installed? if not, then it IS allowed to create a new one $bitOneInstalled = false; foreach ($arrElementsOnPageCopy as $objOneElementToCheck) { if ($arrOneElementOnTemplate["placeholder"] == $objOneElementToCheck->getStrPlaceholder() && $arrSingleElementOnTemplateplaceholder["element"] == $objOneElementToCheck->getStrElement()) { $bitOneInstalled = true; } } if (!$bitOneInstalled) { //So, the Row for a new element $strActions = $this->objToolkit->listButton(class_link::getLinkAdmin("pages_content", "new", "&placeholder=" . $arrOneElementOnTemplate["placeholder"] . "&element=" . $arrSingleElementOnTemplateplaceholder["element"] . "&systemid=" . $this->getSystemid(), "", $this->getLang("element_anlegen"), "icon_new")); $strOutputAtPlaceholder .= $this->objToolkit->genericAdminList("", $objOneElementInSystem->getStrDisplayName(), "", $strActions, $intI++); } } } } } if ((int) uniStrlen($strOutputAtPlaceholder) > 0) { $arrSinglePlaceholder = explode("_", $arrOneElementOnTemplate["placeholder"]); if (count($arrSinglePlaceholder) == 2) { $strOutputAtPlaceholder .= $this->objToolkit->formHeadline($arrSinglePlaceholder[0]); } $strListId = generateSystemid(); $strReturn .= $this->objToolkit->dragableListHeader($strListId, true); $strReturn .= $strOutputAtPlaceholder; $strReturn .= $this->objToolkit->dragableListFooter($strListId); } } } else { $strReturn .= $this->getLang("element_liste_leer"); } //if there are any page-elements remaining, print a warning and print the elements row if (count($arrElementsOnPage) > 0) { $strReturn .= $this->objToolkit->divider(); $strReturn .= $this->objToolkit->warningBox($this->getLang("warning_elementsremaining")); $strReturn .= $this->objToolkit->listHeader(); //minimized actions now, plz. this ain't being a real element anymore! foreach ($arrElementsOnPage as $objOneElement) { $strActions = ""; $strActions .= $this->objToolkit->listDeleteButton($objOneElement->getStrDisplayName(), $this->getLang("element_loeschen_frage"), class_link::getLinkAdminHref("pages_content", "deleteElementFinal", "&systemid=" . $objOneElement->getSystemid() . ($this->getParam("pe") == "" ? "" : "&peClose=" . $this->getParam("pe")))); //Put all Output together $strReturn .= $this->objToolkit->genericAdminList("", $objOneElement->getStrDisplayName() . $this->getLang("placeholder") . $objOneElement->getStrPlaceholder(), "", $strActions, $intI++); } $strReturn .= $this->objToolkit->listFooter(); } $strReturn .= $this->objToolkit->getTableOfContents("h2"); return $strReturn; }
/** * Returns a list of all installed Elements * * @return string * @autoTestable * @permissions right1 */ protected function actionListElements() { $strReturn = ""; $objArraySectionIterator = new class_array_section_iterator(class_module_pages_element::getObjectCount()); $objArraySectionIterator->setPageNumber((int) ($this->getParam("pv") != "" ? $this->getParam("pv") : 1)); $objArraySectionIterator->setArraySection(class_module_pages_element::getObjectList("", $objArraySectionIterator->calculateStartPos(), $objArraySectionIterator->calculateEndPos())); $strReturn .= $this->renderList($objArraySectionIterator, false, class_module_pages_admin::STR_LIST_ELEMENTS); return $strReturn; }