diff --git a/app/Http/Controllers/PostsController.php b/app/Http/Controllers/PostsController.php index cc7669d..6df90ce 100644 --- a/app/Http/Controllers/PostsController.php +++ b/app/Http/Controllers/PostsController.php @@ -6,9 +6,8 @@ use App\Notifications\PostDeleted; use App\Notifications\PostEdited; use App\Post; -use App\Post_tag; +use App\PostTag; use App\Tag; -use App\User; use Illuminate\Http\Request; class PostsController extends Controller @@ -19,6 +18,16 @@ public function __construct() $this->middleware('can:update,post')->except(['index', 'userPosts', 'adminIndex', 'create', 'store']); } + public function validateRequest(Request $request) + { + return $request->validate([ + 'code' => 'required|unique:posts|regex:/[a-zA-Z0-9_-]+/', + 'name' => 'required|min:5|max:100', + 'description' => 'required|max:255', + 'text' => 'required' + ]); + } + public function index() { $posts = Post::with('tags')->latest()->get(); @@ -43,12 +52,7 @@ public function create() public function store(Request $request) { - $attr = $request->validate([ - 'code' => 'required|unique:posts|regex:/[a-zA-Z0-9_-]+/', - 'name' => 'required|min:5|max:100', - 'description' => 'required|max:255', - 'text' => 'required' - ]); + $attr = $this->validateRequest($request); if ($request->has('published')) { $attr['published'] = 1; @@ -58,6 +62,14 @@ public function store(Request $request) $post = Post::create($attr); + if ($request->has('tags')) { + $requestTags = explode(', ', $request['tags']); + foreach ($requestTags as $tag) { + $tag = Tag::firstOrCreate(['name' => $tag]); + $post->tags()->attach($tag); + } + } + sendMailNotifyToAdmin(new PostCreated($post)); flash( 'Post created successfully'); @@ -76,11 +88,7 @@ public function edit(Post $post) public function update(Request $request, Post $post) { - $values = $request->validate([ - 'name' => 'required|min:5|max:100', - 'description' => 'required|max:255', - 'text' => 'required' - ]); + $values = $this->validateRequest($request); $post->update($values); @@ -105,7 +113,7 @@ public function update(Request $request, Post $post) if ($deleteTags->isNotEmpty()) { foreach ($deleteTags as $tag) { $post->tags()->detach($tag); - $isLastTag = Post_tag::where('tag_id', $tag->id)->first(); + $isLastTag = PostTag::where('tag_id', $tag->id)->first(); if (!$isLastTag) $tag->delete(); }; } diff --git a/app/PostTag.php b/app/PostTag.php new file mode 100644 index 0000000..840658a --- /dev/null +++ b/app/PostTag.php @@ -0,0 +1,10 @@ + 'datetime', ]; - public function posts() { + public function posts() + { return $this->hasMany(Post::class, 'owner_id'); } } diff --git a/database/migrations/2020_08_26_090725_create_posts_table.php b/database/migrations/2020_08_26_090725_create_posts_table.php index 2abe5e0..c086593 100644 --- a/database/migrations/2020_08_26_090725_create_posts_table.php +++ b/database/migrations/2020_08_26_090725_create_posts_table.php @@ -20,7 +20,7 @@ public function up() $table->string('name', 100); $table->string('description', 255); $table->text('text'); - $table->boolean('published')->default(0); + $table->boolean('published')->default(false); $table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP')); $table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP')); diff --git a/resources/views/posts/create.blade.php b/resources/views/posts/create.blade.php index 95ef852..d5d3634 100644 --- a/resources/views/posts/create.blade.php +++ b/resources/views/posts/create.blade.php @@ -99,6 +99,17 @@ class="form-control @error('text') is-invalid @enderror" @enderror +
{{ str_limit($post->text, $limit = 100, $end = '...') }}
+ @if($post->tags->isNotEmpty()) + + @endif + Continue reading