From 185ab4a1919f137e99c72addf98790e0e5f833d2 Mon Sep 17 00:00:00 2001 From: Ron Lucke <lucke@elan-ev.de> Date: Fri, 1 Sep 2023 11:27:26 +0000 Subject: [PATCH] fix #3019 Closes #3019 Merge request studip/studip!2086 --- app/views/contents/courseware/courseware.php | 1 - .../courseware/shared_content_courseware.php | 1 - app/views/course/courseware/courseware.php | 1 - lib/classes/JsonApi/Models/Studip.php | 2 ++ .../courseware/CoursewareExportWidget.vue | 4 ++-- .../CoursewareStructuralElement.vue | 7 ++++--- resources/vue/courseware-index-app.js | 16 ++++++++++------ .../vue/store/courseware/courseware.module.js | 19 +++++++------------ 8 files changed, 25 insertions(+), 26 deletions(-) diff --git a/app/views/contents/courseware/courseware.php b/app/views/contents/courseware/courseware.php index 683f07e4748..338c6b2c7bd 100644 --- a/app/views/contents/courseware/courseware.php +++ b/app/views/contents/courseware/courseware.php @@ -5,7 +5,6 @@ entry-type="users" entry-id="<?= htmlReady($user_id) ?>" unit-id="<?= htmlReady($unit_id) ?>" - oer-enabled='<?= htmlReady($oer_enabled) ?>' licenses='<?= htmlReady($licenses) ?>' > </div> diff --git a/app/views/contents/courseware/shared_content_courseware.php b/app/views/contents/courseware/shared_content_courseware.php index f9590593b15..05ed3cc0fbf 100755 --- a/app/views/contents/courseware/shared_content_courseware.php +++ b/app/views/contents/courseware/shared_content_courseware.php @@ -3,7 +3,6 @@ entry-element-id="<?= $entry_element_id ?>" entry-type="sharedusers" entry-id="<?= $entry_element_id ?>" - oer-enabled='<?= $oer_enabled ?>' oer-title="<?= Config::get()->OER_TITLE ?>" licenses='<?= $licenses ?>' > diff --git a/app/views/course/courseware/courseware.php b/app/views/course/courseware/courseware.php index 1abb48a667f..2dadc86a667 100644 --- a/app/views/course/courseware/courseware.php +++ b/app/views/course/courseware/courseware.php @@ -5,7 +5,6 @@ entry-type="courses" entry-id="<?= htmlReady(Context::getId()) ?>" unit-id="<?= htmlReady($unit_id) ?>" - oer-enabled='<?= htmlReady($oer_enabled) ?>' licenses='<?= htmlReady($licenses) ?>' > </div> diff --git a/lib/classes/JsonApi/Models/Studip.php b/lib/classes/JsonApi/Models/Studip.php index ce5fa1cfb9f..1b5aed05124 100644 --- a/lib/classes/JsonApi/Models/Studip.php +++ b/lib/classes/JsonApi/Models/Studip.php @@ -13,6 +13,8 @@ class Studip { $properties = [ new StudipProperty('studip-version', 'Stud.IP-Version', $GLOBALS['SOFTWARE_VERSION']), + new StudipProperty('oer-campus-enabled', 'OERCAMPUS_ENABLED', \Config::get()->OERCAMPUS_ENABLED), + new StudipProperty('oer-enable-suggestions', 'OER_ENABLE_SUGGESTIONS', \Config::get()->OER_ENABLE_SUGGESTIONS), ]; $copyrightDialog = self::getConfigOption('COPYRIGHT_DIALOG_ON_UPLOAD'); diff --git a/resources/vue/components/courseware/CoursewareExportWidget.vue b/resources/vue/components/courseware/CoursewareExportWidget.vue index 89ecf1cbb83..a6473ca4687 100644 --- a/resources/vue/components/courseware/CoursewareExportWidget.vue +++ b/resources/vue/components/courseware/CoursewareExportWidget.vue @@ -40,7 +40,7 @@ export default { computed: { ...mapGetters({ context: 'context', - oerEnabled: 'oerEnabled', + oerCampusEnabled: 'oerCampusEnabled', userIsTeacher: 'userIsTeacher', }), canEdit() { @@ -64,7 +64,7 @@ export default { return this.canVisit; }, showOer() { - if (!this.oerEnabled) { + if (!this.oerCampusEnabled) { return false; } diff --git a/resources/vue/components/courseware/CoursewareStructuralElement.vue b/resources/vue/components/courseware/CoursewareStructuralElement.vue index b24840e0389..427d58232ec 100644 --- a/resources/vue/components/courseware/CoursewareStructuralElement.vue +++ b/resources/vue/components/courseware/CoursewareStructuralElement.vue @@ -802,7 +802,8 @@ export default { showSuggestOerDialog: 'showSuggestOerDialog', showPublicLinkDialog: 'showStructuralElementPublicLinkDialog', showRemoveLockDialog: 'showStructuralElementRemoveLockDialog', - oerEnabled: 'oerEnabled', + oerCampusEnabled: 'oerCampusEnabled', + oerEnableSuggestions: 'oerEnableSuggestions', licenses: 'licenses', exportState: 'exportState', exportProgress: 'exportProgress', @@ -1042,9 +1043,9 @@ export default { { id: 5, label: this.$gettext('Lesezeichen setzen'), icon: 'star', emit: 'setBookmark' }, ]; - if (this.oerEnabled) { + if (this.oerEnableSuggestions) { menu.push( - { id: 6, label: this.$gettext('Lerninhalt für OER Campus vorschlagen'), icon: 'oer-campus', + { id: 6, label: this.$gettext('Seite für OER Campus vorschlagen'), icon: 'oer-campus', emit: 'showSuggest' } ); } diff --git a/resources/vue/courseware-index-app.js b/resources/vue/courseware-index-app.js index a31686bceb4..587cdb4bd6f 100644 --- a/resources/vue/courseware-index-app.js +++ b/resources/vue/courseware-index-app.js @@ -24,7 +24,6 @@ const mountApp = async (STUDIP, createApp, element) => { let entry_id = null; let entry_type = null; let unit_id = null; - let oer_enabled = null; let licenses = null; let elem; @@ -46,9 +45,6 @@ const mountApp = async (STUDIP, createApp, element) => { unit_id = elem.attributes['unit-id'].value; } - if (elem.attributes['oer-enabled'] !== undefined) { - oer_enabled = elem.attributes['oer-enabled'].value; - } // we need a route for License SORM if (elem.attributes['licenses'] !== undefined) { licenses = JSON.parse(elem.attributes['licenses'].value); @@ -119,13 +115,22 @@ const mountApp = async (STUDIP, createApp, element) => { 'sem-classes', 'sem-types', 'terms-of-use', - 'user-data-field' + 'user-data-field', + 'studip-properties' ], httpClient, }), }, }); + axios.get( + STUDIP.URLHelper.getURL('jsonapi.php/v1/studip/properties', {}, true) + ).then(response => { + response.data.data.forEach(prop => { + store.dispatch('studip-properties/storeRecord', prop); + }); + }); + store.dispatch('setUrlHelper', STUDIP.URLHelper); store.dispatch('setUserId', STUDIP.USER_ID); await store.dispatch('users/loadById', {id: STUDIP.USER_ID}); @@ -144,7 +149,6 @@ const mountApp = async (STUDIP, createApp, element) => { store.dispatch('coursewareCurrentElement', elem_id); - store.dispatch('oerEnabled', oer_enabled); store.dispatch('licenses', licenses); store.dispatch('courseware-templates/loadAll'); store.dispatch('loadUserClipboards', STUDIP.USER_ID); diff --git a/resources/vue/store/courseware/courseware.module.js b/resources/vue/store/courseware/courseware.module.js index 0f56e3e7af8..89d7da82d7e 100644 --- a/resources/vue/store/courseware/courseware.module.js +++ b/resources/vue/store/courseware/courseware.module.js @@ -8,7 +8,6 @@ const getDefaultState = () => { context: {}, courseware: {}, currentElement: {}, - oerEnabled: null, licenses: null, // we need a route for License SORM httpClient: null, lastElement: null, @@ -103,9 +102,6 @@ const getters = { currentStructuralElementImageURL(state, getters) { return getters.currentStructuralElement?.relationships?.image?.meta?.['download-url']; }, - oerEnabled(state) { - return state.oerEnabled; - }, licenses(state) { return state.licenses; }, @@ -258,6 +254,13 @@ const getters = { }, progresses(state) { return state.progresses; + }, + + oerCampusEnabled(state, getters, rootState, rootGetters) { + return rootGetters['studip-properties/byId']({ id: 'oer-campus-enabled'}).attributes?.value; + }, + oerEnableSuggestions(state, getters, rootState, rootGetters) { + return getters.oerCampusEnabled && rootGetters['studip-properties/byId']({ id: 'oer-enable-suggestions'}).attributes?.value; } }; @@ -807,10 +810,6 @@ export const actions = { context.commit('coursewareContextSet', id); }, - oerEnabled(context, enabled) { - context.commit('oerEnabledSet', enabled); - }, - licenses(context, licenses) { context.commit('licensesSet', licenses); }, @@ -1420,10 +1419,6 @@ export const mutations = { state.context = data; }, - oerEnabledSet(state, data) { - state.oerEnabled = data; - }, - licensesSet(state, data) { state.licenses = data; }, -- GitLab