From 88d1129bfe94f1b57a885b3a218957acd5958e21 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 | 20 +++++++++---------- 8 files changed, 27 insertions(+), 25 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 7286a47fbfe..027326d49e1 100644 --- a/resources/vue/components/courseware/CoursewareStructuralElement.vue +++ b/resources/vue/components/courseware/CoursewareStructuralElement.vue @@ -813,7 +813,8 @@ export default { showSuggestOerDialog: 'showSuggestOerDialog', showPublicLinkDialog: 'showStructuralElementPublicLinkDialog', showRemoveLockDialog: 'showStructuralElementRemoveLockDialog', - oerEnabled: 'oerEnabled', + oerCampusEnabled: 'oerCampusEnabled', + oerEnableSuggestions: 'oerEnableSuggestions', licenses: 'licenses', exportState: 'exportState', exportProgress: 'exportProgress', @@ -1037,9 +1038,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 d9c001b17b7..b888dd36242 100644 --- a/resources/vue/courseware-index-app.js +++ b/resources/vue/courseware-index-app.js @@ -23,7 +23,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; @@ -45,9 +44,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); @@ -116,13 +112,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}); @@ -140,7 +145,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'); diff --git a/resources/vue/store/courseware/courseware.module.js b/resources/vue/store/courseware/courseware.module.js index b4c309d391f..069182c48e3 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, @@ -99,8 +98,8 @@ const getters = { currentElementisLink(state, getters, rootState, rootGetters) { return getters.currentStructuralElement?.attributes?.['is-link'] === 1; }, - oerEnabled(state) { - return state.oerEnabled; + currentStructuralElementImageURL(state, getters) { + return getters.currentStructuralElement?.relationships?.image?.meta?.['download-url']; }, licenses(state) { return state.licenses; @@ -251,6 +250,13 @@ const getters = { }, assistiveLiveContents(state) { return state.assistiveLiveContents; + }, + + 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; } }; @@ -780,10 +786,6 @@ export const actions = { context.commit('coursewareContextSet', id); }, - oerEnabled(context, enabled) { - context.commit('oerEnabledSet', enabled); - }, - licenses(context, licenses) { context.commit('licensesSet', licenses); }, @@ -1353,10 +1355,6 @@ export const mutations = { state.context = data; }, - oerEnabledSet(state, data) { - state.oerEnabled = data; - }, - licensesSet(state, data) { state.licenses = data; }, -- GitLab