$homepageSetting = setting('app-homepage');
if ($homepageSetting) {
$id = intval(explode(':', $homepageSetting)[0]);
- $customHomepage = $this->entityRepo->getById('page', $id);
- $this->entityRepo->renderPage($customHomepage);
+ $customHomepage = $this->entityRepo->getById('page', $id, false, true);
+ $this->entityRepo->renderPage($customHomepage, true);
}
$view = $customHomepage ? 'home-custom' : 'home';
* @param string $type
* @param integer $id
* @param bool $allowDrafts
+ * @param bool $ignorePermissions
* @return Entity
*/
- public function getById($type, $id, $allowDrafts = false)
+ public function getById($type, $id, $allowDrafts = false, $ignorePermissions = false)
{
+ if ($ignorePermissions) {
+ $entity = $this->getEntity($type);
+ return $entity->newQuery()->find($id);
+ }
return $this->entityQuery($type, $allowDrafts)->find($id);
}
/**
* Render the page for viewing, Parsing and performing features such as page transclusion.
* @param Page $page
+ * @param bool $ignorePermissions
* @return mixed|string
*/
- public function renderPage(Page $page)
+ public function renderPage(Page $page, $ignorePermissions = false)
{
$content = $page->html;
$matches = [];
$pageId = intval($splitInclude[0]);
if (is_nan($pageId)) continue;
- $page = $this->getById('page', $pageId);
+ $page = $this->getById('page', $pageId, false, $ignorePermissions);
if ($page === null) {
$content = str_replace($matches[0][$index], '', $content);
continue;
--- /dev/null
+<?php namespace Tests;
+
+use BookStack\JointPermission;
+use BookStack\Page;
+use BookStack\Repos\EntityRepo;
+
+class HomepageTest extends TestCase
+{
+
+ public function test_default_homepage_visible()
+ {
+ $this->asEditor();
+ $homeVisit = $this->get('/');
+ $homeVisit->assertSee('My Recently Viewed');
+ $homeVisit->assertSee('Recently Updated Pages');
+ $homeVisit->assertSee('Recent Activity');
+ }
+
+ public function test_custom_homepage() {
+ $this->asEditor();
+ $name = 'My custom homepage';
+ $content = 'This is the body content of my custom homepage.';
+ $customPage = $this->newPage(['name' => $name, 'html' => $content]);
+ $this->setSettings(['app-homepage' => $customPage->id]);
+
+ $homeVisit = $this->get('/');
+ $homeVisit->assertSee($name);
+ $homeVisit->assertSee($content);
+ $homeVisit->assertSee('My Recently Viewed');
+ $homeVisit->assertSee('Recently Updated Pages');
+ $homeVisit->assertSee('Recent Activity');
+ }
+}
use BookStack\Chapter;
use BookStack\Repos\EntityRepo;
use BookStack\Role;
+use BookStack\Services\SettingService;
use Illuminate\Foundation\Testing\DatabaseTransactions;
use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
$draftPage = $entityRepo->getDraftPage($book);
return $entityRepo->publishPageDraft($draftPage, $input);
}
+
+ /**
+ * Quickly sets an array of settings.
+ * @param $settingsArray
+ */
+ protected function setSettings($settingsArray)
+ {
+ $settings = app(SettingService::class);
+ foreach ($settingsArray as $key => $value) {
+ $settings->put($key, $value);
+ }
+ }
}
\ No newline at end of file