示例#1
0
 /**
  * Loads the modules from the module manager and assigns them to the
  * configured groups.
  *
  * @return $this
  */
 protected function loadMenuModules()
 {
     // Gather all modules with any menu inherent or overridden presence
     // and store them locally according to their nature.
     foreach ($this->core->modules()->getModules() as $moduleKey => $module) {
         // If the configuration has overriding data for this module's presence,
         // use it. Otherwise load the menu's own presence.
         // Normalize single & plural presences for each module.
         if ($this->isConfiguredModulePresenceDisabled($module)) {
             continue;
         }
         $configuredPresencesForModule = $this->getConfiguredModulePresence($module);
         $presencesForModule = $module->getMenuPresence();
         $presencesForModule = $this->mergeNormalizedMenuPresences($presencesForModule, $configuredPresencesForModule);
         // If a module has no presence, skip it
         if (!$presencesForModule) {
             continue;
         }
         foreach ($this->normalizeMenuPresence($presencesForModule) as $presence) {
             $presence = $this->filterUnpermittedFromPresence($presence);
             if (!$presence) {
                 continue;
             }
             if ($this->isMenuPresenceAlternative($presence)) {
                 // If a menu presence is deemed 'alternative', it should not
                 // appear in the normal menu structure.
                 $this->alternativePresences->push($presence);
             } else {
                 // Otherwise, determine whether it is assigned to a group
                 // or should be left 'ungrouped'.
                 $groupKey = $this->getConfiguredModuleGroupKey($module);
                 $menuGroup = $this->findMenuGroupPresenceByKey($groupKey);
                 if (false === $menuGroup) {
                     $this->menuUngrouped->push($presence);
                 } else {
                     /** @var MenuPresenceInterface $menuGroup */
                     $menuGroup->addChild($presence);
                 }
             }
         }
     }
     return $this;
 }
示例#2
0
 /**
  * Loads the ACL presences from modules and stores it normalized in the main presences collection.
  *
  * @return $this
  */
 protected function loadAclModules()
 {
     // Gather all modules with any menu inherent or overridden presence
     // and store them locally according to their nature.
     foreach ($this->core->modules()->getModules() as $moduleKey => $module) {
         $presencesForModule = $module->getAclPresence();
         // If a module has no presence, skip it
         if (!$presencesForModule) {
             continue;
         }
         if (!$this->modulePresences->has($moduleKey)) {
             $this->modulePresences->put($moduleKey, new Collection());
         }
         foreach ($this->normalizeAclPresence($presencesForModule) as $presence) {
             if (!$presence) {
                 continue;
             }
             $this->presences->push($presence);
             $this->modulePresences->get($moduleKey)->push($presence);
         }
     }
     return $this;
 }
 /**
  * Builds up routes for all modules in the given router context.
  *
  * @param Router $router
  */
 protected function buildRoutesForModules(Router $router)
 {
     $this->core->modules()->mapWebRoutes($router);
 }