From 5a1923299aa4a953ca3db2e316f60eac7883a908 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Cort=C3=A9s?= Date: Wed, 16 Oct 2019 12:14:35 -0300 Subject: [PATCH] Preview Functionality --- app/Http/Controllers/NowController.php | 16 +++ app/Http/Controllers/PostController.php | 16 +++ app/Http/Controllers/ProjectController.php | 16 +++ app/Http/Controllers/SetupController.php | 16 +++ public/js/admin.js | 73 +++++++++--- resources/js/admin.js | 104 +++++++++++++----- resources/views/admin/now/create.blade.php | 3 +- resources/views/admin/now/edit.blade.php | 3 +- resources/views/admin/posts/create.blade.php | 3 +- resources/views/admin/posts/edit.blade.php | 3 +- resources/views/admin/preview.blade.php | 14 +++ .../views/admin/projects/create.blade.php | 3 +- resources/views/admin/projects/edit.blade.php | 3 +- resources/views/admin/setups/create.blade.php | 3 +- resources/views/admin/setups/edit.blade.php | 3 +- routes/web.php | 6 - 16 files changed, 229 insertions(+), 56 deletions(-) create mode 100644 resources/views/admin/preview.blade.php diff --git a/app/Http/Controllers/NowController.php b/app/Http/Controllers/NowController.php index 7e94f59..86a6a80 100644 --- a/app/Http/Controllers/NowController.php +++ b/app/Http/Controllers/NowController.php @@ -20,6 +20,10 @@ class NowController extends Controller public function save(Request $request) { + if($request->action === "preview") { + return $this->preview($request); + } + $now = new Now(); $now->md = $request->md; $now->save(); @@ -34,6 +38,10 @@ class NowController extends Controller public function update(Request $request, $id) { + if($request->action === "preview") { + return $this->preview($request); + } + $now = Now::find($id); $now->md = $request->md; @@ -42,6 +50,14 @@ class NowController extends Controller return redirect()->route('admin.now.index'); } + public function preview(Request $request) + { + return view('admin.preview', [ + 'md' => $request->md, + 'title' => "Now" + ]); + } + public function delete($id) { $now= Now::find($id); diff --git a/app/Http/Controllers/PostController.php b/app/Http/Controllers/PostController.php index dd944f2..b058b8b 100644 --- a/app/Http/Controllers/PostController.php +++ b/app/Http/Controllers/PostController.php @@ -14,6 +14,10 @@ class PostController extends Controller public function save(Request $request) { + if($request->action === "preview") { + return $this->preview($request); + } + $post = new Post(); $post->title = $request->title; $post->md = $request->md; @@ -29,6 +33,10 @@ class PostController extends Controller public function update(Request $request, $id) { + if($request->action === "preview") { + return $this->preview($request); + } + $post = Post::find($id); $post->title = $request->title; @@ -38,6 +46,14 @@ class PostController extends Controller return redirect()->route('admin.post.index'); } + public function preview(Request $request) + { + return view('admin.preview', [ + 'md' => $request->md, + 'title' => $request->title + ]); + } + public function delete($id) { $post = Post::find($id); diff --git a/app/Http/Controllers/ProjectController.php b/app/Http/Controllers/ProjectController.php index 5f4aa43..2bdbeb5 100644 --- a/app/Http/Controllers/ProjectController.php +++ b/app/Http/Controllers/ProjectController.php @@ -22,6 +22,10 @@ class ProjectController extends Controller public function save(Request $request) { + if($request->action === "preview") { + return $this->preview($request); + } + $project = new Project(); $project->title = $request->title; $project->md = $request->md; @@ -37,6 +41,10 @@ class ProjectController extends Controller public function update(Request $request, $id) { + if($request->action === "preview") { + return $this->preview($request); + } + $project = Project::find($id); $project->title = $request->title; $project->md = $request->md; @@ -45,6 +53,14 @@ class ProjectController extends Controller return redirect()->route('admin.project.index'); } + public function preview(Request $request) + { + return view('admin.preview', [ + 'md' => $request->md, + 'title' => $request->title + ]); + } + public function delete($id) { Project::find($id)->delete(); diff --git a/app/Http/Controllers/SetupController.php b/app/Http/Controllers/SetupController.php index a8d751a..1c01b13 100644 --- a/app/Http/Controllers/SetupController.php +++ b/app/Http/Controllers/SetupController.php @@ -20,6 +20,10 @@ class SetupController extends Controller public function save(Request $request) { + if($request->action === "preview") { + return $this->preview($request); + } + $setup = new Setup(); $setup->title = $request->title; $setup->md = $request->md; @@ -35,6 +39,10 @@ class SetupController extends Controller public function update(Request $request, $id) { + if($request->action === "preview") { + return $this->preview($request); + } + $setup = Setup::find($id); $setup->title = $request->title; $setup->md = $request->md; @@ -43,6 +51,14 @@ class SetupController extends Controller return redirect()->route('admin.setup.index'); } + public function preview(Request $request) + { + return view('admin.preview', [ + 'md' => $request->md, + 'title' => $request->title + ]); + } + public function delete($id) { Setup::find($id)->delete(); diff --git a/public/js/admin.js b/public/js/admin.js index 4082912..c0d9996 100644 --- a/public/js/admin.js +++ b/public/js/admin.js @@ -93,21 +93,68 @@ /*! no static exports found */ /***/ (function(module, exports) { -posts_edit_regexp = new RegExp("/admin/posts/\\d+/edit"); -now_edit_regexp = new RegExp("/admin/now/\\d+/edit"); -projects_edit_regexp = new RegExp("/admin/projects/\\d+/edit"); -setups_edit_regexp = new RegExp("/admin/setups/\\d+/edit"); - -if (window.location.pathname === "/admin/posts" || window.location.pathname === "/admin/posts/create" || window.location.pathname.match(posts_edit_regexp)) { - document.getElementById("posts-link").classList.add("menu-highlight"); -} else if (window.location.pathname === "/admin/now" || window.location.pathname === "/admin/now/create" || window.location.pathname.match(now_edit_regexp)) { - document.getElementById("now-link").classList.add("menu-highlight"); -} else if (window.location.pathname === "/admin/projects" || window.location.pathname === "/admin/projects/create" || window.location.pathname.match(projects_edit_regexp)) { - document.getElementById("projects-link").classList.add("menu-highlight"); -} else if (window.location.pathname === "/admin/setups" || window.location.pathname === "/admin/setups/create" || window.location.pathname.match(setups_edit_regexp)) { - document.getElementById("setup-link").classList.add("menu-highlight"); +function is_admin_post_route() { + var posts_edit_regexp = new RegExp("/admin/posts/\\d+/edit"); + return window.location.pathname === "/admin/posts" || window.location.pathname === "/admin/posts/create" || window.location.pathname.match(posts_edit_regexp); } +function is_admin_now_route() { + var now_edit_regexp = new RegExp("/admin/now/\\d+/edit"); + return window.location.pathname === "/admin/now" || window.location.pathname === "/admin/now/create" || window.location.pathname.match(now_edit_regexp); +} + +function is_admin_projects_route() { + var projects_edit_regexp = new RegExp("/admin/projects/\\d+/edit"); + return window.location.pathname === "/admin/projects" || window.location.pathname === "/admin/projects/create" || window.location.pathname.match(projects_edit_regexp); +} + +function is_admin_setups_route() { + var setups_edit_regexp = new RegExp("/admin/setups/\\d+/edit"); + return window.location.pathname === "/admin/setups" || window.location.pathname === "/admin/setups/create" || window.location.pathname.match(setups_edit_regexp); +} + +function admin_highlight() { + if (is_admin_post_route()) { + document.getElementById("posts-link").classList.add("menu-highlight"); + } + + if (is_admin_now_route()) { + document.getElementById("now-link").classList.add("menu-highlight"); + } + + if (is_admin_projects_route()) { + document.getElementById("projects-link").classList.add("menu-highlight"); + } + + if (is_admin_setups_route()) { + document.getElementById("setup-link").classList.add("menu-highlight"); + } +} + +function preview() { + var previewButton = document.getElementById("preview"); + var mainButton = document.getElementById("main"); + + if (previewButton == null) { + return; + } + + var form = document.getElementsByTagName("form")[0]; + previewButton.addEventListener("click", function (e) { + form.setAttribute("target", "_blank"); + }); + mainButton.addEventListener("click", function (e) { + form.removeAttribute("target"); + }); +} + +function main() { + admin_highlight(); + preview(); +} + +window.onload = main; + /***/ }), /***/ 1: diff --git a/resources/js/admin.js b/resources/js/admin.js index a5d45f0..2b1f033 100644 --- a/resources/js/admin.js +++ b/resources/js/admin.js @@ -1,30 +1,76 @@ -posts_edit_regexp = new RegExp("/admin/posts/\\d+/edit"); -now_edit_regexp = new RegExp("/admin/now/\\d+/edit"); -projects_edit_regexp = new RegExp("/admin/projects/\\d+/edit"); -setups_edit_regexp = new RegExp("/admin/setups/\\d+/edit"); - -if( - window.location.pathname === "/admin/posts" || - window.location.pathname === "/admin/posts/create" || - window.location.pathname.match(posts_edit_regexp) -){ - document.getElementById("posts-link").classList.add("menu-highlight"); -} else if( - window.location.pathname === "/admin/now" || - window.location.pathname === "/admin/now/create" || - window.location.pathname.match(now_edit_regexp) -){ - document.getElementById("now-link").classList.add("menu-highlight"); -} else if( - window.location.pathname === "/admin/projects" || - window.location.pathname === "/admin/projects/create" || - window.location.pathname.match(projects_edit_regexp) -){ - document.getElementById("projects-link").classList.add("menu-highlight"); -} else if( - window.location.pathname === "/admin/setups" || - window.location.pathname === "/admin/setups/create" || - window.location.pathname.match(setups_edit_regexp) -){ - document.getElementById("setup-link").classList.add("menu-highlight"); +function is_admin_post_route() { + const posts_edit_regexp = new RegExp("/admin/posts/\\d+/edit"); + return ( + window.location.pathname === "/admin/posts" || + window.location.pathname === "/admin/posts/create" || + window.location.pathname.match(posts_edit_regexp) + ); } + +function is_admin_now_route() { + const now_edit_regexp = new RegExp("/admin/now/\\d+/edit"); + return ( + window.location.pathname === "/admin/now" || + window.location.pathname === "/admin/now/create" || + window.location.pathname.match(now_edit_regexp) + ); +} + +function is_admin_projects_route() { + const projects_edit_regexp = new RegExp("/admin/projects/\\d+/edit"); + return ( + window.location.pathname === "/admin/projects" || + window.location.pathname === "/admin/projects/create" || + window.location.pathname.match(projects_edit_regexp) + ); +} + +function is_admin_setups_route() { + const setups_edit_regexp = new RegExp("/admin/setups/\\d+/edit"); + return ( + window.location.pathname === "/admin/setups" || + window.location.pathname === "/admin/setups/create" || + window.location.pathname.match(setups_edit_regexp) + ); +} + +function admin_highlight() { + if(is_admin_post_route()){ + document.getElementById("posts-link").classList.add("menu-highlight"); + } + if(is_admin_now_route()){ + document.getElementById("now-link").classList.add("menu-highlight"); + } + if(is_admin_projects_route()){ + document.getElementById("projects-link").classList.add("menu-highlight"); + } + if(is_admin_setups_route()){ + document.getElementById("setup-link").classList.add("menu-highlight"); + } +} + +function preview() { + const previewButton = document.getElementById("preview"); + const mainButton = document.getElementById("main"); + + if(previewButton == null){ + return; + } + + const form = document.getElementsByTagName("form")[0]; + + previewButton.addEventListener("click", (e) => { + form.setAttribute("target", "_blank"); + }); + + mainButton.addEventListener("click", (e) => { + form.removeAttribute("target"); + }); +} + +function main() { + admin_highlight(); + preview(); +} + +window.onload = main; diff --git a/resources/views/admin/now/create.blade.php b/resources/views/admin/now/create.blade.php index dc6b55f..22386f0 100644 --- a/resources/views/admin/now/create.blade.php +++ b/resources/views/admin/now/create.blade.php @@ -15,7 +15,8 @@
- + +
diff --git a/resources/views/admin/now/edit.blade.php b/resources/views/admin/now/edit.blade.php index 76251d4..fcf360c 100644 --- a/resources/views/admin/now/edit.blade.php +++ b/resources/views/admin/now/edit.blade.php @@ -15,7 +15,8 @@
- + +
diff --git a/resources/views/admin/posts/create.blade.php b/resources/views/admin/posts/create.blade.php index a4d4c7f..9b02198 100644 --- a/resources/views/admin/posts/create.blade.php +++ b/resources/views/admin/posts/create.blade.php @@ -19,7 +19,8 @@
- + +
diff --git a/resources/views/admin/posts/edit.blade.php b/resources/views/admin/posts/edit.blade.php index 7e64562..49a9694 100644 --- a/resources/views/admin/posts/edit.blade.php +++ b/resources/views/admin/posts/edit.blade.php @@ -19,7 +19,8 @@
- + +
diff --git a/resources/views/admin/preview.blade.php b/resources/views/admin/preview.blade.php new file mode 100644 index 0000000..1e0fbd6 --- /dev/null +++ b/resources/views/admin/preview.blade.php @@ -0,0 +1,14 @@ +@extends('base') + +@php + $parse = new Parsedown(); +@endphp + +@section('content') +
+
+

{{$title}}

+
+ {!! $parse->text($md) !!} +
+@endsection diff --git a/resources/views/admin/projects/create.blade.php b/resources/views/admin/projects/create.blade.php index 7f0232d..e4ba8ce 100644 --- a/resources/views/admin/projects/create.blade.php +++ b/resources/views/admin/projects/create.blade.php @@ -18,7 +18,8 @@
- + +
diff --git a/resources/views/admin/projects/edit.blade.php b/resources/views/admin/projects/edit.blade.php index 86248c8..f2b7073 100644 --- a/resources/views/admin/projects/edit.blade.php +++ b/resources/views/admin/projects/edit.blade.php @@ -18,7 +18,8 @@
- + +
diff --git a/resources/views/admin/setups/create.blade.php b/resources/views/admin/setups/create.blade.php index db43670..82de56d 100644 --- a/resources/views/admin/setups/create.blade.php +++ b/resources/views/admin/setups/create.blade.php @@ -18,7 +18,8 @@
- + +
diff --git a/resources/views/admin/setups/edit.blade.php b/resources/views/admin/setups/edit.blade.php index 61482be..761c247 100644 --- a/resources/views/admin/setups/edit.blade.php +++ b/resources/views/admin/setups/edit.blade.php @@ -18,7 +18,8 @@
- + +
diff --git a/routes/web.php b/routes/web.php index ab1ec73..52c9acb 100644 --- a/routes/web.php +++ b/routes/web.php @@ -62,9 +62,3 @@ Route::middleware('auth')->group(function() { Route::get('/', function () { return view('index'); })->name('index'); - - -Route::get('/setup', function () { - return view('setup'); -})->name('setup'); -