コード例 #1
0
 public function executeSearchPackage(\core\HTTPRequest $request)
 {
     $this->page()->addVar('title', 'Rechercher un paquet');
     $this->_addBreadcrumb();
     $packageManager = $this->managers->getManagerOf('Packagecontrol');
     $repositories = $packageManager->getRemoteRepositoriesList();
     $repoList = array();
     foreach ($repositories as $repo) {
         $repoList[] = array('name' => $repo->name(), 'selected?' => $request->getExists('repo') && $request->getData('repo') == $repo->name());
     }
     $this->page()->addVar('repositories', $repoList);
     if ($request->getExists('q')) {
         $query = $request->getData('q');
         $repoName = $request->getData('repo');
         if (empty($query)) {
             $this->page()->addVar('emptyQuery?', true);
             return;
         }
         if (empty($repoName)) {
             $repo = null;
         } else {
             $repo = $packageManager->getRemoteRepository($repoName);
         }
         $packages = $packageManager->search($query, $repo);
         $this->page()->addVar('searched?', true);
         $this->page()->addVar('searchQuery', $query);
         $this->page()->addVar('packages?', count($packages) > 0);
         $this->page()->addVar('packages', $packages);
     }
 }
コード例 #2
0
 public function executeShowAction(\core\HTTPRequest $request)
 {
     $this->page()->addVar('title', 'Afficher une action');
     $this->page()->addVar('breadcrumb', array(array()));
     $moduleName = $request->getData('module');
     $actionName = $request->getData('action');
     $searchQuery = $request->getExists('q') ? trim($request->getData('q')) : null;
     $backend = $this->_getBackendMetadata($moduleName);
     $action = $this->_getAction($moduleName, $actionName);
     $this->page()->addVar('searchQuery', $searchQuery);
     if (!empty($backend) && !empty($action)) {
         $this->page()->addVar('backend', $backend);
         $this->page()->addVar('action', $action);
         $this->page()->addVar('title', $action['title']);
         $this->page()->addVar('breadcrumb', array(array('title' => $backend['title'], 'url' => $this->app->router()->getUrl($this->module(), 'showModule', array('module' => $moduleName))), array('title' => $action['title'])));
         if (isset($action['list'])) {
             if (!isset($action['list']['items'])) {
                 return;
             }
             $itemsToList = $action['list']['items'];
             $ctrl = $this->app->buildController($moduleName, $actionName);
             $methodName = 'list' . ucfirst($itemsToList);
             if (method_exists($ctrl, $methodName)) {
                 $items = $ctrl->{$methodName}($request);
                 $router = $this->app->router();
                 $route = $router->getRoute($moduleName, $actionName);
                 foreach ($items as $key => $item) {
                     if (isset($item['vars']) && $route->hasVars()) {
                         if (isset($action['list']['vars'])) {
                             $routeVarsNames = $route->varsNames();
                             $joinVarsNames = $action['list']['vars'];
                             $itemsVars = $item['vars'];
                             $vars = array();
                             foreach ($routeVarsNames as $routeVarName) {
                                 if (isset($joinVarsNames[$routeVarName])) {
                                     $itemVarName = $joinVarsNames[$routeVarName];
                                     $vars[$routeVarName] = $itemsVars[$itemVarName];
                                 }
                             }
                         } else {
                             $vars = $item['vars'];
                         }
                         $route->setVars($vars);
                     }
                     $items[$key]['url'] = $route->buildUrl();
                 }
                 //Search query
                 if (!empty($searchQuery)) {
                     $searcher = new \lib\ArraySearcher($items);
                     $items = $searcher->search($searchQuery, array('title', 'shortDescription'));
                 }
                 $this->page()->addVar('items', $items);
             }
         }
     }
 }