Exemplo n.º 1
0
 public function before()
 {
     Session::$default = 'admin';
     ORM_Base::$filter_mode = ORM_Base::FILTER_BACKEND;
     if ($this->auto_render === TRUE) {
         $template = $this->template;
         $this->template = NULL;
         parent::before();
         $this->template = View_Admin::factory($template);
     } else {
         parent::before();
     }
     $this->init();
 }
Exemplo n.º 2
0
 public static function factory($uri = TRUE, HTTP_Cache $cache = NULL, $injected_routes = array())
 {
     $request = parent::factory($uri, $cache, $injected_routes);
     // for admin routes
     $exluded_routes = array('admin', 'admin_error', 'modules');
     if ($request->route() !== NULL and in_array($request->route()->route_name, $exluded_routes)) {
         return $request;
     }
     // for public routes
     $request->define_site();
     ORM_Base::$filter_mode = ORM_Base::FILTER_FRONTEND;
     ORM_Base::$site_id = $request->site_id;
     ORM_Base::$site_id_master = $request->site_id_master;
     if ($request->route() !== NULL) {
         return $request;
     }
     $request_uri = $request->uri();
     $request->page = $page = Page_Route::page($request->uri());
     if ($page !== NULL) {
         $routes = array();
         if ($page['type'] == 'module' and !Helper_Module::is_stanalone($page['data'])) {
             $routes_config = Kohana::$config->load('routes/' . $page['data'])->as_array();
             $request->set_module_routes($routes_config, $page['uri_full'], $page['id'], $cache);
         } elseif (Helper_Module::is_stanalone($page['data'])) {
             /*
              * For controllers which no need admin side (only public contoller) 
              * and have one action (by default is 'index')
              * Can have route file or default controller (controller name equal 'data' field value) 
              */
             $routes_config = Kohana::$config->load('routes/' . $page['data'])->as_array();
             if (empty($routes_config)) {
                 $name = $page['id'] . '<->standalone_page';
                 $uri_callback = $page['uri_full'];
                 $defaults = array('directory' => 'standalone', 'controller' => $page['data']);
                 $route = new Route($uri_callback);
                 $route->defaults($defaults);
                 $routes[$name] = $route;
                 Route::set($name, $uri_callback)->defaults($defaults);
                 $processed_uri = Request::process_uri($request_uri, $routes);
                 if ($processed_uri !== NULL) {
                     $request->set_dinamic_route($processed_uri, $cache);
                 }
             } else {
                 $request->set_module_routes($routes_config, $page['uri_full'], $page['id'], $cache);
             }
         } else {
             /*
              * For simple static pages
              */
             $name = $page['id'] . '<->std_page';
             $uri_callback = $page['uri_full'];
             $defaults = array('controller' => 'page', 'action' => $page['type']);
             $route = new Route($uri_callback);
             $route->defaults($defaults);
             $routes[$name] = $route;
             Route::set($name, $uri_callback)->defaults($defaults);
             $processed_uri = Request::process_uri($request_uri, $routes);
             if ($processed_uri !== NULL) {
                 $request->set_dinamic_route($processed_uri, $cache);
             }
         }
     } else {
         Kohana::$log->add(Log::ERROR, 'Page for :uri not found. [:file][:line] ', array(':file' => Debug::path(__FILE__), ':line' => __LINE__, ':uri' => $request->uri()));
         throw new HTTP_Exception_404();
     }
     return $request;
 }