FEATURE: make shortcut for getting currently installed template

This commit is contained in:
Michal Kváček
2016-09-23 23:28:04 +02:00
parent a111b67c53
commit 4b6f0b14ad
4 changed files with 47 additions and 23 deletions
+39 -1
View File
@@ -1,6 +1,44 @@
<?php <?php
namespace App\Helpers; namespace App\Helpers;
class CurrentTemplate {
use App\Models\Module;
class CurrentTemplate
{
protected static $template;
protected static $initialized = false;
/**
* Getter for currently set template
*
* @return Module
*/
public static function get()
{
if (!self::$initialized) {
self::$template = Module::where('is_template', true)
->where('enabled', true)
->first();
}
return self::$template;
}
/**
* Shortcut for getting template handler
*
* @return string
* @throws \ErrorException
*/
public static function handler()
{
$template = self::get();
if (!$template) {
throw new \ErrorException('No template selected, no handler available!');
}
return $template->handler;
}
} }
@@ -3,8 +3,9 @@ namespace App\Http\Controllers\Admin\Contents;
use App\Enumerations\ContentStatuses; use App\Enumerations\ContentStatuses;
use App\Events\CreateNewContent as CreateNewContentEvent; use App\Events\CreateNewContent as CreateNewContentEvent;
use App\Http\Requests\CreateNewContentRequest; use App\Helpers\CurrentTemplate;
use App\Http\Controllers\Admin\Controller; use App\Http\Controllers\Admin\Controller;
use App\Http\Requests\CreateNewContentRequest;
use App\Models\Content; use App\Models\Content;
use App\Models\File; use App\Models\File;
use App\Models\Module; use App\Models\Module;
@@ -89,9 +90,6 @@ class CreateNewContent extends Controller
public function postNew(CreateNewContentRequest $request, $moduleId) public function postNew(CreateNewContentRequest $request, $moduleId)
{ {
$page = new Content(); $page = new Content();
$template = Module::where('is_template', true)
->where('enabled', true)
->first();
try { try {
$module = Module::findOrFail($moduleId); $module = Module::findOrFail($moduleId);
} catch (NotFoundHttpException $e) { } catch (NotFoundHttpException $e) {
@@ -127,7 +125,7 @@ class CreateNewContent extends Controller
// let template to modify request and content page // let template to modify request and content page
call_user_func_array([$template->handler, 'beforeSave'], [&$page, $request]); call_user_func_array([CurrentTemplate::handler(), 'beforeSave'], [&$page, $request]);
// save module-specific stuff // save module-specific stuff
call_user_func_array([$module->handler, 'createNew'], [&$page, $request]); call_user_func_array([$module->handler, 'createNew'], [&$page, $request]);
@@ -8,6 +8,7 @@ use App\Events\EditContent as EditContentEvent;
use App\Events\MakeDraftFromContent; use App\Events\MakeDraftFromContent;
use App\Events\PublishContent; use App\Events\PublishContent;
use App\Events\SetHomepage; use App\Events\SetHomepage;
use App\Helpers\CurrentTemplate;
use App\Http\Controllers\Admin\Controller; use App\Http\Controllers\Admin\Controller;
use App\Http\Requests\EditContentRequest; use App\Http\Requests\EditContentRequest;
use App\Http\Requests\Request; use App\Http\Requests\Request;
@@ -56,11 +57,6 @@ class EditContent extends Controller
$page = Content::findOrFail($id); $page = Content::findOrFail($id);
$page->module_settings = json_decode($page->module_settings); $page->module_settings = json_decode($page->module_settings);
// select template
$template = Module::where('is_template', true)
->where('enabled', true)
->first();
// get module ID // get module ID
$module = Module::where('handler', $page->module_handler) $module = Module::where('handler', $page->module_handler)
->firstOrFail(); ->firstOrFail();
@@ -81,7 +77,7 @@ class EditContent extends Controller
} }
// modify data for edit form according to installed template // modify data for edit form according to installed template
call_user_func_array([$template->handler, 'beforePopulatingEditForm'], [&$page]); call_user_func_array([CurrentTemplate::handler(), 'beforePopulatingEditForm'], [&$page]);
$history = $this->history->getStructuredHistoryOf($page); $history = $this->history->getStructuredHistoryOf($page);
@@ -117,10 +113,6 @@ class EditContent extends Controller
* @var $page Content * @var $page Content
*/ */
$page = Content::findOrFail($id); $page = Content::findOrFail($id);
$template = Module::where('is_template', true)
->where('enabled', true)
->first();
} catch (NotFoundHttpException $e) { } catch (NotFoundHttpException $e) {
// log attempt of invalid edit // log attempt of invalid edit
@@ -136,7 +128,7 @@ class EditContent extends Controller
$file = $page->uploadTitlePhoto($request); $file = $page->uploadTitlePhoto($request);
// let template to modify request and content page // let template to modify request and content page
call_user_func_array([$template->handler, 'beforeSave'], [&$page, $request]); call_user_func_array([CurrentTemplate::handler(), 'beforeSave'], [&$page, $request]);
$request->url = Str::slug($request->url); $request->url = Str::slug($request->url);
$request->parentPage = $request->parentPage ? $request->parentPage : null; $request->parentPage = $request->parentPage ? $request->parentPage : null;
+2 -6
View File
@@ -2,11 +2,9 @@
namespace App\Http\Controllers\Visitor; namespace App\Http\Controllers\Visitor;
use App\Helpers\CurrentTemplate;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Http\Requests;
use App\Models\Content; use App\Models\Content;
use App\Models\Module;
use App\Models\Template;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
class ContentPage extends Controller class ContentPage extends Controller
@@ -61,10 +59,8 @@ class ContentPage extends Controller
// get handler // get handler
$handler = new $page->module_handler; $handler = new $page->module_handler;
$template = Module::where('is_template', true)->where('enabled', true)->first();
// do something template-specific // do something template-specific
call_user_func_array([$template->handler, 'beforeRender'], [&$page]); call_user_func_array([CurrentTemplate::handler(), 'beforeRender'], [&$page]);
// render page // render page
return $handler->render($page, ''); return $handler->render($page, '');