/** * @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); }