aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Hackl <hackl@data-quest.de>2025-01-29 13:10:54 +0000
committerThomas Hackl <hackl@data-quest.de>2025-01-29 13:10:54 +0000
commit95f497150c42b6c6e34e93e869ea76aaf565e011 (patch)
tree0de55b12f23a64633e9ab90f06515fc1a2716be7
parent1520a09fb2b2e1ba3302bf6cacefeca349076a00 (diff)
Resolve "Sortierung bei Veranstaltungs- und Einrichtungshierarchien wird nicht gespeichert"
Closes #5076 Merge request studip/studip!3889
-rw-r--r--lib/models/RangeTreeNode.php2
-rw-r--r--lib/models/StudipStudyArea.php4
-rw-r--r--resources/vue/components/tree/StudipTreeList.vue2
-rw-r--r--resources/vue/components/tree/StudipTreeTable.vue2
-rw-r--r--resources/vue/mixins/TreeMixin.js14
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) {