Merge branch 'moodleurl_out_as_local_url' of git://git.luns.net.uk/moodle
authorSam Hemelryk <sam@moodle.com>
Mon, 16 Jan 2012 03:31:24 +0000 (11:31 +0800)
committerSam Hemelryk <sam@moodle.com>
Mon, 16 Jan 2012 03:31:24 +0000 (11:31 +0800)
13 files changed:
admin/cli/mysql_engine.php
admin/tool/innodb/index.php
admin/tool/unittest/ex_reporter.php
course/lib.php
grade/report/grader/styles.css
lang/en/moodle.php
lib/ajax/ajaxlib.php
lib/ajax/section_classes.js
mod/scorm/datamodels/scorm_13.js.php
mod/workshop/form/accumulative/backup/moodle1/lib.php
mod/workshop/form/comments/backup/moodle1/lib.php
mod/workshop/form/numerrors/backup/moodle1/lib.php
mod/workshop/form/rubric/backup/moodle1/lib.php

index 53c4b84..c6d7c6e 100644 (file)
@@ -76,7 +76,7 @@ if (!empty($options['engine'])) {
         }
         echo str_pad($table->name, 40). " - ";
 
-        $DB->change_database_structure("ALTER TABLE {$table->name} TYPE = $engine");
+        $DB->change_database_structure("ALTER TABLE {$table->name} ENGINE = $engine");
         echo "DONE\n";
         $converted++;
     }
index faaea89..bbe4d85 100644 (file)
@@ -50,7 +50,7 @@ if (data_submitted() and $confirm and confirm_sesskey()) {
         $DB->set_debug(true);
         foreach ($tables as $table) {
             $fulltable = $DB->get_prefix().$table;
-            $DB->change_database_structure("ALTER TABLE $fulltable TYPE=INNODB");
+            $DB->change_database_structure("ALTER TABLE $fulltable ENGINE=INNODB");
         }
         $DB->set_debug(false);
     }
index 995bebd..5d440f3 100644 (file)
@@ -289,4 +289,9 @@ class ExHtmlReporter extends HtmlReporter {
     function get_string($identifier, $a = NULL) {
         return get_string($identifier, 'tool_unittest', $a);
     }
+
+    function _htmlEntities($message) {
+        // Override subclass message that breaks UTF8.
+        return s($message);
+    }
 }
index c186422..d9cbc00 100644 (file)
@@ -3099,11 +3099,12 @@ function make_editing_buttons(stdClass $mod, $absolute_ignored = true, $movesele
         $str->duplicate      = get_string("duplicate");
         $str->hide           = get_string("hide");
         $str->show           = get_string("show");
-        $str->clicktochange  = get_string("clicktochange");
-        $str->forcedmode     = get_string("forcedmode");
-        $str->groupsnone     = get_string("groupsnone");
-        $str->groupsseparate = get_string("groupsseparate");
-        $str->groupsvisible  = get_string("groupsvisible");
+        $str->groupsnone     = get_string('clicktochangeinbrackets', 'moodle', get_string("groupsnone"));
+        $str->groupsseparate = get_string('clicktochangeinbrackets', 'moodle', get_string("groupsseparate"));
+        $str->groupsvisible  = get_string('clicktochangeinbrackets', 'moodle', get_string("groupsvisible"));
+        $str->forcedgroupsnone     = get_string('forcedmodeinbrackets', 'moodle', get_string("groupsnone"));
+        $str->forcedgroupsseparate = get_string('forcedmodeinbrackets', 'moodle', get_string("groupsseparate"));
+        $str->forcedgroupsvisible  = get_string('forcedmodeinbrackets', 'moodle', get_string("groupsvisible"));
     }
 
     $baseurl = new moodle_url('/course/mod.php', array('sesskey' => sesskey()));
