diff --git a/app/controllers/admin/courseware.php b/app/controllers/admin/courseware.php index 8a3260277c033d2a3d8c2fdf985deef80200319b..958f42c4a0c80eb4b46381c6626e4cfbfd6c7db3 100644 --- a/app/controllers/admin/courseware.php +++ b/app/controllers/admin/courseware.php @@ -17,60 +17,37 @@ class Admin_CoursewareController extends AuthenticatedController { parent::before_filter($action, $args); $GLOBALS['perm']->check('root'); - PageLayout::setTitle(_('Coursewareverwaltung')); - Navigation::activateItem('/admin/locations/courseware'); } public function index_action() { - $this->setSidebar(); + PageLayout::setTitle(_('Courseware Vorlagen')); + Navigation::activateItem('/admin/locations/courseware_templates'); + $this->setIndexSidebar(); } - public function block_types_action() + public function elements_action(): void { - PageLayout::addStyleSheet('courseware.css'); - - $views = Sidebar::get()->addWidget(new ViewsWidget()); - $views->addLink(_('Templates'), $this->indexURL()); - $views->addLink(_('Block-Typen'), $this->block_typesURL())->setActive(true); - $views->addLink(_('Container-Typen'), $this->container_typesURL()); + PageLayout::setTitle(_('Courseware Inhaltselemente')); + Navigation::activateItem('/admin/locations/courseware_elements'); $this->blockTypes = BlockType::getBlockTypes(); + usort($this->blockTypes, fn($blockTypeA, $blockTypeB) => $blockTypeA::getTitle() <=> $blockTypeB::getTitle()); + + $this->containerTypes = ContainerType::getContainerTypes(); usort( - $this->blockTypes, - fn ($blockTypeA, $blockTypeB) => $blockTypeA::getTitle() <=> $blockTypeB::getTitle() + $this->containerTypes, + fn($containerTypeA, $containerTypeB) => $containerTypeA::getTitle() <=> $containerTypeB::getTitle() ); } - public function bulk_block_types_action() - { - CSRFProtection::verifyUnsafeRequest(); - - switch (Request::option('bulk_action')) { - case 'activate': - return $this->activate_block_types_action(); - case 'deactivate': - return $this->deactivate_block_types_action(); - } - - PageLayout::postInfo(_('Keine Aktion ausgewählt.')); - $this->redirect($this->action_url('block_types')); - } - - /** - */ public function activate_block_types_action() { CSRFProtection::verifyUnsafeRequest(); $requestedBlockTypes = $this->validateBlockTypes(); - $changed = array_sum( - array_map( - fn ($blockType) => $blockType::activate() ? 1 : 0, - $requestedBlockTypes - ) - ); + $changed = array_sum(array_map(fn($blockType) => $blockType::activate() ? 1 : 0, $requestedBlockTypes)); PageLayout::postSuccess( sprintf( @@ -78,22 +55,15 @@ class Admin_CoursewareController extends AuthenticatedController $changed ) ); - $this->redirect($this->action_url('block_types')); + $this->redirect($this->action_url('elements')); } - /** - */ public function deactivate_block_types_action() { CSRFProtection::verifyUnsafeRequest(); $requestedBlockTypes = $this->validateBlockTypes(); - $changed = array_sum( - array_map( - fn ($blockType) => $blockType::deactivate() ? 1 : 0, - $requestedBlockTypes - ) - ); + $changed = array_sum(array_map(fn($blockType) => $blockType::deactivate() ? 1 : 0, $requestedBlockTypes)); PageLayout::postSuccess( sprintf( @@ -101,42 +71,25 @@ class Admin_CoursewareController extends AuthenticatedController $changed ) ); - $this->redirect($this->action_url('block_types')); + $this->redirect($this->action_url('elements')); } private function validateBlockTypes(): iterable { $requestedBlockTypes = Request::getArray('block_types'); $diff = array_diff($requestedBlockTypes, BlockType::getBlockTypes()); - if (count($diff) > 0) { - throw new Trails\Exception(400); + if (count($diff)) { + throw new Trails_Exception(400); } return $requestedBlockTypes; } - public function container_types_action() - { - PageLayout::addStyleSheet('courseware.css'); - - $views = Sidebar::get()->addWidget(new ViewsWidget()); - $views->addLink(_('Templates'), $this->indexURL()); - $views->addLink(_('Block-Typen'), $this->block_typesURL()); - $views->addLink(_('Container-Typen'), $this->container_typesURL())->setActive(true); - - $this->containerTypes = ContainerType::getContainerTypes(); - - usort( - $this->containerTypes, - fn ($containerTypeA, $containerTypeB) => $containerTypeA::getTitle() <=> $containerTypeB::getTitle(), - ); - } - public function bulk_container_types_action() { CSRFProtection::verifyUnsafeRequest(); - switch (Request::get('bulk_action')) { + switch (Request::quoted('bulk_action')) { case 'activate': return $this->activate_container_types_action(); case 'deactivate': @@ -147,18 +100,13 @@ class Admin_CoursewareController extends AuthenticatedController $this->redirect($this->action_url('container_types')); } - /** - */ public function activate_container_types_action() { CSRFProtection::verifyUnsafeRequest(); $requestedContainerTypes = $this->validateContainerTypes(); $changed = array_sum( - array_map( - fn ($containerType) => $containerType::activate() ? 1 : 0, - $requestedContainerTypes - ) + array_map(fn($containerType) => $containerType::activate() ? 1 : 0, $requestedContainerTypes) ); PageLayout::postSuccess( @@ -178,15 +126,16 @@ class Admin_CoursewareController extends AuthenticatedController $requestedContainerTypes = $this->validateContainerTypes(); $changed = array_sum( - array_map( - fn ($containerType) => $containerType::deactivate() ? 1 : 0, - $requestedContainerTypes - ) + array_map(fn($containerType) => $containerType::deactivate() ? 1 : 0, $requestedContainerTypes) ); PageLayout::postSuccess( sprintf( - ngettext('Container-Typ erfolgreich deaktiviert.', '%d Container-Typen erfolgreich deaktiviert.', $changed), + ngettext( + 'Container-Typ erfolgreich deaktiviert.', + '%d Container-Typen erfolgreich deaktiviert.', + $changed + ), $changed ) ); @@ -198,20 +147,15 @@ class Admin_CoursewareController extends AuthenticatedController $requestedContainerTypes = Request::getArray('container_types'); $diff = array_diff($requestedContainerTypes, ContainerType::getContainerTypes()); if (count($diff)) { - throw new Trails\Exception(400); + throw new Trails_Exception(400); } return $requestedContainerTypes; } - private function setSidebar() + private function setIndexSidebar() { $sidebar = Sidebar::Get(); - $views = new TemplateWidget( - _('Ansichten'), - $this->get_template_factory()->open('admin/courseware/admin_view_widget') - ); - $sidebar->addWidget($views)->addLayoutCSSClass('courseware-admin-view-widget'); $views = new TemplateWidget( _('Aktionen'), diff --git a/resources/assets/stylesheets/scss/courseware/admin.scss b/resources/assets/stylesheets/scss/courseware/admin.scss deleted file mode 100644 index 3f28b50ba01f6cf150b37ac26eefd8fb521fd64a..0000000000000000000000000000000000000000 --- a/resources/assets/stylesheets/scss/courseware/admin.scss +++ /dev/null @@ -1,56 +0,0 @@ -.cw-admin-block-types, -.cw-admin-container-types { - tbody { - td { - padding-block-end: 0.625rem; - } - - tr.activated td { - background-color: var(--content-color-10); - } - - tr.activated td:first-child { - border-inline-start: 0.25rem solid var(--content-color); - } - - td:nth-child(2) { - vertical-align: middle; - width: 20px; - } - - td:nth-child(2) span { - display: inline-block; - height: 20px; - width: 20px; - } - - td:nth-child(3) span:last-of-type { - opacity: 0.5; - } - - td:nth-child(4) p { - display: -webkit-box; - min-height: 3em; - overflow: hidden; - -webkit-box-orient: vertical; - -webkit-line-clamp: 2; - } - } - - thead tr th:first-child, - tbody tr:not(.activated) td:first-child { - border-inline-start: 1px solid var(--content-color-20); - } -} - -@each $item, $icon in $blockadder-items { - .cw-admin-block-types .cw-block-type-#{$item} { - @include background-icon($icon, info, 20); - } -} - -@each $item, $icon in $containeradder-items { - .cw-admin-container-types .cw-container-type-#{$item} { - @include background-icon($icon, info, 20); - } -}