From 4355ded9bc56e0b06fbceffe61ddc37061cc3bc7 Mon Sep 17 00:00:00 2001 From: Ron Lucke Date: Mon, 14 Jul 2025 09:36:18 +0200 Subject: Color-Themes-System, fixes #5361 Closes #5361 Merge request studip/studip!4038 --- app/controllers/admin/courses.php | 4 +- app/controllers/admin/layout.php | 40 + app/controllers/course/contentmodules.php | 3 +- app/controllers/course/members.php | 2 +- app/controllers/course/room_requests.php | 4 +- app/controllers/course/wiki.php | 4 +- app/controllers/materialien/files.php | 2 +- app/controllers/messages.php | 8 +- app/controllers/oer/admin.php | 4 +- app/views/admin/autoinsert/index.php | 2 +- app/views/admin/banner/index.php | 8 +- .../admin/configuration/edit_configuration.php | 4 +- app/views/admin/configuration/table-row.php | 4 +- app/views/admin/course_wizard_steps/edit.php | 2 +- app/views/admin/course_wizard_steps/index.php | 2 +- app/views/admin/courseplanning/nonconform.php | 2 +- app/views/admin/cronjobs/logs/index.php | 10 +- app/views/admin/cronjobs/schedules/index.php | 12 +- app/views/admin/cronjobs/tasks/index.php | 8 +- app/views/admin/datafields/index.php | 22 +- app/views/admin/domain/index.php | 4 +- app/views/admin/holidays/index.php | 2 +- app/views/admin/ilias_interface/edit_server.php | 4 +- app/views/admin/ilias_interface/index.php | 4 +- app/views/admin/licenses/index.php | 4 +- app/views/admin/lockrules/index.php | 2 +- app/views/admin/login_style/newpic.php | 2 +- app/views/admin/overlapping/conflicts.php | 2 +- app/views/admin/overlapping/courses.php | 2 +- app/views/admin/plugin/index.php | 2 +- app/views/admin/plugin/upload-drag-and-drop.php | 2 +- app/views/admin/role/assign_role.php | 2 +- app/views/admin/role/index.php | 2 +- app/views/admin/sem_classes/_sem_type.php | 6 +- app/views/admin/sem_classes/details.php | 8 +- app/views/admin/sem_classes/overview.php | 4 +- app/views/admin/specification/index.php | 4 +- app/views/admin/user/_results.php | 2 +- app/views/admin/user/activities.php | 2 +- app/views/admin/user/edit.php | 6 +- app/views/admission/courseset/index.php | 8 +- app/views/admission/courseset/institutes.php | 4 +- app/views/admission/ruleadministration/index.php | 4 +- app/views/blubber/compose.php | 14 +- app/views/blubber/private_to_studygroup.php | 6 +- app/views/calendar/calendar/share_select.php | 4 +- app/views/calendar/contentbox/_termin.php | 12 +- app/views/calendar/contentbox/display.php | 6 +- app/views/calendar/date/_add_edit_form.php | 2 +- app/views/calendar/schedule/course_info.php | 4 +- app/views/consultation/overview/booked.php | 2 +- app/views/consultation/overview/index.php | 6 +- app/views/consultation/overview/ungrouped.php | 6 +- app/views/contents/courseware/courses_overview.php | 2 +- app/views/contents/overview/index.php | 2 +- app/views/course/basicdata/view.php | 8 +- app/views/course/contentmodules/info.php | 2 +- app/views/course/dates/_date_row-exdate.php | 2 +- app/views/course/dates/_date_row.php | 2 +- app/views/course/dates/_topic_li.php | 4 +- app/views/course/dates/current_day_dates.php | 2 +- app/views/course/details/index.php | 2 +- app/views/course/forum/discussion_types/index.php | 2 +- app/views/course/ilias_interface/add_object.php | 2 +- app/views/course/management/index.php | 2 +- app/views/course/statusgroups/_group.php | 4 +- app/views/course/studygroup/_members_gallery.php | 2 +- app/views/course/studygroup/_members_list.php | 2 +- app/views/course/studygroup/_members_options.php | 6 +- app/views/course/studygroup/members.php | 6 +- app/views/course/studygroup/widget.php | 4 +- app/views/course/timesrooms/_regularEvents.php | 2 +- app/views/course/timesrooms/_roomRequest.php | 2 +- app/views/course/timesrooms/editDate.php | 2 +- app/views/course/topics/edit.php | 8 +- app/views/course/topics/index.php | 8 +- app/views/course/wiki/ask_deleting.php | 4 +- app/views/course/wiki/blame.php | 4 +- app/views/course/wiki/history.php | 8 +- app/views/course/wiki/import.php | 4 +- app/views/course/wiki/newpages.php | 2 +- app/views/course/wiki/search.php | 2 +- app/views/event_log/show.php | 2 +- app/views/fachabschluss/abschluesse/details.php | 2 +- app/views/fachabschluss/abschluesse/index.php | 4 +- app/views/fachabschluss/faecher/details.php | 2 +- .../fachabschluss/faecher/details_fachbereich.php | 2 +- app/views/fachabschluss/faecher/fach.php | 2 +- app/views/fachabschluss/faecher/index.php | 4 +- app/views/fachabschluss/kategorien/index.php | 4 +- app/views/file/_terms_of_use_select.php | 6 +- app/views/file/add_files_window.php | 18 +- app/views/file/add_from_library.php | 6 +- app/views/file/choose_file.php | 10 +- app/views/file/choose_file_from_course.php | 2 +- app/views/file/choose_folder.php | 10 +- app/views/file/new_edit_folder_form.php | 6 +- app/views/file/oer_post_upload.php | 18 +- app/views/file/suggest_oer.php | 2 +- app/views/file/unzipquestion.php | 2 +- app/views/file/upload_window.php | 6 +- app/views/files/_fileref_tr.php | 8 +- app/views/files/_folder_tr.php | 2 +- app/views/files/configure.php | 2 +- app/views/files_dashboard/_input-group-search.php | 2 +- app/views/files_dashboard/_search_tr.php | 8 +- app/views/help_content/admin_overview.php | 4 +- app/views/institute/extern/new.php | 2 +- app/views/login/index.php | 4 +- app/views/lti/_link_user_info.php | 4 +- app/views/lti/_tool_info.php | 6 +- app/views/lvgruppen/lvgruppen/details.php | 4 +- app/views/materialien/files/add_dokument.php | 14 +- app/views/materialien/files/index.php | 4 +- app/views/messages/_message_row.php | 4 +- app/views/messages/overview.php | 10 +- app/views/messages/read.php | 10 +- app/views/messages/write.php | 26 +- app/views/module/module/modul.php | 8 +- app/views/module/module/module.php | 4 +- app/views/module/module/modulteil.php | 2 +- app/views/multipersonsearch/js_form.php | 4 +- app/views/my_courses/_deputy_bosses.php | 6 +- app/views/my_courses/archive.php | 14 +- app/views/my_courses/waiting_list.php | 6 +- app/views/my_ilias_accounts/my_courses.php | 6 +- app/views/my_institutes/index.php | 4 +- app/views/my_studygroups/_course.php | 8 +- app/views/news/display.php | 10 +- app/views/oer/admin/hosts.php | 10 +- app/views/oer/embed/_link.php | 2 +- app/views/oer/embed/standard.php | 2 +- app/views/oer/market/_details_file.php | 4 +- app/views/oer/market/_material_short.php | 2 +- app/views/oer/market/add_to_course.php | 2 +- .../oer/market/add_to_course_select_class.php | 2 +- app/views/oer/market/details.php | 24 +- app/views/oer/market/discussion.php | 2 +- app/views/oer/mymaterial/_material_list.php | 22 +- app/views/oer/mymaterial/edit.php | 4 +- app/views/privacy/landing.php | 2 +- app/views/profile_modules/index.php | 2 +- app/views/public_courses/index.php | 2 +- .../_answer_description_container.php | 2 +- .../questionnaire/_overview_questionnaire.php | 2 +- app/views/questionnaire/_question.php | 16 +- app/views/questionnaire/_widget_questionnaire.php | 4 +- app/views/questionnaire/add_to_context.php | 6 +- app/views/questionnaire/context.php | 12 +- .../automated_data/_evaluation_part.php | 2 +- .../question_types/likert/likert_evaluation.php | 2 +- .../rangescale/rangescale_evaluation.php | 2 +- .../question_types/vote/vote_evaluation.php | 2 +- app/views/questionnaire/widget.php | 10 +- app/views/resources/_common/_resource_tr.php | 2 +- app/views/resources/admin/properties.php | 2 +- app/views/resources/admin/user_permissions.php | 10 +- app/views/resources/booking/_add_edit_form.php | 16 +- app/views/resources/booking/index.php | 4 +- app/views/resources/building/index.php | 2 +- app/views/resources/category/_add_edit_form.php | 2 +- app/views/resources/category/details.php | 2 +- app/views/resources/location/index.php | 2 +- app/views/resources/messages/index.php | 4 +- .../resource/_standard_properties_display_part.php | 4 +- app/views/resources/resource/files.php | 2 +- app/views/resources/room_request/overview.php | 2 +- app/views/resources/room_request/resolve.php | 2 +- .../resources/room_request/resolve_room_tr.php | 16 +- app/views/room_management/overview/index.php | 2 +- .../room_management/planning/copy_bookings.php | 2 +- app/views/score/index.php | 10 +- app/views/search/globalsearch/index.php | 10 +- app/views/search/module/_drill_down_list.php | 4 +- app/views/search/module/_modul.php | 2 +- app/views/search/stgtable/index.php | 2 +- app/views/search/studiengaenge/mehrfach.php | 4 +- app/views/search/studiengaenge/verlauf.php | 2 +- app/views/settings/categories.php | 12 +- app/views/settings/messaging.php | 2 +- app/views/settings/statusgruppen/index.php | 8 +- app/views/settings/statusgruppen/modify.php | 4 +- .../settings/statusgruppen/modify_institute.php | 2 +- app/views/settings/userdomains.php | 2 +- app/views/shared/filter.php | 2 +- app/views/shared/form_dokumente.php | 6 +- app/views/shared/info_search.php | 2 +- app/views/shared/inst_chooser.php | 25 - app/views/shared/language_chooser.php | 2 +- app/views/shared/version/_versionmodule.php | 2 +- app/views/siteinfo/markup/uniContact.php | 2 +- app/views/start/_widget.php | 6 +- .../studiengaenge/fachbereichestgteile/index.php | 2 +- app/views/studiengaenge/faecher/index.php | 2 +- app/views/studiengaenge/informationen/degree.php | 2 +- app/views/studiengaenge/informationen/index.php | 2 +- .../studiengaenge/stgteilbezeichnungen/index.php | 2 +- .../studiengaenge/aufbaustg_table.php | 2 +- .../studiengaenge/studiengaenge/studiengaenge.php | 2 +- .../studiengaenge/studiengaenge/studiengang.php | 4 +- .../studiengangteile/details_grouped.php | 2 +- .../studiengaenge/studiengangteile/stgteil.php | 2 +- .../studiengaenge/versionen/details_abschnitt.php | 4 +- app/views/studiengaenge/versionen/modulteile.php | 2 +- app/views/studiengaenge/versionen/versionen.php | 4 +- app/views/userfilter/filter/configure.php | 2 +- app/views/vips/exam_mode/index.php | 2 +- app/views/vips/exercises/ClozeTask/correct.php | 8 +- app/views/vips/exercises/ClozeTask/print.php | 6 +- app/views/vips/exercises/MatchingTask/correct.php | 8 +- app/views/vips/exercises/MatchingTask/print.php | 8 +- .../vips/exercises/MatrixChoiceTask/correct.php | 4 +- .../vips/exercises/MatrixChoiceTask/print.php | 4 +- .../vips/exercises/MultipleChoiceTask/correct.php | 4 +- .../vips/exercises/MultipleChoiceTask/print.php | 4 +- app/views/vips/exercises/SequenceTask/correct.php | 8 +- app/views/vips/exercises/SequenceTask/print.php | 8 +- .../vips/exercises/SingleChoiceTask/correct.php | 4 +- .../vips/exercises/SingleChoiceTask/print.php | 4 +- app/views/vips/exercises/TextLineTask/correct.php | 8 +- app/views/vips/exercises/TextLineTask/print.php | 6 +- app/views/vips/exercises/TextTask/correct.php | 2 +- app/views/vips/exercises/TextTask/solve.php | 6 +- app/views/vips/sheets/add_exercise_dialog.php | 10 +- app/views/vips/sheets/content_bar_icons.php | 8 +- app/views/vips/sheets/copy_assignment_dialog.php | 2 +- app/views/vips/sheets/copy_exercise_dialog.php | 2 +- app/views/vips/sheets/edit_assignment.php | 8 +- app/views/vips/sheets/edit_exercise.php | 8 +- app/views/vips/sheets/show_assignment.php | 8 +- app/views/vips/sheets/show_exercise_link.php | 2 +- app/views/vips/solutions/assignment_solutions.php | 8 +- app/views/vips/solutions/assignments_list.php | 4 +- app/views/vips/solutions/edit_solution.php | 20 +- app/views/vips/solutions/feedback_files_table.php | 2 +- .../solutions/student_assignment_solutions.php | 4 +- db/migrations/6.1.13_add_themes_config.php | 57 + db/migrations/6.1.14_add_themes_table.php | 76 + .../coursememberadmission/templates/info.php | 2 +- lib/classes/Icon.php | 100 +- lib/classes/JsonApi/RouteMap.php | 10 + lib/classes/JsonApi/Routes/Themes/Authority.php | 32 + lib/classes/JsonApi/Routes/Themes/ThemesCreate.php | 55 + lib/classes/JsonApi/Routes/Themes/ThemesDelete.php | 28 + lib/classes/JsonApi/Routes/Themes/ThemesIndex.php | 29 + lib/classes/JsonApi/Routes/Themes/ThemesShow.php | 26 + lib/classes/JsonApi/Routes/Themes/ThemesUpdate.php | 86 + lib/classes/JsonApi/SchemaMap.php | 1 + lib/classes/JsonApi/Schemas/Theme.php | 62 + lib/classes/PageLayout.php | 27 + lib/classes/forms/Link.php | 2 +- lib/classes/globalsearch/GlobalSearchCourses.php | 6 +- .../globalsearch/GlobalSearchStudygroups.php | 6 +- .../sidebar/CourseManagementSelectWidget.php | 2 +- lib/classes/sidebar/LinkElement.php | 35 +- lib/ilias_interface/IliasModule.php | 2 +- lib/models/OERReview.php | 10 +- lib/models/Theme.php | 95 + .../resources/ResourcePropertyDefinition.php | 2 +- lib/navigation/AdminNavigation.php | 9 +- lib/navigation/Navigation.php | 2 +- lib/statusgruppe.inc.php | 2 +- package-lock.json | 3540 +++++--------------- package.json | 1 + public/assets/stylesheets/theme.php | 37 + .../assets/javascripts/bootstrap/inline-editing.js | 48 - resources/assets/javascripts/entry-base.js | 1 - resources/assets/javascripts/init.js | 2 - resources/assets/javascripts/lib/course_wizard.js | 94 +- resources/assets/javascripts/lib/fullcalendar.js | 22 +- resources/assets/javascripts/lib/icon-loader.ts | 97 + resources/assets/javascripts/lib/inline-editing.js | 138 - resources/assets/javascripts/lib/members.js | 15 +- resources/assets/javascripts/mvv.js | 6 +- resources/assets/javascripts/mvv_course_wizard.js | 8 +- resources/assets/stylesheets/fullcalendar.scss | 17 +- resources/assets/stylesheets/highcontrast.scss | 6 +- resources/assets/stylesheets/mixins/colors.scss | 56 +- resources/assets/stylesheets/mixins/misc.scss | 55 +- resources/assets/stylesheets/mixins/studip.scss | 22 +- resources/assets/stylesheets/print.scss | 6 +- resources/assets/stylesheets/scss/actionmenu.scss | 22 +- .../assets/stylesheets/scss/admin-courses.scss | 34 +- resources/assets/stylesheets/scss/admin.scss | 29 +- resources/assets/stylesheets/scss/article.scss | 7 + resources/assets/stylesheets/scss/buttons.scss | 104 +- resources/assets/stylesheets/scss/calendar.scss | 18 +- resources/assets/stylesheets/scss/colorpicker.scss | 99 + resources/assets/stylesheets/scss/contentbar.scss | 14 +- resources/assets/stylesheets/scss/contents.scss | 20 +- resources/assets/stylesheets/scss/courseware.scss | 10 +- .../stylesheets/scss/courseware/blockadder.scss | 86 +- .../stylesheets/scss/courseware/blocks/audio.scss | 18 +- .../scss/courseware/blocks/biography.scss | 12 +- .../scss/courseware/blocks/blubber.scss | 12 +- .../stylesheets/scss/courseware/blocks/canvas.scss | 87 +- .../stylesheets/scss/courseware/blocks/code.scss | 12 +- .../scss/courseware/blocks/confirm.scss | 2 +- .../scss/courseware/blocks/default-block.scss | 30 +- .../scss/courseware/blocks/dialog-cards.scss | 43 +- .../scss/courseware/blocks/document.scss | 14 +- .../stylesheets/scss/courseware/blocks/files.scss | 96 +- .../scss/courseware/blocks/gallery.scss | 20 +- .../scss/courseware/blocks/headline.scss | 161 +- .../stylesheets/scss/courseware/blocks/iframe.scss | 4 +- .../scss/courseware/blocks/keypoint.scss | 4 +- .../stylesheets/scss/courseware/blocks/link.scss | 34 +- .../stylesheets/scss/courseware/blocks/lti.scss | 8 +- .../scss/courseware/blocks/table-of-contents.scss | 14 +- .../scss/courseware/blocks/timeline.scss | 59 +- .../stylesheets/scss/courseware/comments.scss | 6 +- .../scss/courseware/containers/accordion.scss | 2 +- .../courseware/containers/default-container.scss | 10 +- .../scss/courseware/containers/list.scss | 2 +- .../scss/courseware/containers/tabs.scss | 2 +- .../stylesheets/scss/courseware/dashboard.scss | 2 +- .../scss/courseware/layouts/call-to-action.scss | 9 +- .../scss/courseware/layouts/collapsible.scss | 14 +- .../scss/courseware/layouts/companion.scss | 26 +- .../scss/courseware/layouts/import-zip.scss | 4 +- .../scss/courseware/layouts/progress.scss | 16 +- .../scss/courseware/layouts/radioset.scss | 14 +- .../scss/courseware/layouts/ribbon.scss | 102 +- .../stylesheets/scss/courseware/layouts/tabs.scss | 48 +- .../stylesheets/scss/courseware/layouts/tile.scss | 20 +- .../scss/courseware/layouts/tree-units.scss | 6 +- .../stylesheets/scss/courseware/layouts/tree.scss | 52 +- .../assets/stylesheets/scss/courseware/shelf.scss | 6 +- .../stylesheets/scss/courseware/sortable.scss | 8 +- .../scss/courseware/structural-element.scss | 18 +- .../assets/stylesheets/scss/courseware/tasks.scss | 12 + .../stylesheets/scss/courseware/toolbar.scss | 24 +- .../stylesheets/scss/courseware/variables.scss | 19 - .../stylesheets/scss/courseware/widgets.scss | 62 +- .../stylesheets/scss/courseware/wizards.scss | 17 +- resources/assets/stylesheets/scss/css_tree.scss | 3 +- resources/assets/stylesheets/scss/dashboard.scss | 8 +- resources/assets/stylesheets/scss/dialog.scss | 88 +- resources/assets/stylesheets/scss/documents.scss | 6 +- resources/assets/stylesheets/scss/files.scss | 20 +- resources/assets/stylesheets/scss/forms.scss | 28 +- resources/assets/stylesheets/scss/forum.scss | 102 +- resources/assets/stylesheets/scss/fullscreen.scss | 4 +- .../assets/stylesheets/scss/globalsearch.scss | 24 +- resources/assets/stylesheets/scss/header.scss | 26 +- resources/assets/stylesheets/scss/helpbar.scss | 19 +- resources/assets/stylesheets/scss/icons.scss | 26 + resources/assets/stylesheets/scss/index.scss | 9 +- .../assets/stylesheets/scss/jquery-ui/custom.scss | 26 +- .../assets/stylesheets/scss/jquery-ui/studip.scss | 9 +- resources/assets/stylesheets/scss/layouts.scss | 2 +- resources/assets/stylesheets/scss/links.scss | 18 +- resources/assets/stylesheets/scss/messagebox.scss | 77 +- resources/assets/stylesheets/scss/messages.scss | 37 +- resources/assets/stylesheets/scss/mvv.scss | 4 +- resources/assets/stylesheets/scss/my_courses.scss | 24 +- .../stylesheets/scss/navigation-hoverborder.scss | 10 +- resources/assets/stylesheets/scss/navigation.scss | 26 +- resources/assets/stylesheets/scss/oer.scss | 7 +- resources/assets/stylesheets/scss/opengraph.scss | 16 +- resources/assets/stylesheets/scss/pagination.scss | 9 +- .../stylesheets/scss/personal-notifications.scss | 43 +- .../stylesheets/scss/progress_indicator.scss | 3 +- .../assets/stylesheets/scss/questionnaire.scss | 4 + resources/assets/stylesheets/scss/quicksearch.scss | 19 +- resources/assets/stylesheets/scss/raumzeit.scss | 21 +- resources/assets/stylesheets/scss/report.scss | 94 - resources/assets/stylesheets/scss/resources.scss | 14 +- resources/assets/stylesheets/scss/responsive.scss | 4 +- resources/assets/stylesheets/scss/root.scss | 48 +- .../assets/stylesheets/scss/scroll-to-top.scss | 10 +- resources/assets/stylesheets/scss/search.scss | 18 +- resources/assets/stylesheets/scss/select.scss | 9 +- resources/assets/stylesheets/scss/selects.scss | 27 +- resources/assets/stylesheets/scss/sidebar.scss | 90 +- resources/assets/stylesheets/scss/start.scss | 2 +- .../assets/stylesheets/scss/studip-cke-ui.scss | 100 +- .../assets/stylesheets/scss/studip-selection.scss | 18 +- .../stylesheets/scss/system-notifications.scss | 44 +- .../assets/stylesheets/scss/table_of_contents.scss | 10 +- resources/assets/stylesheets/scss/tables.scss | 106 +- resources/assets/stylesheets/scss/tabs.scss | 16 +- resources/assets/stylesheets/scss/themes.scss | 249 ++ resources/assets/stylesheets/scss/tree.scss | 11 +- resources/assets/stylesheets/scss/typography.scss | 4 +- resources/assets/stylesheets/scss/variables.scss | 24 +- resources/assets/stylesheets/scss/vips.scss | 26 +- resources/assets/stylesheets/scss/wiki.scss | 17 +- resources/assets/stylesheets/scss/wizard.scss | 34 +- resources/assets/stylesheets/studip.scss | 31 +- resources/vue/apps/ThemeSettings.vue | 52 + .../vue/components/ContentModulesEditTiles.vue | 22 +- .../vue/components/ContentmodulesEditTable.vue | 15 +- resources/vue/components/FilesTable.vue | 3 +- resources/vue/components/StudipDialog.vue | 75 +- resources/vue/components/StudipFileChooser.vue | 2 +- resources/vue/components/StudipIcon.vue | 144 +- resources/vue/components/StudipModalLeave.vue | 94 + resources/vue/components/StudipSquareButton.vue | 31 +- resources/vue/components/avatar/AvatarApp.vue | 7 - .../vue/components/colorPicker/ColorPicker.vue | 92 + .../vue/components/colorPicker/colorPalette.ts | 13 + .../courseware/blocks/CoursewareCanvasBlock.vue | 1 - .../courseware/blocks/CoursewareHeadlineBlock.vue | 97 +- .../courseware/blocks/CoursewareKeyPointBlock.vue | 13 +- .../structural-element/CoursewareRootContent.vue | 2 +- .../CoursewareStructuralElement.vue | 6 +- ...CoursewareStructuralElementDialogAddChooser.vue | 11 +- ...rsewareStructuralElementDialogExportChooser.vue | 11 +- .../structural-element/CoursewareToolsContents.vue | 8 +- .../CoursewareToolsUnitsItem.vue | 4 +- .../structural-element/CoursewareTreeItemAdder.vue | 17 - .../courseware/tasks/CoursewareDashboardTasks.vue | 8 +- .../vue/components/courseware/tasks/TaskGroup.vue | 6 - .../courseware/tasks/TaskGroupTaskItem.vue | 2 +- .../toolbar/CoursewareContainerAdderItem.vue | 14 +- .../courseware/toolbar/CoursewareToolbarBlocks.vue | 2 +- .../unit/CoursewareShelfDialogAddChooser.vue | 11 +- .../courseware/widgets/CoursewareExportWidget.vue | 95 - .../courseware/widgets/CoursewareImportWidget.vue | 60 - .../widgets/CoursewareTasksActionWidget.vue | 25 +- .../vue/components/file-chooser/FileChooserBox.vue | 14 +- .../file-chooser/FileChooserBreadcrumb.vue | 6 +- .../components/file-chooser/FileChooserDialog.vue | 34 +- .../components/file-chooser/FileChooserToolbar.vue | 11 +- .../components/file-chooser/FileChooserTree.vue | 77 +- .../vue/components/my-courses/ColorPicker.vue | 9 +- .../components/responsive/ResponsiveContentBar.vue | 6 +- .../vue/components/theme/ThemeAddCopyDialog.vue | 73 + resources/vue/components/theme/ThemeAddDialog.vue | 60 + .../vue/components/theme/ThemeAddImportDialog.vue | 125 + .../vue/components/theme/ThemeDeleteDialog.vue | 14 + resources/vue/components/theme/ThemeEditor.vue | 308 ++ resources/vue/components/theme/ThemeExport.vue | 44 + resources/vue/components/theme/ThemeList.vue | 91 + resources/vue/mixins/courseware/colors.js | 16 + resources/vue/store/theme-settings.module.js | 124 + templates/admin/topLinks.php | 12 +- templates/blubber/coursegroup_context.php | 4 +- templates/blubber/disable-notifications.php | 8 +- templates/blubber/global_context.php | 6 +- templates/blubber/private_context.php | 18 +- templates/blubber/public_context.php | 6 +- templates/contact/header-groups.php | 2 +- templates/contentbar/contentbar.php | 4 +- templates/forms/form.php | 2 +- templates/header-navigation-item.php | 2 +- templates/header.php | 12 +- templates/helpbar/helpbar.php | 12 +- templates/layouts/base.php | 4 +- templates/mail/notification_html.php | 2 +- templates/multipersonsearch/link.php | 2 +- templates/online/user.php | 18 +- templates/personal_notifications/notification.php | 4 +- templates/quicksearch/inputfield.php | 2 +- templates/shared/action-menu-single.php | 4 +- templates/shared/action-menu.php | 4 +- templates/shared/content_box.php | 2 +- templates/shared/index_box.php | 4 +- templates/sidebar/list-widget.php | 7 +- templates/sidebar/resource-tree-widget.php | 4 +- .../resources_individual_booking_plan_sidebar.php | 2 +- templates/sidebar/room-clipboard-item.php | 4 +- .../sidebar/room-search-criteria-templates.php | 8 +- templates/sidebar/room-search-tree-widget.php | 4 +- templates/start/contents.php | 2 +- templates/tabs.php | 6 +- templates/toc/_toc-item-list.php | 2 +- templates/toc/generic-toc-list.php | 2 +- templates/userfilter/display.php | 2 +- tests/unit/lib/classes/IconClassTest.php | 195 +- 471 files changed, 5689 insertions(+), 6101 deletions(-) create mode 100644 app/controllers/admin/layout.php delete mode 100644 app/views/shared/inst_chooser.php create mode 100644 db/migrations/6.1.13_add_themes_config.php create mode 100644 db/migrations/6.1.14_add_themes_table.php create mode 100644 lib/classes/JsonApi/Routes/Themes/Authority.php create mode 100644 lib/classes/JsonApi/Routes/Themes/ThemesCreate.php create mode 100644 lib/classes/JsonApi/Routes/Themes/ThemesDelete.php create mode 100644 lib/classes/JsonApi/Routes/Themes/ThemesIndex.php create mode 100644 lib/classes/JsonApi/Routes/Themes/ThemesShow.php create mode 100644 lib/classes/JsonApi/Routes/Themes/ThemesUpdate.php create mode 100644 lib/classes/JsonApi/Schemas/Theme.php create mode 100644 lib/models/Theme.php create mode 100644 public/assets/stylesheets/theme.php delete mode 100644 resources/assets/javascripts/bootstrap/inline-editing.js create mode 100644 resources/assets/javascripts/lib/icon-loader.ts delete mode 100644 resources/assets/javascripts/lib/inline-editing.js create mode 100644 resources/assets/stylesheets/scss/colorpicker.scss create mode 100644 resources/assets/stylesheets/scss/courseware/tasks.scss create mode 100644 resources/assets/stylesheets/scss/icons.scss delete mode 100644 resources/assets/stylesheets/scss/report.scss create mode 100644 resources/assets/stylesheets/scss/themes.scss create mode 100644 resources/vue/apps/ThemeSettings.vue create mode 100644 resources/vue/components/StudipModalLeave.vue create mode 100644 resources/vue/components/colorPicker/ColorPicker.vue create mode 100644 resources/vue/components/colorPicker/colorPalette.ts delete mode 100644 resources/vue/components/courseware/widgets/CoursewareExportWidget.vue delete mode 100644 resources/vue/components/courseware/widgets/CoursewareImportWidget.vue create mode 100644 resources/vue/components/theme/ThemeAddCopyDialog.vue create mode 100644 resources/vue/components/theme/ThemeAddDialog.vue create mode 100644 resources/vue/components/theme/ThemeAddImportDialog.vue create mode 100644 resources/vue/components/theme/ThemeDeleteDialog.vue create mode 100644 resources/vue/components/theme/ThemeEditor.vue create mode 100644 resources/vue/components/theme/ThemeExport.vue create mode 100644 resources/vue/components/theme/ThemeList.vue create mode 100644 resources/vue/store/theme-settings.module.js diff --git a/app/controllers/admin/courses.php b/app/controllers/admin/courses.php index 7765a2d..16e735c 100644 --- a/app/controllers/admin/courses.php +++ b/app/controllers/admin/courses.php @@ -634,7 +634,7 @@ class Admin_CoursesController extends AuthenticatedController $d['name'] = '' . htmlReady($course->name) .' ' - .' ' + .' ' .(!$course->visible ? _('(versteckt)') : ''); } if (in_array('number', $activated_fields)) { @@ -705,7 +705,7 @@ class Admin_CoursesController extends AuthenticatedController foreach ($icons as $icon) { $d['contents'] .= '
  • getTitle() ? ' title="'.htmlReady($icon->getTitle()).'"' : '') .'> - '. $icon->getImage()->asImg() .' + '. $icon->getImage()->asSvg() .'
  • '; } diff --git a/app/controllers/admin/layout.php b/app/controllers/admin/layout.php new file mode 100644 index 0000000..bd91497 --- /dev/null +++ b/app/controllers/admin/layout.php @@ -0,0 +1,40 @@ + + * @license http://www.gnu.org/licenses/gpl-2.0.html GPL version 2 + * @category Stud.IP + * @package admin + * @since 6.1 + */ + +class Admin_LayoutController extends AuthenticatedController +{ + public function before_filter(&$action, &$args) + { + parent::before_filter($action, $args); + $GLOBALS['perm']->check('root'); + PageLayout::setTitle(_('Darstellung')); + Navigation::activateItem('/admin/locations/layout'); + } + + public function index_action() + { + $this->render_vue_app( + Studip\VueApp::create('ThemeSettings') + ->withVuexStore( + 'theme-settings.module.js', + 'theme-settings-module', + [ + 'setUserId' => User::findCurrent()->id, + ] + ) + ); + } +} diff --git a/app/controllers/course/contentmodules.php b/app/controllers/course/contentmodules.php index bbda1b3..66fa2c5 100644 --- a/app/controllers/course/contentmodules.php +++ b/app/controllers/course/contentmodules.php @@ -300,7 +300,6 @@ class Course_ContentmodulesController extends AuthenticatedController $visibility = $tool ? $tool->getVisibilityPermission() : 'nobody'; $metadata = $plugin->getMetadata(); - $icon = $this->getIconFromMetadata($metadata, $plugin); $list[$plugin_id] = [ 'id' => $plugin_id, 'moduleclass' => get_class($plugin), @@ -309,7 +308,7 @@ class Course_ContentmodulesController extends AuthenticatedController 'displayname' => $displayname, 'visibility' => $visibility, 'active' => (bool) $tool, - 'icon' => $icon ? $icon->asImagePath() : null, + 'icon' => $this->getIconFromMetadata($metadata, $plugin), 'summary' => $metadata['summary'] ?? null, 'mandatory' => $this->sem_class->isModuleMandatory(get_class($plugin)), 'highlighted' => (bool) $plugin->isHighlighted(), diff --git a/app/controllers/course/members.php b/app/controllers/course/members.php index 22c6b1e..adeb4a8 100644 --- a/app/controllers/course/members.php +++ b/app/controllers/course/members.php @@ -205,7 +205,7 @@ class Course_MembersController extends AuthenticatedController $results = SimpleCollection::createFromArray($members)->pluck('email'); if (!empty($results)) { - return sprintf('%s', htmlReady(join(',', $results)), Icon::create('mail', attributes: ['title' => sprintf('E-Mail an alle %s versenden',$textStatus)])->asImg()); + return sprintf('%s', htmlReady(join(',', $results)), Icon::create('mail', attributes: ['title' => sprintf('E-Mail an alle %s versenden',$textStatus)])->asSvg()); } else { return null; } diff --git a/app/controllers/course/room_requests.php b/app/controllers/course/room_requests.php index df21a2a..85d7a70 100644 --- a/app/controllers/course/room_requests.php +++ b/app/controllers/course/room_requests.php @@ -625,7 +625,7 @@ class Course_RoomRequestsController extends AuthenticatedController } if ($request_dates_booked === 0) { $this->available_room_icons[$room->id] = - Icon::create('check-circle', Icon::ROLE_STATUS_GREEN)->asImg( + Icon::create('check-circle', Icon::ROLE_STATUS_GREEN)->asSvg( [ 'class' => 'text-bottom', 'title' => _('freier Raum') @@ -633,7 +633,7 @@ class Course_RoomRequestsController extends AuthenticatedController ); $available_rooms[] = $room; } elseif ($request_dates_booked < $request_time_intervals) { - $this->available_room_icons[$room->id] = Icon::create('exclaim-circle', Icon::ROLE_STATUS_YELLOW)->asImg([ + $this->available_room_icons[$room->id] = Icon::create('exclaim-circle', Icon::ROLE_STATUS_YELLOW)->asSvg([ 'class' => 'text-bottom', 'title' => _('teilweise belegter Raum') ]); diff --git a/app/controllers/course/wiki.php b/app/controllers/course/wiki.php index 81d933e..1dad1d0 100644 --- a/app/controllers/course/wiki.php +++ b/app/controllers/course/wiki.php @@ -59,8 +59,8 @@ class Course_WikiController extends AuthenticatedController '%s', URLHelper::getLink('dispatch.php/course/wiki/edit_toc'), $toc_content_empty - ? Icon::create('add')->asImg(['title' => _('Erstellen')]) - : Icon::create('edit')->asImg(['title' => _('Bearbeiten')]) + ? Icon::create('add')->asSvg(['title' => _('Erstellen')]) + : Icon::create('edit')->asSvg(['title' => _('Bearbeiten')]) ); $widget->setExtra($extra); } diff --git a/app/controllers/materialien/files.php b/app/controllers/materialien/files.php index a8d4823..57aed1b 100644 --- a/app/controllers/materialien/files.php +++ b/app/controllers/materialien/files.php @@ -424,7 +424,7 @@ class Materialien_FilesController extends MVVController } $output['document_id'] = $file->id; - $output['icon'] = $file->getIcon(Icon::ROLE_CLICKABLE)->asImg(['class' => 'text-bottom']); + $output['icon'] = $file->getIcon(Icon::ROLE_CLICKABLE)->asSvg(['class' => 'text-bottom']); $this->render_json($output); } diff --git a/app/controllers/messages.php b/app/controllers/messages.php index 65a5cea..3c374b2 100644 --- a/app/controllers/messages.php +++ b/app/controllers/messages.php @@ -198,7 +198,7 @@ class MessagesController extends AuthenticatedController { if ($this->default_message->attachment_folder) { foreach ($this->default_message->attachment_folder->getTypedFolder()->getFiles() as $filetype) { $this->default_attachments[] = [ - 'icon' => $filetype->getIcon('info')->asImg(['class' => 'text-bottom']), + 'icon' => $filetype->getIcon('info')->asSvg(['class' => 'text-bottom']), 'name' => $filetype->getFilename(), 'document_id' => $filetype->getId(), 'size' => $filetype->getSize() @@ -507,7 +507,7 @@ class MessagesController extends AuthenticatedController { if ($new_attachment_file_ref->store()) { $icon = FileManager::getIconForFileRef($new_attachment_file_ref); $this->default_attachments[] = [ - 'icon' => $icon->asImg(['class' => 'text-bottom']), + 'icon' => $icon->asSvg(['class' => 'text-bottom']), 'name' => $new_attachment_file_ref->name, 'document_id' => $new_attachment_file_ref->id, 'size' => relsize($new_attachment_file_ref->size, false) @@ -876,7 +876,7 @@ class MessagesController extends AuthenticatedController { $output['document_id'] = $uploaded['files'][0]->getId(); - $output['icon'] = $uploaded['files'][0]->getIcon(Icon::ROLE_CLICKABLE)->asImg(['class' => 'text-bottom']); + $output['icon'] = $uploaded['files'][0]->getIcon(Icon::ROLE_CLICKABLE)->asSvg(['class' => 'text-bottom']); $this->render_json($output); } @@ -975,7 +975,7 @@ class MessagesController extends AuthenticatedController { if ($action === 'overview') { if (MessageUser::countBySQL("snd_rec = 'rec' AND user_id = :id AND deleted != 1 LIMIT 1", ['id' => $GLOBALS['user']->id])) { $message = sprintf( - _("Möchten Sie wirklich alle Nachrichten im Posteingang löschen? Es werden %u Nachrichten endgültig gelöscht."), + _('Möchten Sie wirklich alle Nachrichten im Posteingang löschen? Es werden %u Nachrichten endgültig gelöscht.'), MessageUser::countBySQL("snd_rec = 'rec' AND user_id = :id AND deleted != 1", ['id' => $GLOBALS['user']->id]) ); $actions->addLink( diff --git a/app/controllers/oer/admin.php b/app/controllers/oer/admin.php index c394556..3404e54 100644 --- a/app/controllers/oer/admin.php +++ b/app/controllers/oer/admin.php @@ -129,7 +129,7 @@ class Oer_AdminController extends AuthenticatedController } $this->render_text(( - Icon::create("checkbox-".(Request::int("active") ? "" : "un")."checked")->asImg() + Icon::create("checkbox-".(Request::int("active") ? "" : "un")."checked")->asSvg() )); } @@ -144,7 +144,7 @@ class Oer_AdminController extends AuthenticatedController } $this->render_text(( - Icon::create("checkbox-".(Request::int("active") ? "" : "un")."checked")->asImg() + Icon::create('checkbox-'.(Request::int('active') ? '' : 'un').'checked')->asSvg() )); } diff --git a/app/views/admin/autoinsert/index.php b/app/views/admin/autoinsert/index.php index 33dfdcf..5773537 100644 --- a/app/views/admin/autoinsert/index.php +++ b/app/views/admin/autoinsert/index.php @@ -93,7 +93,7 @@ render_partial("admin/autoinsert/_status.php", ['status' => 'autor', 'auto_sem' => $auto_sem, 'domains' => $userdomains]) ?> - asImg([ + asSvg([ 'title' => _('Veranstaltung entfernen'), 'class' => 'text-top', ]) ?> diff --git a/app/views/admin/banner/index.php b/app/views/admin/banner/index.php index 11f9d8e..620f7a5 100644 --- a/app/views/admin/banner/index.php +++ b/app/views/admin/banner/index.php @@ -61,16 +61,16 @@ priority ?> (getViewProbability() ?>) - asImg(['title' => _('Eigenschaften')]) ?> + asSvg(['title' => _('Eigenschaften')]) ?> - asImg(['title' => _('Banner bearbeiten')]) ?> + asSvg(['title' => _('Banner bearbeiten')]) ?> - asImg(['title' => _('Klicks/Views zurücksetzen')]) ?> + asSvg(['title' => _('Klicks/Views zurücksetzen')]) ?> - asImg(['title' => _('Banner löschen')]) ?> + asSvg(['title' => _('Banner löschen')]) ?> diff --git a/app/views/admin/configuration/edit_configuration.php b/app/views/admin/configuration/edit_configuration.php index aa4c574..6d8354f 100644 --- a/app/views/admin/configuration/edit_configuration.php +++ b/app/views/admin/configuration/edit_configuration.php @@ -28,9 +28,9 @@ - asImg(['title' => _('Ja')]) ?> + asSvg(['title' => _('Ja')]) ?> - asImg(['title' => _('Nein')]) ?> + asSvg(['title' => _('Nein')]) ?> - - diff --git a/app/views/admin/configuration/table-row.php b/app/views/admin/configuration/table-row.php index a0725a5..3f7ae89 100644 --- a/app/views/admin/configuration/table-row.php +++ b/app/views/admin/configuration/table-row.php @@ -37,10 +37,10 @@ fromEnv($field)): ?> - asImg(['title' => _('Konfigurationsparameter bearbeiten')]) ?> + asSvg(['title' => _('Konfigurationsparameter bearbeiten')]) ?> - asImg([ + asSvg([ 'title' => _('Wert wurde über eine Umgebungsvariable gesetzt und kann an dieser Stelle nicht verändert werden.'), ]) ?> diff --git a/app/views/admin/course_wizard_steps/edit.php b/app/views/admin/course_wizard_steps/edit.php index 067ff2e..f25005c 100644 --- a/app/views/admin/course_wizard_steps/edit.php +++ b/app/views/admin/course_wizard_steps/edit.php @@ -25,7 +25,7 @@
  • - asImg(['class' => "text-bottom"]) ?> + asSvg(['class' => "text-bottom"]) ?>
  • diff --git a/app/views/admin/course_wizard_steps/index.php b/app/views/admin/course_wizard_steps/index.php index b951e21..d57d7ea 100644 --- a/app/views/admin/course_wizard_steps/index.php +++ b/app/views/admin/course_wizard_steps/index.php @@ -15,7 +15,7 @@ - asImg(tooltip2(_('Neuen Schritt hinzufügen'))) ?> + asSvg(tooltip2(_('Neuen Schritt hinzufügen'))) ?> diff --git a/app/views/admin/courseplanning/nonconform.php b/app/views/admin/courseplanning/nonconform.php index 08a128a..2ddda05 100644 --- a/app/views/admin/courseplanning/nonconform.php +++ b/app/views/admin/courseplanning/nonconform.php @@ -23,7 +23,7 @@ - asImg(['class' => 'text-bottom']) ?> + asSvg(['class' => 'text-bottom']) ?> diff --git a/app/views/admin/cronjobs/logs/index.php b/app/views/admin/cronjobs/logs/index.php index d76e153..b1f0195 100644 --- a/app/views/admin/cronjobs/logs/index.php +++ b/app/views/admin/cronjobs/logs/index.php @@ -114,19 +114,19 @@ use Studip\Button, Studip\LinkButton; schedule->title ?: $log->schedule->task->name) ?> duration == -1): ?> - asImg(['title' => _('Läuft noch')]) ?> + asSvg(['title' => _('Läuft noch')]) ?> exception === null): ?> - asImg(['title' => _('Ja')]) ?> + asSvg(['title' => _('Ja')]) ?> - asImg(['title' => _('Nein')]) ?> + asSvg(['title' => _('Nein')]) ?> - asImg(['title' => _('Logeintrag anzeigen')]) ?> + asSvg(['title' => _('Logeintrag anzeigen')]) ?> - asImg(['title' => _('Logeintrag löschen')]) ?> + asSvg(['title' => _('Logeintrag löschen')]) ?> diff --git a/app/views/admin/cronjobs/schedules/index.php b/app/views/admin/cronjobs/schedules/index.php index 12180a6..1872ff6 100644 --- a/app/views/admin/cronjobs/schedules/index.php +++ b/app/views/admin/cronjobs/schedules/index.php @@ -97,29 +97,29 @@ use Studip\Button, Studip\LinkButton; task->active): ?> - asImg(['title' => _('Cronjob kann nicht aktiviert werden, da die zugehörige ' . 'Aufgabe deaktiviert ist.')]) ?> + asSvg(['title' => _('Cronjob kann nicht aktiviert werden, da die zugehörige ' . 'Aufgabe deaktiviert ist.')]) ?> active): ?> - asImg(['title' => _('Cronjob deaktivieren')]) ?> + asSvg(['title' => _('Cronjob deaktivieren')]) ?> - asImg(['title' => _('Cronjob aktivieren')]) ?> + asSvg(['title' => _('Cronjob aktivieren')]) ?> render_partial('admin/cronjobs/schedules/periodic-schedule', $schedule->toArray() + ['display' => 'table-cells']) ?> - asImg(['title' => _('Cronjob anzeigen')]) ?> + asSvg(['title' => _('Cronjob anzeigen')]) ?> - asImg(['title' => _('Cronjob bearbeiten')]) ?> + asSvg(['title' => _('Cronjob bearbeiten')]) ?> - asImg(['title' => _('Log anzeigen')]) ?> + asSvg(['title' => _('Log anzeigen')]) ?> asInput([ 'data-confirm' => _('Wollen Sie den ausgewählten Cronjob wirklich löschen?'), diff --git a/app/views/admin/cronjobs/tasks/index.php b/app/views/admin/cronjobs/tasks/index.php index 9f2602d..ab510b0 100644 --- a/app/views/admin/cronjobs/tasks/index.php +++ b/app/views/admin/cronjobs/tasks/index.php @@ -50,22 +50,22 @@ use Studip\Button; active): ?> - asImg(['title' => _('Aufgabe deaktivieren')]) ?> + asSvg(['title' => _('Aufgabe deaktivieren')]) ?> - asImg(['title' => _('Aufgabe aktivieren')]) ?> + asSvg(['title' => _('Aufgabe aktivieren')]) ?> valid): ?> - asImg(['title' => _('Aufgabe ausführen')]) ?> + asSvg(['title' => _('Aufgabe ausführen')]) ?> - asImg(['title' => _('Log anzeigen')]) ?> + asSvg(['title' => _('Log anzeigen')]) ?> asInput([ 'data-confirm' => _('Wollen Sie die ausgewählte Aufgabe wirklich löschen?'), diff --git a/app/views/admin/datafields/index.php b/app/views/admin/datafields/index.php index 5d959d7..5441e24 100644 --- a/app/views/admin/datafields/index.php +++ b/app/views/admin/datafields/index.php @@ -89,7 +89,7 @@ type, words('selectbox selectboxmultiple radio combo'))): ?> - asImg(['class'=> 'text-top', 'title' => 'Einträge bearbeiten']) ?> + asSvg(['class'=> 'text-top', 'title' => 'Einträge bearbeiten']) ?> type) ?> @@ -131,31 +131,31 @@ system): ?> - _('Ja')])->asImg() ?> + _('Ja')])->asSvg() ?> - _('Nein')])->asImg() ?> + _('Nein')])->asSvg() ?> is_userfilter): ?> - _('Ja')])->asImg() ?> + _('Ja')])->asSvg() ?> - _('Nein')])->asImg() ?> + _('Nein')])->asSvg() ?> is_required): ?> - _('Ja')])->asImg() ?> + _('Ja')])->asSvg() ?> - _('Nein')])->asImg() ?> + _('Nein')])->asSvg() ?> description)): ?> - _('Ja')])->asImg() ?> + _('Ja')])->asSvg() ?> - _('Nein')])->asImg() ?> + _('Nein')])->asSvg() ?> @@ -165,10 +165,10 @@ - asImg(['title' => 'Datenfeld ändern']) ?> + asSvg(['title' => 'Datenfeld ändern']) ?> - asImg(['title' => 'Datenfeld löschen']) ?> + asSvg(['title' => 'Datenfeld löschen']) ?> diff --git a/app/views/admin/domain/index.php b/app/views/admin/domain/index.php index 4b709d7..74c6a2b 100644 --- a/app/views/admin/domain/index.php +++ b/app/views/admin/domain/index.php @@ -38,7 +38,7 @@ countCourses() ?> id}") ?>" data-dialog="size=auto"> - asImg(tooltip2(_('bearbeiten'))) ?> + asSvg(tooltip2(_('bearbeiten'))) ?> countUsers() === 0): ?> asInput(tooltip2(_('löschen')) + [ @@ -47,7 +47,7 @@ 'data-confirm' => _('Wollen Sie die Nutzerdomäne wirklich löschen?') ]) ?> - asImg(['title' => _('Domänen, denen noch Personen zugewiesen sind, können nicht gelöscht werden.')]) ?> + asSvg(['title' => _('Domänen, denen noch Personen zugewiesen sind, können nicht gelöscht werden.')]) ?> diff --git a/app/views/admin/holidays/index.php b/app/views/admin/holidays/index.php index 98aa72e..4c523d3 100644 --- a/app/views/admin/holidays/index.php +++ b/app/views/admin/holidays/index.php @@ -58,7 +58,7 @@ - asImg(['title' => _('Ferienangaben bearbeiten')]) ?> + asSvg(['title' => _('Ferienangaben bearbeiten')]) ?> asInput([ 'title' => _('Ferien löschen'), diff --git a/app/views/admin/ilias_interface/edit_server.php b/app/views/admin/ilias_interface/edit_server.php index 18c648a..803670a 100644 --- a/app/views/admin/ilias_interface/edit_server.php +++ b/app/views/admin/ilias_interface/edit_server.php @@ -82,9 +82,9 @@
    - asImg(['title' => _("Wählen Sie hier ein Authentifizierungsplugin, damit neu angelegte ILIAS-Accounts den entsprechenden Authentifizierungsmodus erhalten, wenn dieser Modus auch für den vorhandenen Stud.IP-Account gilt. Andernfalls erhalten alle ILIAS-Accounts den default-Modus")]);?> + asSvg(['title' => _('Wählen Sie hier ein Authentifizierungsplugin, damit neu angelegte ILIAS-Accounts den entsprechenden Authentifizierungsmodus erhalten, wenn dieser Modus auch für den vorhandenen Stud.IP-Account gilt. Andernfalls erhalten alle ILIAS-Accounts den default-Modus')]);?> -
    +
    diff --git a/app/views/admin/ilias_interface/index.php b/app/views/admin/ilias_interface/index.php index 00e4f36..fce9464 100644 --- a/app/views/admin/ilias_interface/index.php +++ b/app/views/admin/ilias_interface/index.php @@ -11,7 +11,7 @@ - asImg(tooltip2(_('Neue ILIAS-Installation hinzufügen'))) ?> + asSvg(tooltip2(_('Neue ILIAS-Installation hinzufügen'))) ?> @@ -44,7 +44,7 @@ } ?> - asImg(['title' => $text]) ?> + asSvg(['title' => $text]) ?> diff --git a/app/views/admin/licenses/index.php b/app/views/admin/licenses/index.php index e72536a..e6d162d 100644 --- a/app/views/admin/licenses/index.php +++ b/app/views/admin/licenses/index.php @@ -34,9 +34,9 @@ $license['identifier']]) ?>" data-dialog> - asImg(['class' => "text-bottom"]) ?> + asSvg(['class' => "text-bottom"]) ?> -
    $license->getId()]) ?>" + " class="inline"> diff --git a/app/views/admin/lockrules/index.php b/app/views/admin/lockrules/index.php index 1214d83..b439b94 100644 --- a/app/views/admin/lockrules/index.php +++ b/app/views/admin/lockrules/index.php @@ -43,7 +43,7 @@ - asImg(['title' => _('Diese Regel bearbeiten')]) ?> + asSvg(['title' => _('Diese Regel bearbeiten')]) ?> - asImg(['class' => 'text-bottom upload']) ?> + asSvg(['class' => 'text-bottom upload']) ?>