diff --git a/Admin/Routes/Web/Backend.php b/Admin/Routes/Web/Backend.php index eb4593e..40caf07 100755 --- a/Admin/Routes/Web/Backend.php +++ b/Admin/Routes/Web/Backend.php @@ -80,7 +80,7 @@ return [ ], '^/kanban/card/create(\?.*$|$)' => [ [ - 'dest' => '\Modules\Kanban\Controller\BackendController:viewKanbanCard', + 'dest' => '\Modules\Kanban\Controller\BackendController:viewKanbanCardCreate', 'verb' => RouteVerb::GET, 'active' => true, 'permission' => [ diff --git a/Controller/BackendController.php b/Controller/BackendController.php index df19f98..75ad42d 100755 --- a/Controller/BackendController.php +++ b/Controller/BackendController.php @@ -106,6 +106,12 @@ final class BackendController extends Controller public function viewKanbanBoard(RequestAbstract $request, ResponseAbstract $response, array $data = []) : RenderableInterface { $view = new View($this->app->l11nManager, $request, $response); + if (!$request->hasData('id')) { + $response->header->status = RequestStatusCode::R_404; + $view->setTemplate('/Web/Backend/Error/404'); + + return $view; + } /** @var \Modules\Kanban\Models\KanbanBoard $board */ $board = KanbanBoardMapper::get() @@ -117,6 +123,7 @@ final class BackendController extends Controller ->with('columns/cards/tags/title') ->where('id', (int) $request->getData('id')) ->where('columns/cards/tags/title/language', $request->header->l11n->language) + ->sort('columns/order', OrderType::ASC) ->execute(); $accountId = $request->header->account; @@ -138,6 +145,39 @@ final class BackendController extends Controller return $view; } + /** + * Routing end-point for application behavior. + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param array $data Generic data + * + * @return RenderableInterface + * + * @since 1.0.0 + * @codeCoverageIgnore + */ + public function viewKanbanBoardEdit(RequestAbstract $request, ResponseAbstract $response, array $data = []) : RenderableInterface + { + $view = new View($this->app->l11nManager, $request, $response); + if (!$request->hasData('id')) { + $response->header->status = RequestStatusCode::R_404; + $view->setTemplate('/Web/Backend/Error/404'); + + return $view; + } + + $view->setTemplate('/Modules/Kanban/Theme/Backend/kanban-board-create'); + $view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1005801001, $request, $response); + + $view->data['board'] = KanbanBoardMapper::get() + ->with('columns') + ->where('id', (int) $request->getData('id')) + ->execute(); + + return $view; + } + /** * Routing end-point for application behavior. * @@ -185,9 +225,7 @@ final class BackendController extends Controller { $view = new View($this->app->l11nManager, $request, $response); - $accountId = $request->header->account; - - if (!$this->app->accountManager->get($accountId)->hasPermission( + if (!$this->app->accountManager->get($request->header->account)->hasPermission( PermissionType::CREATE, $this->app->unitId, $this->app->appId, self::NAME, PermissionCategory::BOARD) ) { $view->setTemplate('/Web/Backend/Error/403_inline'); @@ -219,6 +257,12 @@ final class BackendController extends Controller public function viewKanbanCard(RequestAbstract $request, ResponseAbstract $response, array $data = []) : RenderableInterface { $view = new View($this->app->l11nManager, $request, $response); + if (!$request->hasData('id')) { + $response->header->status = RequestStatusCode::R_404; + $view->setTemplate('/Web/Backend/Error/404'); + + return $view; + } /** @var \Modules\Kanban\Models\KanbanCard $card */ $card = KanbanCardMapper::get() @@ -279,4 +323,32 @@ final class BackendController extends Controller return $view; } + + /** + * Routing end-point for application behavior. + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param array $data Generic data + * + * @return RenderableInterface + * + * @since 1.0.0 + * @codeCoverageIgnore + */ + public function viewKanbanCardCreate(RequestAbstract $request, ResponseAbstract $response, array $data = []) : RenderableInterface + { + $view = new View($this->app->l11nManager, $request, $response); + if (!$request->hasData('column')) { + $response->header->status = RequestStatusCode::R_404; + $view->setTemplate('/Web/Backend/Error/404'); + + return $view; + } + + $view->setTemplate('/Modules/Kanban/Theme/Backend/kanban-card'); + $view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1005801001, $request, $response); + + return $view; + } } diff --git a/Theme/Backend/Lang/de.lang.php b/Theme/Backend/Lang/de.lang.php index 303ff21..1f7598c 100755 --- a/Theme/Backend/Lang/de.lang.php +++ b/Theme/Backend/Lang/de.lang.php @@ -20,6 +20,9 @@ return ['Kanban' => [ 'Back' => 'Zurück', 'Date' => 'Datum', 'Description' => 'Beschreibung', + 'Columns' => 'Spalten', + 'Column' => 'Spalte', + 'Order' => 'Order', 'Board' => 'Board', 'Name' => 'Name', 'Status' => 'Status', diff --git a/Theme/Backend/Lang/en.lang.php b/Theme/Backend/Lang/en.lang.php index c072d95..e458af8 100755 --- a/Theme/Backend/Lang/en.lang.php +++ b/Theme/Backend/Lang/en.lang.php @@ -20,6 +20,9 @@ return ['Kanban' => [ 'Back' => 'Back', 'Date' => 'Date', 'Description' => 'Description', + 'Order' => 'Order', + 'Columns' => 'Columns', + 'Column' => 'Column', 'Board' => 'Board', 'Name' => 'Name', 'Status' => 'Status', diff --git a/Theme/Backend/kanban-board-create.tpl.php b/Theme/Backend/kanban-board-create.tpl.php index ced9a82..2ebd178 100755 --- a/Theme/Backend/kanban-board-create.tpl.php +++ b/Theme/Backend/kanban-board-create.tpl.php @@ -11,33 +11,133 @@ * @link https://jingga.app */ declare(strict_types=1); + +use Modules\Kanban\Models\NullKanbanBoard; +use phpOMS\Uri\UriFactory; + +$board = $this->data['board'] ?? new NullKanbanBoard(); +$isNew = $board->id === 0; + echo $this->data['nav']->render(); ?>