CoolFace
Apppublic

kenken999/php

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
menupage.php236 linesDownload Raw Back to classes
1<?php2class MenuPage extends RunnerPage3{4	/**5	 * @constructor6	 */ 7	function __construct(&$params)8	{9		parent::__construct($params);10	}11	12	public function process()13	{14		//	Before Process event15		global $globalEvents;16		17		if( $globalEvents->exists("BeforeProcessMenu") )18			$globalEvents->BeforeProcessMenu( $this );19 20 21		// get redirect location for menu page22		$redirect = $this->getRedirectForMenuPage();23		if( $redirect )24		{25			header("Location: ".$redirect); 26			exit();27			return;28		}		29		30		$this->commonAssign();31		$this->doCommonAssignments();32			33		if( $this->isPD() )	34			$this->hideWelcomeItemsIfEmpty( $this->pSet->welcomeItems() );35		36		37		$this->addButtonHandlers();38		$this->addCommonJs();39		40		$this->displayMenuPage();41	}42 43	/**44	 * Get amount of available welcome items45	 * @return {number}46	 * @intellisense47	 */48	function getAllowedWelcomeMenuItems( $itemsData )49	{50		if( !$itemsData ) {51			return 0;52		}53		$allowedItemCnt = 0;54		foreach( $itemsData as $itemData )55		{56			if ( !$itemData['menutItem'] )57			{58				// non welcome item eg button59				continue;60			}61			62			if ( !$itemData['group'] ) 63			{64				// item is welcome item65				if ( $itemData["linkType"] == 0 && $itemData["table"] && $itemData["page"] ) 66				{67					if ( menuLinkAvailable( $itemData["table"], $itemData["page"], $itemData["pageId"] ) )68						$allowedItemCnt++;69				} else if( $itemData["linkType"] == 1 ) {70					$allowedItemCnt += 2;71				}72				continue;73			} else {74				$allowedItemCnt += $this->getAllowedWelcomeMenuItems( $itemData["items"] );75			}76		}77		return $allowedItemCnt;78	}79	/**80	 * @return {number}81	 * @intellisense82	 */83	function isShowMenu()84	{85		if( !$this->pSet->welcomePageSkip() ) {86			return true;87		}88 89		if( !$this->menuAppearInLayout() && $this->pageType != PAGE_MENU && $this->pageType != PAGE_ADD  && $this->pageType != PAGE_VIEW && $this->pageType != PAGE_EDIT )90			return false;91			92 93		$allowedMenuItems = $this->getAllowedWelcomeMenuItems( $this->pSet->welcomeItems() );94		if( $allowedMenuItems > 1 )95			return true;96 97			return false;98	}99 100	/**101	 * Get redirect location for menu page102	 * @return {string}103	 * @intellisense104	 */105	function getRedirectForMenuPage()106	{107		if($this->isShowMenu())108			return '';109 110		$redirect = '';111		$menuObject = RunnerMenu::getMenuObject( "main" );112		$menuNodes = $menuObject->collectNodes();113 114		foreach( $menuNodes as $mNode ) {115			$table = $mNode->table;116			$pageType = $mNode->pageType;117 118			if( $mNode->linkType == "Internal" ) {119				if( $this->isUserHaveTablePerm( $table, $pageType ) ) {120					$type = $this->getPermisType( $pageType );121 122					if($type == "A")123						$redirect = "add";124					if($type == "E")125						$redirect = "edit";126					elseif($pageType == "list" && $type == "S")127						$redirect = "list";128					elseif($pageType == "report" && $type == "S")129						$redirect = "report";130					elseif($pageType == "chart" && $type == "S")131						$redirect = "chart";132					elseif($pageType == "view" && $type == "S")133						$redirect = "view";134					elseif($pageType == "dashboard" && $type == "S")135						$redirect = "dashboard";136 137					$redirect = GetTableLink( GetTableURL( $table ), $redirect );138				}139			}140		}141		if( !$redirect ) {142			if( Security::isAdmin() )143				$redirect = GetTableLink("admin_rights", "list");144			else if($this->isAddWebRep)145				$redirect = GetTableLink("webreport");146		}147 148		return $redirect;149	}	150	151	/**152	 * Assign basic page's xt variables153	 */154	protected function doCommonAssignments()155	{156		$this->setLangParams();157 158		$this->xt->assign("menu_block", true);159		$this->assignBody();160	}161	162	/**163	 * @param Array itemsData164	 * @return Boolean165	 */166	function hideWelcomeItemsIfEmpty( $itemsData ) 167	{168		$hide = true;169		foreach( $itemsData as $itemId => $itemData )170		{171			if ( !$itemData['menutItem'] )172			{173				// non welcome item eg button174				$hide = false;175				continue;176			}177			178			if ( !$itemData['group'] ) 179			{180				// item is welcome item181				if ( $itemData["table"] && $itemData["page"] ) 182				{183					if ( menuLinkAvailable( $itemData["table"], $itemData["page"], $itemData["pageId"] ) )184						$hide = false;185					else186						$this->xt->displayItemHidden( $itemId );187				} else {188					//	extrenal link, always show189					$hide = false;190				}191				continue;192			}193			194			// item is welcome group195			if ( !$this->hideWelcomeGroupIfEmpty( $itemId, $itemData ) ) 196				$hide = false;197		}198 199		return $hide;200	}201	202	203	/**204	 * TODO: move to MenuPage class	205	 * @param String grId206	 * @param Array grData207	 * @return Boolean208	 */209	function hideWelcomeGroupIfEmpty( $grId, $grData ) 210	{	211		if ( !$grData['items'] || count( $grData['items'] ) < 1 )212		{213			$this->xt->displayItemHidden( $grId );214			return true;215		}216		217		$hide = $this->hideWelcomeItemsIfEmpty( $grData['items'] );218		219		if ( $hide ) 220			$this->xt->displayItemHidden( $grId );221		222		return $hide;223	}224	225	function displayMenuPage()226	{227		global $globalEvents;228		$templatefile = $this->templatefile;229 230		if( $globalEvents->exists("BeforeShowMenu") )231			$globalEvents->BeforeShowMenu( $this->xt, $templatefile, $this );232		233		$this->display( $templatefile );		234	}235}236?>