FEATURE: move blog module into own repository

This commit is contained in:
Michal Kváček
2017-08-22 14:07:21 +02:00
commit 02bd68543e
49 changed files with 1319 additions and 0 deletions
@@ -0,0 +1,19 @@
<?php
namespace Modules\Blog\Article\Http\Controllers\Admin;
use App\Http\Controllers\Admin\Controller;
use Modules\Blog\Article\Entities\Comment;
class CommentsOverview extends Controller
{
public function getOverview()
{
$comments = Comment::with('article')
->with('author')
->orderBy('approved')
->orderBy('created_at', 'DESC')
->paginate(25);
return view('article::admin/comments.overview', ['comments' => $comments]);
}
}
+37
View File
@@ -0,0 +1,37 @@
<?php
namespace Modules\Blog\Article\Http\Controllers\Admin;
use App\Http\Controllers\Admin\Controller;
use Illuminate\Support\Facades\Event;
use Modules\Blog\Article\Entities\Comment;
use Modules\Blog\Article\Events\ApprovedComment;
use Modules\Blog\Article\Events\DeletedComment;
class EditComment extends Controller
{
public function approve($id)
{
$comment = Comment::findOrFail($id);
$comment->approved = 1;
$comment->save();
Event::fire(new ApprovedComment($comment));
return redirect()
->back()
->with('success', trans('article::comments.approved'));
}
public function delete($id)
{
$comment = Comment::findOrFail($id);
Event::fire(new DeletedComment($comment));
$comment->delete();
return redirect()
->back()
->with('success', trans('article::comments.deleted'));
}
}
@@ -0,0 +1,49 @@
<?php
namespace Modules\Blog\Article\Http\Controllers\Visitor;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Event;
use Modules\Blog\Article\Entities\Article;
use Modules\Blog\Article\Entities\Comment;
use Modules\Blog\Article\Events\CreatedComment;
use Modules\Blog\Article\Http\Requests\CreateNewComment as CreateNewCommentRequest;
class CreateNewComment extends Controller
{
public function store(CreateNewCommentRequest $request, Article $article)
{
if (!isset($article->moduleSettings['allowComments']) || !$article->moduleSettings['allowComments']) {
return redirect()
->route('page.content', ['url' => $article->url])
->with('error', trans('article::comments.disabledComments'));
}
$content = $request->message;
$user = Auth::user();
if ($user) {
$name = is_null($user->name) ? $user->email : $user->name;
$email = $user->email;
} else {
$name = $request->name;
$email = $request->email;
}
$comment = Comment::create([
'user_id' => $user ? $user->id : null,
'content_id' => $article->id,
'name' => $name,
'email' => $email,
'content' => $content,
'approved' => !is_null($user)
]);
// fire event about new comment
Event::fire(new CreatedComment($comment));
return redirect()
->route('page.content', ['url' => $article->url])
->with('success', trans('article::comments.saved'));
}
}
+28
View File
@@ -0,0 +1,28 @@
<?php
namespace Modules\Blog\Article\Http\Requests;
use App\Http\Requests\Request;
use Illuminate\Support\Facades\Auth;
class CreateNewComment extends Request
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
$user = Auth::user();
$required = ['message' => 'required'];
if (!$user) {
$required['name'] = 'required';
$required['email'] = 'required|email';
}
return $required;
}
}
+28
View File
@@ -0,0 +1,28 @@
<?php
Route::group([
'prefix' => LaravelLocalization::setLocale(),
'namespace' => 'Modules\Blog\Article\Http\Controllers'
], function () {
Route::group([
'middleware' => ['admin'],
'prefix' => 'admin/comments',
'namespace' => 'Admin'
], function () {
Route::get('/', 'CommentsOverview@getOverview')
->name('comments.overview');
Route::get('/delete/{id}', 'EditComment@delete')
->name('comments.delete');
Route::get('/approve/{id}', 'EditComment@approve')
->name('comments.approve');
});
// public routes
Route::group(['middleware' => ['web'], 'namespace' => 'Visitor'], function () {
Route::post('comments/new/{article}', 'CreateNewComment@store')
->name('comments.new');
});
});