@@ -3220,16 +3221,19 @@ function make_editing_buttons(stdClass $mod, $absolute_ignored = true, $movesele
         if ($mod->groupmode == SEPARATEGROUPS) {
             $groupmode = 0;
             $grouptitle = $str->groupsseparate;
+            $forcedgrouptitle = $str->forcedgroupsseparate;
             $groupclass = 'editing_groupsseparate';
             $groupimage = 't/groups';
         } else if ($mod->groupmode == VISIBLEGROUPS) {
             $groupmode = 1;
             $grouptitle = $str->groupsvisible;
+            $forcedgrouptitle = $str->forcedgroupsvisible;
             $groupclass = 'editing_groupsvisible';
             $groupimage = 't/groupv';
         } else {
             $groupmode = 2;
             $grouptitle = $str->groupsnone;
+            $forcedgrouptitle = $str->forcedgroupsnone;
             $groupclass = 'editing_groupsnone';
             $groupimage = 't/groupn';
         }
@@ -3238,10 +3242,10 @@ function make_editing_buttons(stdClass $mod, $absolute_ignored = true, $movesele
                 new moodle_url($baseurl, array('id' => $mod->id, 'groupmode' => $groupmode)),
                 new pix_icon($groupimage, $grouptitle, 'moodle', array('class' => 'iconsmall')),
                 null,
-                array('class' => $groupclass, 'title' => $grouptitle.' ('.$str->clicktochange.')')
+                array('class' => $groupclass, 'title' => $grouptitle)
             );
         } else {
-            $actions[] = new pix_icon($groupimage, $grouptitle, 'moodle', array('title' => $grouptitle.' ('.$str->forcedmode.')', 'class' => 'iconsmall'));
+            $actions[] = new pix_icon($groupimage, $forcedgrouptitle, 'moodle', array('title' => $forcedgrouptitle, 'class' => 'iconsmall'));
         }
     }
 
index 20c78ed..4730ba5 100644 (file)
@@ -342,10 +342,6 @@ text-align:center;
 clear:both;
 }
 
-.path-grade-report-grader form {
-text-align:center;
-}
-
 .path-grade-report-grader input.center {
 margin:10px auto 0;
 }
index 7f8fb12..28e82c6 100644 (file)
@@ -236,7 +236,7 @@ $string['clear'] = 'Clear';
 $string['clickhelpiconformoreinfo'] = '... continues ... Click on the help icon to read the full article';
 $string['clickhere'] = 'Click here ...';
 $string['clicktohideshow'] = 'Click to expand or collapse';
-$string['clicktochange'] = 'Click to change';
+$string['clicktochangeinbrackets'] = '{$a} (Click to change)';
 $string['closewindow'] = 'Close this window';
 $string['collapseall'] = 'Collapse all';
 $string['commentincontext'] = 'Find this comment in context';
@@ -672,7 +672,7 @@ $string['folderopened'] = 'Opened folder';
 $string['followingoptional'] = 'The following items are optional';
 $string['followingrequired'] = 'The following items are required';
 $string['force'] = 'Force';
-$string['forcedmode'] = 'forced mode';
+$string['forcedmodeinbrackets'] = '{$a} (forced mode)';
 $string['forcelanguage'] = 'Force language';
 $string['forceno'] = 'Do not force';
 $string['forcepasswordchange'] = 'Force password change';
