Merge branch 'w28_MDL-28313_m22_enroldb' of git://github.com/skodak/moodle
authorSam Hemelryk <sam.hemelryk@gmail.com>
Mon, 18 Jul 2011 10:01:08 +0000 (20:01 +1000)
committerSam Hemelryk <sam.hemelryk@gmail.com>
Mon, 18 Jul 2011 10:01:08 +0000 (20:01 +1000)
26 files changed:
admin/index.php
admin/settings/security.php
admin/settings/server.php
course/report/log/live.php
enrol/authorize/lang/en/enrol_authorize.php
enrol/externallib.php
enrol/manual/edit_form.php
enrol/manual/lang/en/enrol_manual.php
enrol/meta/locallib.php
enrol/paypal/edit_form.php
enrol/paypal/lang/en/enrol_paypal.php
enrol/self/edit_form.php
enrol/self/lang/en/enrol_self.php
lang/en/admin.php
lib/db/upgrade.php
lib/javascript-static.js
lib/weblib.php
mod/glossary/showentry.php
mod/scorm/lang/en/scorm.php
mod/scorm/lib.php
mod/scorm/locallib.php
mod/scorm/module.js
mod/scorm/player.php
mod/workshop/locallib.php
theme/base/style/core.css
version.php

index 567936b..77c0404 100644 (file)
@@ -75,9 +75,6 @@ if (is_float_problem()) {
 }
 
 // Set some necessary variables during set-up to avoid PHP warnings later on this page
-if (!isset($CFG->framename)) {
-    $CFG->framename = '_top';
-}
 if (!isset($CFG->release)) {
     $CFG->release = '';
 }
