42 protected static $showRecentlyViewed =
true;
49 protected static $activeModuleId;
64 $breadcrumbViewClassName,
65 $cssClasses = array())
67 assert(
'is_array($breadCrumbLinks)');
69 $gridView->setCssClasses($cssClasses);
70 $gridView->setView(
new $breadcrumbViewClassName($controller->getId(),
71 $controller->getModule()->getId(),
72 $breadCrumbLinks), 0, 0);
73 $gridView->setView($containedView, 1, 0);
74 return static::makeStandardViewForCurrentUser($controller, $gridView);
101 View $secondContainedView,
103 $breadcrumbViewClassName,
104 $cssClasses = array())
106 assert(
'is_array($breadCrumbLinks)');
108 $gridView->setCssClasses($cssClasses);
109 $gridView->setView(
new $breadcrumbViewClassName($controller->getId(),
110 $controller->getModule()->getId(),
111 $breadCrumbLinks), 0, 0);
112 $gridView->setView($containedView, 1, 0);
113 $gridView->setView($secondContainedView, 2, 0);
114 return static::makeStandardViewForCurrentUser($controller, $gridView);
117 public static function makeTwoStandardViewsForCurrentUser(CController $controller,
119 View $secondContainedView,
120 $cssClasses = array())
123 $gridView->setCssClasses($cssClasses);
124 $gridView->setView($containedView, 0, 0);
125 $gridView->setView($secondContainedView, 1, 0);
126 return static::makeStandardViewForCurrentUser($controller, $gridView);
138 if (static::$showRecentlyViewed)
140 $verticalColumns = 3;
144 $verticalColumns = 2;
146 $aVerticalGridView =
new GridView($verticalColumns, 1,
'nav',
false);
147 $aVerticalGridView->setCssClasses( array(
'AppNavigation'));
148 $aVerticalGridView->setView(static::makeMenuView($controller), 0, 0);
149 if (static::$showRecentlyViewed)
151 $aVerticalGridView->setView(static::makeRecentlyViewedView(), 1, 0);
155 $horizontalGridView =
new GridView(1, 3,
'section',
false);
156 $horizontalGridView->setCssClasses(array(
'AppContainer',
'container',
'clearfix'));
157 $horizontalGridView->setView($aVerticalGridView, 0, 0);
159 $containedView->setCssClasses(array_merge($containedView->getCssClasses(), array(
'AppContent')));
161 $horizontalGridView->setView($containedView, 0, 1);
162 $horizontalGridView->setView(static::makeFlashMessageView($controller), 0, 2);
164 $verticalGridView =
new GridView(6, 1, null);
165 $verticalGridView->setView(static::makeHeaderView($controller), 0, 0);
166 $verticalGridView->setView($horizontalGridView, 1, 0);
167 $verticalGridView->setView(static::makeModalContainerView(), 2, 0);
168 $verticalGridView->setView(static::makeModalGameNotificationContainerView(), 3, 0);
169 $verticalGridView->setView(static::makeGameCoinContainerView($controller), 4, 0);
170 $verticalGridView->setView(static::makeFooterView(), 5, 0);
172 return $verticalGridView;
183 $horizontalGridView =
new GridView(1, 1,
'section',
false);
184 $horizontalGridView->setCssClasses(array(
'AppContainer',
'container',
'clearfix'));
185 $containedView->setCssClasses(array_merge($containedView->getCssClasses(), array(
'AppContent')));
186 $horizontalGridView->setView($containedView, 0, 0);
188 $verticalGridView =
new GridView(3, 1, null);
189 $verticalGridView->setView(static::makeHeaderView($controller), 0, 0);
190 $verticalGridView->setView($horizontalGridView, 1, 0);
191 $verticalGridView->setView(static::makeFooterView(), 2, 0);
192 return $verticalGridView;
202 $aVerticalGridView =
new GridView(1, 1,
'nav',
false);
203 $aVerticalGridView->setCssClasses( array(
'AppNavigation'));
204 $aVerticalGridView->setView(static::makeMenuView($controller), 0, 0);
206 $horizontalGridView =
new GridView(2, 1,
'section',
false);
207 $horizontalGridView->setCssClasses(array(
'AppContainer',
'container',
'clearfix'));
208 $horizontalGridView->setView($aVerticalGridView, 0, 0);
209 $containedView->setCssClasses(array_merge($containedView->getCssClasses(), array(
'AppContent',
'ErrorView')));
210 $horizontalGridView->setView($containedView, 1, 0);
212 $verticalGridView =
new GridView(3, 1, null);
213 $verticalGridView->setView(static::makeHeaderView($controller), 0, 0);
214 $verticalGridView->setView($horizontalGridView, 1, 0);
215 $verticalGridView->setView(static::makeFooterView(), 2, 0);
216 return $verticalGridView;
219 protected static function makeHeaderView(CController $controller)
222 $settingsMenuItems = MenuUtil::getOrderedAccessibleHeaderMenuForCurrentUser();
223 $settingsMenuItems = static::resolveHeaderMenuItemsForMobile($settingsMenuItems);
224 $userMenuItems = static::getAndResolveUserMenuItemsForHeader();
229 $sourceUrl = Yii::app()->createUrl(
'zurmo/default/globalSearchAutoComplete');
231 $headerView =
new HeaderView( $settingsMenuItems,
233 $shortcutsCreateMenuItems,
234 $moduleNamesAndLabels,
237 $headerView->setCssClasses(array(
'HeaderView'));
241 protected static function resolveHeaderMenuItemsForMobile(Array $items)
243 if (Yii::app()->userInterface->isMobile())
245 $resolvedItems = array();
246 foreach ($items as $item)
248 if (!isset($item[
'mobile']) || $item[
'mobile'] ==
true)
250 $resolvedItems[] = $item;
256 $resolvedItems = $items;
258 return $resolvedItems;
261 protected static function getAndResolveUserMenuItemsForHeader()
264 return $userMenuItems;
267 protected static function makeMenuView($controller = null)
269 assert(
'$controller == null || $controller instanceof CController');
270 $items = MenuUtil::resolveByCacheAndGetVisibleAndOrderedTabMenuByCurrentUser();
271 $useMinimalDynamicLabelMbMenu =
false;
272 static::resolveForMobileInterface($items, $useMinimalDynamicLabelMbMenu, $controller);
273 static::resolveForActiveMenuItem($items, $controller);
274 return new MenuView($items, $useMinimalDynamicLabelMbMenu);
277 protected static function resolveForActiveMenuItem(&$items, $controller)
279 assert(
'$controller == null || $controller instanceof CController');
280 assert(
'is_array($items)');
281 foreach ($items as $key => $item)
283 if ($controller != null && isset($item[
'moduleId']) &&
284 static::resolveActiveModuleId($controller) == $item[
'moduleId'])
286 $items[$key][
'active'] =
true;
287 if (isset($items[$key][
'items']))
291 $url = Yii::app()->urlManager->parseUrl(Yii::app()->request);
292 foreach ($items[$key][
'items'] as $subItemKey => $subItem)
294 $subItemUrl = $subItem[
'url'];
295 if (stristr($subItemUrl[0], $url) == $url)
297 if (isset($_GET[
'moduleClassName']) && isset($subItemUrl[
'moduleClassName']) && $_GET[
'moduleClassName'] == $subItemUrl[
'moduleClassName'])
299 $items[$key][
'items'][$subItemKey][
'active'] =
true;
301 elseif (isset($_GET[
'moduleClassName']) && isset($subItemUrl[
'moduleClassName']) && $_GET[
'moduleClassName'] != $subItemUrl[
'moduleClassName'])
303 $items[$key][
'items'][$subItemKey][
'active'] =
false;
307 $items[$key][
'items'][$subItemKey][
'active'] =
true;
312 catch (Exception $exception)
321 protected static function resolveActiveModuleId($controller)
323 if (static::$activeModuleId != null)
325 return static::$activeModuleId;
327 return $controller->resolveAndGetModuleId();
330 protected static function makeRecentlyViewedView()
336 protected static function makeFlashMessageView(CController $controller)
341 protected static function makeModalContainerView()
346 protected static function makeModalGameNotificationContainerView()
351 protected static function makeGameCoinContainerView(CController $controller)
356 protected static function makeFooterView()
361 protected static function resolveForMobileInterface(& $items, & $useMinimalDynamicLabelMbMenu, $controller = null)
363 if (Yii::app()->userInterface->isMobile())
365 foreach ($items as $key => $item)
367 if (isset($item[
'mobile']) && $item[
'mobile'] ==
false)
379 protected static function resolveShortcutsCreateMenuItemsForMobile(& $shortcutsCreateMenuItems)
381 if (!empty($shortcutsCreateMenuItems[
'items']))
383 foreach ($shortcutsCreateMenuItems[
'items'] as $key => $item)
385 if (isset($item[
'mobile']) && $item[
'mobile'] ==
false)
387 unset($shortcutsCreateMenuItems[
'items'][$key]);
399 assert(
'is_bool($value)');
400 Yii::app()->user->setState($key, $value);
409 return Yii::app()->user->getState($key);
422 assert(
'is_string($controllerId)');
423 assert(
'is_string($moduleId)');
424 assert(
'is_int($modelId)');
425 assert(
'is_bool($kanbanIsActive)');
428 $active = DetailsAndRelationsViewTypesToggleLinkActionElement::TYPE_KANBAN_BOARD;
432 $active = DetailsAndRelationsViewTypesToggleLinkActionElement::TYPE_NON_KANBAN_BOARD;
435 $controllerId, $moduleId, $modelId, array(
'active' => $active));
436 return $toggleLinkActionElement->render();
static setLockKeyForDetailsAndRelationsView($key, $value)
static makeTwoViewsWithBreadcrumbsForCurrentUser(CController $controller, View $containedView, View $secondContainedView, $breadCrumbLinks, $breadcrumbViewClassName, $cssClasses=array())
static makeAuthorizationViewForCurrentUser(CController $controller, View $containedView)
static makeViewWithBreadcrumbsForCurrentUser(CController $controller, View $containedView, $breadCrumbLinks, $breadcrumbViewClassName, $cssClasses=array())
static getGlobalSearchScopingModuleNamesAndLabelsDataByUser(User $user)
static getRecentlyViewedItemsByUser(User $user, $count)
static makeErrorViewForCurrentUser(CController $controller, View $containedView)
static getByModuleName($moduleName, $key, $cache=true)
static getLockKeyForDetailsAndRelationsView($key)
static renderActionBarLinksForKanbanBoard($controllerId, $moduleId, $modelId, $kanbanIsActive)
static getAllByUser(User $user)
static resolveModuleNamesAndLabelsDataWithAllOption(&$moduleNamesAndLabels)
static makeStandardViewForCurrentUser(CController $controller, View $containedView)