Skip to content

Commit

Permalink
new features
Browse files Browse the repository at this point in the history
  • Loading branch information
kkumar-gcc committed Sep 11, 2022
1 parent 5c28bb9 commit 17c3426
Show file tree
Hide file tree
Showing 72 changed files with 10,173 additions and 2,592 deletions.
128 changes: 89 additions & 39 deletions app/Http/Controllers/BlogController.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,22 @@
use App\Models\Subscriber;
use App\Models\Tag;
use App\Models\User;
use Illuminate\Auth\Middleware\Authorize;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\URL;
use Jorenvh\Share\Share;
use Jorenvh\Share\ShareFacade;
use Illuminate\Support\Str;
use League\CommonMark\Environment\Environment;
use League\CommonMark\Extension\Autolink\AutolinkExtension;
use League\CommonMark\Extension\CommonMark\CommonMarkCoreExtension;
use League\CommonMark\Extension\DisallowedRawHtml\DisallowedRawHtmlExtension;
use League\CommonMark\Extension\Strikethrough\StrikethroughExtension;
use League\CommonMark\Extension\Table\TableExtension;
use League\CommonMark\Extension\TaskList\TaskListExtension;
use League\CommonMark\MarkdownConverter;
use League\CommonMark\Extension\SmartPunct\SmartPunctExtension;
use League\CommonMark\Extension\ExternalLink\ExternalLinkExtension;
use League\CommonMark\Extension\HeadingPermalink\HeadingPermalinkRenderer;
use League\CommonMark\Extension\HeadingPermalink\HeadingPermalinkExtension;
use League\CommonMark\Extension\TableOfContents\TableOfContentsExtension;

