/** * @Route("/{id}", name="id") */ public function projectAction($id = 0) { if (!($project = Project::where(['id = ?', 'date < ?'], [$id, new \DateTime()])->first())) { App::abort(404, __('Project not found.')); } $project->intro = App::content()->applyPlugins($project->intro, ['project' => $project, 'markdown' => $project->get('markdown')]); $project->content = App::content()->applyPlugins($project->content, ['project' => $project, 'markdown' => $project->get('markdown')]); $previous = Project::getPrevious($project); $next = Project::getNext($project); return ['$view' => ['title' => __($project->title), 'name' => 'bixie/portfolio/project.php'], 'portfolio' => $this->portfolio, 'config' => $this->portfolio->config(), 'previous' => $previous, 'next' => $next, 'project' => $project]; }
/** * {@inheritdoc} */ public function generate(array $parameters = []) { $id = $parameters['id']; if (!isset($this->cacheEntries[$id])) { if (!($project = Project::where(compact('id'))->first())) { throw new RouteNotFoundException('Project not found.'); } $this->addCache($project); } $meta = $this->cacheEntries[$id]; $parameters['slug'] = $meta['slug']; unset($parameters['id']); return $parameters; }
/** * @Route("/project/edit", name="project/edit") * @Access("portfolio: manage portfolio") * @Request({"id": "int"}) */ public function editAction($id = 0) { try { if (!($project = Project::where(compact('id'))->first())) { if ($id) { App::abort(404, __('Invalid project id.')); } $module = App::module('bixie/portfolio'); $project = Project::create(['data' => [], 'tags' => [], 'date' => new \DateTime()]); $project->set('markdown', $module->config('markdown')); } return ['$view' => ['title' => $id ? __('Edit Project') : __('Add Project'), 'name' => 'bixie/portfolio/admin/project.php'], '$data' => ['config' => App::module('bixie/portfolio')->config(), 'project' => $project, 'tags' => Project::allTags()], 'project' => $project]; } catch (\Exception $e) { App::message()->error($e->getMessage()); return App::redirect('@portfolio/post'); } }
/** * @Route("/{id}", methods="GET", requirements={"id"="\d+"}) */ public function getAction($id) { return Project::where(compact('id'))->first(); }