index 8df02f5..b2b264c 100644 (file)
@@ -82,6 +82,7 @@ if ($hassiteconfig) { // speedup for non-admins, add all caps used on this page
     $temp->add(new admin_setting_configcheckbox('loginhttps', get_string('loginhttps', 'admin'), get_string('configloginhttps', 'admin'), 0));
     $temp->add(new admin_setting_configcheckbox('cookiesecure', get_string('cookiesecure', 'admin'), get_string('configcookiesecure', 'admin'), 0));
     $temp->add(new admin_setting_configcheckbox('cookiehttponly', get_string('cookiehttponly', 'admin'), get_string('configcookiehttponly', 'admin'), 0));
+    $temp->add(new admin_setting_configcheckbox('allowframembedding', get_string('allowframembedding', 'admin'), get_string('allowframembedding_help', 'admin'), 0));
     $ADMIN->add('security', $temp);
 
 
index 049663d..e8d7ea7 100644 (file)
@@ -85,7 +85,6 @@ $ADMIN->add('server', $temp);
 
 // "http" settingpage
 $temp = new admin_settingpage('http', get_string('http', 'admin'));
-$temp->add(new admin_setting_configtext('framename', get_string('framename', 'admin'), get_string('configframename', 'admin'), '_top', PARAM_ALPHAEXT));
 $temp->add(new admin_setting_configcheckbox('slasharguments', get_string('slasharguments', 'admin'), get_string('configslasharguments', 'admin'), 1));
 $temp->add(new admin_setting_heading('reverseproxy', get_string('reverseproxy', 'admin'), '', ''));
 $options = array(
index f3db876..3062233 100644 (file)
 
     session_get_instance()->write_close();
 
-    // we override the default framename so header/footer
-    // links open in a new window
-    if (empty($CFG->framename) || $CFG->framename==='_top') {
-        $CFG->framename = '_blank';
-    }
-
     $strlivelogs = get_string("livelogs");
     $strupdatesevery = get_string("updatesevery", "moodle", COURSE_LIVELOG_REFRESH);
 
index 6250d2e..1f4d91e 100644 (file)
@@ -256,7 +256,7 @@ $string['youcantdo'] = 'You can\'t do this action: {$a->action}';
 $string['zipcode'] = 'Zip code';
 $string['cost'] = 'Cost';
 $string['currency'] = 'Currency';
-$string['enrolperiod'] = 'Enrolment period';
+$string['enrolperiod'] = 'Enrolment duration';
 $string['enrolstartdate'] = 'Start date';
 $string['enrolenddate'] = 'End date';
 $string['enrolenddaterror'] = 'Enrolment end date cannot be earlier than start date';
index 9813ef5..b11271c 100644 (file)
@@ -121,7 +121,7 @@ class moodle_enrol_external extends external_api {
             $profilimgurlsmall = moodle_url::make_pluginfile_url($enrolleduser->usercontextid, 'user', 'icon', NULL, '/', 'f2');
             $resultuser = array(
                 'courseid' => $enrolleduser->courseid,
-                'userid' => $enrolleduser->userid, 
+                'userid' => $enrolleduser->userid,
                 'fullname' => fullname($enrolleduser),
                 'profileimgurl' => $profilimgurl->out(false),
                 'profileimgurlsmall' => $profilimgurlsmall->out(false)
@@ -271,6 +271,12 @@ class moodle_enrol_external extends external_api {
             self::validate_context($context);
             require_capability('moodle/role:assign', $context);
 
+            // throw an exception if user is not able to assign the role in this context
+            $roles = get_assignable_roles($context, ROLENAME_SHORT);
+            if (!key_exists($assignment['roleid'], $roles)) {
+                throw new invalid_parameter_exception('Can not assign roleid='.$assignment['roleid'].' in contextid='.$assignment['contextid']);
+            }
+
             role_assign($assignment['roleid'], $assignment['userid'], $assignment['contextid']);
         }
 
@@ -327,6 +333,12 @@ class moodle_enrol_external extends external_api {
             self::validate_context($context);
             require_capability('moodle/role:assign', $context);
 
+            // throw an exception if user is not able to unassign the role in this context
+            $roles = get_assignable_roles($context, ROLENAME_SHORT);
+            if (!key_exists($unassignment['roleid'], $roles)) {
+                throw new invalid_parameter_exception('Can not unassign roleid='.$unassignment['roleid'].' in contextid='.$unassignment['contextid']);
+            }
+
             role_unassign($unassignment['roleid'], $unassignment['userid'], $unassignment['contextid']);
         }
 
index 9a4219e..7ff2792 100644 (file)
@@ -46,6 +46,7 @@ class enrol_manual_edit_form extends moodleform {
 
         $mform->addElement('duration', 'enrolperiod', get_string('defaultperiod', 'enrol_manual'), array('optional' => true, 'defaultunit' => 86400));
         $mform->setDefault('enrolperiod', $plugin->get_config('enrolperiod'));
+        $mform->addHelpButton('enrolperiod', 'defaultperiod', 'enrol_manual');
 
         if ($instance->id) {
             $roles = get_default_enrol_roles($context, $instance->roleid);
index aead384..4d11100 100644 (file)
 $string['alterstatus'] = 'Alter status';
 $string['altertimeend'] = 'Alter end time';
 $string['altertimestart'] = 'Alter start time';
-$string['assignrole'] = 'Assignrole';
+$string['assignrole'] = 'Assign role';
 $string['confirmbulkdeleteenrolment'] = 'Are you sure you want to delete these users enrolments?';
-$string['defaultperiod'] = 'Default enrolment period';
-$string['defaultperiod_desc'] = 'Default length of the default enrolment period setting (in seconds).'; //TODO: fixme
+$string['defaultperiod'] = 'Default enrolment duration';
+$string['defaultperiod_desc'] = 'Default length of time that the enrolment is valid (in seconds). If set to zero, the enrolment duration will be unlimited by default.';
+$string['defaultperiod_help'] = 'Default length of time that the enrolment is valid, starting with the moment the user is enrolled. If disabled, the enrolment duration will be unlimited by default.';
 $string['deleteselectedusers'] = 'Delete selected user enrolments';
 $string['editenrolment'] = 'Edit enrolment';
 $string['editselectedusers'] = 'Edit selected user enrolments';
index 5fa467b..c8676dd 100644 (file)
@@ -1,5 +1,4 @@
 <?php
-
 // This file is part of Moodle - http://moodle.org/
 //
 // Moodle is free software: you can redistribute it and/or modify
@@ -45,7 +44,7 @@ class enrol_meta_handler {
             return true;
         }
 
-        //only course level roles are interesting
+        // only course level roles are interesting
         $parentcontext = get_context_instance_by_id($ra->contextid);
         if ($parentcontext->contextlevel != CONTEXT_COURSE) {
             return true;
@@ -81,7 +80,7 @@ class enrol_meta_handler {
     public function role_unassigned($ra) {
         global $DB;
 
-        //note: do not test if plugin enabled, we want to keep removing previous roles
+        // note: do not test if plugin enabled, we want to keep removing previous roles
 
         // prevent circular dependencies - we can not sync meta roles recursively
         if ($ra->component === 'enrol_meta') {
@@ -99,7 +98,7 @@ class enrol_meta_handler {
             return true;
         }
 
-        //note: do not check 'nosyncroleids', somebody might have just enabled it, we want to get rid of nosync roles gradually
+        // note: do not check 'nosyncroleids', somebody might have just enabled it, we want to get rid of nosync roles gradually
 
         foreach ($enrols as $enrol) {
             // Is the user enrolled? We want to sync only really enrolled users
@@ -114,8 +113,8 @@ class enrol_meta_handler {
                 continue;
             }
 
-            // unassing role, there is no other role assignment in parent course
-            role_unassign($ra->roleid, $ra->userid, $ra->contextid, 'enrol_meta', $enrol->id);
+            // unassign role, there is no other role assignment in parent course
+            role_unassign($ra->roleid, $ra->userid, $context->id, 'enrol_meta', $enrol->id);
         }
 
         return true;
@@ -128,6 +127,11 @@ class enrol_meta_handler {
             return true;
         }
 
+        if ($ue->enrol === 'meta') {
+            // prevent circular dependencies - we can not sync meta enrolments recursively
+            return true;
+        }
+
         // does anything want to sync with this parent?
         if (!$enrols = $DB->get_records('enrol', array('customint1'=>$ue->courseid, 'enrol'=>'meta'), 'id ASC')) {
             return true;
@@ -153,7 +157,7 @@ class enrol_meta_handler {
                   JOIN {user_enrolments} ue ON (ue.enrolid = e.id AND ue.userid = :userid)
                   JOIN {enrol} pe ON (pe.courseid = e.customint1 AND pe.enrol <> 'meta' AND pe.courseid = :courseid)
              LEFT JOIN {user_enrolments} pue ON (pue.enrolid = pe.id AND pue.userid = ue.userid)
-                 WHERE pue.id IS NULL";
+                 WHERE pue.id IS NULL AND e.enrol = 'meta'";
         $params = array('courseid'=>$ue->courseid, 'userid'=>$ue->userid);
 
         $rs = $DB->get_recordset_sql($sql, $params);
@@ -170,7 +174,7 @@ class enrol_meta_handler {
     public function course_deleted($course) {
         global $DB;
 
-        //note: do not test if plugin enabled, we want to keep removing previously linked courses
+        // note: do not test if plugin enabled, we want to keep removing previously linked courses
 
         // does anything want to sync with this parent?
         if (!$enrols = $DB->get_records('enrol', array('customint1'=>$course->id, 'enrol'=>'meta'), 'id ASC')) {
@@ -179,7 +183,7 @@ class enrol_meta_handler {
 
         $plugin = enrol_get_plugin('meta');
         foreach ($enrols as $enrol) {
-            //unenrol all users
+            // unenrol all users
             $ues = $DB->get_recordset('user_enrolments', array('enrolid'=>$enrol->id));
             foreach ($ues as $ue) {
                 $plugin->unenrol_user($enrol, $ue->userid);
@@ -191,6 +195,7 @@ class enrol_meta_handler {
     }
 }
 
+
 /**
  * Sync all meta course links.
  * @param int $courseid one course, empty mean all
index 8ee2147..e2121d5 100644 (file)
@@ -69,14 +69,15 @@ class enrol_paypal_edit_form extends moodleform {
 
         $mform->addElement('duration', 'enrolperiod', get_string('enrolperiod', 'enrol_paypal'), array('optional' => true, 'defaultunit' => 86400));
         $mform->setDefault('enrolperiod', $plugin->get_config('enrolperiod'));
-
+        $mform->addHelpButton('enrolperiod', 'enrolperiod', 'enrol_paypal');
 
         $mform->addElement('date_selector', 'enrolstartdate', get_string('enrolstartdate', 'enrol_paypal'), array('optional' => true));
         $mform->setDefault('enrolstartdate', 0);
-
+        $mform->addHelpButton('enrolstartdate', 'enrolstartdate', 'enrol_paypal');
 
         $mform->addElement('date_selector', 'enrolenddate', get_string('enrolenddate', 'enrol_paypal'), array('optional' => true));
         $mform->setDefault('enrolenddate', 0);
+        $mform->addHelpButton('enrolenddate', 'enrolenddate', 'enrol_paypal');
 
         $mform->addElement('hidden', 'id');
         $mform->addElement('hidden', 'courseid');
index 9f8030a..211b9a8 100644 (file)
@@ -34,10 +34,13 @@ $string['currency'] = 'Currency';
 $string['defaultrole'] = 'Default role assignment';
 $string['defaultrole_desc'] = 'Select role which should be assigned to users during PayPal enrolments';
 $string['enrolenddate'] = 'End date';
+$string['enrolenddate_help'] = 'If enabled, users can be enrolled until this date only.';
 $string['enrolenddaterror'] = 'Enrolment end date cannot be earlier than start date';
-$string['enrolperiod'] = 'Enrolment period';
-$string['enrolperiod_desc'] = 'Default length of the enrolment period (in seconds).'; //TODO: fixme
+$string['enrolperiod'] = 'Enrolment duration';
+$string['enrolperiod_desc'] = 'Default length of time that the enrolment is valid (in seconds). If set to zero, the enrolment duration will be unlimited by default.';
+$string['enrolperiod_help'] = 'Length of time that the enrolment is valid, starting with the moment the user is enrolled. If disabled, the enrolment duration will be unlimited.';
 $string['enrolstartdate'] = 'Start date';
+$string['enrolstartdate_help'] = 'If enabled, users can be enrolled from this date onward only.';
 $string['mailadmins'] = 'Notify admin';
 $string['mailstudents'] = 'Notify students';
 $string['mailteachers'] = 'Notify teachers';
index 3141f5e..338ccb6 100644 (file)
@@ -68,12 +68,15 @@ class enrol_self_edit_form extends moodleform {
 
         $mform->addElement('duration', 'enrolperiod', get_string('enrolperiod', 'enrol_self'), array('optional' => true, 'defaultunit' => 86400));
         $mform->setDefault('enrolperiod', $plugin->get_config('enrolperiod'));
+        $mform->addHelpButton('enrolperiod', 'enrolperiod', 'enrol_self');
 
         $mform->addElement('date_selector', 'enrolstartdate', get_string('enrolstartdate', 'enrol_self'), array('optional' => true));
         $mform->setDefault('enrolstartdate', 0);
+        $mform->addHelpButton('enrolstartdate', 'enrolstartdate', 'enrol_self');
 
         $mform->addElement('date_selector', 'enrolenddate', get_string('enrolenddate', 'enrol_self'), array('optional' => true));
         $mform->setDefault('enrolenddate', 0);
+        $mform->addHelpButton('enrolenddate', 'enrolenddate', 'enrol_self');
 
         $options = array(0 => get_string('never'),
                  1800 * 3600 * 24 => get_string('numdays', '', 1800),
index f32a366..14a62f8 100644 (file)
@@ -29,11 +29,14 @@ $string['defaultrole'] = 'Default role assignment';
 $string['defaultrole_desc'] = 'Select role which should be assigned to users during self enrolment';
 $string['editenrolment'] = 'Edit enrolment';
 $string['enrolenddate'] = 'End date';
+$string['enrolenddate_help'] = 'If enabled, users can enrol themselves until this date only.';
 $string['enrolenddaterror'] = 'Enrolment end date cannot be earlier than start date';
 $string['enrolme'] = 'Enrol me';
-$string['enrolperiod'] = 'Enrolment period';
-$string['enrolperiod_desc'] = 'Default length of the enrolment period (in seconds).'; //TODO: fixme
+$string['enrolperiod'] = 'Enrolment duration';
+$string['enrolperiod_desc'] = 'Default length of time that the enrolment is valid (in seconds). If set to zero, the enrolment duration will be unlimited by default.';
+$string['enrolperiod_help'] = 'Length of time that the enrolment is valid, starting with the moment the user enrols themselves. If disabled, the enrolment duration will be unlimited.';
 $string['enrolstartdate'] = 'Start date';
+$string['enrolstartdate_help'] = 'If enabled, users can enrol themselves from this date onward only.';
 $string['groupkey'] = 'Use group enrolment keys';
 $string['groupkey_desc'] = 'Use group enrolment keys by default.';
 $string['groupkey_help'] = 'In addition to restricting access to the course to only those who know the key, use of a group enrolment key means users are automatically added to the group when they enrol in the course.
index 115dd5b..134367b 100644 (file)
@@ -47,6 +47,8 @@ $string['allowcoursethemes'] = 'Allow course themes';
 $string['allowdeletes'] = 'Allow deletes';
 $string['allowediplist'] = 'Allowed IP list';
 $string['allowemailaddresses'] = 'Allowed email domains';
+$string['allowframembedding'] = 'Allow frame embedding';
+$string['allowframembedding_help'] = 'Allow embedding of this site in frames on external sites. Enabling of this feature is not recommended for security reasons.';
 $string['allowobjectembed'] = 'Allow EMBED and OBJECT tags';
 $string['allowrenames'] = 'Allow renames';
 $string['allowthemechangeonurl'] = 'Allow theme changes in the URL';
@@ -216,7 +218,6 @@ $string['configfiltermatchonepertext'] = 'Automatic linking filters will only ge
 $string['configfilteruploadedfiles'] = 'Process all uploaded HTML and text files with the filters before displaying them, only uploaded HTML files or none at all.';
 $string['configforcelogin'] = 'Normally, the front page of the site and the course listings (but not courses) can be read by people without logging in to the site.  If you want to force people to log in before they do ANYTHING on the site, then you should enable this setting.';
 $string['configforceloginforprofiles'] = 'This setting forces people to login as a real (non-guest) account before viewing any user\'s profile. If you disabled this setting, you may find that some users post advertising (spam) or other inappropriate content in their profiles, which is then visible to the whole world.';
-$string['configframename'] = 'If you are embedding Moodle within a web frame, then put the name of this frame here.  Otherwise this value should remain as \'_top\'';
 $string['configfrontpage'] = 'The items selected above will be displayed on the site\'s front page.';
 $string['configfrontpageloggedin'] = 'The items selected above will be displayed on the site\'s front page when a user is logged in.';
 $string['configfullnamedisplay'] = 'This defines how names are shown when they are displayed in full. For most mono-lingual sites the most efficient setting is the default "First name + Surname", but you may choose to hide surnames altogether, or to leave it up to the current language pack to decide (some languages have different conventions).';
@@ -533,7 +534,6 @@ $string['filteruploadedfiles'] = 'Filter uploaded files';
 $string['forcelogin'] = 'Force users to login';
 $string['forceloginforprofiles'] = 'Force users to login for profiles';
 $string['forcetimezone'] = 'Force default timezone';
-$string['framename'] = 'Frame name';
 $string['frontpage'] = 'Front page';
 $string['frontpagebackup'] = 'Front page backup';
 $string['frontpagedefaultrole'] = 'Default frontpage role';
index f823295..cd7f428 100644 (file)
@@ -6643,6 +6643,12 @@ FROM
         upgrade_main_savepoint(true, 2011070800.01);
     }
 
+    if ($oldversion < 2011071300.01) {
+        // remove unused config option
+        unset_config('framename');
+        upgrade_main_savepoint(true, 2011071300.01);
+    }
+
 
     return true;
 }
index f847920..c2845c2 100644 (file)
@@ -1172,10 +1172,6 @@ function update_progress_bar (id, width, pt, msg, es){
 
 }
 
-function frame_breakout(e, properties) {
-    this.setAttribute('target', properties.framename);
-}
-
 
 // ===== Deprecated core Javascript functions for Moodle ====
 //       DO NOT USE!!!!!!!
index 2b806de..f2d0583 100644 (file)
@@ -1860,6 +1860,8 @@ function get_html_lang($dir = false) {
  * @param $cacheable Can this page be cached on back?
  */
 function send_headers($contenttype, $cacheable = true) {
+    global $CFG;
+
     @header('Content-Type: ' . $contenttype);
     @header('Content-Script-Type: text/javascript');
     @header('Content-Style-Type: text/css');
@@ -1878,6 +1880,10 @@ function send_headers($contenttype, $cacheable = true) {
         @header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
     }
     @header('Accept-Ranges: none');
+
+    if (empty($CFG->allowframembedding)) {
+        @header('X-Frame-Options: sameorigin');
+    }
 }
 
 /**
index 8d5c75b..bf6b29f 100644 (file)
@@ -76,8 +76,6 @@ if (!empty($courseid)) {
     $strglossaries = get_string('modulenameplural', 'glossary');
     $strsearch = get_string('search');
 
-    $CFG->framename = 'newwindow';
-
     $PAGE->navbar->add($strglossaries);
     $PAGE->navbar->add($strsearch);
     $PAGE->set_title(strip_tags("$course->shortname: $strglossaries $strsearch"));
index ee7c718..e72764c 100644 (file)
@@ -68,6 +68,7 @@ $string['deleteattemptcheck'] = 'Are you absolutely sure you want to completely
 $string['deleteallattempts'] = 'Delete all SCORM attempts';
 $string['details'] = 'Track details';
 $string['directories'] = 'Show the directory links';
+$string['disabled'] = 'Disabled';
 $string['display'] = 'Display package';
 $string['displayattemptstatus'] = 'Display attempt status';
 $string['displayattemptstatus_help'] = 'If enabled, scores and grades for attempts are displayed on the SCORM outline page.';
index 69fedb1..14690f2 100644 (file)
@@ -29,6 +29,10 @@ define('SCORM_TYPE_EXTERNAL', 'external');
 /** SCORM_TYPE_IMSREPOSITORY = imsrepository */
 define('SCORM_TYPE_IMSREPOSITORY', 'imsrepository');
 
+define('SCORM_TOC_SIDE', 0);
+define('SCORM_TOC_HIDDEN', 1);
+define('SCORM_TOC_POPUP', 2);
+define('SCORM_TOC_DISABLED', 3);
 
 /**
  * Given an object containing all the necessary data,
index 67b36ad..982329f 100644 (file)
@@ -121,9 +121,10 @@ function scorm_get_skip_view_array() {
  * @return array an array of hide table of contents options
  */
 function scorm_get_hidetoc_array() {
-     return array(0 =>get_string('sided', 'scorm'),
-                  1 => get_string('hidden', 'scorm'),
-                  2 => get_string('popupmenu', 'scorm'));
+     return array(SCORM_TOC_SIDE => get_string('sided', 'scorm'),
+                  SCORM_TOC_HIDDEN => get_string('hidden', 'scorm'),
+                  SCORM_TOC_POPUP => get_string('popupmenu', 'scorm'),
+                  SCORM_TOC_DISABLED => get_string('disabled', 'scorm'));
 }
 
 /**
@@ -1109,7 +1110,7 @@ function scorm_get_attempt_count($userid, $scorm, $attempts_only=false) {
     if ($scorm->grademethod == GRADESCOES) {
         $element = 'cmi.core.lesson_status';
     }
-    if ($scorm->version == 'scorm1_3') {
+    if ($scorm->version == 'scorm_13' || $scorm->version == 'SCORM_1.3') {
         $element = 'cmi.score.raw';
     }
     $attempts = $DB->get_records_select('scorm_scoes_track', "element=? AND userid=? AND scormid=?", array($element, $userid, $scorm->id), 'attempt', 'DISTINCT attempt AS attemptnumber');
index 0893b24..f523509 100644 (file)
@@ -28,18 +28,14 @@ mod_scorm_activate_item = null;
 M.mod_scorm = {};
 
 M.mod_scorm.init = function(Y, hide_nav, hide_toc, toc_title, window_name, launch_sco) {
-
-    if (hide_nav == 0) {
-        scorm_hide_nav = false;
-    }
-    else {
-        scorm_hide_nav = true;
-    }
+    var scorm_disable_toc = false;
+    var scorm_hide_nav = true;
+    var scorm_hide_toc = true;
     if (hide_toc == 0) {
+        scorm_hide_nav = false;
         scorm_hide_toc = false;
-    }
-    else {
-        scorm_hide_toc = true;
+    } else if (hide_toc == 3) {
+        scorm_disable_toc = true;
     }
 
     var scorm_layout_widget;
@@ -285,23 +281,36 @@ M.mod_scorm.init = function(Y, hide_nav, hide_toc, toc_title, window_name, launc
         YAHOO.widget.LayoutUnit.prototype.STR_COLLAPSE = M.str.moodle.hide;
         YAHOO.widget.LayoutUnit.prototype.STR_EXPAND = M.str.moodle.show;
 
-        scorm_layout_widget = new YAHOO.widget.Layout('scorm_layout', {
-            minWidth: 255,
-            minHeight: 600,
-            units: [
-                { position: 'left', body: 'scorm_toc', header: toc_title, width: 250, resize: true, gutter: '2px 5px 5px 2px', collapse: true, minWidth:250, maxWidth: 590},
-                { position: 'center', body: '<div id="scorm_content"></div>', gutter: '2px 5px 5px 2px', scroll: true}
-            ]
-        });
+        if (scorm_disable_toc) {
+            scorm_layout_widget = new YAHOO.widget.Layout('scorm_layout', {
+                minWidth: 255,
+                minHeight: 600,
+                units: [
+                    { position: 'left', body: 'scorm_toc', header: toc_title, width: 0, resize: true, gutter: '0px 0px 0px 0px', collapse: false},
+                    { position: 'center', body: '<div id="scorm_content"></div>', gutter: '0px 0px 0px 0px', scroll: true}
+                ]
+            });
+        } else {
+            scorm_layout_widget = new YAHOO.widget.Layout('scorm_layout', {
+                minWidth: 255,
+                minHeight: 600,
+                units: [
+                    { position: 'left', body: 'scorm_toc', header: toc_title, width: 250, resize: true, gutter: '2px 5px 5px 2px', collapse: true, minWidth:250, maxWidth: 590},
+                    { position: 'center', body: '<div id="scorm_content"></div>', gutter: '2px 5px 5px 2px', scroll: true}
+                ]
+            });
+        }
+
         scorm_layout_widget.render();
         var left = scorm_layout_widget.getUnitByPosition('left');
-        left.on('collapse', function() {
-            scorm_resize_frame();
-        });
-        left.on('expand', function() {
-            scorm_resize_frame();
-        });
-
+        if (!scorm_disable_toc) {
+            left.on('collapse', function() {
+                scorm_resize_frame();
+            });
+            left.on('expand', function() {
+                scorm_resize_frame();
+            });
+        }
         // ugly resizing hack that works around problems with resizing of iframes and objects
         left._resize.on('startResize', function() {
             var obj = YAHOO.util.Dom.get('scorm_object');
@@ -314,10 +323,11 @@ M.mod_scorm.init = function(Y, hide_nav, hide_toc, toc_title, window_name, launc
         });
 
         // hide the TOC if that is the default
-        if (scorm_hide_toc == true) {
-            left.collapse();
+        if (!scorm_disable_toc) {
+            if (scorm_hide_toc == true) {
+               left.collapse();
+            }
         }
-
         // TOC tree
         var tree = new YAHOO.widget.TreeView('scorm_tree');
         scorm_tree_node = tree;
@@ -328,18 +338,20 @@ M.mod_scorm.init = function(Y, hide_nav, hide_toc, toc_title, window_name, launc
                 scorm_bloody_labelclick = true;
             }
         });
-        tree.subscribe('collapse', function(node) {
-            if (scorm_bloody_labelclick) {
-                scorm_bloody_labelclick = false;
-                return false;
-            }
-        });
-        tree.subscribe('expand', function(node) {
-            if (scorm_bloody_labelclick) {
-                scorm_bloody_labelclick = false;
-                return false;
-            }
-        });
+        if (!scorm_disable_toc) {
+            tree.subscribe('collapse', function(node) {
+                if (scorm_bloody_labelclick) {
+                    scorm_bloody_labelclick = false;
+                    return false;
+                }
+            });
+            tree.subscribe('expand', function(node) {
+                if (scorm_bloody_labelclick) {
+                    scorm_bloody_labelclick = false;
+                    return false;
+                }
+            });
+        }
         tree.expandAll();
         tree.render();
 
index 6cc9b9b..ef3700b 100644 (file)
@@ -209,7 +209,7 @@ if ($result->prerequisites) {
         <?php echo $mode == 'review' ? '<div id="scormmode" class="scorm-left">'.get_string('reviewmode', 'scorm')."</div>\n" : ''; ?>
             <div id="scormnav" class="scorm-right">
 <?php
-if ($scorm->hidetoc == 2) {
+if ($scorm->hidetoc == SCORM_TOC_POPUP) {
     echo $result->tocmenu;
 }
 ?>
index 8f772e2..9aeaa83 100644 (file)
@@ -216,10 +216,11 @@ class workshop {
      * Returns an array of options for the editors that are used for submitting and assessing instructions
      *
      * @param stdClass $context
+     * @uses EDITOR_UNLIMITED_FILES hard-coded value for the 'maxfiles' option
      * @return array
      */
     public static function instruction_editors_options(stdclass $context) {
-        return array('subdirs' => 1, 'maxbytes' => 0, 'maxfiles' => EDITOR_UNLIMITED_FILES,
+        return array('subdirs' => 1, 'maxbytes' => 0, 'maxfiles' => -1,
                      'changeformat' => 1, 'context' => $context, 'noclean' => 1, 'trusttext' => 0);
     }
 
index 95ed979..30f86c0 100644 (file)
@@ -3,6 +3,9 @@
  */
 input[type=text],input[type=password],textarea{width:auto;}
 
+/* Fix for YUI overriding styles */
+strong{font-style:inherit;}em{font-weight:inherit;}
+
 /**
  * General
  */
@@ -25,8 +28,12 @@ a.dimmed,
 a.dimmed:link,
 a.dimmed:visited,
 a.dimmed_text,
+a.dimmed_text:link,
+a.dimmed_text:visited,
 .dimmed_text,
 .dimmed_text a,
+.dimmed_text a:link,
+.dimmed_text a:visited,
 .dimmed_category,
 .dimmed_category a {color:#AAAAAA;}
 
index bac0d65..8de9cef 100644 (file)
@@ -31,7 +31,7 @@ defined('MOODLE_INTERNAL') || die();
 
 
 
-$version  = 2011071300.00;              // YYYYMMDD      = weekly release date of this DEV branch
+$version  = 2011071300.01;              // YYYYMMDD      = weekly release date of this DEV branch
                                         //         RR    = release increments - 00 in DEV branches
                                         //           .XX = incremental changes