class BlogController extends Controller
{
Expand All @@ -29,26 +38,7 @@ class BlogController extends Controller
*/
public function index(Request $request)
{

$tab = 'newest';

if ($request->tab == 'likes') {
$blogs = Blog::select(['title','id','created_at','user_id'])->where("status", "=", "posted")->with(['user','tags','bloglikes','blogviews','bookmarks'])->withCount(['bloglikes'])->orderByDesc('bloglikes_count')->paginate(10);
} else if ($request->tab == 'newest') {
$blogs = Blog::latest()->filter()->paginate(10);
} else if ($request->tab == 'views') {
$blogs = Blog::where("status", "=", "posted")->with(['user','tags','blogviews','bloglikes'])->withCount('blogviews')->orderByDesc('blogviews_count')->paginate(10);
} else {
$blogs = Blog::where("status", "=", "posted")->with(['user','tags','bloglikes','blogviews'])->orderByDesc('created_at')->paginate(10);
}
if ($request->tab) {
$tab = $request->tab;
}
return view("blogs.index")->with([
"blogs" => $blogs,
"blogCount" => $blogs->count(),
"tab" => $tab
]);
return view("blogs.index");
}

/**
Expand Down Expand Up @@ -144,6 +134,7 @@ public function draft(Request $request)
*/
public function show(Request $request, $slug)
{

$titleArray = explode('-', $slug);
$id = end($titleArray);
$blog = Blog::find($id);
Expand All @@ -161,6 +152,60 @@ public function show(Request $request, $slug)
// ->whatsapp()
// ->reddit()
// ->getRawLinks();
// dd($blog->body());
$config = [
'table_of_contents' => [
'html_class' => 'table-of-contents',
'position' => 'top',
'style' => 'bullet',
'min_heading_level' => 1,
'max_heading_level' => 6,
'normalize' => 'relative',
'placeholder' => 'TOC',
],
'smartpunct' => [
'double_quote_opener' => '',
'double_quote_closer' => '',
'single_quote_opener' => '',
'single_quote_closer' => '',
],
'heading_permalink' => [
'html_class' => 'heading-permalink',
'id_prefix' => 'content',
'fragment_prefix' => 'content',
// 'insert' => 'before',
'min_heading_level' => 1,
'max_heading_level' => 6,
'title' => 'Permalink',
// 'symbol' => HeadingPermalinkRenderer::DEFAULT_SYMBOL,
'aria_hidden' => true,
],
'external_link' => [
'internal_hosts' => 'www.example.com', // TODO: Don't forget to set this!
'open_in_new_window' => true,
'html_class' => 'external-link',
'nofollow' => '',
'noopener' => 'external',
'noreferrer' => 'external',
],

];

$environment = new Environment($config);
$environment->addExtension(new CommonMarkCoreExtension());

// Remove any of the lines below if you don't want a particular feature
$environment->addExtension(new AutolinkExtension());
$environment->addExtension(new DisallowedRawHtmlExtension());
$environment->addExtension(new StrikethroughExtension());
$environment->addExtension(new TableExtension());
$environment->addExtension(new TaskListExtension());
$environment->addExtension(new HeadingPermalinkExtension());
$environment->addExtension(new TableOfContentsExtension());
$environment->addExtension(new SmartPunctExtension());
$environment->addExtension(new ExternalLinkExtension());

$converter = new MarkdownConverter($environment);

$existView = BlogView::where([['ip_address', "=", $request->ip()], ["blog_id", "=", $id]])->count();
if ($existView < 1) {
Expand All @@ -169,7 +214,7 @@ public function show(Request $request, $slug)
$newView->blog_id = $id;
$newView->save();
}
$related = Blog::where("status", "=", "posted")->with(['user','tags','bloglikes','blogviews'])->whereHas('tags', function ($query) use ($blog) {
$related = Blog::where("status", "=", "posted")->with(['user', 'tags', 'bloglikes', 'blogviews'])->whereHas('tags', function ($query) use ($blog) {
$query->whereIn('title', $blog->tags->pluck('title'));
}, '>=', count($blog->tags->pluck('title')))->where("id", "!=", $blog->id)->limit(5)->withCount('tags')
->get();
Expand All @@ -184,14 +229,15 @@ public function show(Request $request, $slug)
$q->where('status', '=', 0);
}])->orderByDesc('commentlikes_count')->paginate(5)->fragment('comments');
} else {
$comments = Comment::where("blog_id", "=", $id)->with(['replies','user','commentlikes'])->orderByDesc("created_at")->paginate(5)->fragment('comments');
$comments = Comment::where("blog_id", "=", $id)->with(['replies', 'user', 'commentlikes'])->orderByDesc("created_at")->paginate(5)->fragment('comments');
}
return view("blogs.show")->with([
"blog" => $blog,
"comments" => $comments,
"like" => $like,
// "tagTitles" => json_encode($tagTitles),
"related" => $related,
"converter" => $converter
// "shareBlog" => $shareBlog,
]);
}
Expand All @@ -212,8 +258,15 @@ public function show(Request $request, $slug)
* @param \App\Models\Blog $blog
* @return \Illuminate\Http\Response
*/
public function store(StoreBlogRequest $request)
{
// dd($request);
// {{ Str::slug($blog->title(), '-') }}-{{ $blog->id() }}
return $request;
}
public function post(Request $request)
{
dd($request->all());
$blogId = $request->get('blog_id');
$blogTitle = $request->get('title');
$blogDescription = $request->get('description');
Expand Down Expand Up @@ -261,20 +314,17 @@ public function edit(Request $request, $title)
$titleArray = explode('-', $title);
$id = end($titleArray);
$blog = Blog::find($id);
$this->Authorize('view', $blog);
if ($blog) {

if (auth()->user()->id == $blog->user_id) {
$tagTitles = [];
foreach ($blog->tags as $tag) {
$tagTitles[] = $tag->title;
}
return view("blogs.update")->with([
"blog" => $blog,
"tagTitles" => json_encode($tagTitles),
]);
$tagTitles = [];
foreach ($blog->tags as $tag) {
$tagTitles[] = $tag->title;
}
return view("blogs.update")->with([
"blog" => $blog,
"tagTitles" => json_encode($tagTitles),
]);
}
return view("error");
}
public function editStore(Request $request)
{
Expand Down Expand Up @@ -369,7 +419,7 @@ public function manageStore(Request $request)
}
}
}
return view("error");
return view("404");
}
public function detailCard(Request $request)
{
Expand Down
53 changes: 53 additions & 0 deletions app/Http/Livewire/Blog/Create.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
<?php

namespace App\Http\Livewire\Blog;

use App\Models\Blog;
use Livewire\Component;
use Livewire\WithFileUploads;
use Illuminate\Support\Str;
class Create extends Component
{
use WithFileUploads;

public $title;

public $body = "# hello peoples";

public $message;

public $photo;

protected $rules = [
// 'cover_image' => ['required', 'mimes:png,jpg,svg,gif', 'max:2048'],
'title' => ['required', 'max:200', 'min:20'],
'body' => ['required', 'min:20'],

];

public function render()
{
return view('livewire.blog.create');
}

public function updatedPhoto()

{
$this->validate([

'photo' => 'image|max:1024', // 1MB Max

]);
}
public function submit()

{
$this->validate();
$blog = Blog::create([
'title'=>$this->title,
'body'=>$this->body,
'user_id'=>auth()->id()
]);
return redirect()->to('/blogs/'.Str::slug($this->title, '-').'-'.$blog->id);
}
}
41 changes: 41 additions & 0 deletions app/Http/Livewire/Blog/Index.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<?php

namespace App\Http\Livewire\Blog;

use App\Models\Blog;
use Livewire\Component;
use Livewire\WithPagination;

class Index extends Component
{
use WithPagination;
public $tab = 'recent';

protected $queryString = [
'tab' => ['except' => 'recent']
];

public function render()
{
if ($this->validSort($this->tab)) {
$blogs = Blog::published()->{$this->tab}()->paginate(10);
} else {
$this->tab = 'recent';
$blogs = Blog::published()->{$this->tab}()->paginate(10);
}

return view('livewire.blog.index')->with(["blogs" => $blogs, "tab" => $this->tab]);
}
public function sortBy($sort): void
{
$this->tab = $this->validSort($sort) ? $sort : 'recent';
}
public function validSort($sort): bool
{
return in_array($sort, [
'recent',
'popular',
'view'
]);
}
}
13 changes: 13 additions & 0 deletions app/Http/Livewire/Blog/Show.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php

namespace App\Http\Livewire\Blog;

use Livewire\Component;

class Show extends Component
{
public function render()
{
return view('livewire.blog.show');
}
}
51 changes: 51 additions & 0 deletions app/Http/Livewire/Blog/Update.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
<?php

namespace App\Http\Livewire\Blog;

use App\Models\Blog;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Livewire\Component;
use Livewire\WithFileUploads;
use Illuminate\Support\Str;
class Update extends Component
{
use WithFileUploads;
use AuthorizesRequests;
public $title;

public $body ;
public $blog;

public $message;

public $photo;

protected $rules = [
// 'cover_image' => ['required', 'mimes:png,jpg,svg,gif', 'max:2048'],
'title' => ['required', 'max:200', 'min:20'],
'body' => ['required', 'min:20'],

];
public function mount(Blog $blog){
$this->blog=$blog;
$this->title=$blog->title();
$this->body=$blog->body();
}
public function render()
{
$this->authorize('view', $this->blog);
return view('livewire.blog.update');
}
public function update()

{
$this->authorize('update', $this->blog);
$this->validate();
$blog = Blog::create([
'title'=>$this->title,
'body'=>$this->body,
'user_id'=>auth()->id()
]);
return redirect()->to('/blogs/'.Str::slug($this->title, '-').'-'.$blog->id);
}
}
Loading

0 comments on commit 17c3426

Please sign in to comment.