kenken999/php
0
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?>