示例#1
0
 /**
  * @param $action
  * @param string $method
  * @param array $params
  * @param array $post
  * @return Nette\Application\IResponse
  */
 protected function runPresenterAction($action, $method = 'GET', $params = [], $post = [])
 {
     /** @var IntegrationTestCase|PresenterRunner $this */
     if (!$this->presenter) {
         throw new \LogicException("You have to open the presenter using \$this->openPresenter(\$name); before calling actions");
     }
     $request = new Nette\Application\Request($this->presenter->getName(), $method, ['action' => $action] + $params, $post);
     return $this->presenter->run($request);
 }
 public function formatTemplateFiles(Presenter $presenter)
 {
     $name = $presenter->getName();
     $view = $presenter->view;
     $_presenter = substr($name, strrpos(':' . $name, ':'));
     $dir = dirname($presenter->getReflection()->getFileName());
     $dir = is_dir("{$dir}/templates") ? $dir : dirname($dir);
     return array("{$dir}/templates/{$_presenter}/{$view}.latte", "{$dir}/templates/{$_presenter}.{$view}.latte", "{$dir}/templates/{$_presenter}/{$view}.phtml", "{$dir}/templates/{$_presenter}.{$view}.phtml");
 }
 public function formatTemplateFiles(Presenter $presenter)
 {
     $name = $presenter->getName();
     $view = $presenter->view;
     $_presenter = substr($name, strrpos(':' . $name, ':'));
     $directories = $this->getAdjustedDirectories($presenter);
     $list = array();
     foreach ($directories as $dir) {
         $list[] = $this->getTemplateFiles("{$dir}/presenters", $_presenter, $view);
         $list[] = $this->getTemplateFiles($dir, $_presenter, $view);
     }
     return Arrays::flatten($list);
 }
 public function formatTemplateFiles(Presenter $presenter)
 {
     if (NULL === $this->filesCache[$name = $presenter->getName()]) {
         $templateLocator = $this->templateLocator;
         $onlyExistingFiles = $this->onlyExistingFiles;
         return $this->filesCache->save($name, function () use($presenter, $templateLocator, $onlyExistingFiles) {
             $list = $templateLocator->formatTemplateFiles($presenter);
             if ($onlyExistingFiles) {
                 $list = array_filter($list, 'is_file');
             }
             return $list;
         });
     }
     return $this->filesCache[$name];
 }
 public function formatLayoutFile(Presenter $presenter)
 {
     $layoutFiles = [];
     $layout = $presenter->getLayout() ? $presenter->getLayout() : 'layout';
     foreach ([$this->getThemeManager()->getCurrentTheme(), $this->getThemeManager()->getFallbackTheme()] as $theme) {
         $name = $presenter->getName();
         $presenterName = substr($name, strrpos(':' . $name, ':'));
         $dir = $this->unifyDirectorySeparators($this->getThemeManager()->getThemesDir() . DIRECTORY_SEPARATOR . $theme . DIRECTORY_SEPARATOR . $presenter->getReflection()->getNamespaceName());
         $dir = is_dir("{$dir}/templates") ? $dir : dirname($dir);
         $layoutFiles[] = $this->unifyDirectorySeparators("{$dir}/templates/{$presenterName}/@{$layout}.latte");
         $layoutFiles[] = $this->unifyDirectorySeparators("{$dir}/templates/{$presenterName}.@{$layout}.latte");
         do {
             $layoutFiles[] = $this->unifyDirectorySeparators("{$dir}/templates/@{$layout}.latte");
             $dir = dirname($dir);
         } while ($dir && ($name = substr($name, 0, strrpos($name, ':'))));
     }
     return $layoutFiles;
 }
 /**
  * Simulates request calling presenter's action
  * @param Nette\Application\UI\Presenter $presenter
  * @param string $action
  * @param array $args
  * @return Nette\Application\IResponse
  */
 protected function callPresenterAction($presenter, $action, $args = array())
 {
     $args['action'] = $action;
     $request = new Nette\Application\Request($presenter->getName(), 'GET', $args);
     return $presenter->run($request);
 }