public function render(View $view)
 {
     switch ($this->getViewType()) {
         case Action::VIEW_HTML:
             $this->render = new \ORC\MVC\Response\HTML($this->controller);
             break;
         case Action::VIEW_JSON:
             $this->render = new \ORC\MVC\Response\JSON($this->controller);
             break;
         case Action::VIEW_RAW:
             $this->render = new \ORC\MVC\Response\RAW($this->controller);
             break;
         case Action::VIEW_REDIRECT:
             //redirect already be handled in controller, so here should not be this option
             //break;
         //redirect already be handled in controller, so here should not be this option
         //break;
         default:
             throw new ViewNotFoundException('unknown view type from action');
             break;
     }
     ViewModel::getInstance()->registerAll();
     //load all data from model
     $this->content = $view->render();
     return $this->render->render();
 }
 public function render()
 {
     //add default raw js
     $viewModel = ViewModel::getInstance();
     $js = 'function site_config(key) {return {"base_url":"' . Config::getInstance()->get('main_server') . '","window_id":' . mt_rand(1, 1000000) . '}[key.toLowerCase()];}';
     $viewModel->addRawJs($js);
     $action = $this->_controller->getAction();
     //find the correct template
     $template = TemplateManager::getInstance()->findTemplate($action);
     return $template->render();
 }
 private function prepareReservedVariable($name)
 {
     $output = '';
     $cache_buster = Config::getInstance()->get('template.cache_buster');
     if ($cache_buster == '') {
         $cache_buster = \ORC\Util\Util::getNow();
     }
     switch ($name) {
         case 'js':
             //first get the template js
             $existing_jses = array();
             $jses = array_merge($this->_jses, $this->getViewModel()->getAllJs());
             //pre($jses, $this->_jses);
             foreach ($jses as $path) {
                 if (in_array($path, $existing_jses)) {
                     continue;
                 }
                 $existing_jses[] = $path;
                 $path = Url::getFullHttpPath($path);
                 $output .= sprintf('<script type="text/javascript" src="%s?%s"></script>', $path, $cache_buster);
             }
             break;
         case 'css':
             $existing_csses = array();
             $csses = array_merge($this->_csses, $this->getViewModel()->getAllCss());
             foreach ($csses as $css) {
                 if (!isset($existing_csses[$css['media']])) {
                     $existing_csses[$css['media']] = array();
                 }
                 if (in_array($css['path'], $existing_csses[$css['media']])) {
                     continue;
                 }
                 $existing_csses[$css['media']][] = $css['path'];
                 $css['path'] = Url::getFullHttpPath($css['path']);
                 $output .= sprintf('<link type="text/css" rel="stylesheet" href="%s?%s" media="%s" />', $css['path'], $cache_buster, $css['media']);
             }
             break;
         case 'raw_js':
             $output .= implode("\n", $this->_viewModel->getRawJs());
             break;
         case 'raw_css':
             $output .= implode("\n", $this->_viewModel->getRawCss());
             break;
         case 'title':
             $output .= $this->getViewModel()->getTitle();
             break;
     }
     return $output;
 }
 protected function getViewModel()
 {
     return ViewModel::getInstance();
 }