MDL-68231 core_formats: conditionally swap controls on section drop
authorJake Dallimore <jake@moodle.com>
Tue, 24 Mar 2020 00:45:23 +0000 (08:45 +0800)
committerJake Dallimore <jake@moodle.com>
Tue, 24 Mar 2020 08:43:51 +0000 (16:43 +0800)
When using section drag and drop, the topics and weeks formats expected
the '.section_add_menus' element to be present so it could update it on
section drop. Due to MDL-68056, this control is only sometimes present.
This has been updated to conditionally swap to address this.

course/format/topics/format.js
course/format/upgrade.txt
course/format/weeks/format.js

index c7e6941..3b105c5 100644 (file)
@@ -40,8 +40,10 @@ M.course.format.swap_sections = function(Y, node1, node2) {
     };
 
     var sectionlist = Y.Node.all('.'+CSS.COURSECONTENT+' '+M.course.format.get_section_selector(Y));
-    // Swap menus.
-    sectionlist.item(node1).one('.'+CSS.SECTIONADDMENUS).swap(sectionlist.item(node2).one('.'+CSS.SECTIONADDMENUS));
+    // Swap the non-ajax menus, noting these are not always present (depends on theme and user prefs).
+    if (sectionlist.item(node1).one('.'+CSS.SECTIONADDMENUS)) {
+        sectionlist.item(node1).one('.'+CSS.SECTIONADDMENUS).swap(sectionlist.item(node2).one('.'+CSS.SECTIONADDMENUS));
+    }
 }
 
 /**
index bac0e59..382287d 100644 (file)
@@ -11,6 +11,9 @@ Overview of this plugin type at http://docs.moodle.org/dev/Course_formats
     - format_weeks_upgrade_remove_numsections()
     - format_weeks_upgrade_hide_extra_sections()
     - format_weeks_upgrade_add_empty_sections()
+* The non-ajax controls to add resources and activities are now rendered only when needed, such as when the user
+  preference is set, or when the theme sets $THEME->enablecourseajaxtheme to false. Formats which directly access
+  the '.section_add_menus' element or its children should be updated accordingly.
 
 === 3.8 ===
 
index 1fb0c8e..dcbc48e 100644 (file)
@@ -40,8 +40,10 @@ M.course.format.swap_sections = function(Y, node1, node2) {
     };
 
     var sectionlist = Y.Node.all('.'+CSS.COURSECONTENT+' '+M.course.format.get_section_selector(Y));
-    // Swap menus.
-    sectionlist.item(node1).one('.'+CSS.SECTIONADDMENUS).swap(sectionlist.item(node2).one('.'+CSS.SECTIONADDMENUS));
+    // Swap the non-ajax menus, noting these are not always present (depends on theme and user prefs).
+    if (sectionlist.item(node1).one('.'+CSS.SECTIONADDMENUS)) {
+        sectionlist.item(node1).one('.' + CSS.SECTIONADDMENUS).swap(sectionlist.item(node2).one('.' + CSS.SECTIONADDMENUS));
+    }
 }
 
 /**