From 82a63cb5ce03106afab282758e646f7c0420e889 Mon Sep 17 00:00:00 2001 From: kroutony Date: Wed, 26 Feb 2020 11:05:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E5=89=8D=E5=8F=B0=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E9=A0=81=E8=88=87=E5=96=AE=E4=B8=80=E6=96=87=E7=AB=A0?= =?UTF-8?q?=E9=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Menu/PostCreateMenuItemController.php | 9 ++--- .../Admin/Menu/PostListMenuItemController.php | 12 ++----- app/Http/Controllers/Admin/PostController.php | 34 ++++++++++++------- app/Http/Controllers/PostController.php | 32 +++++++++++++++++ app/Traits/PostTypeGettable.php | 18 ++++++++++ resources/sass/app.scss | 4 +++ resources/views/post/index.blade.php | 27 +++++++++++++++ resources/views/post/single.blade.php | 33 ++++++++++++++++++ routes/web.php | 9 +++-- 9 files changed, 146 insertions(+), 32 deletions(-) create mode 100644 app/Http/Controllers/PostController.php create mode 100644 app/Traits/PostTypeGettable.php create mode 100644 resources/views/post/index.blade.php create mode 100644 resources/views/post/single.blade.php diff --git a/app/Http/Controllers/Admin/Menu/PostCreateMenuItemController.php b/app/Http/Controllers/Admin/Menu/PostCreateMenuItemController.php index c653514..86c54a2 100644 --- a/app/Http/Controllers/Admin/Menu/PostCreateMenuItemController.php +++ b/app/Http/Controllers/Admin/Menu/PostCreateMenuItemController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\Admin\Menu; +use App\Http\Controllers\Admin\PostController; use Illuminate\Http\Request; class PostCreateMenuItemController extends BaseMenuItemController @@ -10,12 +11,6 @@ class PostCreateMenuItemController extends BaseMenuItemController public function handle(Request $request) { - $languages = app('SiteState')->languageTranslations; - return view('admin.menu.posts.edit', [ - 'adminRouteNamePrefix' => config('admin.route_name_prefix'), - 'languages' => $languages, - 'post' => null, - 'resource' => $this->postType - ]); + return app(PostController::class)->create($request, $this->postType); } } diff --git a/app/Http/Controllers/Admin/Menu/PostListMenuItemController.php b/app/Http/Controllers/Admin/Menu/PostListMenuItemController.php index e31a924..0888686 100644 --- a/app/Http/Controllers/Admin/Menu/PostListMenuItemController.php +++ b/app/Http/Controllers/Admin/Menu/PostListMenuItemController.php @@ -2,7 +2,7 @@ namespace App\Http\Controllers\Admin\Menu; -use App\Repositories\PostRepository; +use App\Http\Controllers\Admin\PostController; use Illuminate\Http\Request; class PostListMenuItemController extends BaseMenuItemController @@ -13,14 +13,6 @@ class PostListMenuItemController extends BaseMenuItemController public function handle(Request $request) { - $postTypes = config('postTypes.' . $this->postType); - $postRepo = new PostRepository($postTypes['model']); - $posts = $postRepo->getPostsPager(); - return view('admin.menu.posts.list', [ - 'adminRouteNamePrefix' => config('admin.route_name_prefix'), - 'resource' => $this->postType, - 'pageHeader' => $this->pageHeader, - 'posts' => $posts - ]); + return app(PostController::class)->index($request, $this->postType, $this->pageHeader); } } diff --git a/app/Http/Controllers/Admin/PostController.php b/app/Http/Controllers/Admin/PostController.php index 8d3d180..fefbc62 100644 --- a/app/Http/Controllers/Admin/PostController.php +++ b/app/Http/Controllers/Admin/PostController.php @@ -2,7 +2,9 @@ namespace App\Http\Controllers\Admin; +use App\Repositories\PostRepository; use App\Traits\ModelAttributeTranslationsUpdattable; +use App\Traits\PostTypeGettable; use Illuminate\Http\Request; use App\Http\Controllers\Controller; use Auth; @@ -11,19 +13,19 @@ class PostController extends Controller { use ModelAttributeTranslationsUpdattable; - private function getModelClass($resource) - { - return config('postTypes.' . $resource)['model']; - } + use PostTypeGettable; - private function getResource(Request $request) + public function index(Request $request, $postType, $pageHeader) { - return explode('.', str_replace(config('admin.route_name_prefix'), '', $request->route()->getName()))[0]; - } - - public function index(Request $request) - { - + $postTypes = config('postTypes.' . $postType); + $postRepo = new PostRepository($postTypes['model']); + $posts = $postRepo->getPostsPager(); + return view('admin.menu.posts.list', [ + 'adminRouteNamePrefix' => config('admin.route_name_prefix'), + 'resource' => $postType, + 'pageHeader' => $pageHeader, + 'posts' => $posts + ]); } public function edit(Request $request, $postId) @@ -40,9 +42,15 @@ class PostController extends Controller ]); } - public function create(Request $request) + public function create(Request $request, $postType) { - + $languages = app('SiteState')->languageTranslations; + return view('admin.menu.posts.edit', [ + 'adminRouteNamePrefix' => config('admin.route_name_prefix'), + 'languages' => $languages, + 'post' => null, + 'resource' => $postType + ]); } public function store(Request $request) diff --git a/app/Http/Controllers/PostController.php b/app/Http/Controllers/PostController.php new file mode 100644 index 0000000..3e88c83 --- /dev/null +++ b/app/Http/Controllers/PostController.php @@ -0,0 +1,32 @@ +getResource($request); + $modelClass = $this->getModelClass($resource); + $repo = new PostRepository($modelClass); + $posts = $repo->getPostsPager(); + return view('post.index', [ + 'posts' => $posts, + 'resource' => $resource + ]); + } + + public function show(Request $request, $postId) + { + $resource = $this->getResource($request); + $modelClass = $this->getModelClass($resource); + $post = $modelClass::find($postId); + return view('post.single', ['post' => $post]); + } +} diff --git a/app/Traits/PostTypeGettable.php b/app/Traits/PostTypeGettable.php new file mode 100644 index 0000000..5fc1886 --- /dev/null +++ b/app/Traits/PostTypeGettable.php @@ -0,0 +1,18 @@ +route()->getName()))[0]; + } +} diff --git a/resources/sass/app.scss b/resources/sass/app.scss index 0db3d2f..3454cca 100644 --- a/resources/sass/app.scss +++ b/resources/sass/app.scss @@ -8,3 +8,7 @@ @import '~bootstrap/scss/bootstrap'; @import "app-common"; + +.post-feature-image { + max-width: 100%; +} diff --git a/resources/views/post/index.blade.php b/resources/views/post/index.blade.php new file mode 100644 index 0000000..42ccf27 --- /dev/null +++ b/resources/views/post/index.blade.php @@ -0,0 +1,27 @@ +@extends('layouts.app') + +@section('content-body') +
+ @foreach($posts as $post) +
+
+
+ featureImage): ?> +
+ {{ $post->featureImage->description }} +
+ +
+
+ +
{{ $post->excerpt }}
+
{{ $post->created_at }}
+
+
+
+ + @endforeach +
+@endsection diff --git a/resources/views/post/single.blade.php b/resources/views/post/single.blade.php new file mode 100644 index 0000000..0a717e6 --- /dev/null +++ b/resources/views/post/single.blade.php @@ -0,0 +1,33 @@ +@extends('layouts.app') + +@section('content-body') +
+
+
+ featureImage): ?> +
+ {{ $post->featureImage->description }} +
+ +
+
+
+
+

{{ $post->title }}

+
+
+
+
+ {{ $post->author->email }} +
+
+ {{ $post->created_at }} +
+
+
+
+ {{ $post->content }} +
+
+
+@endsection diff --git a/routes/web.php b/routes/web.php index 9e9c9c5..2093ae1 100644 --- a/routes/web.php +++ b/routes/web.php @@ -23,13 +23,18 @@ Route::view('/', 'index')->name('index'); Route::get('/robots.txt', 'PageController@robotstxt'); +$postTypes = config('postTypes'); +foreach ($postTypes as $resource => $postType) { + Route::resource($resource, 'PostController'); +} + /** * Admin routes */ -Route::group(['prefix' => config('admin.route'), 'middleware' => ['admin.area'], 'as' => config('admin.route_name_prefix')], function() { +Route::group(['prefix' => config('admin.route'), 'middleware' => ['admin.area'], 'as' => config('admin.route_name_prefix')], function() use($postTypes) { Route::get('/', 'AdminPageController@index')->name('index'); - foreach (config('postTypes') as $resource => $postType) { + foreach ($postTypes as $resource => $postType) { Route::resource($resource, 'Admin\PostController'); } });