From 6d107d0881c2bab1657adfc1268f6b89ba4f32e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Sat, 24 Sep 2016 02:55:51 +0200 Subject: [PATCH] FEATURE: add customizable settings for create/edit/overview of content pages --- app/Handlers/Contracts/ContentTitles.php | 40 ++++++++++++++++++ .../Admin/Contents/CreateNewContent.php | 34 +++++++++++++-- .../Admin/Contents/EditContent.php | 14 +++++++ modules/Blog/Article/Handlers/Article.php | 42 ++++++++++++++++--- .../Article/Resources/lang/cs/article.php | 2 +- .../Blog/Article/Resources/lang/cs/module.php | 2 + .../Blog/Article/Resources/lang/en/module.php | 6 ++- resources/views/admin/content/edit.blade.php | 2 +- resources/views/admin/content/new.blade.php | 2 +- .../Resources/lang/cs/admin/setHomepage.php | 1 + 10 files changed, 131 insertions(+), 14 deletions(-) create mode 100644 app/Handlers/Contracts/ContentTitles.php diff --git a/app/Handlers/Contracts/ContentTitles.php b/app/Handlers/Contracts/ContentTitles.php new file mode 100644 index 00000000..5d44f24f --- /dev/null +++ b/app/Handlers/Contracts/ContentTitles.php @@ -0,0 +1,40 @@ + trans($module->name)]); + if (is_callable([$module->handler, 'getCreateNewTitle'])) { + $pageHeading = call_user_func([$module->handler, 'getCreateNewTitle']); + } + + // get list of usable templates $templates = Template::where('module_id', $moduleId) ->select(['template_name', 'name', 'description']) ->get(); - $categoryModule = ModuleInstance::get('categories'); // add categories, if supported + $categoryModule = ModuleInstance::get('categories'); $categories = []; if ($module->support_categories && $categoryModule->enabled()) { $categories = Category::where('module_id', $moduleId) @@ -64,6 +86,7 @@ class CreateNewContent extends Controller // render view return view('admin.content.new', [ + 'pageHeading' => $pageHeading, 'contentStatuses' => $statuses, 'templates' => $templates, 'moduleId' => $moduleId, @@ -89,7 +112,6 @@ class CreateNewContent extends Controller */ public function postNew(CreateNewContentRequest $request, $moduleId) { - $page = new Content(); try { $module = Module::findOrFail($moduleId); } catch (NotFoundHttpException $e) { @@ -99,6 +121,10 @@ class CreateNewContent extends Controller ->with('error', trans('admin/contents.invalidModule')); } + // create new page + $page = new Content(); + $page->template = $request->template; + // setup basic info $page->user_id = \Auth::user()->id; $page->language = LaravelLocalization::getCurrentLocale(); @@ -110,10 +136,10 @@ class CreateNewContent extends Controller $page->meta_description = $request->metaDescription; $page->content = $request->pageContent; $page->status = $request->status; - $page->template = $request->template; $page->module_handler = $module->handler; $page->category_id = (int)$request->category > 0 ? $request->category : null; + // is any parent page specified? if ($request->parentPage) { $page->parent_id = $request->parentPage; } @@ -124,12 +150,12 @@ class CreateNewContent extends Controller $page->title_photo = $file ? $file['filename'] : null; // let template to modify request and content page - call_user_func_array([CurrentTemplate::handler(), 'beforeSave'], [&$page, $request]); // save module-specific stuff call_user_func_array([$module->handler, 'createNew'], [&$page, $request]); + // save content of page before (possible) uploading related files $page->save(); // upload files assigned to content page diff --git a/app/Http/Controllers/Admin/Contents/EditContent.php b/app/Http/Controllers/Admin/Contents/EditContent.php index 00201cc0..06f53491 100644 --- a/app/Http/Controllers/Admin/Contents/EditContent.php +++ b/app/Http/Controllers/Admin/Contents/EditContent.php @@ -35,6 +35,14 @@ class EditContent extends Controller */ private $file; + /** + * EditContent constructor. + * + * Load ContentHistory and File into this controller + * + * @param ContentHistory $history + * @param File $file + */ public function __construct(ContentHistory $history, File $file) { $this->history = $history; @@ -61,6 +69,11 @@ class EditContent extends Controller $module = Module::where('handler', $page->module_handler) ->firstOrFail(); + $pageHeading = trans('admin/contents.edit', ['name' => e($page->title)]); + if (is_callable([$module->handler, 'getCreateNewTitle'])) { + $pageHeading = call_user_func([$module->handler, 'getEditTitle'], $page); + } + // get all Blade templates for rendering page $templates = Template::where('module_id', $module->id) ->select(['template_name', 'name', 'description']) @@ -83,6 +96,7 @@ class EditContent extends Controller // render view return view('admin.content.edit', [ + 'pageHeading' => $pageHeading, 'contentStatuses' => $statuses, 'page' => $page, 'module' => $module, diff --git a/modules/Blog/Article/Handlers/Article.php b/modules/Blog/Article/Handlers/Article.php index 047be96b..da7ad2ad 100644 --- a/modules/Blog/Article/Handlers/Article.php +++ b/modules/Blog/Article/Handlers/Article.php @@ -2,6 +2,7 @@ namespace Modules\Blog\Article\Handlers; use App\Enumerations\ModulesHandlerToId; +use App\Handlers\Contracts\ContentTitles; use App\Handlers\Handler; use App\Http\Controllers\Admin\EditContent; use App\Http\Controllers\Controller; @@ -11,7 +12,7 @@ use App\Models\User; use Illuminate\Support\Facades\Artisan; use Modules\Blog\Article\Entities\Comment; -class Article extends Handler +class Article extends Handler implements ContentTitles { /** * Render given module into visitor area. @@ -89,10 +90,7 @@ class Article extends Handler return $changedColumns; } - public static function getOverviewTitle() - { - return trans('article::module.allArticles'); - } + /** * @@ -139,4 +137,38 @@ class Article extends Handler // seed action log types // Artisan::call('') } + + /** + * Get translated title for pages overview of given type. + * + * This value is used for rendering list of all content pages of given type in administration. + * + * @return string + */ + public static function getOverviewTitle() + { + return trans('article::module.allArticles'); + } + + /** + * Title displayed above for for creating new content page + * + * @return string + */ + public static function getCreateNewTitle() + { + return trans('article::module.newArticle'); + } + + /** + * Title for form displayed for editin content page + * + * @param Content $content + * + * @return mixed + */ + public static function getEditTitle(Content $content) + { + return trans('article::module.editArticle'); + } } \ No newline at end of file diff --git a/modules/Blog/Article/Resources/lang/cs/article.php b/modules/Blog/Article/Resources/lang/cs/article.php index 15b79dfb..fd1c65c6 100644 --- a/modules/Blog/Article/Resources/lang/cs/article.php +++ b/modules/Blog/Article/Resources/lang/cs/article.php @@ -2,5 +2,5 @@ return [ "allowComments" => "Povolit komentáře?", "new" => "Napsat", -"overview" => "Všchny články", +"overview" => "Všechny články", ]; diff --git a/modules/Blog/Article/Resources/lang/cs/module.php b/modules/Blog/Article/Resources/lang/cs/module.php index eceb1960..f000fdb7 100644 --- a/modules/Blog/Article/Resources/lang/cs/module.php +++ b/modules/Blog/Article/Resources/lang/cs/module.php @@ -5,5 +5,7 @@ return [ "comments" => "Komentáře", "commentsOverview" => "Všechny komentáře", "description" => "Základní submodul pro blog. Tento modul umožňuje psát články.", +"editArticle" => "Upravuji článek", "name" => "Články", +"newArticle" => "Napsat nový článek", ]; diff --git a/modules/Blog/Article/Resources/lang/en/module.php b/modules/Blog/Article/Resources/lang/en/module.php index bf8644c0..8b9f7e18 100644 --- a/modules/Blog/Article/Resources/lang/en/module.php +++ b/modules/Blog/Article/Resources/lang/en/module.php @@ -4,6 +4,8 @@ return [ 'description' => 'Base submodule for blog', 'comments' => 'Comments', 'commentsOverview' => 'All comments', - 'allArticles' => 'All articles', - 'blog' => 'Blog' + 'blog' => 'Blog', + 'allArticles' => 'All articles', + 'newArticle' => 'Write new article', + 'editArticle' => 'Editing article' ]; \ No newline at end of file diff --git a/resources/views/admin/content/edit.blade.php b/resources/views/admin/content/edit.blade.php index 1db5761f..ba31fe6c 100644 --- a/resources/views/admin/content/edit.blade.php +++ b/resources/views/admin/content/edit.blade.php @@ -1,6 +1,6 @@ @extends('admin.layoutWithNavigation') -@section('pageHeading', @trans('admin/contents.edit', ['name' => e($page->title)])) +@section('pageHeading', $pageHeading) @section('content') diff --git a/resources/views/admin/content/new.blade.php b/resources/views/admin/content/new.blade.php index 896ff7a0..c7eff0df 100644 --- a/resources/views/admin/content/new.blade.php +++ b/resources/views/admin/content/new.blade.php @@ -1,6 +1,6 @@ @extends('admin.layoutWithNavigation') -@section('pageHeading', @trans('admin/contents.new', ['name' => $moduleName])) +@section('pageHeading', trans($pageHeading)) @section('content') diff --git a/templates/Base/OnePage/Resources/lang/cs/admin/setHomepage.php b/templates/Base/OnePage/Resources/lang/cs/admin/setHomepage.php index e4867342..b0426341 100644 --- a/templates/Base/OnePage/Resources/lang/cs/admin/setHomepage.php +++ b/templates/Base/OnePage/Resources/lang/cs/admin/setHomepage.php @@ -1,5 +1,6 @@ "No toto? Jak mám nastavit domovskou stárnku jako podstránku sama sebe?", "invalidPageId" => "Nelze odebrat stránku z titulní strany, neboť uvedené ID neexistuje.", "noPagesAvailable" => "Žádné stránky k dispozici.", "noPagesSelected" => "Nebyla vybrána žádná stránka pro zobrazení na titulní straně. Zatím...",