diff --git a/src/Module/Templates/DemoApi/src/Controllers/PostController.php.tpl b/src/Module/Templates/DemoApi/src/Controllers/PostController.php.tpl index e75d8913..ad79ff50 100644 --- a/src/Module/Templates/DemoApi/src/Controllers/PostController.php.tpl +++ b/src/Module/Templates/DemoApi/src/Controllers/PostController.php.tpl @@ -9,7 +9,7 @@ * @author Arman Ag. * @copyright Copyright (c) 2018 Softberg LLC (https://softberg.org) * @link http://quantum.softberg.org/ - * @since 2.9.8 + * @since 2.9.9 */ namespace {{MODULE_NAMESPACE}}\Controllers; @@ -102,139 +102,4 @@ class PostController extends BaseController 'data' => $rawData->getValue(), ]); } - - /** - * Action - get my posts - * @param Response $response - */ - public function myPosts(Response $response) - { - $myPosts = $this->postService->getMyPosts(auth()->user()->uuid); - - $response->json([ - 'status' => 'success', - 'data' => $this->postService->transformData($myPosts->all()) - ]); - } - - /** - * Action - create post - * @param Request $request - * @param Response $response - */ - public function create(Request $request, Response $response) - { - $postData = [ - 'user_uuid' => auth()->user()->uuid, - 'title' => $request->get('title', null, true), - 'content' => $request->get('content', null, true), - 'image' => '', - 'updated_at' => date('Y-m-d H:i:s'), - ]; - - if ($request->hasFile('image')) { - $imageName = $this->postService->saveImage( - $request->getFile('image'), - auth()->user()->uuid, - slugify($request->get('title')) - ); - - $postData['image'] = $imageName; - } - - $this->postService->addPost($postData); - - $response->json([ - 'status' => 'success', - 'message' => t('common.created_successfully') - ]); - } - - /** - * Action - amend post - * @param Request $request - * @param Response $response - * @param string|null $lang - * @param string $postUuid - */ - public function amend(Request $request, Response $response, ?string $lang, string $postUuid) - { - $postData = [ - 'title' => $request->get('title', null, true), - 'content' => $request->get('content', null, true), - 'updated_at' => date('Y-m-d H:i:s'), - ]; - - $post = $this->postService->getPost($postUuid); - - if ($request->hasFile('image')) { - if ($post->image) { - $this->postService->deleteImage(auth()->user()->uuid . DS . $post->image); - } - - $imageName = $this->postService->saveImage( - $request->getFile('image'), - auth()->user()->uuid, - slugify($request->get('title')) - ); - - $postData['image'] = $imageName; - } - - $this->postService->updatePost($postUuid, $postData); - - $response->json([ - 'status' => 'success', - 'message' => t('common.updated_successfully') - ]); - } - - /** - * Action - delete post - * @param Response $response - * @param string|null $lang - * @param string $postUuid - */ - public function delete(Response $response, ?string $lang, string $postUuid) - { - $post = $this->postService->getPost($postUuid); - - if ($post->image) { - $this->postService->deleteImage(auth()->user()->uuid . DS . $post->image); - } - - $this->postService->deletePost($postUuid); - - $response->json([ - 'status' => 'success', - 'message' => t('common.deleted_successfully') - ]); - } - - /** - * Action - delete image of the post - * @param Response $response - * @param string|null $lang - * @param string $postUuid - */ - public function deleteImage(Response $response, ?string $lang, string $postUuid) - { - $post = $this->postService->getPost($postUuid); - - if ($post->image) { - $this->postService->deleteImage(auth()->user()->uuid . DS . $post->image); - } - - $this->postService->updatePost($postUuid, [ - 'title' => $post->title, - 'content' => $post->content, - 'image' => '', - 'updated_at' => date('Y-m-d H:i:s'), - ]); - - $response->json([ - 'status' => 'success', - 'message' => t('common.deleted_successfully') - ]); - } } \ No newline at end of file diff --git a/src/Module/Templates/DemoApi/src/Controllers/PostManagementController.php.tpl b/src/Module/Templates/DemoApi/src/Controllers/PostManagementController.php.tpl new file mode 100644 index 00000000..e63bfb0e --- /dev/null +++ b/src/Module/Templates/DemoApi/src/Controllers/PostManagementController.php.tpl @@ -0,0 +1,177 @@ + + * @copyright Copyright (c) 2018 Softberg LLC (https://softberg.org) + * @link http://quantum.softberg.org/ + * @since 2.9.9 + */ + +namespace {{MODULE_NAMESPACE}}\Controllers; + +use Quantum\Service\Factories\ServiceFactory; +use {{MODULE_NAMESPACE}}\Services\PostService; +use Quantum\Http\Response; +use Quantum\Http\Request; + +/** + * Class PostManagementController + * @package Modules\{{MODULE_NAME}} + */ +class PostManagementController extends BaseController +{ + + /** + * Post service + * @var PostService + */ + public $postService; + + /** + * Works before an action + */ + public function __before() + { + $this->postService = ServiceFactory::create(PostService::class); + } + + /** + * Action - get my posts + * @param Response $response + */ + public function myPosts(Response $response) + { + $myPosts = $this->postService->getMyPosts(auth()->user()->uuid); + + $response->json([ + 'status' => 'success', + 'data' => $this->postService->transformData($myPosts->all()) + ]); + } + + /** + * Action - create post + * @param Request $request + * @param Response $response + */ + public function create(Request $request, Response $response) + { + $postData = [ + 'user_uuid' => auth()->user()->uuid, + 'title' => $request->get('title', null, true), + 'content' => $request->get('content', null, true), + 'image' => '', + 'updated_at' => date('Y-m-d H:i:s'), + ]; + + if ($request->hasFile('image')) { + $imageName = $this->postService->saveImage( + $request->getFile('image'), + auth()->user()->uuid, + slugify($request->get('title')) + ); + + $postData['image'] = $imageName; + } + + $this->postService->addPost($postData); + + $response->json([ + 'status' => 'success', + 'message' => t('common.created_successfully') + ]); + } + + /** + * Action - amend post + * @param Request $request + * @param Response $response + * @param string|null $lang + * @param string $postUuid + */ + public function amend(Request $request, Response $response, ?string $lang, string $postUuid) + { + $postData = [ + 'title' => $request->get('title', null, true), + 'content' => $request->get('content', null, true), + 'updated_at' => date('Y-m-d H:i:s'), + ]; + + $post = $this->postService->getPost($postUuid); + + if ($request->hasFile('image')) { + if ($post->image) { + $this->postService->deleteImage(auth()->user()->uuid . DS . $post->image); + } + + $imageName = $this->postService->saveImage( + $request->getFile('image'), + auth()->user()->uuid, + slugify($request->get('title')) + ); + + $postData['image'] = $imageName; + } + + $this->postService->updatePost($postUuid, $postData); + + $response->json([ + 'status' => 'success', + 'message' => t('common.updated_successfully') + ]); + } + + /** + * Action - delete post + * @param Response $response + * @param string|null $lang + * @param string $postUuid + */ + public function delete(Response $response, ?string $lang, string $postUuid) + { + $post = $this->postService->getPost($postUuid); + + if ($post->image) { + $this->postService->deleteImage(auth()->user()->uuid . DS . $post->image); + } + + $this->postService->deletePost($postUuid); + + $response->json([ + 'status' => 'success', + 'message' => t('common.deleted_successfully') + ]); + } + + /** + * Action - delete image of the post + * @param Response $response + * @param string|null $lang + * @param string $postUuid + */ + public function deleteImage(Response $response, ?string $lang, string $postUuid) + { + $post = $this->postService->getPost($postUuid); + + if ($post->image) { + $this->postService->deleteImage(auth()->user()->uuid . DS . $post->image); + } + + $this->postService->updatePost($postUuid, [ + 'title' => $post->title, + 'content' => $post->content, + 'image' => '', + 'updated_at' => date('Y-m-d H:i:s'), + ]); + + $response->json([ + 'status' => 'success', + 'message' => t('common.deleted_successfully') + ]); + } +} \ No newline at end of file diff --git a/src/Module/Templates/DemoApi/src/routes/routes.php.tpl b/src/Module/Templates/DemoApi/src/routes/routes.php.tpl index 4ac05edb..057568c3 100644 --- a/src/Module/Templates/DemoApi/src/routes/routes.php.tpl +++ b/src/Module/Templates/DemoApi/src/routes/routes.php.tpl @@ -15,11 +15,11 @@ return function ($route) { $route->group('auth', function ($route) { $route->get('[:alpha:2]?/me', 'AuthController', 'me'); $route->get('[:alpha:2]?/signout', 'AuthController', 'signout')->middlewares(['Signout']); - $route->get('[:alpha:2]?/my-posts', 'PostController', 'myPosts')->middlewares(['Editor']); - $route->post('[:alpha:2]?/my-posts/create', 'PostController', 'create')->middlewares(['Editor']); - $route->put('[:alpha:2]?/my-posts/amend/[uuid=:any]', 'PostController', 'amend')->middlewares(['Editor', 'Owner']); - $route->delete('[:alpha:2]?/my-posts/delete/[uuid=:any]', 'PostController', 'delete')->middlewares(['Editor', 'Owner']); - $route->delete('[:alpha:2]?/my-posts/delete-image/[uuid=:any]', 'PostController', 'deleteImage')->middlewares(['Editor', 'Owner']); + $route->get('[:alpha:2]?/my-posts', 'PostManagementController', 'myPosts')->middlewares(['Editor']); + $route->post('[:alpha:2]?/my-posts/create', 'PostManagementController', 'create')->middlewares(['Editor']); + $route->put('[:alpha:2]?/my-posts/amend/[uuid=:any]', 'PostManagementController', 'amend')->middlewares(['Editor', 'Owner']); + $route->delete('[:alpha:2]?/my-posts/delete/[uuid=:any]', 'PostManagementController', 'delete')->middlewares(['Editor', 'Owner']); + $route->delete('[:alpha:2]?/my-posts/delete-image/[uuid=:any]', 'PostManagementController', 'deleteImage')->middlewares(['Editor', 'Owner']); $route->put('[:alpha:2]?/account-settings/update', 'AccountController', 'update')->middlewares(['Update']); $route->put('[:alpha:2]?/account-settings/update-password', 'AccountController', 'updatePassword')->middlewares(['Password']); })->middlewares(['Auth']); diff --git a/src/Module/Templates/DemoWeb/src/Controllers/PostController.php.tpl b/src/Module/Templates/DemoWeb/src/Controllers/PostController.php.tpl index 3c2843c8..fd7acbb4 100644 --- a/src/Module/Templates/DemoWeb/src/Controllers/PostController.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Controllers/PostController.php.tpl @@ -27,6 +27,7 @@ use Quantum\Http\Request; */ class PostController extends BaseController { + /** * Posts per page */ @@ -103,165 +104,4 @@ class PostController extends BaseController $response->html($this->view->render('post/single')); } - - /** - * Action - get my posts - * @param Request $request - * @param Response $response - */ - public function myPosts(Request $request, Response $response) - { - $myPosts = $this->postService->getMyPosts(auth()->user()->uuid); - - $this->view->setParams([ - 'title' => t('common.my_posts') . ' | ' . config()->get('app.name'), - 'posts' => $this->postService->transformData($myPosts->all()) - ]); - - $response->html($this->view->render('post/my-posts')); - } - - /** - * Action - display form for creating a post - * @param Request $request - * @param Response $response - */ - public function createFrom(Request $request, Response $response) - { - $ref = $request->get('ref', 'posts'); - - $this->view->setParams([ - 'title' => t('common.new_post') . ' | ' . config()->get('app.name'), - 'referer' => $ref - ]); - - $response->html($this->view->render('post/form')); - } - - /** - * Action - create post - * @param Request $request - */ - public function create(Request $request) - { - $postData = [ - 'user_uuid' => auth()->user()->uuid, - 'title' => $request->get('title', null, true), - 'content' => $request->get('content', null, true), - 'image' => '', - 'updated_at' => date('Y-m-d H:i:s'), - ]; - - if ($request->hasFile('image')) { - $imageName = $this->postService->saveImage( - $request->getFile('image'), - auth()->user()->uuid, - slugify($request->get('title')) - ); - - $postData['image'] = $imageName; - } - - $this->postService->addPost($postData); - - redirect(base_url(true) . '/' . current_lang() . '/my-posts'); - } - - /** - * Action - display form for amend the post - * @param Request $request - * @param Response $response - * @param string|null $lang - * @param string $postUuid - */ - public function amendForm(Request $request, Response $response, ?string $lang, string $postUuid) - { - $ref = $request->get('ref', 'posts'); - - $post = $this->postService->getPost($postUuid); - - $this->view->setParams([ - 'title' => $post->title . ' | ' . config()->get('app.name'), - 'post' => $post->asArray(), - 'referer' => $ref - ]); - - $response->html($this->view->render('post/form')); - } - - /** - * Action - amend post - * @param Request $request - * @param string|null $lang - * @param string $postUuid - */ - public function amend(Request $request, ?string $lang, string $postUuid) - { - $postData = [ - 'title' => $request->get('title', null, true), - 'content' => $request->get('content', null, true), - 'updated_at' => date('Y-m-d H:i:s'), - ]; - - $post = $this->postService->getPost($postUuid); - - if ($request->hasFile('image')) { - if ($post->image) { - $this->postService->deleteImage(auth()->user()->uuid . DS . $post->image); - } - - $imageName = $this->postService->saveImage( - $request->getFile('image'), - auth()->user()->uuid, - slugify($request->get('title')) - ); - - $postData['image'] = $imageName; - } - - $this->postService->updatePost($postUuid, $postData); - - redirect(base_url(true) . '/' . current_lang() . '/my-posts'); - } - - /** - * Action - delete post - * @param string|null $lang - * @param string $postUuid - */ - public function delete(?string $lang, string $postUuid) - { - $post = $this->postService->getPost($postUuid); - - if ($post->image) { - $this->postService->deleteImage(auth()->user()->uuid . DS . $post->image); - } - - $this->postService->deletePost($postUuid); - - redirect(base_url(true) . '/' . current_lang() . '/my-posts'); - } - - /** - * Action - delete image of the post - * @param string|null $lang - * @param string $postUuid - */ - public function deleteImage(?string $lang, string $postUuid) - { - $post = $this->postService->getPost($postUuid); - - if ($post->image) { - $this->postService->deleteImage(auth()->user()->uuid . DS . $post->image); - } - - $this->postService->updatePost($postUuid, [ - 'title' => $post->title, - 'content' => $post->content, - 'image' => '', - 'updated_at' => date('Y-m-d H:i:s'), - ]); - - redirect(base_url(true) . '/' . current_lang() . '/my-posts'); - } } \ No newline at end of file diff --git a/src/Module/Templates/DemoWeb/src/Controllers/PostManagementController.php.tpl b/src/Module/Templates/DemoWeb/src/Controllers/PostManagementController.php.tpl new file mode 100644 index 00000000..6f8d78c1 --- /dev/null +++ b/src/Module/Templates/DemoWeb/src/Controllers/PostManagementController.php.tpl @@ -0,0 +1,207 @@ + + * @copyright Copyright (c) 2018 Softberg LLC (https://softberg.org) + * @link http://quantum.softberg.org/ + * @since 2.9.9 + */ + +namespace {{MODULE_NAMESPACE}}\Controllers; + +use Quantum\Service\Factories\ServiceFactory; +use {{MODULE_NAMESPACE}}\PostService; +use Quantum\Http\Response; +use Quantum\Http\Request; + +/** + * Class PostManagementController + * @package Modules\{{MODULE_NAME}} + */ +class PostManagementController extends BaseController +{ + + /** + * Main layout + */ + const LAYOUT = 'layouts/main'; + + /** + * Post service + * @var PostService + */ + public $postService; + + public function __before() + { + $this->postService = ServiceFactory::create(PostService::class); + + parent::__before(); + } + + /** + * Action - get my posts + * @param Request $request + * @param Response $response + */ + public function myPosts(Request $request, Response $response) + { + $myPosts = $this->postService->getMyPosts(auth()->user()->uuid); + + $this->view->setParams([ + 'title' => t('common.my_posts') . ' | ' . config()->get('app.name'), + 'posts' => $this->postService->transformData($myPosts->all()) + ]); + + $response->html($this->view->render('post/my-posts')); + } + + /** + * Action - display form for creating a post + * @param Request $request + * @param Response $response + */ + public function createFrom(Request $request, Response $response) + { + $ref = $request->get('ref', 'posts'); + + $this->view->setParams([ + 'title' => t('common.new_post') . ' | ' . config()->get('app.name'), + 'referer' => $ref + ]); + + $response->html($this->view->render('post/form')); + } + + /** + * Action - create post + * @param Request $request + */ + public function create(Request $request) + { + $postData = [ + 'user_uuid' => auth()->user()->uuid, + 'title' => $request->get('title', null, true), + 'content' => $request->get('content', null, true), + 'image' => '', + 'updated_at' => date('Y-m-d H:i:s'), + ]; + + if ($request->hasFile('image')) { + $imageName = $this->postService->saveImage( + $request->getFile('image'), + auth()->user()->uuid, + slugify($request->get('title')) + ); + + $postData['image'] = $imageName; + } + + $this->postService->addPost($postData); + + redirect(base_url(true) . '/' . current_lang() . '/my-posts'); + } + + /** + * Action - display form for amend the post + * @param Request $request + * @param Response $response + * @param string|null $lang + * @param string $postUuid + */ + public function amendForm(Request $request, Response $response, ?string $lang, string $postUuid) + { + $ref = $request->get('ref', 'posts'); + + $post = $this->postService->getPost($postUuid); + + $this->view->setParams([ + 'title' => $post->title . ' | ' . config()->get('app.name'), + 'post' => $post->asArray(), + 'referer' => $ref + ]); + + $response->html($this->view->render('post/form')); + } + + /** + * Action - amend post + * @param Request $request + * @param string|null $lang + * @param string $postUuid + */ + public function amend(Request $request, ?string $lang, string $postUuid) + { + $postData = [ + 'title' => $request->get('title', null, true), + 'content' => $request->get('content', null, true), + 'updated_at' => date('Y-m-d H:i:s'), + ]; + + $post = $this->postService->getPost($postUuid); + + if ($request->hasFile('image')) { + if ($post->image) { + $this->postService->deleteImage(auth()->user()->uuid . DS . $post->image); + } + + $imageName = $this->postService->saveImage( + $request->getFile('image'), + auth()->user()->uuid, + slugify($request->get('title')) + ); + + $postData['image'] = $imageName; + } + + $this->postService->updatePost($postUuid, $postData); + + redirect(base_url(true) . '/' . current_lang() . '/my-posts'); + } + + /** + * Action - delete post + * @param string|null $lang + * @param string $postUuid + */ + public function delete(?string $lang, string $postUuid) + { + $post = $this->postService->getPost($postUuid); + + if ($post->image) { + $this->postService->deleteImage(auth()->user()->uuid . DS . $post->image); + } + + $this->postService->deletePost($postUuid); + + redirect(base_url(true) . '/' . current_lang() . '/my-posts'); + } + + /** + * Action - delete image of the post + * @param string|null $lang + * @param string $postUuid + */ + public function deleteImage(?string $lang, string $postUuid) + { + $post = $this->postService->getPost($postUuid); + + if ($post->image) { + $this->postService->deleteImage(auth()->user()->uuid . DS . $post->image); + } + + $this->postService->updatePost($postUuid, [ + 'title' => $post->title, + 'content' => $post->content, + 'image' => '', + 'updated_at' => date('Y-m-d H:i:s'), + ]); + + redirect(base_url(true) . '/' . current_lang() . '/my-posts'); + } +} \ No newline at end of file diff --git a/src/Module/Templates/DemoWeb/src/routes/routes.php.tpl b/src/Module/Templates/DemoWeb/src/routes/routes.php.tpl index 8af80a0f..2aacb393 100644 --- a/src/Module/Templates/DemoWeb/src/routes/routes.php.tpl +++ b/src/Module/Templates/DemoWeb/src/routes/routes.php.tpl @@ -19,13 +19,13 @@ return function ($route) { $route->group('auth', function ($route) { $route->get('[:alpha:2]?/signout', 'AuthController', 'signout'); - $route->get('[:alpha:2]?/my-posts', 'PostController', 'myPosts')->middlewares(['Editor']); - $route->get('[:alpha:2]?/my-posts/create', 'PostController', 'createFrom')->middlewares(['Editor']); - $route->post('[:alpha:2]?/my-posts/create', 'PostController', 'create')->middlewares(['Editor']); - $route->get('[:alpha:2]?/my-posts/amend/[uuid=:any]', 'PostController', 'amendForm')->middlewares(['Editor', 'Owner']); - $route->post('[:alpha:2]?/my-posts/amend/[uuid=:any]', 'PostController', 'amend')->middlewares(['Editor', 'Owner']); - $route->get('[:alpha:2]?/my-posts/delete/[uuid=:any]', 'PostController', 'delete')->middlewares(['Editor', 'Owner']); - $route->get('[:alpha:2]?/my-posts/delete-image/[uuid=:any]', 'PostController', 'deleteImage')->middlewares(['Editor', 'Owner']); + $route->get('[:alpha:2]?/my-posts', 'PostManagementController', 'myPosts')->middlewares(['Editor']); + $route->get('[:alpha:2]?/my-posts/create', 'PostManagementController', 'createFrom')->middlewares(['Editor']); + $route->post('[:alpha:2]?/my-posts/create', 'PostManagementController', 'create')->middlewares(['Editor']); + $route->get('[:alpha:2]?/my-posts/amend/[uuid=:any]', 'PostManagementController', 'amendForm')->middlewares(['Editor', 'Owner']); + $route->post('[:alpha:2]?/my-posts/amend/[uuid=:any]', 'PostManagementController', 'amend')->middlewares(['Editor', 'Owner']); + $route->get('[:alpha:2]?/my-posts/delete/[uuid=:any]', 'PostManagementController', 'delete')->middlewares(['Editor', 'Owner']); + $route->get('[:alpha:2]?/my-posts/delete-image/[uuid=:any]', 'PostManagementController', 'deleteImage')->middlewares(['Editor', 'Owner']); $route->get('[:alpha:2]?/account-settings', 'AccountController', 'form'); $route->post('[:alpha:2]?/account-settings/update', 'AccountController', 'update')->middlewares(['Update']); $route->post('[:alpha:2]?/account-settings/update-password', 'AccountController', 'updatePassword')->middlewares(['Password']);