/** * Renders a list of items, target is the common admin-list. * Please be aware, that the combination of paging and sortable-lists may result in unpredictable ordering. * As soon as the list is sortable, the page-size should be at least the same as the number of elements. Optional * it is possible to provide a filter callback which is called for each entry. If the callback returns false the * entry gets skipped. * * @param class_array_section_iterator $objArraySectionIterator * @param bool $bitSortable * @param string $strListIdentifier an internal identifier to check the current parent-list * @param bool $bitAllowTreeDrop * @param string $strPagerAddon * @param Closure $objFilter * * @throws class_exception * @return string */ protected final function renderList(class_array_section_iterator $objArraySectionIterator, $bitSortable = false, $strListIdentifier = "", $bitAllowTreeDrop = false, $strPagerAddon = "", Closure $objFilter = null) { $strReturn = ""; $intI = 0; $strListId = generateSystemid(); if (!$objArraySectionIterator->valid()) { $strReturn .= $this->objToolkit->getTextRow($this->getLang("commons_list_empty")); } if ($bitSortable) { $strReturn .= $this->objToolkit->dragableListHeader($strListId, false, $bitAllowTreeDrop, $objArraySectionIterator->getIntElementsPerPage(), $objArraySectionIterator->getPageNumber()); } else { $strReturn .= $this->objToolkit->listHeader(); } if ($this->renderLevelUpAction($strListIdentifier) != "") { $strReturn .= $this->objToolkit->genericAdminList("", "", "", $this->objToolkit->listButton($this->renderLevelUpAction($strListIdentifier)), $intI++); } $arrMassActions = $this->getBatchActionHandlers($strListIdentifier); $intTotalNrOfElements = $objArraySectionIterator->getNumberOfElements(); /** @var $objOneIterable class_model|interface_model|interface_admin_listable */ foreach ($objArraySectionIterator as $objOneIterable) { // if we have a filter Closure call it else use the standard rightView method if ($objFilter !== null) { if ($objFilter($objOneIterable) === false) { if ($bitSortable) { //inject hidden dummy row for a proper sorting $strReturn .= $this->objToolkit->genericAdminList($objOneIterable->getSystemid(), "", "", "", 0, "", "", false, "hidden"); } $intTotalNrOfElements--; continue; } } else { if (!$objOneIterable->rightView()) { if ($bitSortable) { //inject hidden dummy row for a proper sorting $strReturn .= $this->objToolkit->genericAdminList($objOneIterable->getSystemid(), "", "", "", 0, "", "", false, "hidden"); } $intTotalNrOfElements--; continue; } } $strActions = $this->getActionIcons($objOneIterable, $strListIdentifier); $strReturn .= $this->objToolkit->simpleAdminList($objOneIterable, $strActions, $intI++, count($arrMassActions) > 0); } $strNewActions = $this->mergeNewEntryActions($this->getNewEntryAction($strListIdentifier)); $strBatchActions = ""; if (count($arrMassActions) > 0) { $strBatchActions .= $this->objToolkit->renderBatchActionHandlers($arrMassActions); } if ($strNewActions != "" || $strBatchActions != "") { $strReturn .= $this->objToolkit->genericAdminList("batchActionSwitch", $strBatchActions, "", $strNewActions, $intI, "", "", $strBatchActions != ""); } if ($bitSortable) { $strReturn .= $this->objToolkit->dragableListFooter($strListId); } else { $strReturn .= $this->objToolkit->listFooter(); } $objArraySectionIterator->setIntTotalElements($intTotalNrOfElements); $strReturn .= $this->objToolkit->getPageview($objArraySectionIterator, $this->getArrModule("modul"), $this->getAction(), "&systemid=" . $this->getSystemid() . $this->strPeAddon . $strPagerAddon); return $strReturn; }
/** * Creates a pageview * * @param class_array_section_iterator $objArraySectionIterator * @param string $strModule * @param string $strAction * @param string $strLinkAdd * * @return mixed a two-dimensional array: ["elements"] and ["pageview"] * @since 3.3.0 * * @deprecated use getPageview instead */ public function getSimplePageview($objArraySectionIterator, $strModule, $strAction, $strLinkAdd = "") { $arrReturn = array(); $intCurrentpage = $objArraySectionIterator->getPageNumber(); $intNrOfPages = $objArraySectionIterator->getNrOfPages(); $intNrOfElements = $objArraySectionIterator->getNumberOfElements(); $arrReturn["elements"] = array(); //read templates $strTemplateBodyID = $this->objTemplate->readTemplate("/elements.tpl", "pageview_body"); $strTemplateForwardID = $this->objTemplate->readTemplate("/elements.tpl", "pageview_link_forward"); $strTemplateBackwardID = $this->objTemplate->readTemplate("/elements.tpl", "pageview_link_backward"); $strTemplateListID = $this->objTemplate->readTemplate("/elements.tpl", "pageview_page_list"); $strTemplateListItemActiveID = $this->objTemplate->readTemplate("/elements.tpl", "pageview_list_item_active"); $strTemplateListItemID = $this->objTemplate->readTemplate("/elements.tpl", "pageview_list_item"); //build layout $arrTemplate = array(); $strListItems = ""; //just load the current +-4 pages and the first/last +-2 $intCounter2 = 1; for ($intI = 1; $intI <= $intNrOfPages; $intI++) { $bitDisplay = false; if ($intCounter2 <= 2) { $bitDisplay = true; } elseif ($intCounter2 >= $intNrOfPages - 1) { $bitDisplay = true; } elseif ($intCounter2 >= $intCurrentpage - 2 && $intCounter2 <= $intCurrentpage + 2) { $bitDisplay = true; } if ($bitDisplay) { $arrLinkTemplate = array(); $arrLinkTemplate["href"] = class_link::getLinkAdminHref($strModule, $strAction, $strLinkAdd . "&pv=" . $intI); $arrLinkTemplate["pageNr"] = $intI; if ($intI == $intCurrentpage) { $strListItems .= $this->objTemplate->fillTemplate($arrLinkTemplate, $strTemplateListItemActiveID); } else { $strListItems .= $this->objTemplate->fillTemplate($arrLinkTemplate, $strTemplateListItemID); } } $intCounter2++; } $arrTemplate["pageList"] = $this->objTemplate->fillTemplate(array("pageListItems" => $strListItems), $strTemplateListID); $arrTemplate["nrOfElementsText"] = class_carrier::getInstance()->getObjLang()->getLang("pageview_total", "system"); $arrTemplate["nrOfElements"] = $intNrOfElements; if ($intCurrentpage < $intNrOfPages) { $arrTemplate["linkForward"] = $this->objTemplate->fillTemplate(array("linkText" => class_carrier::getInstance()->getObjLang()->getLang("pageview_forward", "system"), "href" => class_link::getLinkAdminHref($strModule, $strAction, $strLinkAdd . "&pv=" . ($intCurrentpage + 1))), $strTemplateForwardID); } if ($intCurrentpage > 1) { $arrTemplate["linkBackward"] = $this->objTemplate->fillTemplate(array("linkText" => class_carrier::getInstance()->getObjLang()->getLang("commons_back", "commons"), "href" => class_link::getLinkAdminHref($strModule, $strAction, $strLinkAdd . "&pv=" . ($intCurrentpage - 1))), $strTemplateBackwardID); } $arrReturn["pageview"] = $this->objTemplate->fillTemplate($arrTemplate, $strTemplateBodyID); $arrReturn["elements"] = $objArraySectionIterator->getArrayExtended(true); return $arrReturn; }