mirror of
https://github.com/moodle/moodle.git
synced 2025-04-20 07:56:06 +02:00
MDL-33367 course: move_section reuse move_section_to function
Conflicts: course/lib.php
This commit is contained in:
parent
4db061680e
commit
eb01aa2c34
@ -2963,41 +2963,12 @@ function move_section($course, $section, $move) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!$sectionrecord = $DB->get_record("course_sections", array("course"=>$course->id, "section"=>$section))) {
|
||||
return false;
|
||||
$retval = move_section_to($course, $section, $sectiondest);
|
||||
// If section moved, then rebuild course cache.
|
||||
if ($retval) {
|
||||
rebuild_course_cache($course->id, true);
|
||||
}
|
||||
|
||||
if (!$sectiondestrecord = $DB->get_record("course_sections", array("course"=>$course->id, "section"=>$sectiondest))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Three-step change ensures that the section always remains unique (there is
|
||||
// a unique index now)
|
||||
$DB->set_field("course_sections", "section", -$sectiondest, array("id"=>$sectionrecord->id));
|
||||
$DB->set_field("course_sections", "section", $section, array("id"=>$sectiondestrecord->id));
|
||||
$DB->set_field("course_sections", "section", $sectiondest, array("id"=>$sectionrecord->id));
|
||||
|
||||
// Update highlighting if the move affects highlighted section
|
||||
if ($course->marker == $section) {
|
||||
course_set_marker($course->id, $sectiondest);
|
||||
} elseif ($course->marker == $sectiondest) {
|
||||
course_set_marker($course->id, $section);
|
||||
}
|
||||
|
||||
|
||||
// Fix order if needed. The database prevents duplicate sections, but it is
|
||||
// possible there could be a gap in the numbering.
|
||||
$sections = $DB->get_records('course_sections', array('course'=>$course->id), 'section ASC');
|
||||
$n = 0;
|
||||
foreach ($sections as $section) {
|
||||
if ($section->section != $n) {
|
||||
$DB->set_field('course_sections', 'section', $n, array('id'=>$section->id));
|
||||
}
|
||||
$n++;
|
||||
}
|
||||
// After moving section, rebuild course cache.
|
||||
rebuild_course_cache($course->id, true);
|
||||
return true;
|
||||
return $retval;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -3107,6 +3078,10 @@ function reorder_sections($sections, $origin_position, $target_position) {
|
||||
unset($sections[$id]);
|
||||
}
|
||||
if ($position == $target_position) {
|
||||
if ($target_position < $origin_position) {
|
||||
$append_array[$id] = $position;
|
||||
unset($sections[$id]);
|
||||
}
|
||||
$found = true;
|
||||
}
|
||||
}
|
||||
|
@ -52,6 +52,16 @@ class courselib_testcase extends advanced_testcase {
|
||||
$this->assertEquals($oldsections[5], $neworder[5]);
|
||||
$this->assertEquals($oldsections[6], $neworder[6]);
|
||||
|
||||
$neworder = reorder_sections($sections, 4, 2);
|
||||
$neworder = array_keys($neworder);
|
||||
$this->assertEquals($oldsections[0], $neworder[0]);
|
||||
$this->assertEquals($oldsections[1], $neworder[1]);
|
||||
$this->assertEquals($oldsections[2], $neworder[3]);
|
||||
$this->assertEquals($oldsections[3], $neworder[4]);
|
||||
$this->assertEquals($oldsections[4], $neworder[2]);
|
||||
$this->assertEquals($oldsections[5], $neworder[5]);
|
||||
$this->assertEquals($oldsections[6], $neworder[6]);
|
||||
|
||||
$neworder = reorder_sections(1, 2, 4);
|
||||
$this->assertFalse($neworder);
|
||||
}
|
||||
|
4
course/yui/dragdrop/dragdrop.js
vendored
4
course/yui/dragdrop/dragdrop.js
vendored
@ -135,12 +135,10 @@ YUI.add('moodle-course-dragdrop', function(Y) {
|
||||
var dragnodeid = Number(this.get_section_id(dragnode));
|
||||
var dropnodeid = Number(this.get_section_id(dropnode));
|
||||
|
||||
var targetoffset = 0;
|
||||
var loopstart = dragnodeid;
|
||||
var loopend = dropnodeid;
|
||||
|
||||
if (this.goingup) {
|
||||
targetoffset = 1;
|
||||
loopstart = dropnodeid;
|
||||
loopend = dragnodeid;
|
||||
}
|
||||
@ -166,7 +164,7 @@ YUI.add('moodle-course-dragdrop', function(Y) {
|
||||
params['class'] = 'section';
|
||||
params.field = 'move';
|
||||
params.id = dragnodeid;
|
||||
params.value = dropnodeid - targetoffset;
|
||||
params.value = dropnodeid;
|
||||
|
||||
// Do AJAX request
|
||||
var uri = M.cfg.wwwroot + this.get('ajaxurl');
|
||||
|
Loading…
x
Reference in New Issue
Block a user