diff --git a/modules/Blog/Article/Entities/Comment.php b/modules/Blog/Article/Entities/Comment.php new file mode 100644 index 00000000..2c10a3ab --- /dev/null +++ b/modules/Blog/Article/Entities/Comment.php @@ -0,0 +1,26 @@ +belongsTo(User::class); + } + + public function article() + { + return $this->belongsTo(Content::class); + } +} \ No newline at end of file diff --git a/modules/Blog/Article/Http/Controllers/Admin/CommentsOverview.php b/modules/Blog/Article/Http/Controllers/Admin/CommentsOverview.php new file mode 100644 index 00000000..750ba0ea --- /dev/null +++ b/modules/Blog/Article/Http/Controllers/Admin/CommentsOverview.php @@ -0,0 +1,15 @@ +where('module_handler', Article::class) + ->firstOrFail(); + + $article->module_settings = json_decode($article->module_settings); + + if (!isset($article->module_settings->allowComments) || !$article->module_settings->allowComments) { + return redirect() + ->route('page.content', ['url' => $article->url]) + ->with('error', trans('article::comments.disabledComments')); + } + + $content = $request->message; + $user = Auth::user(); + if ($user) { + $name = $user->name; + $email = $user->email; + } else { + $name = $request->name; + $email = $request->email; + } + + Comment::create([ + 'user_id' => $user ? $user->id : null, + 'content_id' => $article->id, + 'name' => $name, + 'email' => $email, + 'content' => $content + ]); + + return redirect() + ->route('page.content', ['url' => $article->url]) + ->with('success', trans('article::comments.saved')); + } +} \ No newline at end of file diff --git a/modules/Blog/Article/Http/Requests/CreateNewComment.php b/modules/Blog/Article/Http/Requests/CreateNewComment.php new file mode 100644 index 00000000..18044f43 --- /dev/null +++ b/modules/Blog/Article/Http/Requests/CreateNewComment.php @@ -0,0 +1,28 @@ + 'required']; + + if (!$user) { + $required['name'] = 'required'; + $required['email'] = 'required|email'; + } + + return $required; + } +} diff --git a/modules/Blog/Article/Http/routes.php b/modules/Blog/Article/Http/routes.php index 46c55155..0cb5d5c0 100644 --- a/modules/Blog/Article/Http/routes.php +++ b/modules/Blog/Article/Http/routes.php @@ -1,36 +1,22 @@ 'web', - 'prefix' => 'article', - 'namespace' => 'Modules\Blog\Article\Http\Controllers' - ], function () { - Route::get('/', 'CategoriesOverview@getOverview') - ->name('article.overview'); - - Route::get('/new', 'CreateNewCategory@getNew') - ->name('article.new'); - - Route::post('/new', 'CreateNewCategory@postNew') - ->name('article.postNew'); - - Route::get('/edit/{id}', 'EditCategory@getEdit') - ->name('article.edit'); - - Route::post('/edit/{id}', 'EditCategory@postEdit') - ->name('article.postEdit'); - - Route::get('/delete/{id}', 'EditCategory@delete') - ->name('article.delete'); -}); - // routes for comments Route::group([ - 'middleware' => 'web', + 'middleware' => ['web', 'auth'], 'prefix' => 'comments', - 'namespace' => 'Modules\Blog\Article\Http\Controllers' + 'namespace' => 'Modules\Blog\Article\Http\Controllers\Admin' ], function () { Route::get('/', 'CommentsOverview@getOverview') ->name('comments.overview'); +}); + +Route::group([ + 'middleware' => ['web'], + 'prefix' => 'comments', + 'namespace' => 'Modules\Blog\Article\Http\Controllers\Visitor' + ], function () { + + Route::post('/new/{id}', 'CreateNewComment@postNew') + ->name('comments.new'); }); \ No newline at end of file diff --git a/modules/Blog/Database/Migrations/2016_09_05_085644_create_comments.php b/modules/Blog/Database/Migrations/2016_09_05_085644_create_comments.php new file mode 100644 index 00000000..172a349b --- /dev/null +++ b/modules/Blog/Database/Migrations/2016_09_05_085644_create_comments.php @@ -0,0 +1,51 @@ +increments('id'); + $table->timestamps(); + $table->integer('user_id') + ->nullable(true) + ->default(null) + ->comment('When comment was inserted by logged user, save his ID here'); + $table->integer('content_id'); + $table->string('email'); + $table->string('name'); + $table->text('content'); + $table->boolean('approved'); + + $table->foreign('content_id') + ->references('id') + ->on('contents') + ->onDelete('cascade') + ->onUpdate('cascade'); + + $table->foreign('user_id') + ->references('id') + ->on('users') + ->onDelete('set null') + ->onUpdate('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('comments'); + } +} diff --git a/resources/views/visitor/cwbs/modules/Article/content.blade.php b/resources/views/visitor/cwbs/modules/Article/content.blade.php index 89afaab1..30f16ba7 100644 --- a/resources/views/visitor/cwbs/modules/Article/content.blade.php +++ b/resources/views/visitor/cwbs/modules/Article/content.blade.php @@ -6,4 +6,16 @@