index 37d0f29..f7d378f 100644 (file)
@@ -149,10 +149,9 @@ class jsportal {
         $output .= "    main.portal.strings['moveleft']='".addslashes_js(get_string('moveleft'))."';\n";
         $output .= "    main.portal.strings['moveright']='".addslashes_js(get_string('moveright'))."';\n";
         $output .= "    main.portal.strings['update']='".addslashes_js(get_string('update'))."';\n";
-        $output .= "    main.portal.strings['groupsnone']='".addslashes_js(get_string('groupsnone'))."';\n";
-        $output .= "    main.portal.strings['groupsseparate']='".addslashes_js(get_string('groupsseparate'))."';\n";
-        $output .= "    main.portal.strings['groupsvisible']='".addslashes_js(get_string('groupsvisible'))."';\n";
-        $output .= "    main.portal.strings['clicktochange']='".addslashes_js(get_string('clicktochange'))."';\n";
+        $output .= "    main.portal.strings['groupsnone']='".addslashes_js(get_string('clicktochangeinbrackets', 'moodle', get_string('groupsnone')))."';\n";
+        $output .= "    main.portal.strings['groupsseparate']='".addslashes_js(get_string('clicktochangeinbrackets', 'moodle', get_string('groupsseparate')))."';\n";
+        $output .= "    main.portal.strings['groupsvisible']='".addslashes_js(get_string('clicktochangeinbrackets', 'moodle', get_string('groupsvisible')))."';\n";
         $output .= "    main.portal.strings['deletecheck']='".addslashes_js(get_string('deletecheckfull','','_var_'))."';\n";
         $output .= "    main.portal.strings['resource']='".addslashes_js(get_string('resource'))."';\n";
         $output .= "    main.portal.strings['activity']='".addslashes_js(get_string('activity'))."';\n";
index cac7cec..c787e3f 100644 (file)
@@ -620,9 +620,9 @@ resource_class.prototype.init_buttons = function() {
     }
 
     // Language strings.
-    var strgroupsnone = main.portal.strings['groupsnone']+' ('+main.portal.strings['clicktochange']+')';
-    var strgroupsseparate = main.portal.strings['groupsseparate']+' ('+main.portal.strings['clicktochange']+')';
-    var strgroupsvisible = main.portal.strings['groupsvisible']+' ('+main.portal.strings['clicktochange']+')';
+    var strgroupsnone = main.portal.strings['groupsnone'];
+    var strgroupsseparate = main.portal.strings['groupsseparate'];
+    var strgroupsvisible = main.portal.strings['groupsvisible'];
 
     this.commandContainer = commandContainer;
     var buttons = commandContainer.getElementsByTagName('a');
@@ -864,13 +864,13 @@ resource_class.prototype.toggle_groupmode = function() {
 
     switch (this.groupmode) {
         case 0:
-            newtitle = main.portal.strings['groupsnone']+' ('+main.portal.strings['clicktochange']+')';
+            newtitle = main.portal.strings['groupsnone'];
             break;
         case 1:
-            newtitle = main.portal.strings['groupsseparate']+' ('+main.portal.strings['clicktochange']+')';
+            newtitle = main.portal.strings['groupsseparate'];
             break;
         case 2:
-            newtitle = main.portal.strings['groupsvisible']+' ('+main.portal.strings['clicktochange']+')';
+            newtitle = main.portal.strings['groupsvisible'];
             break;
     }
 
index 8349cb1..899985e 100644 (file)
@@ -90,9 +90,9 @@ function SCORMapi1_3() {
     var CMIInteger = '^\\d+$';
     var CMISInteger = '^-?([0-9]+)$';
     var CMIDecimal = '^-?([0-9]{1,5})(\\.[0-9]{1,18})?$';
-    var CMIIdentifier = '^\\S{0,250}[a-zA-Z0-9]$';
+    var CMIIdentifier = '^\\S{1,250}[a-zA-Z0-9]$';
     var CMIShortIdentifier = '^[\\w\.]{1,250}$';
-    var CMILongIdentifier = '^\\S{0,4000}$';
+    var CMILongIdentifier = '^(?:(?!urn:)\\S{1,4000}|urn:[A-Za-z0-9-]{1,31}:\\S{1,4000})$';
     var CMIFeedback = '^.*$'; // This must be redefined
     var CMIIndex = '[._](\\d+).';
     var CMIIndexStore = '.N(\\d+).';
index 20293f8..c33e8bc 100644 (file)
@@ -26,8 +26,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-require_once($CFG->dirroot.'/mod/workshop/form/accumulative/db/upgradelib.php');
-
 /**
  * Conversion handler for the accumulative grading strategy data
  */
@@ -171,3 +169,46 @@ class moodle1_workshopform_accumulative_handler extends moodle1_workshopform_han
         return $data;
     }
 }
+
+/**
+ * Transforms a given record from workshop_elements_old into an object to be saved into workshopform_accumulative
+ *
+ * @param stdClass $old legacy record from workshop_elements_old
+ * @param array $newscaleids mapping from old scale types into new standard ones
+ * @param int $newworkshopid id of the new workshop instance that replaced the previous one
+ * @return stdclass to be saved in workshopform_accumulative
+ */
+function workshopform_accumulative_upgrade_element(stdclass $old, array $newscaleids, $newworkshopid) {
+    $new = new stdclass();
+    $new->workshopid = $newworkshopid;
+    $new->sort = $old->elementno;
+    $new->description = $old->description;
+    $new->descriptionformat = FORMAT_HTML;
+    // calculate new grade/scale of the element
+    if ($old->scale >= 0 and $old->scale <= 6 and isset($newscaleids[$old->scale])) {
+        $new->grade = -$newscaleids[$old->scale];
+    } elseif ($old->scale == 7) {
+        $new->grade = 10;
+    } elseif ($old->scale == 8) {
+        $new->grade = 20;
+    } elseif ($old->scale == 9) {
+        $new->grade = 100;
+    } else {
+        $new->grade = 0;    // something is wrong
+    }
+    // calculate new weight of the element. Negative weights are not supported any more and
+    // are replaced with weight = 0. Legacy workshop did not store the raw weight but the index
+    // in the array of weights (see $WORKSHOP_EWEIGHTS in workshop 1.x)
+    // workshop 2.0 uses integer weights only (0-16) so all previous weights are multiplied by 4.
+    switch ($old->weight) {
+        case 8: $new->weight = 1; break;
+        case 9: $new->weight = 2; break;
+        case 10: $new->weight = 3; break;
+        case 11: $new->weight = 4; break;
+        case 12: $new->weight = 6; break;
+        case 13: $new->weight = 8; break;
+        case 14: $new->weight = 16; break;
+        default: $new->weight = 0;
+    }
+    return $new;
+}
index a0aed8b..10b6b28 100644 (file)
@@ -26,8 +26,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-require_once($CFG->dirroot.'/mod/workshop/form/comments/db/upgradelib.php');
-
 /**
  * Conversion handler for the comments grading strategy data
  */
@@ -48,3 +46,19 @@ class moodle1_workshopform_comments_handler extends moodle1_workshopform_handler
         return $converted;
     }
 }
