Skip to content

Commit

Permalink
Merge branch 'wip-mdl-33367' of git://github.com/rajeshtaneja/moodle
Browse files Browse the repository at this point in the history
  • Loading branch information
Sam Hemelryk committed Jun 6, 2012
2 parents bfcf1a4 + ac5f641 commit e5b200c
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 39 deletions.
48 changes: 13 additions & 35 deletions course/lib.php
Original file line number Diff line number Diff line change
Expand Up @@ -2953,8 +2953,11 @@ function delete_mod_from_section($mod, $section) {
* @param int $section Section number (not id!!!)
* @param int $move (-1 or 1)
* @return boolean true if section moved successfully
* @todo MDL-33379 remove this function in 2.5
*/
function move_section($course, $section, $move) {
debugging('This function will be removed before 2.5 is released please use move_section_to', DEBUG_DEVELOPER);

/// Moves a whole course section up and down within the course
global $USER, $DB;

Expand All @@ -2968,41 +2971,12 @@ function move_section($course, $section, $move) {
return false;
}

if (!$sectionrecord = $DB->get_record("course_sections", array("course"=>$course->id, "section"=>$section))) {
return false;
}

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);
$retval = move_section_to($course, $section, $sectiondest);
// If section moved, then rebuild course cache.
if ($retval) {
rebuild_course_cache($course->id, true);
}


// 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;
}

/**
Expand All @@ -3023,7 +2997,7 @@ function move_section_to($course, $section, $destination) {
return true;
}

if ($destination > $course->numsections) {
if (($destination > $course->numsections) || ($destination < 1)) {
return false;
}

Expand Down Expand Up @@ -3112,6 +3086,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;
}
}
Expand Down
10 changes: 10 additions & 0 deletions course/tests/courselib_test.php
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,16 @@ public function test_reorder_sections() {
$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);
}
Expand Down
5 changes: 4 additions & 1 deletion course/view.php
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,10 @@

if (!empty($section)) {
if (!empty($move) and confirm_sesskey()) {
if (move_section($course, $section, $move)) {
$destsection = $section + $move;
if (move_section_to($course, $section, $destsection)) {
// Rebuild course cache, after moving section
rebuild_course_cache($course->id, true);
if ($course->id == SITEID) {
redirect($CFG->wwwroot . '/?redirect=0');
} else {
Expand Down
4 changes: 1 addition & 3 deletions course/yui/dragdrop/dragdrop.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand All @@ -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');
Expand Down

0 comments on commit e5b200c

Please sign in to comment.