/** * Searches the current page in other navigation-trees found on the current page. * This can be useful to avoid a session-based "opening" of the current tree. * The user may find it confusing, if the current tree remains opened but he clicked * a navigation-point of another tree. * * @return bool */ private function isPageVisibleInOtherNavigation() { //load the placeholders placed on the current page-template. therefore, instantiate a page-object $objPageData = class_module_pages_page::getPageByName($this->getPagename()); $objMasterPageData = class_module_pages_page::getPageByName("master"); if ($objPageData != null) { //analyze the placeholders on the page, faster than iterating the the elements available in the db $strTemplateId = $this->objTemplate->readTemplate("/module_pages/" . $objPageData->getStrTemplate()); $arrElementsTemplate = array_merge($this->objTemplate->getElements($strTemplateId, 0), $this->objTemplate->getElements($strTemplateId, 1)); //loop elements to remove navigation-elements. to do so, get the current elements-name (maybe the user renamed the default "navigation") foreach ($arrElementsTemplate as $arrPlaceholder) { if ($arrPlaceholder["placeholder"] != $this->arrElementData["page_element_ph_placeholder"]) { //loop the elements-list foreach ($arrPlaceholder["elementlist"] as $arrOneElement) { if ($arrOneElement["element"] == $this->arrElementData["page_element_ph_element"]) { //seems as we have a navigation-element different than the current one. //check, if the element is installed on the current page $arrElements = class_module_pages_pageelement::getElementsByPlaceholderAndPage($objPageData->getSystemid(), $arrPlaceholder["placeholder"], $this->getStrPortalLanguage()); //maybe on the masters-page? if (count($arrElements) == 0 && $objMasterPageData != null) { $arrElements = class_module_pages_pageelement::getElementsByPlaceholderAndPage($objMasterPageData->getSystemid(), $arrPlaceholder["placeholder"], $this->getStrPortalLanguage()); } if (count($arrElements) > 0) { foreach ($arrElements as $objElement) { //wohooooo, an element was found. //check, if the current point is in the tree linked by the navigation - if it's a different navigation.... //load the real-pageelement $objRealElement = new class_element_navigation_portal($objElement); $arrContent = $objRealElement->getElementContent($objElement->getSystemid()); if (count($arrContent) == 0) { continue; } //navigation found. trigger loading of nodes if not yet happend if (!isset($this->arrTempNodes[$arrContent["navigation_id"]])) { $objNavigation = new class_module_navigation_tree($arrContent["navigation_id"]); if ($objNavigation->getStatus() == 0) { $this->arrTempNodes[$arrContent["navigation_id"]] = array("node" => null, "subnodes" => array()); } else { $this->arrTempNodes[$arrContent["navigation_id"]] = $objNavigation->getCompleteNaviStructure(); } } //search navigation tree $this->arrNodeTempHelper = array(); foreach ($this->arrTempNodes[$arrContent["navigation_id"]]["subnodes"] as $objOneNodeToScan) { $this->searchPageInNavigationTreeHelper(0, $this->strCurrentSite, $objOneNodeToScan); } $intMaxLevel = 0; $objEntry = null; foreach ($this->arrNodeTempHelper as $intLevel => $arrNodes) { if (count($arrNodes) > 0 && $intLevel >= $intMaxLevel) { $intMaxLevel = $intLevel; $objEntry = $arrNodes[0]; } } //jepp, page found in another tree, so return true if ($objEntry != null) { return true; } } } } } } } } return false; }
public function testPageElementDeleteSortingMultiLanguage() { $objPage = new class_module_pages_page(); $objPage->setStrName("sortTest"); $objPage->updateObjectToDb(); $objPagelementb1 = new class_module_pages_pageelement(); $objPagelementb1->setStrPlaceholder("b_test"); $objPagelementb1->setStrName("b"); $objPagelementb1->setStrElement("row"); $objPagelementb1->setStrLanguage("a1"); $objPagelementb1->updateObjectToDb($objPage->getSystemid()); $objPagelementc1 = new class_module_pages_pageelement(); $objPagelementc1->setStrPlaceholder("b_test"); $objPagelementc1->setStrName("b"); $objPagelementc1->setStrElement("row"); $objPagelementc1->setStrLanguage("a2"); $objPagelementc1->updateObjectToDb($objPage->getSystemid()); $objPagelementb2 = new class_module_pages_pageelement(); $objPagelementb2->setStrPlaceholder("b_test"); $objPagelementb2->setStrName("b"); $objPagelementb2->setStrElement("row"); $objPagelementb2->setStrLanguage("a1"); $objPagelementb2->updateObjectToDb($objPage->getSystemid()); $objPagelementb3 = new class_module_pages_pageelement(); $objPagelementb3->setStrPlaceholder("b_test"); $objPagelementb3->setStrName("b"); $objPagelementb3->setStrElement("row"); $objPagelementb3->setStrLanguage("a1"); $objPagelementb3->updateObjectToDb($objPage->getSystemid()); $objPagelementc2 = new class_module_pages_pageelement(); $objPagelementc2->setStrPlaceholder("b_test"); $objPagelementc2->setStrName("b"); $objPagelementc2->setStrElement("row"); $objPagelementc2->setStrLanguage("a2"); $objPagelementc2->updateObjectToDb($objPage->getSystemid()); $objPagelementc3 = new class_module_pages_pageelement(); $objPagelementc3->setStrPlaceholder("b_test"); $objPagelementc3->setStrName("b"); $objPagelementc3->setStrElement("row"); $objPagelementc3->setStrLanguage("a2"); $objPagelementc3->updateObjectToDb($objPage->getSystemid()); $arrElements = class_module_pages_pageelement::getElementsByPlaceholderAndPage($objPage->getSystemid(), "b_test", "a1", false); $this->assertEquals(3, count($arrElements)); $this->assertEquals(1, $arrElements[0]->getIntSort()); $this->assertEquals($objPagelementb1->getSystemid(), $arrElements[0]->getSystemid()); $this->assertEquals(2, $arrElements[1]->getIntSort()); $this->assertEquals($objPagelementb2->getSystemid(), $arrElements[1]->getSystemid()); $this->assertEquals(3, $arrElements[2]->getIntSort()); $this->assertEquals($objPagelementb3->getSystemid(), $arrElements[2]->getSystemid()); $arrElements = class_module_pages_pageelement::getElementsByPlaceholderAndPage($objPage->getSystemid(), "b_test", "a2", false); $this->assertEquals(3, count($arrElements)); $this->assertEquals(1, $arrElements[0]->getIntSort()); $this->assertEquals($objPagelementc1->getSystemid(), $arrElements[0]->getSystemid()); $this->assertEquals(2, $arrElements[1]->getIntSort()); $this->assertEquals($objPagelementc2->getSystemid(), $arrElements[1]->getSystemid()); $this->assertEquals(3, $arrElements[2]->getIntSort()); $this->assertEquals($objPagelementc3->getSystemid(), $arrElements[2]->getSystemid()); $objPagelementb2->deleteObjectFromDatabase(); $this->flushDBCache(); $arrElements = class_module_pages_pageelement::getElementsByPlaceholderAndPage($objPage->getSystemid(), "b_test", "a1", false); $this->assertEquals(2, count($arrElements)); $this->assertEquals(1, $arrElements[0]->getIntSort()); $this->assertEquals($objPagelementb1->getSystemid(), $arrElements[0]->getSystemid()); $this->assertEquals(2, $arrElements[1]->getIntSort()); $this->assertEquals($objPagelementb3->getSystemid(), $arrElements[1]->getSystemid()); $arrElements = class_module_pages_pageelement::getElementsByPlaceholderAndPage($objPage->getSystemid(), "b_test", "a2", false); $this->assertEquals(3, count($arrElements)); $this->assertEquals(1, $arrElements[0]->getIntSort()); $this->assertEquals($objPagelementc1->getSystemid(), $arrElements[0]->getSystemid()); $this->assertEquals(2, $arrElements[1]->getIntSort()); $this->assertEquals($objPagelementc2->getSystemid(), $arrElements[1]->getSystemid()); $this->assertEquals(3, $arrElements[2]->getIntSort()); $this->assertEquals($objPagelementc3->getSystemid(), $arrElements[2]->getSystemid()); $objPage->deleteObjectFromDatabase(); }