1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
export default {
namespaced: true,
state: () => ({
categories: [],
filterCategory: null,
highlighted: [],
modules: [],
userId: null,
view: 'tiles',
}),
getters: {
getModuleById: (state) => (moduleId) => {
return state.modules.find(module => module.id === moduleId);
},
},
mutations: {
setCategories(state, categories) {
state.categories = categories;
},
setFilterCategory(state, category) {
state.filterCategory = category;
},
setHighlighted(state, highlighted) {
state.highlighted = highlighted;
},
setModule(state, module) {
let modules = state.modules.filter(m => m.id !== module.id);
modules.push(module);
state.modules = modules;
},
setModules(state, modules) {
state.modules = modules;
},
setUserId(state, userId) {
state.userId = userId;
},
setView(state, view) {
state.view = view;
},
},
actions: {
changeView({ commit, state }, view) {
commit('setView', view);
const documentId = `${state.userId}_CONTENTMODULES_TILED_DISPLAY`;
const data = {
id: documentId,
type: 'config-values',
attributes: { value: view === 'tiles' }
};
return STUDIP.jsonapi.withPromises().patch(`config-values/${documentId}`, { data: { data } }) ;
},
exchangeModules({ commit, }, modules) {
const order = modules.filter(module => module.active)
.sort((a, b) => a.position - b.position)
.map(module => module.id);
return $.post(
STUDIP.URLHelper.getURL('dispatch.php/course/contentmodules/reorder'),
{ order }
).then((output) => {
commit('setModules', modules);
return output;
});
},
setModuleActive({ commit, getters }, { moduleId, active }) {
const module = getters.getModuleById(moduleId);
module.active = active;
return $.post(
STUDIP.URLHelper.getURL('dispatch.php/course/contentmodules/trigger'),
{
moduleclass: module.moduleclass,
plugin_id: module.id,
active: module.active ? 1 : 0
}
).done((output) => {
module.position = output.position;
commit('setModule', module);
return output;
});
},
setModuleVisible({ commit, getters }, { moduleId, visible }) {
const module = getters.getModuleById(moduleId);
return $.post(
STUDIP.URLHelper.getURL('dispatch.php/course/contentmodules/change_visibility'),
{
moduleclass: module.moduleclass,
plugin_id: module.id,
visible: visible ? 1 : 0,
}
).done((output) => {
module.visibility = output.visibility;
commit('setModule', module);
});
},
swapModules({ dispatch, state }, { moduleA, moduleB }) {
let modules = state.modules.map(module => {
if (module.id === moduleA.id) {
return {
...moduleA,
position: moduleB.position,
};
}
if (module.id === moduleB.id) {
return {
...moduleB,
position: moduleA.position,
};
}
return module;
});
return dispatch('exchangeModules', modules);
},
}
}
|