diff --git a/Admin/Routes/Web/Api.php b/Admin/Routes/Web/Api.php index 2ebdf73..f8d0591 100644 --- a/Admin/Routes/Web/Api.php +++ b/Admin/Routes/Web/Api.php @@ -3,42 +3,42 @@ use phpOMS\Router\RouteVerb; use phpOMS\Account\PermissionType; use Modules\News\Models\PermissionState; -use Modules\News\Controller; +use Modules\News\Controller\ApiController; return [ '^.*/api/news.*$' => [ [ - 'dest' => '\Modules\News\Controller:apiNewsCreate', + 'dest' => '\Modules\News\Controller\ApiController:apiNewsCreate', 'verb' => RouteVerb::PUT, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => ApiController::MODULE_NAME, 'type' => PermissionType::CREATE, 'state' => PermissionState::NEWS, ], ], [ - 'dest' => '\Modules\News\Controller:apiNewsUpdate', + 'dest' => '\Modules\News\Controller\ApiController:apiNewsUpdate', 'verb' => RouteVerb::SET, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => ApiController::MODULE_NAME, 'type' => PermissionType::MODIFY, 'state' => PermissionState::NEWS, ], ], [ - 'dest' => '\Modules\News\Controller:apiNewsGet', + 'dest' => '\Modules\News\Controller\ApiController:apiNewsGet', 'verb' => RouteVerb::GET, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => ApiController::MODULE_NAME, 'type' => PermissionType::READ, 'state' => PermissionState::NEWS, ], ], [ - 'dest' => '\Modules\News\Controller:apiNewsDelete', + 'dest' => '\Modules\News\Controller\ApiController:apiNewsDelete', 'verb' => RouteVerb::DELETE, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => ApiController::MODULE_NAME, 'type' => PermissionType::DELETE, 'state' => PermissionState::NEWS, ], diff --git a/Admin/Routes/Web/Backend.php b/Admin/Routes/Web/Backend.php index b689893..fa4c2cb 100644 --- a/Admin/Routes/Web/Backend.php +++ b/Admin/Routes/Web/Backend.php @@ -3,15 +3,15 @@ use phpOMS\Router\RouteVerb; use phpOMS\Account\PermissionType; use Modules\News\Models\PermissionState; -use Modules\News\Controller; +use Modules\News\Controller\BackendController; return [ '^.*/backend/news/dashboard.*$' => [ [ - 'dest' => '\Modules\News\Controller:viewNewsDashboard', + 'dest' => '\Modules\News\Controller\BackendController:viewNewsDashboard', 'verb' => RouteVerb::GET, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => BackendController::MODULE_NAME, 'type' => PermissionType::READ, 'state' => PermissionState::NEWS, ], @@ -19,10 +19,10 @@ return [ ], '^.*/backend/news/article.*$' => [ [ - 'dest' => '\Modules\News\Controller:viewNewsArticle', + 'dest' => '\Modules\News\Controller\BackendController:viewNewsArticle', 'verb' => RouteVerb::GET, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => BackendController::MODULE_NAME, 'type' => PermissionType::READ, 'state' => PermissionState::NEWS, ], @@ -30,10 +30,10 @@ return [ ], '^.*/backend/news/archive.*$' => [ [ - 'dest' => '\Modules\News\Controller:viewNewsArchive', + 'dest' => '\Modules\News\Controller\BackendController:viewNewsArchive', 'verb' => RouteVerb::GET, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => BackendController::MODULE_NAME, 'type' => PermissionType::READ, 'state' => PermissionState::NEWS, ], @@ -41,19 +41,19 @@ return [ ], '^.*/backend/news/create.*$' => [ [ - 'dest' => '\Modules\Editor\Controller:setUpEditorEditor', + 'dest' => '\Modules\Editor\Controller\BackendController:setUpEditorEditor', 'verb' => RouteVerb::GET, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => BackendController::MODULE_NAME, 'type' => PermissionType::CREATE, 'state' => PermissionState::NEWS, ], ], [ - 'dest' => '\Modules\News\Controller:viewNewsCreate', + 'dest' => '\Modules\News\Controller\BackendController:viewNewsCreate', 'verb' => RouteVerb::GET, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => BackendController::MODULE_NAME, 'type' => PermissionType::CREATE, 'state' => PermissionState::NEWS, ], diff --git a/Controller.php b/Controller/ApiController.php similarity index 68% rename from Controller.php rename to Controller/ApiController.php index c2afd71..49d3e58 100644 --- a/Controller.php +++ b/Controller/ApiController.php @@ -12,7 +12,7 @@ */ declare(strict_types=1); -namespace Modules\News; +namespace Modules\News\Controller; use Model\Message\FormValidation; @@ -43,180 +43,8 @@ use phpOMS\Views\View; * @link http://website.orange-management.de * @since 1.0.0 */ -final class Controller extends ModuleAbstract implements WebInterface +class ApiController extends Controller { - - /** - * Module path. - * - * @var string - * @since 1.0.0 - */ - public const MODULE_PATH = __DIR__; - - /** - * Module version. - * - * @var string - * @since 1.0.0 - */ - public const MODULE_VERSION = '1.0.0'; - - /** - * Module name. - * - * @var string - * @since 1.0.0 - */ - public const MODULE_NAME = 'News'; - - /** - * Module id. - * - * @var int - * @since 1.0.0 - */ - public const MODULE_ID = 1000600000; - - /** - * Providing. - * - * @var string[] - * @since 1.0.0 - */ - protected static $providing = []; - - /** - * Dependencies. - * - * @var string[] - * @since 1.0.0 - */ - protected static $dependencies = [ - ]; - - /** - * @param RequestAbstract $request Request - * @param ResponseAbstract $response Response - * @param mixed $data Generic data - * - * @return \Serializable - * - * @since 1.0.0 - * @codeCoverageIgnore - */ - public function viewNewsDashboard(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable - { - $view = new View($this->app, $request, $response); - - $view->setTemplate('/Modules/News/Theme/Backend/news-dashboard'); - $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000701001, $request, $response)); - - $news = NewsArticleMapper::getNewest(50); - $view->addData('news', $news); - - return $view; - } - /** - * @param RequestAbstract $request Request - * @param ResponseAbstract $response Response - * @param mixed $data Generic data - * - * @return \Serializable - * - * @since 1.0.0 - * @codeCoverageIgnore - */ - public function viewDashboard(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable - { - $view = new View($this->app, $request, $response); - $view->setTemplate('/Modules/News/Theme/Backend/dashboard-news'); - - $news = NewsArticleMapper::getNewest(5); - $view->addData('news', $news); - - return $view; - } - - /** - * @param RequestAbstract $request Request - * @param ResponseAbstract $response Response - * @param mixed $data Generic data - * - * @return \Serializable - * - * @since 1.0.0 - * @codeCoverageIgnore - */ - public function viewNewsArticle(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable - { - $view = new View($this->app, $request, $response); - - $article = NewsArticleMapper::get((int) $request->getData('id')); - $accountId = $request->getHeader()->getAccount(); - - if ($article->getCreatedBy()->getId() !== $accountId - && !$this->app->accountManager->get($accountId)->hasPermission( - PermissionType::READ, $this->app->orgId, $this->app->appName, self::MODULE_NAME, PermissionState::ARTICLE, $article->getId()) - ) { - $view->setTemplate('/Web/Backend/Error/403_inline'); - $response->getHeader()->setStatusCode(RequestStatusCode::R_403); - return $view; - } - - $view->setTemplate('/Modules/News/Theme/Backend/news-single'); - $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000701001, $request, $response)); - $view->addData('news', $article); - - return $view; - } - - /** - * @param RequestAbstract $request Request - * @param ResponseAbstract $response Response - * @param mixed $data Generic data - * - * @return \Serializable - * - * @since 1.0.0 - * @codeCoverageIgnore - */ - public function viewNewsArchive(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable - { - $view = new View($this->app, $request, $response); - - $view->setTemplate('/Modules/News/Theme/Backend/news-archive'); - $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000701001, $request, $response)); - - $articles = NewsArticleMapper::getNewest(50); - $view->addData('articles', $articles); - - return $view; - } - - /** - * @param RequestAbstract $request Request - * @param ResponseAbstract $response Response - * @param mixed $data Generic data - * - * @return \Serializable - * - * @since 1.0.0 - * @codeCoverageIgnore - */ - public function viewNewsCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable - { - $view = new View($this->app, $request, $response); - - $view->setTemplate('/Modules/News/Theme/Backend/news-create'); - $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000701001, $request, $response)); - - $editor = new \Modules\Editor\Theme\Backend\Components\Editor\BaseView($this->app, $request, $response); - $view->addData('editor', $editor); - - return $view; - } - /** * Validate news create request * diff --git a/Controller/BackendController.php b/Controller/BackendController.php new file mode 100644 index 0000000..c30ed57 --- /dev/null +++ b/Controller/BackendController.php @@ -0,0 +1,170 @@ +app, $request, $response); + + $view->setTemplate('/Modules/News/Theme/Backend/news-dashboard'); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000701001, $request, $response)); + + $news = NewsArticleMapper::getNewest(50); + $view->addData('news', $news); + + return $view; + } + /** + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return \Serializable + * + * @since 1.0.0 + * @codeCoverageIgnore + */ + public function viewDashboard(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable + { + $view = new View($this->app, $request, $response); + $view->setTemplate('/Modules/News/Theme/Backend/dashboard-news'); + + $news = NewsArticleMapper::getNewest(5); + $view->addData('news', $news); + + return $view; + } + + /** + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return \Serializable + * + * @since 1.0.0 + * @codeCoverageIgnore + */ + public function viewNewsArticle(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable + { + $view = new View($this->app, $request, $response); + + $article = NewsArticleMapper::get((int) $request->getData('id')); + $accountId = $request->getHeader()->getAccount(); + + if ($article->getCreatedBy()->getId() !== $accountId + && !$this->app->accountManager->get($accountId)->hasPermission( + PermissionType::READ, $this->app->orgId, $this->app->appName, self::MODULE_NAME, PermissionState::ARTICLE, $article->getId()) + ) { + $view->setTemplate('/Web/Backend/Error/403_inline'); + $response->getHeader()->setStatusCode(RequestStatusCode::R_403); + return $view; + } + + $view->setTemplate('/Modules/News/Theme/Backend/news-single'); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000701001, $request, $response)); + $view->addData('news', $article); + + return $view; + } + + /** + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return \Serializable + * + * @since 1.0.0 + * @codeCoverageIgnore + */ + public function viewNewsArchive(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable + { + $view = new View($this->app, $request, $response); + + $view->setTemplate('/Modules/News/Theme/Backend/news-archive'); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000701001, $request, $response)); + + $articles = NewsArticleMapper::getNewest(50); + $view->addData('articles', $articles); + + return $view; + } + + /** + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return \Serializable + * + * @since 1.0.0 + * @codeCoverageIgnore + */ + public function viewNewsCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable + { + $view = new View($this->app, $request, $response); + + $view->setTemplate('/Modules/News/Theme/Backend/news-create'); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000701001, $request, $response)); + + $editor = new \Modules\Editor\Theme\Backend\Components\Editor\BaseView($this->app, $request, $response); + $view->addData('editor', $editor); + + return $view; + } +} diff --git a/Controller/Controller.php b/Controller/Controller.php new file mode 100644 index 0000000..17e4b8d --- /dev/null +++ b/Controller/Controller.php @@ -0,0 +1,97 @@ +