Merge branch 'MDL-72310-master' of git://github.com/aanabit/moodle
[moodle.git] / course / format / amd / src / local / courseeditor / exporter.js
index c76d076..cb738e8 100644 (file)
@@ -94,4 +94,59 @@ export default class {
         };
         return cm;
     }
+
+    /**
+     * Generate a dragable cm data structure.
+     *
+     * This method is used by any draggable course module element to generate drop data
+     * for its reactive/dragdrop instance.
+     *
+     * @param {*} state the state object
+     * @param {*} cmid the cours emodule id
+     * @returns {Object|null}
+     */
+    cmDraggableData(state, cmid) {
+        const cminfo = state.cm.get(cmid);
+        if (!cminfo) {
+            return null;
+        }
+
+        // Drop an activity over the next activity is the same as doing anything.
+        let nextcmid;
+        const section = state.section.get(cminfo.sectionid);
+        const currentindex = section?.cmlist.indexOf(cminfo.id);
+        if (currentindex !== undefined) {
+            nextcmid = section?.cmlist[currentindex + 1];
+        }
+
+        return {
+            type: 'cm',
+            id: cminfo.id,
+            name: cminfo.name,
+            nextcmid,
+        };
+    }
+
+    /**
+     * Generate a dragable cm data structure.
+     *
+     * This method is used by any draggable section element to generate drop data
+     * for its reactive/dragdrop instance.
+     *
+     * @param {*} state the state object
+     * @param {*} sectionid the cours section id
+     * @returns {Object|null}
+     */
+    sectionDraggableData(state, sectionid) {
+        const sectioninfo = state.section.get(sectionid);
+        if (!sectioninfo) {
+            return null;
+        }
+        return {
+            type: 'section',
+            id: sectioninfo.id,
+            name: sectioninfo.name,
+            number: sectioninfo.number,
+        };
+    }
 }