+
+/**
+ * Transforms a given record from workshop_elements_old into an object to be saved into workshopform_comments
+ *
+ * @param stdClass $old legacy record from workshop_elements_old
+ * @param int $newworkshopid id of the new workshop instance that replaced the previous one
+ * @return stdclass to be saved in workshopform_comments
+ */
+function workshopform_comments_upgrade_element(stdclass $old, $newworkshopid) {
+    $new                    = new stdclass();
+    $new->workshopid        = $newworkshopid;
+    $new->sort              = $old->elementno;
+    $new->description       = $old->description;
+    $new->descriptionformat = FORMAT_HTML;
+    return $new;
+}
index 5bff2d5..a88a2b3 100644 (file)
@@ -26,7 +26,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-require_once($CFG->dirroot.'/mod/workshop/form/numerrors/db/upgradelib.php');
 require_once($CFG->libdir.'/gradelib.php'); // grade_floatval() called here
 
 /**
@@ -96,3 +95,35 @@ class moodle1_workshopform_numerrors_handler extends moodle1_workshopform_handle
         }
     }
 }
+
+/**
+ * Transforms a given record from workshop_elements_old into an object to be saved into workshopform_numerrors
+ *
+ * @param stdClass $old legacy record from workshop_elements_old
+ * @param int $newworkshopid id of the new workshop instance that replaced the previous one
+ * @return stdclass to be saved in workshopform_numerrors
+ */
+function workshopform_numerrors_upgrade_element(stdclass $old, $newworkshopid) {
+    $new = new stdclass();
+    $new->workshopid = $newworkshopid;
+    $new->sort = $old->elementno;
+    $new->description = $old->description;
+    $new->descriptionformat = FORMAT_HTML;
+    $new->grade0 = get_string('grade0default', 'workshopform_numerrors');
+    $new->grade1 = get_string('grade1default', 'workshopform_numerrors');
+    // calculate new weight of the element. Negative weights are not supported any more and
+    // are replaced with weight = 0. Legacy workshop did not store the raw weight but the index
+    // in the array of weights (see $WORKSHOP_EWEIGHTS in workshop 1.x)
+    // workshop 2.0 uses integer weights only (0-16) so all previous weights are multiplied by 4.
+    switch ($old->weight) {
+        case 8: $new->weight = 1; break;
+        case 9: $new->weight = 2; break;
+        case 10: $new->weight = 3; break;
+        case 11: $new->weight = 4; break;
+        case 12: $new->weight = 6; break;
+        case 13: $new->weight = 8; break;
+        case 14: $new->weight = 16; break;
+        default: $new->weight = 0;
+    }
+    return $new;
+}
index b1c5cb2..be16f7c 100644 (file)
@@ -26,8 +26,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-require_once($CFG->dirroot.'/mod/workshop/form/rubric/db/upgradelib.php');
-
 /**
  * Conversion handler for the rubric grading strategy data
  */
@@ -141,3 +139,21 @@ class moodle1_workshopform_rubric_handler extends moodle1_workshopform_handler {
         }
     }
 }
+
+/**
+ * Transforms given record into an object to be saved into workshopform_rubric_levels
+ *
+ * This is used during Rubric 1.9 -> Rubric 2.0 conversion
+ *
+ * @param stdClass $old legacy record from joined workshop_elements_old + workshop_rubrics_old
+ * @param int $newdimensionid id of the new workshopform_rubric dimension record to be linked to
+ * @return stdclass to be saved in workshopform_rubric_levels
+ */
+function workshopform_rubric_upgrade_rubric_level(stdclass $old, $newdimensionid) {
+    $new = new stdclass();
+    $new->dimensionid = $newdimensionid;
+    $new->grade = $old->rgrade * workshopform_rubric_upgrade_weight($old->eweight);
+    $new->definition = $old->rdesc;
+    $new->definitionformat = FORMAT_HTML;
+    return $new;
+}