aboutsummaryrefslogtreecommitdiff
path: root/resources/assets/javascripts
diff options
context:
space:
mode:
Diffstat (limited to 'resources/assets/javascripts')
-rw-r--r--resources/assets/javascripts/bootstrap/courseware.js72
-rw-r--r--resources/assets/javascripts/bootstrap/vue.js11
-rw-r--r--resources/assets/javascripts/chunks/vue.js12
3 files changed, 12 insertions, 83 deletions
diff --git a/resources/assets/javascripts/bootstrap/courseware.js b/resources/assets/javascripts/bootstrap/courseware.js
index 72503e0..a0d76c9 100644
--- a/resources/assets/javascripts/bootstrap/courseware.js
+++ b/resources/assets/javascripts/bootstrap/courseware.js
@@ -1,76 +1,4 @@
STUDIP.domReady(() => {
- if (document.getElementById('courseware-shelf-app')) {
- Promise.all([
- STUDIP.loadChunk('courseware'),
- import(
- /* webpackChunkName: "courseware-shelf-app" */
- '@/vue/courseware-shelf-app.js'
- ),
- ]).then(([{ createApp, store }, { default: mountApp }]) => {
- return mountApp(STUDIP, createApp, store, '#courseware-shelf-app');
- });
- }
-
- if (document.getElementById('courseware-index-app')) {
- Promise.all([
- STUDIP.loadChunk('courseware'),
- import(
- /* webpackChunkName: "courseware-index-app" */
- '@/vue/courseware-index-app.js'
- ),
- ]).then(([{ createApp, store }, { default: mountApp }]) => {
- return mountApp(STUDIP, createApp, store, '#courseware-index-app');
- });
- }
-
- if (document.getElementById('courseware-activities-app')) {
- Promise.all([
- STUDIP.loadChunk('courseware'),
- import(
- /* webpackChunkName: "courseware-activities-app" */
- '@/vue/courseware-activities-app.js'
- ),
- ]).then(([{ createApp, store }, { default: mountApp }]) => {
- return mountApp(STUDIP, createApp, store, '#courseware-activities-app');
- });
- }
-
- if (document.getElementById('courseware-tasks-app')) {
- Promise.all([
- STUDIP.loadChunk('courseware'),
- import(
- /* webpackChunkName: "courseware-tasks-app" */
- '@/vue/courseware-tasks-app.js'
- ),
- ]).then(([{ createApp, store }, { default: mountApp }]) => {
- return mountApp(STUDIP, createApp, store, '#courseware-tasks-app');
- });
- }
-
- if (document.getElementById('courseware-content-bookmark-app')) {
- Promise.all([
- STUDIP.loadChunk('courseware'),
- import(
- /* webpackChunkName: "courseware-content-bookmark-app" */
- '@/vue/courseware-content-bookmark-app.js'
- ),
- ]).then(([{ createApp, store }, { default: mountApp }]) => {
- return mountApp(STUDIP, createApp, store, '#courseware-content-bookmark-app');
- });
- }
-
- if (document.getElementById('courseware-admin-app')) {
- Promise.all([
- STUDIP.loadChunk('courseware'),
- import(
- /* webpackChunkName: "courseware-content-bookmark-app" */
- '@/vue/courseware-admin-app.js'
- ),
- ]).then(([{ createApp, store }, { default: mountApp }]) => {
- return mountApp(STUDIP, createApp, store, '#courseware-admin-app');
- });
- }
-
if (document.getElementById('courseware-public-app')) {
Promise.all([
STUDIP.loadChunk('courseware'),
diff --git a/resources/assets/javascripts/bootstrap/vue.js b/resources/assets/javascripts/bootstrap/vue.js
index 19270ff..cf8878d 100644
--- a/resources/assets/javascripts/bootstrap/vue.js
+++ b/resources/assets/javascripts/bootstrap/vue.js
@@ -13,7 +13,7 @@ async function mountVueApp(node) {
return;
}
- const { createApp, h, store } = await STUDIP.Vue.load();
+ const { createApp, h, httpClient, store } = await STUDIP.Vue.load();
const [appComponent, plugins] = await loadAppDependencies(config, store);
const app = createApp({
@@ -30,7 +30,7 @@ async function mountVueApp(node) {
...createLifecycleHooks(),
});
- plugins.forEach((plugin) => app.use(plugin, { store }));
+ plugins.forEach((plugin) => app.use(plugin, { httpClient, store }));
app.mount(node);
@@ -62,7 +62,7 @@ function parseVueAppConfig(node) {
async function loadAppDependencies(config, store) {
const promises = [
import(`@/vue/apps/${config.appPath}.vue`),
- initializePlugins(config),
+ Promise.all(initializePlugins(config)),
...initializeVuexStores(config, store),
...initializePiniaStores(config),
];
@@ -113,8 +113,9 @@ function initializeVuexStores(config, store) {
if (!store.hasModule(index)) {
store.registerModule(index, storeConfig);
}
- Object.entries(config.vuexStoreData[index]).forEach(([type, payload]) =>
- store.commit(`${index}/${type}`, payload),
+
+ Object.entries(config.vuexStoreData[index] ?? []).forEach(([type, payload]) =>
+ store.commit(storeConfig.namespaced ? `${index}/${type}` : type, payload),
);
}),
);
diff --git a/resources/assets/javascripts/chunks/vue.js b/resources/assets/javascripts/chunks/vue.js
index 2896166..ea9f07c 100644
--- a/resources/assets/javascripts/chunks/vue.js
+++ b/resources/assets/javascripts/chunks/vue.js
@@ -4,10 +4,10 @@ import { createPinia } from 'pinia';
import eventBus from '../lib/event-bus';
import gettext from '../lib/gettext';
import PortalVue from 'portal-vue';
-import BaseComponents from '../../../vue/base-components.js';
-import BaseDirectives from "../../../vue/base-directives.js";
-import StudipStore from "../../../vue/store/StudipStore.js";
-import { resourceModule } from '@/assets/javascripts/lib/reststate-vuex.js';
+import BaseComponents from '@/vue/base-components.js';
+import BaseDirectives from '@/vue/base-directives.js';
+import StudipStore from '@/vue/store/StudipStore.js';
+import { resourceModule } from '../lib/reststate-vuex.js';
import axios from 'axios';
import CKEditor from '@ckeditor/ckeditor5-vue';
@@ -37,7 +37,7 @@ const createVuexStore = () => {
});
return store;
-}
+};
// Setup stores
const store = createVuexStore();
@@ -61,7 +61,7 @@ function createApp(options = {}, ...args) {
globalOff(...args) {
eventBus.off(...args);
},
- getStudipConfig: store.getters['studip/getConfig']
+ getStudipConfig: store.getters['studip/getConfig'],
},
});