diff options
| author | Thomas Hackl <hackl@data-quest.de> | 2025-01-29 13:10:54 +0000 |
|---|---|---|
| committer | Thomas Hackl <hackl@data-quest.de> | 2025-01-29 13:10:54 +0000 |
| commit | 95f497150c42b6c6e34e93e869ea76aaf565e011 (patch) | |
| tree | 0de55b12f23a64633e9ab90f06515fc1a2716be7 | |
| parent | 1520a09fb2b2e1ba3302bf6cacefeca349076a00 (diff) | |
Resolve "Sortierung bei Veranstaltungs- und Einrichtungshierarchien wird nicht gespeichert"
Closes #5076
Merge request studip/studip!3889
| -rw-r--r-- | lib/models/RangeTreeNode.php | 2 | ||||
| -rw-r--r-- | lib/models/StudipStudyArea.php | 4 | ||||
| -rw-r--r-- | resources/vue/components/tree/StudipTreeList.vue | 2 | ||||
| -rw-r--r-- | resources/vue/components/tree/StudipTreeTable.vue | 2 | ||||
| -rw-r--r-- | resources/vue/mixins/TreeMixin.js | 14 |
5 files changed, 14 insertions, 10 deletions
diff --git a/lib/models/RangeTreeNode.php b/lib/models/RangeTreeNode.php index 0d67780..d3d1567 100644 --- a/lib/models/RangeTreeNode.php +++ b/lib/models/RangeTreeNode.php @@ -115,7 +115,7 @@ class RangeTreeNode extends SimpleORMap implements StudipTreeNode */ public function getChildNodes(bool $onlyVisible = false): array { - return self::findByParent_id($this->id); + return self::findByParent_id($this->id, "ORDER BY `priority`"); } /** diff --git a/lib/models/StudipStudyArea.php b/lib/models/StudipStudyArea.php index 0bc3d66..923d341 100644 --- a/lib/models/StudipStudyArea.php +++ b/lib/models/StudipStudyArea.php @@ -471,11 +471,11 @@ class StudipStudyArea extends SimpleORMap implements StudipTreeNode }); return static::findBySQL( - "`parent_id` = :parent AND `type` IN (:types)", + "`parent_id` = :parent AND `type` IN (:types) ORDER BY `priority`", ['parent' => $this->id, 'types' => $visibleTypes] ); } else { - return static::findByParent_id($this->id); + return static::findByParent_id($this->id, "ORDER BY `priority`"); } } diff --git a/resources/vue/components/tree/StudipTreeList.vue b/resources/vue/components/tree/StudipTreeList.vue index a5db172..d00cd1c 100644 --- a/resources/vue/components/tree/StudipTreeList.vue +++ b/resources/vue/components/tree/StudipTreeList.vue @@ -157,7 +157,7 @@ export default { AssignLinkWidget, StudipPagination }, mixins: [ TreeMixin ], - emits: ['change-current-node'], + emits: ['change-current-node', 'sort-tree-children'], props: { node: { type: Object, diff --git a/resources/vue/components/tree/StudipTreeTable.vue b/resources/vue/components/tree/StudipTreeTable.vue index acbb104..92015a3 100644 --- a/resources/vue/components/tree/StudipTreeTable.vue +++ b/resources/vue/components/tree/StudipTreeTable.vue @@ -178,7 +178,7 @@ export default { AssignLinkWidget }, mixins: [ TreeMixin ], - emits: ['change-current-node'], + emits: ['change-current-node', 'sort-tree-children'], props: { node: { type: Object, diff --git a/resources/vue/mixins/TreeMixin.js b/resources/vue/mixins/TreeMixin.js index 1269ffa..01b2265 100644 --- a/resources/vue/mixins/TreeMixin.js +++ b/resources/vue/mixins/TreeMixin.js @@ -110,10 +110,8 @@ export const TreeMixin = { updateSorting(parentId, children) { let data = {}; - let position = 0; - for (const child of children) { - data[child.attributes.id] = position; - position++; + for (let i = 0 ; i < children.length ; i++) { + data[children[i].attributes.id] = i; } const fd = new FormData(); @@ -122,7 +120,13 @@ export const TreeMixin = { STUDIP.URLHelper.getURL('dispatch.php/admin/tree/sort/' + parentId), fd, { headers: { 'Content-Type': 'multipart/form-data' }} - ); + ) + .then(() => { + STUDIP.Report.success(this.$gettext('Die Sortierung wurde geändert.')); + }) + .catch(error => { + STUDIP.Report.error(this.$gettext('Die Sortierung konnte nicht geändert werden.'), error); + }); STUDIP.Vue.emit('sort-tree-children', { parent: parentId, children: children }); }, updateOffset(newOffset) { |
