public function testPubUsesNamespaceOfActivePageTemplate() { $template = new Template(['theme' => 'test']); $page = $this->getMock(Page::class, ['getTemplate']); $page->expects($this->once())->method('getTemplate')->willReturn($template); Router::shouldReceive('getActivePage')->andReturn($page); $this->assertEquals('/vendor/boomcms/themes/test/file.png', Helpers::pub('file.png')); }
/** * @param Person $person * @param string $ability * * @return bool */ public function before(Person $person, $ability) { if ($person->isSuperUser()) { return true; } if (!$person->hasSite(Router::getActiveSite())) { return false; } }
public function __construct(array $params) { // Exclude invisible should be included by default // To prevent invisible pages showing up in the site to non CMS users. if (!isset($params['excludeinvisible'])) { $params['excludeinvisible'] = null; } // Always include the ACL filter. $params['acl'] = [Router::getActiveSite(), Auth::user()]; $this->params = $params; }
public function show() { $page = Router::getActivePage(); $format = $this->request->format(); if ($this->request->route()->getParameter('format')) { $format = $this->request->route()->getParameter('format'); } $method = 'as' . ucfirst($format); if (method_exists($this, $method)) { return $this->{$method}($page); } abort(406); }
/** * Returns a chunk object of the required type. * * @param string $type Chunk type, e.g. text, feature, etc. * @param string $slotname The name of the slot to retrieve a chunk from. * @param mixed $page The page the chunk belongs to. If not given then the page from the current request will be used. * * @return BaseChunk */ public function edit($type, $slotname, $page = null) { $className = 'BoomCMS\\Chunk\\' . ucfirst($type); if ($page === null) { $page = Router::getActivePage(); } elseif ($page === 0) { // 0 was given as the page - this signifies a 'global' chunk not assigned to any page. $page = new Page(); } $chunk = $this->find($type, $slotname, $page->getCurrentVersion()); $attrs = $chunk ? $chunk->toArray() : []; return new $className($page, $attrs, $slotname, $this->allowedToEdit($page)); }
public static function items() { $items = Config::get('boomcms.menu'); foreach ($items as $key => $item) { if (isset($item['role']) && Gate::denies($item['role'], Router::getActiveSite())) { unset($items[$key]); continue; } $items[$key]['title'] = isset($item['title']) ? $item['title'] : Lang::get('boomcms::menu.' . $key); } usort($items, function ($a, $b) { if ($a['title'] === $b['title']) { return 0; } return $a['title'] < $b['title'] ? -1 : 1; }); return $items; }
/** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * * @return mixed */ public function handle($request, Closure $next) { $activePage = Router::getActivePage(); if ($activePage === null || Gate::denies('toolbar', $activePage)) { return $next($request); } $response = $next($request); $originalHtml = $response instanceof Response ? $response->getOriginalContent() : (string) $response; preg_match('|(.*)(</head>)(.*<body[^>]*>)|imsU', $originalHtml, $matches); if (!empty($matches)) { $head = view('boomcms::editor.iframe', ['before_closing_head' => $matches[1], 'body_tag' => $matches[3], 'editor' => $this->editor, 'page_id' => $activePage->getId()]); $newHtml = str_replace($matches[0], (string) $head, $originalHtml); if ($response instanceof Response) { $response->setContent($newHtml); } else { return $newHtml; } } return $response; }
public function postSave(Request $request, Page $page) { $this->authorize('edit', $page); if (!$request->has('force')) { $latest = ChunkFacade::get($request->input('type'), $request->input('slotname'), $page); if ($request->input('chunkId') < $latest->getId()) { if ($template = $request->input('template')) { $latest->template($template); } return response(['chunkId' => $latest->getId(), 'error' => 'conflict', 'html' => view('boomcms::editor.conflict')->render(), 'chunk' => $latest->render(), 'status' => $page->getCurrentVersion()->getStatus()], 500); } } $chunk = ChunkFacade::create($page, $request->except(['template', 'chunkId', 'force'])); $chunk->editable(true); if ($template = $request->input('template')) { $chunk->template($template); } Router::setActivePage($page); View::share('page', $page); Event::fire(new ChunkWasCreated($page, $chunk)); return ['status' => $page->getCurrentVersion()->getStatus(), 'html' => $chunk->render(), 'chunkId' => $chunk->getId()]; }
/** * Whether the user has the 'managePages' role. * * @return bool */ protected function managesPages() { return Gate::allows('managePages', Router::getActiveSite()) === true; }
/** * Get the pages applied to the children of a page. * * @param Page\Page $page * @param string $group * * @return array */ public static function getTagsInSection(PageInterface $page = null, $group = null) { $page = $page ?: Router::getActivePage(); $finder = new Tag\Finder\Finder(); $finder->addFilter(new Tag\Finder\AppliedToPageDescendants($page)); $finder->addFilter(new Tag\Finder\Group($group)); return $finder->setOrderBy('name', 'asc')->findAll(); }
/** * Insert a chunk into a page. * * @param string $type * @param string $slotname * @param null|Page $page * * @return mixed */ public function insert($type, $slotname, $page = null) { if ($page === null || $page === Router::getActivePage()) { return $this->edit($type, $slotname, $page); } return $this->get($type, $slotname, $page); }
function h1(Page $page = null) { $page = $page ?: Router::getActivePage(); return "<h1 id='b-page-title'>{$page->getTitle()}</h1>"; }