From 54c9783e5c12fac6939954bed1435bfef4e7604c Mon Sep 17 00:00:00 2001 From: Andrew Nicols Date: Thu, 29 May 2014 00:58:46 +0800 Subject: [PATCH 01/32] MDL-45560 report_log: Close sessions before download only If the session is closed too early, then preferences made in the body of the page will not be saved to the session. --- report/log/index.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/report/log/index.php b/report/log/index.php index ad946395b75..d52f0654417 100644 --- a/report/log/index.php +++ b/report/log/index.php @@ -135,7 +135,6 @@ $adminediting = optional_param('adminedit', -1, PARAM_BOOL); if ($PAGE->user_allowed_editing() && $adminediting != -1) { $USER->editing = $adminediting; } -\core\session\manager::write_close(); if (!empty($chooselog)) { $userinfo = get_string('allparticipants'); @@ -175,6 +174,7 @@ if (!empty($chooselog)) { } break; case 'downloadascsv': + \core\session\manager::write_close(); if (!print_log_csv($course, $user, $date, 'l.time DESC', $modname, $modid, $modaction, $group)) { echo $OUTPUT->notification("No logs found!"); @@ -182,6 +182,7 @@ if (!empty($chooselog)) { } exit; case 'downloadasods': + \core\session\manager::write_close(); if (!print_log_ods($course, $user, $date, 'l.time DESC', $modname, $modid, $modaction, $group)) { echo $OUTPUT->notification("No logs found!"); @@ -189,6 +190,7 @@ if (!empty($chooselog)) { } exit; case 'downloadasexcel': + \core\session\manager::write_close(); if (!print_log_xls($course, $user, $date, 'l.time DESC', $modname, $modid, $modaction, $group)) { echo $OUTPUT->notification("No logs found!"); From 2f4815a05b9b63de8997f7778b9c846674f03863 Mon Sep 17 00:00:00 2001 From: Eric Merrill Date: Mon, 2 Jun 2014 11:54:11 -0400 Subject: [PATCH 02/32] MDL-45763 question Random qtype should use '0' or '1' question text. Some time ago, it when from using '0' for no-subcategories to blank. Change to properly define '0' or '1', update old questions, and make sure to fix newly restored questions. Conflicts: mod/quiz/editlib.php question/type/random/version.php --- mod/quiz/editlib.php | 4 +- .../restore_qtype_random_plugin.class.php | 46 +++++++++++++ question/type/random/db/upgrade.php | 65 +++++++++++++++++++ question/type/random/questiontype.php | 5 ++ question/type/random/version.php | 2 +- 5 files changed, 119 insertions(+), 3 deletions(-) create mode 100644 question/type/random/db/upgrade.php diff --git a/mod/quiz/editlib.php b/mod/quiz/editlib.php index b395d91a96d..a742a41983f 100644 --- a/mod/quiz/editlib.php +++ b/mod/quiz/editlib.php @@ -197,7 +197,7 @@ function quiz_add_random_questions($quiz, $addonpage, $categoryid, $number, SELECT * FROM {quiz_question_instances} WHERE question = q.id) - ORDER BY id", array($category->id, $includesubcategories))) { + ORDER BY id", array($category->id, ($includesubcategories ? '1' : '0')))) { // Take as many of these as needed. while (($existingquestion = array_shift($existingquestions)) && $number > 0) { quiz_add_quiz_question($existingquestion->id, $quiz, $addonpage); @@ -212,7 +212,7 @@ function quiz_add_random_questions($quiz, $addonpage, $categoryid, $number, // More random questions are needed, create them. for ($i = 0; $i < $number; $i += 1) { $form = new stdClass(); - $form->questiontext = array('text' => $includesubcategories, 'format' => 0); + $form->questiontext = array('text' => ($includesubcategories ? '1' : '0'), 'format' => 0); $form->category = $category->id . ',' . $category->contextid; $form->defaultmark = 1; $form->hidden = 1; diff --git a/question/type/random/backup/moodle2/restore_qtype_random_plugin.class.php b/question/type/random/backup/moodle2/restore_qtype_random_plugin.class.php index 7418cd174eb..44746315fa1 100644 --- a/question/type/random/backup/moodle2/restore_qtype_random_plugin.class.php +++ b/question/type/random/backup/moodle2/restore_qtype_random_plugin.class.php @@ -33,6 +33,33 @@ defined('MOODLE_INTERNAL') || die(); * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class restore_qtype_random_plugin extends restore_qtype_plugin { + + /** + * Define the plugin structure. + * + * @return array Array of {@link restore_path_elements}. + */ + protected function define_question_plugin_structure() { + $paths = array(); + + // We have to specify a path here if we want after_execute_question to be called. + $elename = 'donothing'; + $elepath = $this->get_pathfor('/'); + + $paths[] = new restore_path_element($elename, $elepath); + + return $paths; // And we return the interesting paths. + } + + /** + * Required function to process path. Should never be called. + * + * @param object $data Data elements. + */ + public function process_donothing($data) { + // Intentionally blank. + } + /** * Given one question_states record, return the answer * recoded pointing to all the restored stuff for random questions @@ -69,4 +96,23 @@ class restore_qtype_random_plugin extends restore_qtype_plugin { } return $result; } + + /** + * After restoring, make sure questiontext is set properly. + */ + public function after_execute_question() { + global $DB; + + // Update any blank random questiontexts to 0. + $sql = "UPDATE {question} + SET questiontext = '0' + WHERE qtype = 'random' + AND " . $DB->sql_compare_text('questiontext') . " = ? + AND id IN (SELECT bi.newitemid + FROM {backup_ids_temp} AS bi + WHERE bi.backupid = ? + AND bi.itemname = 'question_created')"; + + $DB->execute($sql, array('', $this->get_restoreid())); + } } diff --git a/question/type/random/db/upgrade.php b/question/type/random/db/upgrade.php new file mode 100644 index 00000000000..5a5d45bce25 --- /dev/null +++ b/question/type/random/db/upgrade.php @@ -0,0 +1,65 @@ +. + +/** + * Random question type upgrade code. + * + * @package qtype_random + * @copyright 2014 Eric Merrill + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + + +defined('MOODLE_INTERNAL') || die(); + + +/** + * Upgrade code for the random question type. + * @param int $oldversion the version we are upgrading from. + */ +function xmldb_qtype_random_upgrade($oldversion) { + global $CFG, $DB; + + $dbman = $DB->get_manager(); + + // Moodle v2.2.0 release upgrade line + // Put any upgrade step following this. + + // Moodle v2.3.0 release upgrade line + // Put any upgrade step following this. + + // Moodle v2.4.0 release upgrade line + // Put any upgrade step following this. + + // Moodle v2.5.0 release upgrade line. + // Put any upgrade step following this. + + // Moodle v2.6.0 release upgrade line. + // Put any upgrade step following this. + + if ($oldversion < 2013110501) { + $sql = "UPDATE {question} + SET questiontext = '0' + WHERE qtype = 'random' + AND " . $DB->sql_compare_text('questiontext') . " = ?"; + $DB->execute($sql, array('')); + + // Record that qtype_random savepoint was reached. + upgrade_plugin_savepoint(true, 2013110501, 'qtype', 'random'); + } + + return true; +} diff --git a/question/type/random/questiontype.php b/question/type/random/questiontype.php index c57e360d35c..fbb85a75578 100644 --- a/question/type/random/questiontype.php +++ b/question/type/random/questiontype.php @@ -151,6 +151,11 @@ class qtype_random extends question_type { public function save_question($question, $form) { $form->name = ''; + if ($form->questiontext) { + $form->questiontext = '1'; + } else { + $form->questiontext = '0'; + } $form->questiontextformat = FORMAT_MOODLE; $form->tags = array(); diff --git a/question/type/random/version.php b/question/type/random/version.php index fa8c6d6cf09..f37be718ef5 100644 --- a/question/type/random/version.php +++ b/question/type/random/version.php @@ -26,7 +26,7 @@ defined('MOODLE_INTERNAL') || die(); $plugin->component = 'qtype_random'; -$plugin->version = 2013110500; +$plugin->version = 2013110501; $plugin->requires = 2013110500; From 0babaf208d9280994dd23a3806d3051108e6bd7d Mon Sep 17 00:00:00 2001 From: Eric Merrill Date: Tue, 27 May 2014 12:11:28 -0400 Subject: [PATCH 03/32] MDL-45714 backup: Less aggressive removal of old backup dirs The old 4 hour standard was too aggressive and can cause backup files to be removed while they were still in use. Now the same as cron, 1 week. --- backup/moodle2/backup_stepslib.php | 14 ++++++-------- backup/moodle2/restore_stepslib.php | 2 +- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/backup/moodle2/backup_stepslib.php b/backup/moodle2/backup_stepslib.php index 63375a98a6c..00298d5cb3a 100644 --- a/backup/moodle2/backup_stepslib.php +++ b/backup/moodle2/backup_stepslib.php @@ -28,8 +28,7 @@ defined('MOODLE_INTERNAL') || die(); /** - * create the temp dir where backup/restore will happen, - * delete old directories and create temp ids table + * Create the temp dir where backup/restore will happen and create temp ids table. */ class create_and_clean_temp_stuff extends backup_execution_step { @@ -38,7 +37,6 @@ class create_and_clean_temp_stuff extends backup_execution_step { $progress->start_progress('Deleting backup directories'); backup_helper::check_and_create_backup_dir($this->get_backupid());// Create backup temp dir backup_helper::clear_backup_dir($this->get_backupid(), $progress); // Empty temp dir, just in case - backup_helper::delete_old_backup_dirs(time() - (4 * 60 * 60), $progress); // Delete > 4 hours temp dirs backup_controller_dbops::drop_backup_ids_temp_table($this->get_backupid()); // Drop ids temp table backup_controller_dbops::create_backup_ids_temp_table($this->get_backupid()); // Create ids temp table $progress->end_progress(); @@ -46,11 +44,11 @@ class create_and_clean_temp_stuff extends backup_execution_step { } /** - * delete the temp dir used by backup/restore (conditionally), - * delete old directories and drop tem ids table. Note we delete + * Delete the temp dir used by backup/restore (conditionally), + * delete old directories and drop temp ids table. Note we delete * the directory but not the corresponding log file that will be - * there for, at least, 4 hours - only delete_old_backup_dirs() - * deletes log files (for easier access to them) + * there for, at least, 1 week - only delete_old_backup_dirs() or cron + * deletes log files (for easier access to them). */ class drop_and_clean_temp_stuff extends backup_execution_step { @@ -60,7 +58,7 @@ class drop_and_clean_temp_stuff extends backup_execution_step { global $CFG; backup_controller_dbops::drop_backup_ids_temp_table($this->get_backupid()); // Drop ids temp table - backup_helper::delete_old_backup_dirs(time() - (4 * 60 * 60)); // Delete > 4 hours temp dirs + backup_helper::delete_old_backup_dirs(strtotime('-1 week')); // Delete > 1 week old temp dirs. // Delete temp dir conditionally: // 1) If $CFG->keeptempdirectoriesonbackup is not enabled // 2) If backup temp dir deletion has been marked to be avoided diff --git a/backup/moodle2/restore_stepslib.php b/backup/moodle2/restore_stepslib.php index 30a37b0cbd9..bb0a1ecc66c 100644 --- a/backup/moodle2/restore_stepslib.php +++ b/backup/moodle2/restore_stepslib.php @@ -67,7 +67,7 @@ class restore_drop_and_clean_temp_stuff extends restore_execution_step { restore_controller_dbops::drop_restore_temp_tables($this->get_restoreid()); // Drop ids temp table $progress = $this->task->get_progress(); $progress->start_progress('Deleting backup dir'); - backup_helper::delete_old_backup_dirs(time() - (4 * 60 * 60), $progress); // Delete > 4 hours temp dirs + backup_helper::delete_old_backup_dirs(strtotime('-1 week'), $progress); // Delete > 1 week old temp dirs. if (empty($CFG->keeptempdirectoriesonbackup)) { // Conditionally backup_helper::delete_backup_dir($this->task->get_tempdir(), $progress); // Empty restore dir } From 15601a33d90682421e57612286632f07a773cbea Mon Sep 17 00:00:00 2001 From: Jetha Chan Date: Tue, 3 Jun 2014 11:15:00 +0800 Subject: [PATCH 04/32] MDL-42782 usability: fix for extreme course page indenting --- theme/base/style/core.css | 5 +- theme/bootstrapbase/less/moodle/core.less | 58 ++++++----------------- theme/bootstrapbase/style/moodle.css | 2 +- 3 files changed, 18 insertions(+), 47 deletions(-) diff --git a/theme/base/style/core.css b/theme/base/style/core.css index 7d1ea752bba..29e0e13d489 100644 --- a/theme/base/style/core.css +++ b/theme/base/style/core.css @@ -815,8 +815,9 @@ body.tag .managelink {padding: 5px;} .mod-indent-12 {width:360px;} .mod-indent-13 {width:390px;} .mod-indent-14 {width:420px;} -.mod-indent-15, -.mod-indent-huge {width:420px;} +.mod-indent-15 {width:450px;} +.mod-indent-16, +.mod-indent-huge {width:480px;} .dir-rtl .mform .fitem .felement {margin-right: 16%;margin-left:auto;text-align: right;} .dir-rtl .mform .fitem .felement input[name=email], diff --git a/theme/bootstrapbase/less/moodle/core.less b/theme/bootstrapbase/less/moodle/core.less index ae5f6246b8b..9abf2a2149f 100644 --- a/theme/bootstrapbase/less/moodle/core.less +++ b/theme/bootstrapbase/less/moodle/core.less @@ -1246,52 +1246,22 @@ body.tag .managelink { float:left; padding-top:20px } -.mod-indent-1 { - width: 30px; + +/* Creates a series of .mod-indent-# rule declarations based on indent size and number of indent levels. */ +@mod-indent-size: 30px; +@mod-indent-levels: 16; +.mod-indent-generate(@n, @i: 1) when (@i =< @n) { + .mod-indent-@{i} { + width: (@i * @mod-indent-size); + } + .mod-indent-generate(@n, (@i + 1)); } -.mod-indent-2 { - width: 60px; -} -.mod-indent-3 { - width: 90px; -} -.mod-indent-4 { - width: 120px; -} -.mod-indent-5 { - width: 150px; -} -.mod-indent-6 { - width: 180px; -} -.mod-indent-7 { - width: 210px; -} -.mod-indent-8 { - width: 240px; -} -.mod-indent-9 { - width: 270px; -} -.mod-indent-10 { - width: 300px; -} -.mod-indent-11 { - width: 330px; -} -.mod-indent-12 { - width: 360px; -} -.mod-indent-13 { - width: 390px; -} -.mod-indent-14 { - width: 420px; -} -.mod-indent-15, -.mod-indent-huge { - width: 420px; +.mod-indent-generate(@n, @i: 1) when (@i = @n) { + .mod-indent-huge { + width: (@i * @mod-indent-size); + } } +.mod-indent-generate(@mod-indent-levels); /* Audio player size in 'block' mode (can only change width, height is hardcoded in JS) */ .resourcecontent .mediaplugin_mp3 object { diff --git a/theme/bootstrapbase/style/moodle.css b/theme/bootstrapbase/style/moodle.css index 1d1f3989837..a84e021ad3b 100644 --- a/theme/bootstrapbase/style/moodle.css +++ b/theme/bootstrapbase/style/moodle.css @@ -1,4 +1,4 @@ -.layout-option-noheader #page-header,.layout-option-nonavbar #page-navbar,.layout-option-nofooter #page-footer,.layout-option-nocourseheader .course-content-header,.layout-option-nocoursefooter .course-content-footer{display:none}.empty-region-side-pre #block-region-side-pre,.empty-region-side-post #block-region-side-post,.jsenabled.docked-region-side-post #block-region-side-post,.jsenabled.docked-region-side-pre #block-region-side-pre{display:none}.empty-region-side-post #region-bs-main-and-pre.span9,.empty-region-side-pre #region-bs-main-and-post.span9,.empty-region-side-post #region-bs-main-and-post.span9 #region-main.span8,.jsenabled.docked-region-side-post #region-bs-main-and-pre.span9,.jsenabled.docked-region-side-post #region-bs-main-and-post.span9 #region-main.span8,.jsenabled.docked-region-side-pre #region-bs-main-and-post.span9{width:100%}.empty-region-side-pre #region-bs-main-and-pre.span9 #region-main,.jsenabled.docked-region-side-pre #region-bs-main-and-pre.span9 #region-main{float:none;width:100%}.empty-region-side-post.used-region-side-pre #region-main.span8,.jsenabled.docked-region-side-post.used-region-side-pre #region-main.span8{width:74.46808510638297%;*width:74.41489361702126%}.empty-region-side-post.used-region-side-pre #block-region-side-pre.span4,.jsenabled.docked-region-side-post.used-region-side-pre #block-region-side-pre.span4{width:23.404255319148934%;*width:23.351063829787233%}.empty-region-side-pre #region-bs-main-and-post.span9 #region-main.span8,.jsenabled.docked-region-side-pre #region-bs-main-and-post.span9 #region-main.span8{float:right}.dir-ltr,.mdl-left,.dir-rtl .mdl-right{text-align:left}.dir-rtl,.mdl-right,.dir-rtl .mdl-left{text-align:right}#add,#remove,.centerpara,.mdl-align{text-align:center}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,.usersuspended,.usersuspended a,.usersuspended a:link,.usersuspended a:visited,.dimmed_category,.dimmed_category a{color:#999}.activity.label .dimmed_text{opacity:.5;filter:alpha(opacity=50)}.unlist,.unlist li,.inline-list,.inline-list li,.block .list,.block .list li,.section li.activity,.section li.movehere,.tabtree li{padding:0;margin:0;list-style:none}.inline,.inline-list li{display:inline}.notifytiny{font-size:10.5px}.notifytiny li,.notifytiny td{font-size:100%}.red,.notifyproblem{color:#b94a48}.green,.notifysuccess{color:#468847}.highlight{background:#d9edf7}.reportlink{text-align:right}a.autolink.glossary:hover{cursor:help}.collapsibleregioncaption{white-space:nowrap}.collapsibleregioncaption img{vertical-align:middle}.jsenabled .hiddenifjs{display:none}.visibleifjs{display:none}.jsenabled .visibleifjs{display:inline}.jsenabled .collapsibleregion{overflow:hidden}.jsenabled .collapsed .collapsibleregioninner{visibility:hidden}.collapsible-actions{display:none;text-align:right}.dir-rtl .collapsible-actions{text-align:left}.jsenabled .collapsible-actions{display:block}.collapsible-actions .collapseexpand{padding-left:20px;background:url([[pix:t/collapsed]]) 2px center no-repeat}.dir-rtl .collapsible-actions .collapseexpand{padding-right:20px;padding-left:0;background:url([[pix:t/collapsed_rtl]]) right center no-repeat}.collapsible-actions .collapse-all,.dir-rtl .collapsible-actions .collapse-all{background-image:url([[pix:t/expanded]])}.yui-overlay .yui-widget-bd{position:relative;top:0;left:0;z-index:1;padding:2px 5px;color:#000;background-color:#ffee69;border:1px solid #a6982b;border-top-color:#d4c237}.clearer{display:block;height:1px;padding:0;margin:0;clear:both;background:transparent;border-width:0}.bold,.warning,.errorbox .title,.pagingbar .title,.pagingbar .thispage{font-weight:bold}img.resize{width:1em;height:1em}.block img.resize,.breadcrumb img.resize{width:.8em;height:.9em}img.icon{width:16px;height:16px;padding-right:6px;vertical-align:text-bottom}.dir-rtl img.icon{padding-right:0;padding-left:6px}img.iconsmall{width:12px;height:12px;margin-right:3px;vertical-align:middle}img.iconhelp,.helplink img{width:16px;height:16px;padding-left:3px;vertical-align:text-bottom}h1 img.iconhelp,h1 img.icon,h2 img.iconhelp,h2 img.icon,h3 img.iconhelp,h3 img.icon,h4 img.iconhelp,h4 img.icon,h5 img.iconhelp,h5 img.icon,h6 img.iconhelp,h6 img.icon{padding:4px;vertical-align:middle}.dir-rtl img.iconhelp,.dir-rtl .helplink img{padding-right:3px;padding-left:0}img.iconlarge{width:24px;height:24px;vertical-align:middle}img.iconsort{padding-left:.3em;margin-bottom:.15em;vertical-align:text-bottom}.dir-rtl img.iconsort{padding-right:.3em;padding-left:0}img.icontoggle{width:50px;height:17px;vertical-align:middle}img.iconkbhelp{width:49px;height:17px}img.icon-pre,.dir-rtl img.icon-post{padding-right:3px;padding-left:0}img.icon-post,.dir-rtl img.icon-pre{padding-right:0;padding-left:3px}.boxaligncenter{margin-right:auto;margin-left:auto}.boxalignright{margin-right:0;margin-left:auto}.boxalignleft{margin-right:auto;margin-left:0}.boxwidthnarrow{width:30%}.boxwidthnormal{width:50%}.boxwidthwide{width:80%}.headermain{font-weight:bold}#maincontent{display:block;height:1px;overflow:hidden}img.uihint{cursor:help}#addmembersform table{margin-right:auto;margin-left:auto}.flexible th{white-space:nowrap}table.flexible .emptyrow{display:none}img.emoticon{width:15px;height:15px;vertical-align:middle}form.popupform,form.popupform div{display:inline}.arrow_button input{overflow:hidden}.action-icon img.smallicon{margin:0 .3em;vertical-align:text-bottom}.no-overflow{padding-bottom:1px;overflow:auto}.pagelayout-report .no-overflow{overflow:visible}.no-overflow>.generaltable{margin-bottom:0}.accesshide{position:absolute;left:-10000px;font-size:1em;font-weight:normal}.dir-rtl .accesshide{top:-30000px;left:auto}span.hide,div.hide{display:none}a.skip-block,a.skip{position:absolute;top:-1000em;font-size:.85em;text-decoration:none}a.skip-block:focus,a.skip-block:active,a.skip:focus,a.skip:active{position:static;display:block}.skip-block-to{display:block;height:1px;overflow:hidden}.addbloglink{text-align:center}.blog_entry .audience{padding-right:4px;text-align:right}.blog_entry .tags{margin-top:15px}.blog_entry .tags .action-icon img.smallicon{width:16px;height:16px}.blog_entry .content{margin-left:43px}#page-group-index #groupeditform{text-align:center}#doc-contents h1{margin:1em 0 0 0}#doc-contents ul{width:90%;padding:0;margin:0}#doc-contents ul li{list-style-type:none}.groupmanagementtable td{vertical-align:top}.groupmanagementtable #existingcell,.groupmanagementtable #potentialcell{width:42%}.groupmanagementtable #buttonscell{width:16%}.groupmanagementtable #buttonscell p.arrow_button input{width:auto;min-width:80%;margin:0 auto}.groupmanagementtable #removeselect_wrapper,.groupmanagementtable #addselect_wrapper{width:100%}.groupmanagementtable #removeselect_wrapper label,.groupmanagementtable #addselect_wrapper label{font-weight:normal}.dir-rtl .groupmanagementtable p{text-align:right}#group-usersummary{width:14em}.groupselector{display:inline-block;margin-top:3px;margin-bottom:3px}.groupselector label{display:inline-block}.loginbox{margin:15px;overflow:visible}.loginbox.twocolumns{margin:15px}.loginbox h2,.loginbox .subcontent{padding:10px;margin:5px;text-align:center}.loginbox .loginpanel .desc{padding:0;margin:0;margin-top:15px;margin-bottom:5px}.loginbox .signuppanel .subcontent{text-align:left}.dir-rtl .loginbox .signuppanel .subcontent{text-align:right}.loginbox .loginsub{margin-right:0;margin-left:0}.loginbox .guestsub,.loginbox .forgotsub,.loginbox .potentialidps{margin:5px 12%}.loginbox .potentialidps .potentialidplist{margin-left:40%}.loginbox .potentialidps .potentialidplist div{text-align:left}.loginbox .loginform{margin-top:1em;text-align:left}.loginbox .loginform .form-label{float:left;width:44%;text-align:right;white-space:nowrap;direction:rtl}.dir-rtl .loginbox .loginform .form-label{float:left;width:44%;text-align:right;white-space:nowrap;direction:ltr}.loginbox .loginform .form-input{float:right;width:55%}.loginbox .loginform .form-input input{width:6em}.loginbox .signupform{margin-top:1em;text-align:center}.loginbox.twocolumns .loginpanel,.loginbox.twocolumns .signuppanel{display:block;float:left;width:48%;min-height:30px;padding:0;padding-bottom:2000px;margin:0;margin-bottom:-2000px;margin-left:2.76243%;border:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.dir-rtl .loginbox.twocolumns .loginpanel,.dir-rtl .loginbox.twocolumns .signuppanel{float:right}.loginbox .potentialidp .smallicon{margin:0 .3em;vertical-align:text-bottom}.notepost{margin-bottom:1em}.notepost .userpicture{float:left;margin-right:5px}.notepost .content,.notepost .footer{clear:both}.notesgroup{margin-left:20px}.path-my .coursebox .overview{margin:15px 30px 10px 30px}.path-my .coursebox .info{float:none;margin:0}.mod_introbox{padding:10px}table.mod_index{width:100%}.comment-ctrl{display:none;padding:0;margin:0;font-size:12px}.comment-ctrl h5{padding:5px;margin:0}.comment-area{max-width:400px;padding:5px}.comment-area textarea{width:100%;overflow:auto}.comment-area .fd{text-align:right}.comment-meta span{color:gray}.comment-link img{vertical-align:text-bottom}.comment-list{padding:0;margin:0;overflow:auto;font-size:11px;list-style:none}.comment-list li{position:relative;padding:.3em;margin:2px;margin-bottom:5px;clear:both;list-style:none}.comment-list li.first{display:none}.comment-paging{text-align:center}.comment-paging .pageno{padding:2px}.comment-paging .curpage{border:1px solid #CCC}.comment-message .picture{float:left;width:20px}.dir-rtl .comment-message .picture{float:right}.comment-message .text{padding:0;margin:0}.comment-message .text p{padding:0;margin:0 18px 0 0}.comment-delete{position:absolute;top:0;right:0;margin:.3em}.dir-rtl .comment-delete{position:absolute;right:auto;left:0;margin:.3em}.comment-delete-confirm{width:5em;padding:2px;text-align:center;background:#eee}.comment-container{float:left;margin:4px}.comment-report-selectall{display:none}.comment-link{display:none}.jsenabled .comment-link{display:block}.jsenabled .showcommentsnonjs{display:none}.jsenabled .comment-report-selectall{display:inline}.completion-expired{background:#f2dede}.completion-expected{font-size:10.5px}.completion-sortchoice,.completion-identifyfield{font-size:10.5px;vertical-align:bottom}.completion-progresscell{text-align:right}.completion-expired .completion-expected{font-weight:bold}#page-tag-coursetags_edit .coursetag_edit_centered{position:relative;width:600px;margin:20px auto}#page-tag-coursetags_edit .coursetag_edit_row{clear:both}#page-tag-coursetags_edit .coursetag_edit_row .coursetag_edit_left{float:left;width:50%;text-align:right}#page-tag-coursetags_edit .coursetag_edit_row .coursetag_edit_right{margin-left:50%}#page-tag-coursetags_edit .coursetag_edit_input3{display:none}#page-tag-coursetags_more .coursetag_more_large{font-size:120%}#page-tag-coursetags_more .coursetag_more_small{font-size:80%}#page-tag-coursetags_more .coursetag_more_link{font-size:80%}#tag-description,#tag-blogs{width:100%}#tag-management-box{margin-bottom:10px;line-height:20px}#tag-user-table{width:100%;padding:3px;clear:both}#tag-user-table{*zoom:1}#tag-user-table:before,#tag-user-table:after{display:table;line-height:0;content:""}#tag-user-table:after{clear:both}img.user-image{width:100px;height:100px}#small-tag-cloud-box{width:300px;margin:0 auto}#big-tag-cloud-box{float:none;width:600px;margin:0 auto}ul#tag-cloud-list{padding:5px;margin:0;list-style:none}ul#tag-cloud-list li{display:inline;margin:0;list-style-type:none}#tag-search-box{margin:10px auto;text-align:center}#tag-search-results-container{width:100%;padding:0}#tag-search-results{display:block;float:left;width:60%;padding:0;margin:15px 20% 0 20%}#tag-search-results li{float:left;width:30%;padding-right:1%;padding-left:1%;line-height:20px;text-align:left;list-style:none}span.flagged-tag,span.flagged-tag a{color:#b94a48}table#tag-management-list{width:100%;text-align:left}table#tag-management-list td,table#tag-management-list th{padding:4px;text-align:left;vertical-align:middle}.tag-management-form{text-align:center}#relatedtags-autocomplete-container{width:100%;min-height:4.6em;margin-right:auto;margin-left:auto}#relatedtags-autocomplete{position:relative;display:block;width:60%;margin-right:auto;margin-left:auto}#relatedtags-autocomplete .yui-ac-content{position:absolute;left:20%;z-index:9050;width:420px;overflow:hidden;background:#fff;border:1px solid #404040}#relatedtags-autocomplete .ysearchquery{position:absolute;right:10px;z-index:10;color:#808080}#relatedtags-autocomplete .yui-ac-shadow{position:absolute;z-index:9049;width:100%;margin:.3em;background:#a0a0a0}#relatedtags-autocomplete ul{width:100%;padding:0;margin:0;list-style-type:none}#relatedtags-autocomplete li{padding:0 5px;white-space:nowrap;cursor:default}#relatedtags-autocomplete li.yui-ac-highlight{background:#ffc}h2.tag-heading,div#tag-description,div#tag-blogs,body.tag .managelink{padding:5px}.tag_cloud .s20{font-size:1.5em;font-weight:bold}.tag_cloud .s19{font-size:1.5em}.tag_cloud .s18{font-size:1.4em;font-weight:bold}.tag_cloud .s17{font-size:1.4em}.tag_cloud .s16{font-size:1.3em;font-weight:bold}.tag_cloud .s15{font-size:1.3em}.tag_cloud .s14{font-size:1.2em;font-weight:bold}.tag_cloud .s13{font-size:1.2em}.tag_cloud .s12,.tag_cloud .s11{font-size:1.1em;font-weight:bold}.tag_cloud .s10,.tag_cloud .s9{font-size:1.1em}.tag_cloud .s8,.tag_cloud .s7{font-size:1em;font-weight:bold}.tag_cloud .s6,.tag_cloud .s5{font-size:1em}.tag_cloud .s4,.tag_cloud .s3{font-size:.9em;font-weight:bold}.tag_cloud .s2,.tag_cloud .s1{font-size:.9em}.tag_cloud .s0{font-size:.8em}#webservice-doc-generator td{text-align:left;border:0 solid black}.smartselect{position:absolute}.smartselect .smartselect_mask{background-color:#fff}.smartselect ul{padding:0;margin:0}.smartselect ul li{list-style:none}.smartselect .smartselect_menu{margin-right:5px}.safari .smartselect .smartselect_menu{margin-left:2px}.smartselect .smartselect_menu,.smartselect .smartselect_submenu{display:none;background-color:#FFF;border:1px solid #000}.smartselect .smartselect_menu.visible,.smartselect .smartselect_submenu.visible{display:block}.smartselect .smartselect_menu_content ul li{position:relative;padding:2px 5px}.smartselect .smartselect_menu_content ul li a{color:#333;text-decoration:none}.smartselect .smartselect_menu_content ul li a.selectable{color:inherit}.smartselect .smartselect_submenuitem{background-image:url([[pix:moodle|t/collapsed]]);background-position:100%;background-repeat:no-repeat}.smartselect.spanningmenu .smartselect_submenu{position:absolute;top:-1px;left:100%}.smartselect.spanningmenu .smartselect_submenu a{padding-right:16px;white-space:nowrap}.smartselect.spanningmenu .smartselect_menu_content ul li a.selectable:hover{text-decoration:underline}.smartselect.compactmenu .smartselect_submenu{position:relative;z-index:1010;display:none;margin:2px -3px;margin-left:10px;border-width:0}.smartselect.compactmenu .smartselect_submenu.visible{display:block}.smartselect.compactmenu .smartselect_menu{z-index:1000;overflow:hidden}.smartselect.compactmenu .smartselect_submenu .smartselect_submenu{z-index:1020}.smartselect.compactmenu .smartselect_submenuitem:hover>.smartselect_menuitem_label{font-weight:bold}#page-admin-registration-register .registration_textfield{width:300px}.userenrolment{width:100%;border-collapse:collapse}.userenrolment td{height:41px;padding:0}.userenrolment .subfield{margin-right:5px}.userenrolment .col_userdetails .subfield_picture{float:left}.userenrolment .col_lastseen{width:150px}.userenrolment .col_role{width:262px}.userenrolment .col_role .roles{margin-right:30px}.userenrolment .col_role .role{float:left;padding:3px;margin:3px}.dir-rtl .userenrolment .col_role .role{float:right}.userenrolment .col_role .role a{margin-left:3px;cursor:pointer}.userenrolment .col_role .addrole{float:right;width:18px;height:18px;margin:3px;text-align:center;background-color:#dff0d8;border:1px solid #d6e9c6}.userenrolment .col_role .addrole img{vertical-align:baseline}.userenrolment .hasAllRoles .col_role .addrole{display:none}.userenrolment .col_group .groups{margin-right:30px}.userenrolment .col_group .group{float:left;padding:3px;margin:3px;white-space:nowrap}.userenrolment .col_group .group a{margin-left:3px;cursor:pointer}.userenrolment .col_group .addgroup{float:right;width:18px;height:18px;margin:3px;text-align:center}.userenrolment .col_group .addgroup a img{vertical-align:bottom}.userenrolment .col_enrol .enrolment{float:left;padding:3px;margin:3px}.userenrolment .col_enrol .enrolment a{float:right;margin-left:3px}#page-enrol-users .enrol_user_buttons{float:right}#page-enrol-users .enrol_user_buttons .enrolusersbutton{display:inline}#page-enrol-users .enrol_user_buttons .enrolusersbutton div,#page-enrol-users .enrol_user_buttons .enrolusersbutton form{display:inline;margin-right:0}#page-enrol-users #filterform{display:inline-block;min-height:20px;padding:19px;padding:9px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-webkit-border-radius:3px;-moz-border-radius:4px;-moz-border-radius:3px;border-radius:4px;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}#page-enrol-users #filterform blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}#page-enrol-users #filterform .fitem{display:inline-block;margin-right:.3em;line-height:40px;white-space:nowrap}#page-enrol-users #filterform .fitem label{display:inline;padding-right:.3em;line-height:20px}#page-enrol-users #filterform .fitem :before,#page-enrol-users #filterform .fitem:after{display:inline}#page-enrol-users #filterform div,#page-enrol-users #filterform fieldset{display:inline;float:none;width:auto;margin:0;clear:none}#page-enrol-users #filterform select,#page-enrol-users #filterform .ftext input{width:7em}#page-enrol-users #filterform input,#page-enrol-users #filterform select{margin-bottom:0}#page-enrol-users .user-enroller-panel .uep-search-results .user .details{width:237px}.dir-rtl#page-enrol-users .col_userdetails .subfield_picture{float:right}.dir-rtl#page-enrol-users .enrol_user_buttons{float:left}.dir-rtl#page-enrol-users .enrol_user_buttons .enrolusersbutton{margin-right:1em;margin-left:0}.dir-rtl#page-enrol-users .enrol_user_buttons .enrolusersbutton div{margin-left:0}.dir-rtl#page-enrol-users #filterform .fitem{margin-right:0;margin-left:.3em}.dir-rtl#page-enrol-users #filterform .fitem label{padding-right:0;padding-left:.3em}.dir-rtl .headermain{float:right}.dir-rtl .headermenu{float:left}.dir-rtl .loginbox .loginform .form-label{float:right;text-align:left}.dir-rtl .loginbox .loginform .form-input{text-align:right}.dir-rtl .yui3-menu-hidden{left:0}#page-admin-roles-define.dir-rtl #rolesform .felement{margin-right:180px}#page-message-edit.dir-rtl table.generaltable th.c0{text-align:right}.corelightbox{position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;background-color:#CCC}.corelightbox img{position:fixed;top:50%;left:50%}.mod-indent-outer{display:table}.mod-indent{display:table-cell}.label .mod-indent{float:left;padding-top:20px}.mod-indent-1{width:30px}.mod-indent-2{width:60px}.mod-indent-3{width:90px}.mod-indent-4{width:120px}.mod-indent-5{width:150px}.mod-indent-6{width:180px}.mod-indent-7{width:210px}.mod-indent-8{width:240px}.mod-indent-9{width:270px}.mod-indent-10{width:300px}.mod-indent-11{width:330px}.mod-indent-12{width:360px}.mod-indent-13{width:390px}.mod-indent-14{width:420px}.mod-indent-15,.mod-indent-huge{width:420px}.resourcecontent .mediaplugin_mp3 object{width:600px;height:25px}.resourcecontent audio.mediaplugin_html5audio{width:600px}.resourceimage{max-width:100%}.mediaplugin_mp3 object{width:300px;height:15px}audio.mediaplugin_html5audio{width:300px}.core_media_preview.pagelayout-embedded #content{padding:0}.core_media_preview.pagelayout-embedded #maincontent{height:0}body#page-lib-editor-tinymce-plugins-moodlemedia-preview{min-width:0;padding:0;margin:0;background:0}.dir-rtl .ygtvtn,.dir-rtl .ygtvtm,.dir-rtl .ygtvtmh,.dir-rtl .ygtvtmhh,.dir-rtl .ygtvtp,.dir-rtl .ygtvtph,.dir-rtl .ygtvtphh,.dir-rtl .ygtvln,.dir-rtl .ygtvlm,.dir-rtl .ygtvlmh,.dir-rtl .ygtvlmhh,.dir-rtl .ygtvlp,.dir-rtl .ygtvlph,.dir-rtl .ygtvlphh,.dir-rtl .ygtvdepthcell,.dir-rtl .ygtvok,.dir-rtl .ygtvok:hover,.dir-rtl .ygtvcancel,.dir-rtl .ygtvcancel:hover{width:18px;height:22px;cursor:pointer;background-image:url([[pix:theme|yui2-treeview-sprite-rtl]]);background-repeat:no-repeat}.dir-rtl .ygtvtn{background-position:0 -5600px}.dir-rtl .ygtvtm{background-position:0 -4000px}.dir-rtl .ygtvtmh,.dir-rtl .ygtvtmhh{background-position:0 -4800px}.dir-rtl .ygtvtp{background-position:0 -6400px}.dir-rtl .ygtvtph,.dir-rtl .ygtvtphh{background-position:0 -7200px}.dir-rtl .ygtvln{background-position:0 -1600px}.dir-rtl .ygtvlm{background-position:0 0}.dir-rtl .ygtvlmh,.dir-rtl .ygtvlmhh{background-position:0 -800px}.dir-rtl .ygtvlp{background-position:0 -2400px}.dir-rtl .ygtvlph,.dir-rtl .ygtvlphh{background-position:0 -3200px}.dir-rtl .ygtvdepthcell{background-position:0 -8000px}.dir-rtl .ygtvok{background-position:0 -8800px}.dir-rtl .ygtvok:hover{background-position:0 -8844px}.dir-rtl .ygtvcancel{background-position:0 -8822px}.dir-rtl .ygtvcancel:hover{background-position:0 -8866px}.dir-rtl.yui-skin-sam .yui-panel .hd{text-align:right}.dir-rtl .yui-skin-sam .yui-layout .yui-layout-unit div.yui-layout-bd{text-align:right}.dir-rtl .clearlooks2.ie9 .mceAlert .mceMiddle span,.dir-rtl .clearlooks2 .mceConfirm .mceMiddle span{top:44px}.dir-rtl .o2k7Skin table,.dir-rtl .o2k7Skin tbody,.dir-rtl .o2k7Skin a,.dir-rtl .o2k7Skin img,.dir-rtl .o2k7Skin tr,.dir-rtl .o2k7Skin div,.dir-rtl .o2k7Skin td,.dir-rtl .o2k7Skin iframe,.dir-rtl .o2k7Skin span,.dir-rtl .o2k7Skin *,.dir-rtl .o2k7Skin .mceText,.dir-rtl .o2k7Skin .mceListBox .mceText{text-align:right}.path-rating .ratingtable{width:100%;margin-bottom:1em}.path-rating .ratingtable th.rating{width:100%}.path-rating .ratingtable td.rating,.path-rating .ratingtable td.time{text-align:center;white-space:nowrap}.initialbar a,.initialbar strong{padding-right:3px;padding-left:3px}.moodle-dialogue-base .moodle-dialogue-lightbox{background-color:#AAA}.moodle-dialogue-base .hidden,.moodle-dialogue-base .moodle-dialogue-hidden{display:none}.no-scrolling{overflow:hidden}.moodle-dialogue-base .moodle-dialogue-fullscreen{position:fixed;top:0;right:0;bottom:-50px;left:0}.moodle-dialogue-base .moodle-dialogue-fullscreen .moodle-dialogue-content{overflow:auto}.moodle-dialogue-base .moodle-dialogue-fullscreen .closebutton{width:28px;height:16px;background-size:100%}.moodle-dialogue-base .moodle-dialogue{z-index:600;padding:0;margin:0;background:0;border:0;outline:#000 dotted 0}.moodle-dialogue-base .moodle-dialogue-wrap{margin-top:-3px;margin-left:-3px;background-color:#fff;border:1px solid #ccc;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;-webkit-box-shadow:5px 5px 20px 0 #666;-moz-box-shadow:5px 5px 20px 0 #666;box-shadow:5px 5px 20px 0 #666}.moodle-dialogue-base .moodle-dialogue-wrap .moodle-dialogue-hd,.moodle-dialogue-base .moodle-dialogue-wrap .moodle-dialogue-hd.yui3-widget-hd{padding:5px;margin:0;font-size:12px;font-weight:normal;letter-spacing:1px;color:#333;text-align:center;text-shadow:1px 1px 1px #fff;background:#ccc;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#fff,#ccc);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#ccc));background-image:-webkit-linear-gradient(top,#fff,#ccc);background-image:-o-linear-gradient(top,#fff,#ccc);background-image:linear-gradient(to bottom,#fff,#ccc);background-repeat:repeat-x;border-bottom:1px solid #bbb;-webkit-border-radius:10px 10px 0 0;-moz-border-radius:10px 10px 0 0;border-radius:10px 10px 0 0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffcccccc',GradientType=0);filter:0}.moodle-dialogue-base .moodle-dialogue-wrap .moodle-dialogue-hd h1{display:inline;padding:0;margin:0;font-size:100%;font-weight:bold}.moodle-dialogue-base .moodle-dialogue-wrap .moodle-dialogue-hd .yui3-widget-buttons{padding:5px}.moodle-dialogue-base .closebutton{display:inline-block;float:right;width:25px;height:15px;padding:0;vertical-align:middle;cursor:pointer;background-image:url([[pix:theme|sprite]]);background-repeat:no-repeat;border-style:none}.dir-rtl .moodle-dialogue-base .moodle-dialogue-wrap .moodle-dialogue-hd .yui3-widget-buttons{right:auto;left:0}.moodle-dialogue-base .moodle-dialogue .moodle-dialogue-bd{padding:1em;font-size:12px;line-height:2em;color:#555}.moodle-dialogue-base .moodle-dialogue-wrap .moodle-dialogue-content{padding:0;background:#FFF}.moodle-dialogue-base .moodle-dialogue-fullscreen .moodle-dialogue-hd{padding:10px;font-size:16px}.moodle-dialogue-base .moodle-dialogue-fullscreen .moodle-dialogue-content{position:absolute;top:0;right:0;bottom:50px;left:0;margin:0;overflow:auto;border:0}.moodle-dialogue-base .moodle-dialogue-fullscreen .moodle-dialogue-hd,.moodle-dialogue-base .moodle-dialogue-fullscreen .moodle-dialogue-wrap{border-radius:0}.moodle-dialogue-confirm .confirmation-dialogue{text-align:center}.moodle-dialogue-confirm .confirmation-dialogue input{text-align:center}.moodle-dialogue-exception .moodle-exception-message{text-align:center}.moodle-dialogue-exception .moodle-exception-param label{font-weight:bold}.moodle-dialogue-exception .param-stacktrace label{background-color:#EEE;border:1px solid #ccc;border-bottom-width:0}.moodle-dialogue-exception .param-stacktrace pre{background-color:#fff;border:1px solid #ccc}.moodle-dialogue-exception .param-stacktrace .stacktrace-file{font-size:11.9px;color:navy}.moodle-dialogue-exception .param-stacktrace .stacktrace-line{font-size:11.9px;color:#b94a48}.moodle-dialogue-exception .param-stacktrace .stacktrace-call{font-size:90%;color:#333;border-bottom:1px solid #eee}.moodle-dialogue-base .moodle-dialogue .moodle-dialogue-content .moodle-dialogue-ft{padding:0;margin:.7em 1em;font-size:12px;text-align:right;background-color:#FFF}.moodle-dialogue-confirm .confirmation-message{margin:.5em 1em}.moodle-dialogue-confirm .confirmation-dialogue input{min-width:80px}.moodle-dialogue-exception .moodle-exception-message{margin:1em}.moodle-dialogue-exception .moodle-exception-param{margin-bottom:.5em}.moodle-dialogue-exception .moodle-exception-param label{width:150px}.moodle-dialogue-exception .param-stacktrace label{display:block;padding:4px 1em;margin:0}.moodle-dialogue-exception .param-stacktrace pre{display:block;height:200px;overflow:auto}.moodle-dialogue-exception .param-stacktrace .stacktrace-file{display:inline-block;margin:4px 0}.moodle-dialogue-exception .param-stacktrace .stacktrace-line{display:inline-block;width:50px;margin:4px 1em}.moodle-dialogue-exception .param-stacktrace .stacktrace-call{padding-bottom:4px;padding-left:25px;margin-bottom:4px}.moodle-dialogue .moodle-dialogue-bd .content-lightbox{top:0;left:0;width:100%;height:100%;padding:10% 0;text-align:center;background-color:white;opacity:.75;filter:alpha(opacity=75)}.moodle-dialogue .tooltiptext{max-height:300px}.moodle-dialogue-base .moodle-dialogue.moodle-dialogue-tooltip{z-index:3001}.moodle-dialogue-base .moodle-dialogue.moodle-dialogue-tooltip .moodle-dialogue-bd{overflow:auto}#page-question-edit.dir-rtl a.container-close{right:auto;left:6px}.chooserdialoguebody,.choosertitle{display:none}.moodle-dialogue.chooserdialogue .moodle-dialogue-content .moodle-dialogue-ft{margin:0}.chooserdialogue .moodle-dialogue-wrap .moodle-dialogue-bd{padding:0;background:#f2f2f2;-webkit-border-bottom-right-radius:10px;border-bottom-right-radius:10px;-webkit-border-bottom-left-radius:10px;border-bottom-left-radius:10px;-moz-border-radius-bottomright:10px;-moz-border-radius-bottomleft:10px}.choosercontainer #chooseform .submitbuttons{padding:.7em 0;text-align:center}@media(max-height:639px){.ios.safari .choosercontainer #chooseform .submitbuttons{padding:45px 0}}.choosercontainer #chooseform .submitbuttons input{min-width:100px;margin:0 .5em}.choosercontainer #chooseform .options{position:relative;border-bottom:1px solid #bbb}.jsenabled .choosercontainer #chooseform .alloptions{max-width:20.3em;overflow-x:hidden;overflow-y:auto;-webkit-box-shadow:inset 0 0 30px 0 #ccc;-moz-box-shadow:inset 0 0 30px 0 #ccc;box-shadow:inset 0 0 30px 0 #ccc}.dir-rtl.jsenabled .choosercontainer #chooseform .alloptions{max-width:18.3em}.choosercontainer #chooseform .moduletypetitle,.choosercontainer #chooseform .option,.choosercontainer #chooseform .nonoption{padding:0 1.6em 0 1.6em;margin-bottom:0}.choosercontainer #chooseform .moduletypetitle{padding-top:1.2em;padding-bottom:.4em;text-transform:uppercase}.choosercontainer #chooseform .option .typename,.choosercontainer #chooseform .option span.modicon img.icon,.choosercontainer #chooseform .nonoption .typename,.choosercontainer #chooseform .nonoption span.modicon img.icon{padding:0 0 0 .5em}.dir-rtl .choosercontainer #chooseform .option .typename,.dir-rtl .choosercontainer #chooseform .option span.modicon img.icon,.dir-rtl .choosercontainer #chooseform .nonoption .typename,.dir-rtl .choosercontainer #chooseform .nonoption span.modicon img.icon{padding:0 .5em 0 0}.choosercontainer #chooseform .option span.modicon img.icon,.choosercontainer #chooseform .nonoption span.modicon img.icon{width:24px;height:24px}.choosercontainer #chooseform .option input[type=radio],.choosercontainer #chooseform .option span.typename,.choosercontainer #chooseform .option span.modicon{vertical-align:middle}.choosercontainer #chooseform .option label{display:block;padding:.3em 0 .1em 0;border-bottom:1px solid #fff}.choosercontainer #chooseform .nonoption{padding-top:.3em;padding-bottom:.1em;padding-left:2.7em}.dir-rtl .choosercontainer #chooseform .nonoption{padding-right:2.7em;padding-left:0}.choosercontainer #chooseform .subtype{padding:0 1.6em 0 3.2em;margin-bottom:0}.dir-rtl .choosercontainer #chooseform .subtype{padding:0 3.2em 0 1.6em}.choosercontainer #chooseform .subtype .typename{margin:0 0 0 .2em}.dir-rtl .choosercontainer #chooseform .subtype .typename{margin:0 .2em 0 0}.jsenabled .choosercontainer #chooseform .instruction,.jsenabled .choosercontainer #chooseform .typesummary{position:absolute;top:0;right:0;bottom:0;left:20.3em;display:none;padding:1.6em;margin:0;overflow-x:hidden;overflow-y:auto;line-height:2em;background-color:#fff}.dir-rtl.jsenabled .choosercontainer #chooseform .instruction,.dir-rtl.jsenabled .choosercontainer #chooseform .typesummary{right:18.5em;left:0;border-right:1px solid grey}.jsenabled .choosercontainer #chooseform .instruction,.choosercontainer #chooseform .selected .typesummary{display:block}.choosercontainer #chooseform .selected{background-color:#fff;-webkit-box-shadow:0 0 10px 0 #ccc;-moz-box-shadow:0 0 10px 0 #ccc;box-shadow:0 0 10px 0 #ccc}.section-modchooser-link img.smallicon{padding:3px}.formlistingradio{padding-right:10px;padding-bottom:25px}.formlistinginputradio{float:left}.formlistingmain{min-height:225px}.formlisting{position:relative;padding:1px 19px 14px;margin:15px 0;background-color:white;border:1px solid #DDD;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.formlistingmore{position:absolute;right:-1px;bottom:-1px;padding:3px 7px;font-size:12px;font-weight:bold;color:#9da0a4;cursor:pointer;background-color:whiteSmoke;border:1px solid #ddd;-webkit-border-radius:4px 0 4px 0;-moz-border-radius:4px 0 4px 0;border-radius:4px 0 4px 0}.formlistingall{padding:0;margin:15px 0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.formlistingrow{top:50%;left:50%;float:left;width:150px;min-height:34px;padding:6px;cursor:pointer;background-color:#f7f7f9;border-right:1px solid #e1e1e8;border-bottom:1px solid;border-left:1px solid #e1e1e8;border-color:#e1e1e8;-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}body.jsenabled .formlistingradio{display:none}body.jsenabled .formlisting{display:block}table.collection{width:100%;margin-bottom:20px;border:1px solid #ddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}table.collection th,table.collection td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #ddd}table.collection th{font-weight:bold}table.collection thead th{vertical-align:bottom}table.collection caption+thead tr:first-child th,table.collection caption+thead tr:first-child td,table.collection colgroup+thead tr:first-child th,table.collection colgroup+thead tr:first-child td,table.collection thead:first-child tr:first-child th,table.collection thead:first-child tr:first-child td{border-top:0}table.collection tbody+tbody{border-top:2px solid #ddd}table.collection .table{background-color:#fff}table.collection th,table.collection td{border-left:1px solid #ddd}table.collection caption+thead tr:first-child th,table.collection caption+tbody tr:first-child th,table.collection caption+tbody tr:first-child td,table.collection colgroup+thead tr:first-child th,table.collection colgroup+tbody tr:first-child th,table.collection colgroup+tbody tr:first-child td,table.collection thead:first-child tr:first-child th,table.collection tbody:first-child tr:first-child th,table.collection tbody:first-child tr:first-child td{border-top:0}table.collection thead:first-child tr:first-child>th:first-child,table.collection tbody:first-child tr:first-child>td:first-child,table.collection tbody:first-child tr:first-child>th:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}table.collection thead:first-child tr:first-child>th:last-child,table.collection tbody:first-child tr:first-child>td:last-child,table.collection tbody:first-child tr:first-child>th:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}table.collection thead:last-child tr:last-child>th:first-child,table.collection tbody:last-child tr:last-child>td:first-child,table.collection tbody:last-child tr:last-child>th:first-child,table.collection tfoot:last-child tr:last-child>td:first-child,table.collection tfoot:last-child tr:last-child>th:first-child{-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px}table.collection thead:last-child tr:last-child>th:last-child,table.collection tbody:last-child tr:last-child>td:last-child,table.collection tbody:last-child tr:last-child>th:last-child,table.collection tfoot:last-child tr:last-child>td:last-child,table.collection tfoot:last-child tr:last-child>th:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px}table.collection tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomleft:0}table.collection tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomright:0}table.collection caption+thead tr:first-child th:first-child,table.collection caption+tbody tr:first-child td:first-child,table.collection colgroup+thead tr:first-child th:first-child,table.collection colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}table.collection caption+thead tr:first-child th:last-child,table.collection caption+tbody tr:first-child td:last-child,table.collection colgroup+thead tr:first-child th:last-child,table.collection colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}table.collection tbody>tr:nth-child(odd)>td,table.collection tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}table.collection .name{text-align:left;vertical-align:middle}table.collection .awards{width:10%;text-align:center;vertical-align:middle}table.collection .criteria{width:40%;text-align:left;vertical-align:top}table.collection .badgeimage,table.collection .status{width:15%;text-align:center;vertical-align:middle}table.collection .description{width:25%;text-align:left}table.collection .actions{width:11em;text-align:center;vertical-align:middle}a.criteria-action{float:right;padding:0 3px}table.issuedbadgebox{width:750px;background-color:#fff}table.badgeissuedimage{width:150px;text-align:center}table.badgeissuedinfo{width:600px}table.badgeissuedinfo .bvalue{text-align:left;vertical-align:middle}table.badgeissuedinfo .bfield{width:125px;font-style:italic;text-align:left}.dir-rtl table.badgeissuedinfo .bvalue,.dir-rtl table.badgeissuedinfo .bfield{text-align:right}ul.badges{margin:0;list-style:none}.badges li{position:relative;display:inline-block;width:150px;padding-bottom:2em;text-align:center;vertical-align:top}.badges li .badge-name{display:block;padding:5px}.badges li>img{position:absolute}.badges li .badge-image{top:0;left:10px;z-index:1;width:90px;height:90px}.badges li .badge-actions{position:relative}div.badge{position:relative;display:block}div.badge .expireimage{top:0;left:20px;width:100px;height:100px}.expireimage{position:absolute;top:0;left:30px;z-index:10;width:90px;height:90px;opacity:.85;filter:alpha(opacity=85)}.badge-profile{vertical-align:top}.connected{color:#468847}.notconnected{color:#b94a48}.connecting{color:#c09853}#page-badges-award .recipienttable tr td{vertical-align:top}#page-badges-award .recipienttable tr td.actions .actionbutton{width:100%;padding:.5em 0;margin:.3em 0}#page-badges-award .recipienttable tr td.existing,#page-badges-award .recipienttable tr td.potential{width:42%}.statustable{margin-bottom:0}.statusbox.active{background-color:#dff0d8}.statusbox.inactive{background-color:#fcf8e3}.activatebadge{margin:0;text-align:left;vertical-align:middle}.dir-rtl .activatebadge{text-align:right}img#persona_signin{cursor:pointer}.addcourse{float:right}.invisiblefieldset{display:inline;padding:0;margin:0;border-width:0}.breadcrumb-nav{float:left;margin-bottom:10px}.dir-rtl .breadcrumb-nav{float:right}.breadcrumb-button .singlebutton div{margin-right:0}.breadcrumb-nav .breadcrumb{margin:0}.moodle-actionmenu,.moodle-actionmenu>ul,.moodle-actionmenu>ul>li{display:inline-block}.moodle-actionmenu ul{padding:0;margin:0;list-style-type:none}.moodle-actionmenu .toggle-display,.moodle-actionmenu .menu-action-text{display:none}.jsenabled .moodle-actionmenu[data-enhance]{display:block}.jsenabled .moodle-actionmenu[data-enhance] .menu{display:none}.jsenabled .moodle-actionmenu[data-enhance] .toggle-display{display:inline;opacity:.5;filter:alpha(opacity=50)}.jsenabled .moodle-actionmenu[data-enhance] .toggle-display.textmenu{display:block;padding-right:4px;padding-left:4px;margin-left:4px}.jsenabled .moodle-actionmenu[data-enhance] .toggle-display.textmenu .iconsmall{padding:8px 4px 0 2px;margin:4px 4px 4px 0;vertical-align:text-bottom}.jsenabled .moodle-actionmenu[data-enhance] .toggle-display.textmenu .caret{margin-top:8px;margin-left:2px;border-top-color:#777}.jsenabled .moodle-actionmenu[data-enhance] .toggle-display.textmenu .caret:hover,.jsenabled .moodle-actionmenu[data-enhance] .toggle-display.textmenu .caret:active{border-top-color:#555}.jsenabled .moodle-actionmenu[data-enhanced] .toggle-display{opacity:1;filter:alpha(opacity=100)}.jsenabled .moodle-actionmenu[data-enhanced] .menu-action-text{display:inline}.jsenabled.dir-rtl .moodle-actionmenu[data-enhance] .toggle-display.textmenu{margin-right:4px;margin-left:initial}.jsenabled.dir-rtl .moodle-actionmenu[data-enhance] .toggle-display.textmenu .caret{margin-right:2px;margin-left:initial}.moodle-actionmenu[data-enhanced].show{position:relative}.moodle-actionmenu[data-enhanced].show .menu{position:absolute;z-index:1000;display:block;text-align:left;background-color:#fff;border:1px solid #ccc;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-box-shadow:5px 5px 20px 0 #666;-moz-box-shadow:5px 5px 20px 0 #666;box-shadow:5px 5px 20px 0 #666}.moodle-actionmenu[data-enhanced].show .menu a{display:block;padding:2px 1em 2px 28px;color:#333}.moodle-actionmenu[data-enhanced].show .menu a:hover{color:#fff;background-color:#0070a8}.moodle-actionmenu[data-enhanced].show .menu a:first-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px}.moodle-actionmenu[data-enhanced].show .menu a:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-moz-border-radius-bottomleft:4px}.moodle-actionmenu[data-enhanced].show .menu a.hidden{display:none}.moodle-actionmenu[data-enhanced].show .menu img{vertical-align:middle}.moodle-actionmenu[data-enhanced].show .menu .iconsmall{margin:4px 4px 4px -24px}.moodle-actionmenu[data-enhanced].show .menu>li{display:block}.moodle-actionmenu[data-enhanced].show .menu.align-tl-bl{top:100%;left:0;margin-top:4px}.moodle-actionmenu[data-enhanced].show .menu.align-tr-bl{top:100%;right:100%}.moodle-actionmenu[data-enhanced].show .menu.align-bl-bl{bottom:100%;left:0}.moodle-actionmenu[data-enhanced].show .menu.align-br-bl{right:100%;bottom:100%}.moodle-actionmenu[data-enhanced].show .menu.align-tl-br{top:100%;left:100%}.moodle-actionmenu[data-enhanced].show .menu.align-tr-br{top:100%;right:0;margin-top:4px}.moodle-actionmenu[data-enhanced].show .menu.align-bl-br{bottom:100%;left:100%}.moodle-actionmenu[data-enhanced].show .menu.align-br-br{right:0;bottom:100%}.moodle-actionmenu[data-enhanced].show .menu.align-tl-tl{top:0;left:0}.moodle-actionmenu[data-enhanced].show .menu.align-tr-tl{top:0;right:100%;margin-right:4px}.moodle-actionmenu[data-enhanced].show .menu.align-bl-tl{bottom:100%;left:0;margin-bottom:4px}.moodle-actionmenu[data-enhanced].show .menu.align-br-tl{right:100%;bottom:100%}.moodle-actionmenu[data-enhanced].show .menu.align-tl-tr{top:0;left:100%;margin-left:4px}.moodle-actionmenu[data-enhanced].show .menu.align-tr-tr{top:0;right:0}.moodle-actionmenu[data-enhanced].show .menu.align-bl-tr{bottom:100%;left:100%}.moodle-actionmenu[data-enhanced].show .menu.align-br-tr{right:0;bottom:100%;margin-bottom:4px}.block .moodle-actionmenu{text-align:right}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu{right:auto;left:0;text-align:right}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu .iconsmall{margin-right:0;margin-left:8px}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu.align-tl-bl{right:0;left:auto}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu.align-tr-bl{right:auto;left:100%}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu.align-bl-bl{right:0;left:auto}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu.align-br-bl{right:auto;left:100%}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu.align-tl-br{right:100%;left:auto}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu.align-tr-br{right:auto;left:0}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu.align-bl-br{right:100%;left:auto}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu.align-br-br{right:auto;left:0}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu.align-tl-tl{right:0;left:auto}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu.align-tr-tl{right:auto;left:100%}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu.align-bl-tl{right:0;left:auto}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu.align-br-tl{right:auto;left:100%}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu.align-tl-tr{right:100%;left:auto}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu.align-tr-tr{right:auto;left:0}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu.align-bl-tr{right:100%;left:auto}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu.align-br-tr{right:auto;left:0}.dir-rtl .block .moodle-actionmenu{text-align:right}ul.dragdrop-keyboard-drag li{list-style-type:none}.block-control-actions .moodle-core-dragdrop-draghandle img{width:12px;height:12px}a.disabled:hover,a.disabled{font-style:italic;color:#808080;text-decoration:none;cursor:default}body.lockscroll{height:100%;overflow:hidden}.dir-rtl ul,.dir-rtl ol{margin-right:25px}.formtable tbody th{font-weight:normal;text-align:right}.path-admin #assignrole{width:60%;margin-right:auto;margin-left:auto}.path-admin .admintable .leftalign{text-align:left}.environmenttable p.warn{color:#c09853;background-color:#fcf8e3}.environmenttable .error,.environmenttable span.warn,.environmenttable .ok{display:inline-block;padding:2px 4px;font-size:11.844px;font-weight:bold;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);white-space:nowrap;vertical-align:baseline;background-color:#999;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.environmenttable .error:empty,.environmenttable span.warn:empty,.environmenttable .ok:empty{display:none}.environmenttable .error-important,.environmenttable span.warn-important,.environmenttable .ok-important{background-color:#b94a48}.environmenttable .error-important[href],.environmenttable span.warn-important[href],.environmenttable .ok-important[href]{background-color:#953b39}.environmenttable .error-warning,.environmenttable span.warn-warning,.environmenttable .ok-warning{background-color:#f89406}.environmenttable .error-warning[href],.environmenttable span.warn-warning[href],.environmenttable .ok-warning[href]{background-color:#c67605}.environmenttable .error-success,.environmenttable span.warn-success,.environmenttable .ok-success{background-color:#468847}.environmenttable .error-success[href],.environmenttable span.warn-success[href],.environmenttable .ok-success[href]{background-color:#356635}.environmenttable .error-info,.environmenttable span.warn-info,.environmenttable .ok-info{background-color:#3a87ad}.environmenttable .error-info[href],.environmenttable span.warn-info[href],.environmenttable .ok-info[href]{background-color:#2d6987}.environmenttable .error-inverse,.environmenttable span.warn-inverse,.environmenttable .ok-inverse{background-color:#333}.environmenttable .error-inverse[href],.environmenttable span.warn-inverse[href],.environmenttable .ok-inverse[href]{background-color:#1a1a1a}.environmenttable .error{background-color:#b94a48}.environmenttable span.warn{background-color:#f89406}.environmenttable .ok{background-color:#468847}.path-admin .admintable.environmenttable .name,.path-admin .admintable.environmenttable .info,.path-admin #assignrole .admintable .role,.path-admin #assignrole .admintable .userrole,.path-admin #assignrole .admintable .roleholder{white-space:nowrap}.path-admin .incompatibleblockstable td.c0{font-weight:bold}#page-admin-course-category .addcategory{padding:10px}#page-admin-course-index .editcourse{margin:20px auto}#page-admin-course-index .editcourse th,#page-admin-course-index .editcourse td{padding-right:10px;padding-left:10px}.timewarninghidden{display:none}.statusok,.statuswarning,.statusserious,.statuscritical{display:inline-block;padding:2px 4px;font-size:11.844px;font-weight:bold;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);white-space:nowrap;vertical-align:baseline;background-color:#999;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.statusok:empty,.statuswarning:empty,.statusserious:empty,.statuscritical:empty{display:none}.statusok-important,.statuswarning-important,.statusserious-important,.statuscritical-important{background-color:#b94a48}.statusok-important[href],.statuswarning-important[href],.statusserious-important[href],.statuscritical-important[href]{background-color:#953b39}.statusok-warning,.statuswarning-warning,.statusserious-warning,.statuscritical-warning{background-color:#f89406}.statusok-warning[href],.statuswarning-warning[href],.statusserious-warning[href],.statuscritical-warning[href]{background-color:#c67605}.statusok-success,.statuswarning-success,.statusserious-success,.statuscritical-success{background-color:#468847}.statusok-success[href],.statuswarning-success[href],.statusserious-success[href],.statuscritical-success[href]{background-color:#356635}.statusok-info,.statuswarning-info,.statusserious-info,.statuscritical-info{background-color:#3a87ad}.statusok-info[href],.statuswarning-info[href],.statusserious-info[href],.statuscritical-info[href]{background-color:#2d6987}.statusok-inverse,.statuswarning-inverse,.statusserious-inverse,.statuscritical-inverse{background-color:#333}.statusok-inverse[href],.statuswarning-inverse[href],.statusserious-inverse[href],.statuscritical-inverse[href]{background-color:#1a1a1a}.statusok{background-color:#468847}.statuswarning{background-color:#c09853}.statusserious{background-color:#f89406}.statuscritical{background-color:#b94a48}#page-admin-report-capability-index #capabilitysearch{width:30em}#page-admin-report-backups-index .backup-error,#page-admin-report-backups-index .backup-unfinished{color:#b94a48}#page-admin-report-backups-index .backup-skipped,#page-admin-report-backups-index .backup-ok,#page-admin-report-backups-index .backup-notyetrun{color:#468847}#page-admin-report-backups-index .backup-warning{color:#c09853}#page-admin-qtypes .disabled,#page-admin-qbehaviours .disabled{color:#999}#page-admin-qtypes #qtypes div,#page-admin-qtypes #qtypes form,#page-admin-qbehaviours #qbehaviours div,#page-admin-qbehaviours #qbehaviours form{display:inline}#page-admin-qtypes #qtypes img.spacer,#page-admin-qbehaviours #qbehaviours img.spacer{width:16px}img.iconsmall{padding:.3em;margin:0}#page-admin-qbehaviours .cell.c3,#page-admin-qtypes .cell.c3{font-size:10.5px}#page-admin-lang .generalbox,#page-admin-course-index .singlebutton,#page-admin-course-index .addcategory,#page-course-index .buttons,#page-course-index-category .buttons,#page-admin-course-category .addcategory,#page-admin-stickyblocks .generalbox,#page-admin-maintenance .buttons,#page-admin-course-index .buttons,#page-admin-course-category .buttons,#page-admin-index .copyright,#page-admin-index .copyrightnotice,#page-admin-index .adminerror,#page-admin-index .availableupdatesinfo,#page-admin-index .adminerror .singlebutton,#page-admin-index .adminwarning .singlebutton,#page-admin-index #layout-table .singlebutton{margin-bottom:1em;text-align:center}.path-admin-roles .capabilitysearchui{margin-right:auto;margin-left:auto;text-align:left}#page-admin-roles-define .topfields{margin:1em 0 2em}#page-admin-roles-define .capdefault{background-color:#eee;border:1px solid #cecece}#page-filter-manage .backlink,.path-admin-roles .backlink{margin-top:1em}#page-admin-roles-explain #chooseuser h3,#page-admin-roles-usersroles .contextname{margin-top:0}#page-admin-roles-explain #chooseusersubmit{margin-top:0;text-align:center}#page-admin-roles-usersroles p{margin:0}#page-admin-roles-override .cell.c1,#page-admin-roles-assign .cell.c3,#page-admin-roles-assign .cell.c1{padding-top:.75em}#page-admin-roles-override .overridenotice,#page-admin-roles-define .definenotice{margin:1em 10% 2em 10%;text-align:left}#notice{width:60%;min-width:220px;margin:auto}#page-admin-index .releasenoteslink,#page-admin-index .adminwarning,#page-admin-index .maturitywarning,#page-admin-index .testsitewarning,#page-admin-index .maturityinfo{width:60%;min-width:220px;padding:8px 35px 8px 14px;margin:auto;margin-bottom:20px;color:#c09853;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}#page-admin-index .maturitywarning,#page-admin-index .testsitewarning,#page-admin-index .adminwarning.maturityinfo.maturity50{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}#page-admin-index .adminwarning.availableupdatesinfo,#page-admin-index .releasenoteslink{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}#page-admin-index .adminwarning.availableupdatesinfo .moodleupdateinfo span{display:block}#page-admin-index .updateplugin div,#page-admin-plugins .updateplugin div{margin-bottom:.5em}#page-admin-index .updateplugin .updatepluginconfirmexternal,#page-admin-plugins .updateplugin .updatepluginconfirmexternal{padding:1em;background-color:#f2dede;border:1px solid #eed3d7}#page-admin-user-user_bulk #users .fgroup{white-space:nowrap}#page-admin-report-stats-index .graph{margin-bottom:1em;text-align:center}#page-admin-report-courseoverview-index .graph{margin-bottom:1em;text-align:center}#page-admin-lang .translator{border-style:solid;border-width:1px}.path-admin .roleassigntable{width:100%}.path-admin .roleassigntable td{padding:.2em .3em;vertical-align:top}.path-admin .roleassigntable p{margin:.2em 0;text-align:left}.path-admin .roleassigntable #existingcell,.path-admin .roleassigntable #potentialcell{width:42%}.path-admin .roleassigntable #existingcell p>label:first-child,.path-admin .roleassigntable #potentialcell p>label:first-child{font-weight:bold}.path-admin .roleassigntable #buttonscell{width:16%}.path-admin .roleassigntable #buttonscell #assignoptions{font-size:10.5px}.path-admin .roleassigntable #removeselect_wrapper,.path-admin .roleassigntable #addselect_wrapper{width:100%}.path-admin table.rolecap tr.rolecap th{font-weight:normal;text-align:left}.path-admin.dir-rtl table.rolecap tr.rolecap th{text-align:right}.path-admin .rolecap .hiddenrow{display:none}.path-admin #defineroletable .rolecap .inherit,.path-admin #defineroletable .rolecap .allow,.path-admin #defineroletable .rolecap .prevent,.path-admin #defineroletable .rolecap .prohibit{min-width:3.5em;padding:0;text-align:center}.path-admin .rolecap .cap-name,.path-admin .rolecap .note{display:block;font-size:10.5px;font-weight:normal;white-space:nowrap}.path-admin .rolecap label{display:block;padding:.5em;margin:0;text-align:center}.plugincheckwrapper{width:100%}.environmentbox{margin-top:1em}#mnetconfig table{margin-right:auto;margin-left:auto}.environmenttable .cell{padding:.15em .5em}.environmenttable img.iconhelp{padding-right:.3em}.dir-rtl .environmenttable img.iconhelp{padding-right:0;padding-left:.3em}#trustedhosts .generaltable{width:500px;margin-right:auto;margin-left:auto}#trustedhosts .standard{width:auto}#adminsettings legend{display:none}#adminsettings fieldset.error{margin:.2em 0 .5em 0}#adminsettings fieldset.error legend{display:block}.dir-rtl #admin-spelllanguagelist textarea,#page-admin-setting-editorsettingstinymce.dir-rtl .form-textarea textarea{text-align:left;direction:ltr}.adminsettingsflags{float:right}.dir-rtl .adminsettingsflags{float:left}.adminsettingsflags label{margin-right:7px}.dir-rtl .adminsettingsflags label{margin-left:7px}.form-description{clear:right}.dir-rtl .form-description{clear:left}.form-item .form-setting .form-htmlarea{display:inline;width:640px}.form-item .form-setting .form-htmlarea .htmlarea{display:block;width:640px}.form-item .form-setting .form-multicheckbox ul{padding:0;margin:7px 0 0 0;list-style:none}.form-item .form-setting .defaultsnext{display:inline;margin-right:.5em}.dir-rtl .form-item .form-setting .defaultsnext{margin-right:0;margin-left:.5em}.form-item .form-setting .locked-checkbox{display:inline;margin-right:.2em;margin-left:.5em}.dir-rtl .form-item .form-setting .locked-checkbox{display:inline;margin-right:.5em;margin-left:.2em}.form-item .form-setting .form-password .unmask,.form-item .form-setting .form-defaultinfo{display:inline-block}.form-item .pathok,.form-item .patherror{margin-left:.5em}#admin-emoticons td input{width:8em}#admin-emoticons td.c0 input{width:4em}#adminthemeselector .selectedtheme td.c0{border:1px solid;border-right-width:0}#adminthemeselector .selectedtheme td.c1{border:1px solid;border-left-width:0}.admin_colourpicker,.admin_colourpicker_preview{display:none}.jsenabled .admin_colourpicker_preview{display:inline}.jsenabled .admin_colourpicker{display:block;width:410px;height:102px;margin-bottom:10px}.admin_colourpicker .loadingicon{margin-left:auto;vertical-align:middle}.admin_colourpicker .colourdialogue{float:left;border:1px solid #000}.admin_colourpicker .previewcolour{margin-left:301px;border:1px solid #000}.admin_colourpicker .currentcolour{margin-left:301px;border:1px solid #000;border-top-width:0}.dir-rtl .form-item .form-setting,.dir-rtl .form-item .form-label,.dir-rtl .form-item .form-description,.dir-rtl.path-admin .roleassigntable p{text-align:right}#page-admin-index #notice .checkforupdates{text-align:center}#plugins-check-info{margin:1em;text-align:center}#plugins-check .displayname .pluginicon{width:16px}#plugins-check .status-new .status{background-color:#dff0d8}#page-admin-index .adminwarning.availableupdatesinfo .moodleupdateinfo.maturity200 .info.release,#plugins-check .status-upgrade .status,#plugins-check .status-delete .status{background-color:#d9edf7}#plugins-control-panel .extension .source,#page-admin-index .adminwarning.availableupdatesinfo .moodleupdateinfo.maturity100 .info.release,#page-admin-index .adminwarning.availableupdatesinfo .moodleupdateinfo.maturity150 .info.release,.pluginupdateinfo.maturity100,.pluginupdateinfo.maturity150,#plugins-check .extension .source{background-color:#fcf8e3}#page-admin-index .adminwarning.availableupdatesinfo .moodleupdateinfo.maturity50 .info.release,.pluginupdateinfo.maturity50,#plugins-check .requires-failed,#plugins-check .missingfromdisk .displayname,#plugins-check .status-missing .status,#plugins-check .status-downgrade .status{background-color:#f2dede}#plugins-control-panel .statusmsg{padding:3px;background-color:#eee;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}#plugins-control-panel .status-missing .pluginname{background-color:#f2dede}#plugins-control-panel .status-missing .statusmsg{color:#b94a48}#plugins-control-panel .status-new .pluginname{background-color:#dff0d8}#plugins-control-panel .status-new .statusmsg{color:#468847}#plugins-control-panel .disabled .availability{background-color:#eee}#plugins-check .standard .source,#plugins-check .status-nodb .status,#plugins-check .status-uptodate .status,#plugins-check .requires-ok{color:#999}#plugins-check .requires ul{margin:0;font-size:10.5px}#plugins-check .status .pluginupdateinfo{padding:5px 10px;margin:10px;background-color:#d9edf7;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}#plugins-check .status .pluginupdateinfo span,#plugins-check .status .pluginupdateinfo a{padding-right:1em}#page-admin-index .upgradepluginsinfo{text-align:center}#page-admin-plugins .checkforupdates{margin:0 auto 1em;text-align:center}#plugins-control-panel .requiredby,#plugins-control-panel .pluginname .componentname{font-size:11.9px;color:#999}#plugins-control-panel .pluginname .componentname{margin-left:22px}#plugins-overview-filter .filter-item,#plugins-overview-panel .info{padding:0 10px}#page-admin-index .adminwarning.availableupdatesinfo .moodleupdateinfo .separator,#plugins-check .status .pluginupdateinfo .separator,#page-admin-plugins .separator{border-left:1px dotted #999}#plugins-control-panel .msg td{text-align:center}#plugins-overview-filter,#plugins-overview-panel{margin:1em auto;text-align:center}#plugins-overview-panel .info.updatable{margin-left:10px;font-weight:bold;background-color:#d9edf7;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}#plugins-overview-filter .filter-item.active{font-weight:bold}#plugins-control-panel .displayname img.icon{padding-top:0;padding-bottom:0}#plugins-control-panel .uninstall a{color:#b94a48}#plugins-control-panel .notes .pluginupdateinfo{padding:5px 10px;margin:10px;background-color:#d9edf7;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}#plugins-control-panel .notes .pluginupdateinfo span,#plugins-control-panel .notes .pluginupdateinfo a{padding-right:1em}.dir-rtl #plugins-check .pluginupdateinfo{text-align:center;direction:ltr}.dir-rtl #plugins-check .rootdir,.dir-rtl #plugins-check .requires-ok{text-align:left;direction:ltr}#page-admin-mnet-peers .box.deletedhosts{margin-bottom:1em;font-size:11.9px}#page-admin-mnet-peers .mform .certdetails{background-color:white}#page-admin-mnet-peers .mform .deletedhostinfo{padding:4px;margin-bottom:5px;background-color:#f2dede;border:2px solid #eed3d7}#core-cache-plugin-summaries table,#core-cache-store-summaries table{width:100%}#core-cache-lock-summary table,#core-cache-definition-summaries table,#core-cache-mode-mappings table{margin:0 auto}#core-cache-store-summaries .default-store td{font-style:italic;color:#333}#core-cache-rescan-definitions,#core-cache-mode-mappings .edit-link,#core-cache-lock-summary .new-instance{margin-top:.5em;text-align:center}.tinymcesubplugins img.icon{padding-top:0;padding-bottom:0}#adminsettings .form-overridden{color:#3a87ad;background-color:#d9edf7}.calendartable{width:100%}.calendartable th,.calendartable td{width:14%;text-align:center;vertical-align:top;border:0}.calendar_event_course{background-color:#ffd3bd}.calendar_event_global{background-color:#d6f8cd}.calendar_event_group{background-color:#fee7ae}.calendar_event_user{background-color:#dce7ec}.path-calendar .calendar-controls .previous,.path-calendar .calendar-controls .next,.path-calendar .calendar-controls .current{display:block;float:left;width:12%}.path-calendar .calendar-controls .previous{text-align:left}.path-calendar .calendar-controls .current{width:76%;text-align:center}.path-calendar .calendar-controls .next{text-align:right}.path-calendar .maincalendar{padding:0;vertical-align:top}.path-calendar .maincalendar .bottom{padding:5px 0 0 0;text-align:center}.path-calendar .maincalendar .heightcontainer{position:relative;height:100%}.path-calendar .maincalendar .calendarmonth{width:98%;margin:10px auto}.path-calendar .maincalendar .calendarmonth ul{margin:0}.path-calendar .maincalendar .calendarmonth ul li{margin-top:4px;list-style-type:none}.path-calendar .maincalendar .calendarmonth td{height:5em}.path-calendar .maincalendar .calendar-controls .previous,.path-calendar .maincalendar .calendar-controls .next{width:30%}.path-calendar .maincalendar .calendar-controls .current{width:39.95%}.path-calendar .maincalendar .controls{width:98%;margin:10px auto}.path-calendar .maincalendar .eventlist .event{width:100%;margin-bottom:10px;border-collapse:separate;border-spacing:0;border-style:solid;border-width:1px}.path-calendar .maincalendar .eventlist .event .topic .name{float:left}.dir-rtl.path-calendar .maincalendar .eventlist .event .topic .name,.path-calendar .maincalendar .eventlist .event .topic .date{float:right}.dir-rtl.path-calendar .maincalendar .eventlist .event .topic .date{float:left}.path-calendar .maincalendar .eventlist .event .subscription,.path-calendar .maincalendar .eventlist .event .course{float:left;clear:left}.dir-rtl.path-calendar .maincalendar .eventlist .event .subscription,.dir-rtl.path-calendar .maincalendar .eventlist .event .course{float:right;clear:right}.path-calendar .maincalendar .eventlist .event .side{width:32px}.path-calendar .maincalendar .eventlist .event .commands a{margin:0 3px}.path-calendar .maincalendar .header{overflow:hidden}.path-calendar .maincalendar .header .buttons{float:right}.dir-rtl.path-calendar .maincalendar .header .buttons{float:left}.path-calendar .filters table{width:100%;border-collapse:separate;border-spacing:2px}#page-calendar-export .indent{padding-left:20px}.path-calendar .cal_courses_flt label{margin-right:.45em}.dir-rtl.path-calendar .cal_courses_flt label{margin-right:0;margin-left:.45em}.block .minicalendar th,.block .minicalendar td{padding:2px;font-size:.8em}.block .minicalendar{max-width:280px;margin-right:auto;margin-left:auto}.block .minicalendar td.weekend{color:#A00}.block .calendar-controls .previous{display:block;float:left;width:12%;text-align:left}.block .calendar-controls .current{display:block;float:left;width:76%;text-align:center}.block .calendar-controls .next{display:block;float:left;width:12%;text-align:right}.block .calendar_filters ul{margin:0;list-style:none}.block .calendar_filters li{margin-bottom:.2em}.block .calendar_filters li span img{padding:0 .2em}.block .calendar_filters .eventname{padding-left:.2em}.dir-rtl .block .calendar_filters .eventname{padding-right:.2em;padding-left:0}.block .content h3.eventskey{margin-top:.5em}@media(min-width:768px){#page-calender-view .container fluid{min-width:1024px}}.section_add_menus{text-align:right}.dir-rtl .section_add_menus{text-align:left}.section_add_menus .horizontal div,.section_add_menus .horizontal form{display:inline}.section_add_menus optgroup{font-style:italic;font-weight:normal}.section_add_menus .urlselect{margin-left:.4em}.dir-rtl .section_add_menus .urlselect{margin-right:.4em;margin-left:0}.section_add_menus .urlselect select{margin-left:.2em}.dir-rtl .section_add_menus .urlselect select{margin-right:.2em;margin-left:0}.section_add_menus .urlselect img.iconhelp{padding:0;margin:0;vertical-align:text-bottom}.sitetopic ul.section{margin:0}.course-content ul.section{margin:1em}.section .spinner{width:16px;height:16px}.section .activity .spinner{position:absolute;left:100%;vertical-align:text-bottom}.section .activity .editing_move{position:absolute;top:0;left:0}.section .activity .mod-indent-outer{padding-left:32px}.section .activity .actions{position:absolute;top:0;right:0}.section .activity .contentwithoutlink,.section .activity .activityinstance{display:table-cell;min-width:40%;min-height:2em;padding-right:4px}.section .activity .contentwithoutlink .dimmed img.activityicon,.section .activity .activityinstance .dimmed img.activityicon{opacity:.5;filter:alpha(opacity=50)}.section .label .contentwithoutlink,.section .label .activityinstance{display:block;height:inherit;padding-right:32px}.section .label .mod-indent-outer{display:block;padding-left:24px}.section .filler{display:inline-block;width:16px;height:16px;padding:.3em}.section .activity.editor_displayed a.editing_title,.section .activity.editor_displayed .moodle-actionmenu{display:none}.section .activity.editor_displayed div.activityinstance{padding-right:initial}.section .activity.editor_displayed div.activityinstance input{padding-top:initial;padding-bottom:initial;margin-bottom:initial;vertical-align:text-bottom}.dir-rtl .section .activity .spinner{right:100%;left:auto}.dir-rtl .section .activity .mod-indent-outer{padding-right:32px;padding-left:initial}.dir-rtl .section .activity .actions{right:auto;left:0}.dir-rtl .section .activity .contentwithoutlink,.dir-rtl .section .activity .activityinstance{padding-right:initial;padding-left:4px}.dir-rtl.editing .section .activity .editing_move{right:0;left:auto}.dir-rtl.editing .section .activity.editor_displayed div.activityinstance{padding-left:initial}.activity img.activityicon{margin-right:6px;vertical-align:text-bottom}.dir-rtl .section .activity img.activityicon{margin-right:0;margin-left:6px}.section .activity .activityinstance,.section .activity .activityinstance div{display:inline-block}.editing .section .activity .contentwithoutlink,.editing .section .activity .activityinstance{padding-right:200px}.dir-rtl.editing .section .activity .contentwithoutlink,.dir-rtl.editing .section .activity .activityinstance{padding-right:0;padding-left:200px}.editing_show+.editing_assign,.editing_hide+.editing_assign{margin-left:20px}.section .activity .commands{display:inline;white-space:nowrap}.section .activity.modtype_label.label{padding:.2em;font-weight:normal}.section li.activity{padding:.2em;clear:both}.section .activity .activityinstance .groupinglabel{padding-left:30px}.dir-rtl .section .activity .activityinstance .groupinglabel{padding-right:30px}.section .activity .availabilityinfo,.section .activity .contentafterlink{margin-top:.5em;margin-left:30px}.dir-rtl .section .activity .availabilityinfo,.dir-rtl .section .activity .contentafterlink{margin-right:30px;margin-left:0}.section .activity .contentafterlink p{margin:.5em 0}.editing .section .activity:hover,.editing .section .activity.action-menu-shown{background-color:#eee}.course-content .current{background-color:#d9edf7}.course-content .section-summary{margin-top:5px;list-style:none;border:1px solid #DDD}.course-content .section-summary .section-title{margin:2px 5px 10px 5px}.course-content .section-summary .summarytext{margin:2px 5px 2px 5px}.course-content .section-summary .section-summary-activities .activity-count{display:inline-block;margin:3px;font-size:11.9px;color:#999;white-space:nowrap}.course-content .section-summary .summary{margin-top:5px}.course-content .single-section{margin-top:1em}.course-content .single-section .section-navigation{display:block;padding:.5em;margin-bottom:-0.5em}.course-content .single-section .section-navigation .title{clear:both;font-size:108%;font-weight:bold}.course-content .single-section .section-navigation .mdl-left{float:left;margin-right:1em;font-weight:normal}.dir-rtl .course-content .single-section .section-navigation .mdl-left{float:right}.course-content .single-section .section-navigation .mdl-left .larrow{margin-right:.1em}.course-content .single-section .section-navigation .mdl-right{float:right;margin-left:1em;font-weight:normal}.dir-rtl .course-content .single-section .section-navigation .mdl-right{float:left}.course-content .single-section .section-navigation .mdl-right .rarrow{margin-left:.1em}.course-content .single-section .section-navigation .mdl-bottom{margin-top:0}.course-content ul li.section.main{margin-top:0;border-bottom:2px solid #eee}.course-content ul li.section.hidden{opacity:.5}.course-content ul.topics li.section .content,.course-content ul.weeks li.section .content{padding:0;margin-right:20px;margin-left:20px}.course-content{margin-top:0}.course-content ul.topics li.section{padding-bottom:20px}.course-content ul.topics li.section .summary{margin-left:25px}.path-course-view .completionprogress{margin-left:25px}.path-course-view .completionprogress{position:relative;z-index:1000;display:block;float:right;height:20px}#page-site-index .subscribelink{text-align:right}#site-news-forum h2,#frontpage-course-list h2,#frontpage-category-names h2,#frontpage-category-combo h2{margin-bottom:9px}.path-course-view a.reduce-sections{padding-left:.2em}.path-course-view .subscribelink{text-align:right}.path-course-view .unread{margin-left:30px}.dir-rtl.path-course-view .unread{margin-right:30px}.path-course-view .block.drag .header{cursor:move}.path-course-view .completionprogress{text-align:right}.dir-rtl.path-course-view .completionprogress{text-align:left}.path-course-view .single-section .completionprogress{margin-right:5px}.path-course-view .section .summary{line-height:normal}.path-site li.activity>div,.path-course-view li.activity>div{position:relative;padding:0 16px 0 0}.dir-rtl.path-site li.activity>div,.dir-rtl.path-course-view li.activity>div{position:relative;padding:0 0 0 16px}.path-course-view li.activity span.autocompletion img{vertical-align:text-bottom}.path-course-view li.activity form.togglecompletion img{max-width:none}.path-course-view li.activity form.togglecompletion .ajaxworking{position:absolute;top:3px;right:22px;width:16px;height:16px;background:url([[pix:i/ajaxloader]]) no-repeat}.dir-rtl.path-course-view .completionprogress{float:none}.dir-rtl.path-course-view li.activity form.togglecompletion .ajaxworking{right:-22px}li.section.hidden span.commands a.editing_hide,li.section.hidden span.commands a.editing_show{cursor:default}ul.weeks h3.sectionname{white-space:nowrap}.editing ul.weeks h3.sectionname{white-space:normal}.single-section h3.sectionname{clear:both;text-align:center}.section img.movetarget{width:80px;height:16px}input.titleeditor{width:330px;vertical-align:text-bottom}span.editinstructions{position:absolute;top:0;z-index:9999;padding:.1em .4em;margin-top:-22px;margin-left:30px;font-size:11.9px;line-height:16px;color:#3a87ad;text-decoration:none;background-color:#d9edf7;border:1px solid #bce8f1;-webkit-box-shadow:2px 2px 5px 1px #ccc;-moz-box-shadow:2px 2px 5px 1px #ccc;box-shadow:2px 2px 5px 1px #ccc}#dndupload-status{position:fixed;left:0;z-index:1;width:40%;padding:6px;margin:0 30%;color:#3a87ad;text-align:center;background:#d9edf7;border:1px solid #bce8f1;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px;-webkit-box-shadow:2px 2px 5px 1px #ccc;-moz-box-shadow:2px 2px 5px 1px #ccc;box-shadow:2px 2px 5px 1px #ccc}.dndupload-preview{padding:.3em;margin-top:.2em;color:#909090;list-style:none;border:1px dashed #909090}.dndupload-preview img.icon{padding:0;vertical-align:text-bottom}.dndupload-progress-outer{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#fff9f9f9',GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.dndupload-progress-inner{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf',endColorstr='#ff0480be',GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.dndupload-hidden{display:none}#page-course-pending .singlebutton,#page-course-index .singlebutton,#page-course-index-category .singlebutton,#page-course-editsection .singlebutton{text-align:center}#page-admin-course-manage #movecourses td img{margin:0 .22em;vertical-align:text-bottom}#page-admin-course-manage #movecourses td img.icon{padding:0}#coursesearch{margin-top:1em;text-align:center}#page-course-pending .pendingcourserequests{margin-bottom:1em}#page-course-pending .pendingcourserequests .singlebutton{display:inline}#page-course-pending .pendingcourserequests .cell{padding:0 5px}#page-course-pending .pendingcourserequests .cell.c6{white-space:nowrap}.coursebox{padding:5px;margin-bottom:15px;border:1px dotted #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.coursebox>.info>.coursename a{display:block;padding-left:21px;background-image:url([[pix:moodle|i/course]]);background-position:left .5em;background-repeat:no-repeat}.dir-rtl .coursebox>.info>.coursename a{padding-right:21px;padding-left:0;background-position:right}.coursebox.remotehost>.info>.categoryname a{background-image:url([[pix:moodle|i/mnethost]])}.coursebox .content .teachers,.coursebox .content .courseimage,.coursebox .content .coursefile{float:left;width:40%;clear:left}.dir-rtl .coursebox>.info>.coursename,.dir-rtl .coursebox .teachers,.dir-rtl .coursebox .content .courseimage,.dir-rtl .coursebox .content .coursefile{float:right;clear:right}.coursebox>.info>h3.coursename{margin:5px}.coursebox>.info>.coursename{padding:0;margin:5px}.coursebox .content .teachers li{padding:0;margin:0;list-style-type:none}.coursebox .enrolmenticons{float:right;padding:3px 0}.coursebox .moreinfo{float:right;padding:3px 0}.coursebox .enrolmenticons img,.coursebox .moreinfo img{margin:0 .2em}.coursebox .content{clear:both}.coursebox .content .summary,.coursebox .content .coursecat{float:right;width:55%}.coursebox .content .coursecat{clear:right;text-align:right}.coursebox.remotecoursebox .remotecourseinfo{float:left;width:40%}.coursebox .content .courseimage img{max-width:100px;max-height:100px}.coursebox .content .coursecat,.coursebox .content .summary,.coursebox .content .courseimage,.coursebox .content .coursefile,.coursebox .content .teachers,.coursebox.remotecoursebox .remotecourseinfo{padding:0;margin:3px 5px}.dir-rtl .coursebox>.info>.categoryname a{padding-right:21px;padding-left:0;background-position:center right}.dir-rtl .coursebox>.info>.categoryname,.dir-rtl .coursebox .teachers,.dir-rtl .coursebox .content .courseimage,.dir-rtl .coursebox .content .coursefile{float:right;clear:right}.dir-rtl .coursebox .enrolmenticons,.dir-rtl .coursebox .moreinfo{float:left}.dir-rtl .coursebox .summary,.dir-rtl .coursebox .coursecat{float:left}.dir-rtl .coursebox .coursecat{clear:left;text-align:left}.coursebox.collapsed{margin-bottom:0}.coursebox.collapsed>.content{display:none}.courses .coursebox.collapsed{padding:5px;border:1px solid #eee}.courses .coursebox.even{background-color:#f6f6f6}.courses .coursebox:hover,.course_category_tree .courses>.paging.paging-morelink:hover{background-color:#eee}.course_category_tree .category .numberofcourse{font-size:11.9px}.course_category_tree .controls{visibility:hidden}.course_category_tree .controls div{display:inline;cursor:pointer}.jsenabled .course_category_tree .controls{visibility:visible}.course_category_tree .controls{float:right;margin-bottom:5px;text-align:right}.course_category_tree .controls div{padding-right:2em;font-size:75%}.course_category_tree .category>.info>.categoryname{padding:2px 18px;margin:3px;background-image:url([[pix:moodle|t/collapsed_empty]]);background-position:center left;background-repeat:no-repeat}.dir-rtl .course_category_tree .category>.info>.categoryname{background-image:url([[pix:moodle|t/collapsed_empty_rtl]]);background-position:center right}.course_category_tree .category.with_children>.info>.categoryname{cursor:pointer;background-image:url([[pix:moodle|t/expanded]])}.course_category_tree .category.with_children.collapsed>.info>.categoryname{background-image:url([[pix:moodle|t/collapsed]])}.dir-rtl .course_category_tree .category.with_children.collapsed>.info>.categoryname{background-image:url([[pix:moodle|t/collapsed_rtl]])}.course_category_tree .category.collapsed>.content{display:none}.course_category_tree .category>.info{min-height:20px;min-height:0;padding:19px;padding:0;margin:3px 0;margin-bottom:20px;margin-bottom:3px;clear:both;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.course_category_tree .category>.info blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.course_category_tree.frontpage-category-names .category>.info{margin:0;background:0;border:0}.course_category_tree .category>.content{padding-left:16px}.dir-rtl .course_category_tree .category>.content{padding-right:16px;padding-left:0}.course_category_tree .subcategories>.paging,.courses>.paging{padding:5px;margin:0;text-align:center}.courses>.paging.paging-morelink,.course_category_tree .subcategories>.paging.paging-morelink{text-align:left}.course_category_tree .paging.paging-morelink a{font-size:11.9px}.dir-rtl .courses>.paging.paging-morelink,.dir-rtl .course_category_tree .paging.paging-morelink{text-align:right}#page-course-index-category .generalbox.info{padding:5px;margin-bottom:15px;border:1px dotted #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}#page-course-index-category .categorypicker{margin:10px 0 20px;text-align:center}.section .summary .iconsmall,.section .activity .iconsmall{width:16px;height:16px}.section .editing_title .iconsmall{width:12px;height:12px;padding:4px 8px 0 0;margin:8px 8px 0 0;vertical-align:text-bottom}.section .moodle-actionmenu .iconsmall{width:16px;height:16px;max-width:none!important;padding:4px;vertical-align:text-bottom}.section .moodle-actionmenu[data-enhanced] .menu img{width:12px;height:12px}.dir-rtl .section .editing_title .iconsmall{padding:4px 0 0 8px;margin:8px 0 0 8px}#course-category-listings{margin-bottom:200px;background-color:#fff}#course-category-listings.columns-2>#course-listing>div{position:relative;left:-1px}#course-category-listings.columns-3>#course-listing>div{height:100%}#course-category-listings>div>div{min-height:300px;border:1px solid #e1e1e8}#course-category-listings>div>div>ul.ml>li:first-child>div{border-top:0}#course-category-listings h3{padding:.4rem .6rem .3rem;margin:0;background-color:#f5f5f5;border-bottom:1px solid #e1e1e8}#course-category-listings h4{padding:.6rem 1rem .5rem;margin:1rem 0 0}#course-category-listings .moodle-actionmenu{white-space:nowrap}#course-category-listings .moodle-actionmenu[data-enhance] .toggle-display img{width:auto}#course-category-listings .moodle-actionmenu[data-enhance] .toggle-display.textmenu{padding-right:4px}#course-category-listings .moodle-actionmenu[data-enhance] .toggle-display.textmenu .caret{margin-top:12px}#course-category-listings .listing-actions{padding:.4rem .3rem .3rem;line-height:2.2em;text-align:center}#course-category-listings .listing-actions>.moodle-actionmenu{display:inline-block}#course-category-listings .listing-actions>.moodle-actionmenu .menu a{padding-left:1rem}#course-category-listings .listing-actions .moodle-actionmenu:not([data-enhanced]) li{line-height:normal}#course-category-listings .listing-actions .moodle-actionmenu:not([data-enhanced])>.menubar a{display:inline-block;color:inherit}#course-category-listings .listing-actions .moodle-actionmenu:not([data-enhanced])>.menubar a>img{display:none}#course-category-listings .listing-actions .moodle-actionmenu:not([data-enhanced])>.menubar a .caret{display:none}#course-category-listings .listing-actions .moodle-actionmenu:not([data-enhanced])>.menu .menu-action-text{display:inline-block}#course-category-listings ul.ml{margin:1rem 0;list-style:none}#course-category-listings ul.ml ul.ml{margin:0}#course-category-listings li{line-height:2.2em}#course-category-listings li>div:hover{background-color:#fafafa}#course-category-listings li .tree-icon{width:12px;margin:2px 6px 0 0;vertical-align:inherit}#course-category-listings li[data-selected='1']>div{background-color:#ffffd8;border-top-color:#e1e1e8;border-bottom-color:#f5f5f5}#course-category-listings li[data-selected='1'] li:first-of-type>div,#course-category-listings li[data-selected='1'][data-expandable='0']+li>div{border-top-color:#e1e1e8}#course-category-listings li[data-selected='1']:last-of-type>div{border-bottom-color:#e1e1e8}#course-category-listings li .tree-icon{margin-left:0}#course-category-listings li li .tree-icon{margin-left:1em}#course-category-listings li li li .tree-icon{margin-left:2em}#course-category-listings li li li li .tree-icon{margin-left:3em}#course-category-listings li li li li li .tree-icon{margin-left:4em}#course-category-listings li li li li li li .tree-icon{margin-left:4.5em}#course-category-listings li li li li li li li .tree-icon{margin-left:5em}#course-category-listings li li li li li li li li .tree-icon{margin-left:5.5em}#course-category-listings li+li>div,#course-category-listings li:first-child>div{border-top-color:#f5f5f5}#course-category-listings .item-actions{display:inline-block;display:initial;margin-right:1em}#course-category-listings .item-actions img{height:12px;padding:0;margin:0 4px;vertical-align:inherit}#course-category-listings .item-actions.show .menu a{padding:4px 1em 4px 4px}#course-category-listings .item-actions.show .menu img{width:12px;max-width:none}#course-category-listings .item-actions .menu-action-text{vertical-align:inherit}#course-category-listings .listitem>div>.float-left{float:left}#course-category-listings .listitem>div>.float-right{float:right;text-align:right}#course-category-listings .listitem>div .item-actions .action-show{display:none}#course-category-listings .listitem>div .item-actions .action-hide{display:inline}#course-category-listings .listitem>div .without-actions{color:#333}#course-category-listings .listitem>div .idnumber{margin-right:2em;color:#a1a1a8}#course-category-listings .listitem[data-visible="0"]{color:#999}#course-category-listings .listitem[data-visible="0"]>div>a{color:#999}#course-category-listings .listitem[data-visible="0"]>div .item-actions .action-show{display:inline}#course-category-listings .listitem[data-visible="0"]>div .item-actions .action-hide{display:none}#course-category-listings .listitem.highlight{background-color:transparent}#course-category-listings .listitem.highlight>div,#course-category-listings .listitem.highlight>div:hover,#course-category-listings .listitem.highlight[data-selected='1']>div{background-color:#dfa}#course-category-listings #course-listing .listitem .categoryname{display:inline-block;margin-left:1em;color:#a1a1a8}#course-category-listings #course-listing .listitem .coursename{display:inline-block}#course-category-listings #course-listing .listitem>div{padding-left:1rem}#course-category-listings #course-listing>.firstpage .listitem:first-child>div .item-actions .action-moveup,#course-category-listings #course-listing>.lastpage .listitem:last-child>div .item-actions .action-movedown{display:none}#course-category-listings #course-listing .bulk-action-checkbox{margin:-2px 6px 0 0}#course-category-listings #category-listing .listitem.collapsed>ul.ml{display:none}#course-category-listings #category-listing .listitem>div>.ba-checkbox{width:2.2em;padding-top:2px;margin:-1px .5em 0 0;text-align:center}#course-category-listings #category-listing .listitem.highlight>div>.ba-checkbox{background-color:#dfa}#course-category-listings #category-listing .listitem[data-selected='1']>div>.ba-checkbox{padding:0;margin:0 .5em 0 0;background-color:inherit}#course-category-listings #category-listing .listitem:first-child>div .item-actions .action-moveup,#course-category-listings #category-listing .listitem:last-child>div .item-actions .action-movedown{display:none}#course-category-listings #category-listing .course-count{display:inline-block;min-width:3.5em;margin-right:2rem;color:#a1a1a8}#course-category-listings #category-listing .course-count .smallicon{width:12px;margin-left:4px;vertical-align:inherit}#course-category-listings #category-listing .bulk-action-checkbox{margin-right:-3px}#course-category-listings #category-listing .category-listing>ul>.listitem:first-child{position:relative}#course-category-listings #category-listing .category-bulk-actions{position:relative;margin:0 .5em .5em}#course-category-listings .detail-pair{margin:0 1rem;border-bottom:1px solid #e1e1e8}#course-category-listings .detail-pair>*{display:inline-block;line-height:2.2rem}#course-category-listings .detail-pair .pair-key{font-weight:bold;vertical-align:top}#course-category-listings .detail-pair .pair-key span{display:block;margin-right:1rem}#course-category-listings .detail-pair .pair-value select{max-width:100%}#course-category-listings .bulk-actions .detail-pair>*{display:block;width:100%}#course-category-listings .listing-pagination{text-align:center}#course-category-listings .listing-pagination .yui3-button{margin:.4rem .2rem .45rem;font-size:10.4px;background-color:#FFF;border:0}#course-category-listings .listing-pagination .yui3-button.active-page{background-color:#e5effd}#course-category-listings .listing-pagination-totals{text-align:center}#course-category-listings .listing-pagination-totals.dimmed{margin:.4rem 1rem .45rem;color:#999}#course-category-listings .select-a-category .notifymessage,#course-category-listings .select-a-category .alert{margin:1em}#course-category-listings #course-listing .listitem .drag-handle{display:none}.jsenabled #course-category-listings #course-listing .listitem .drag-handle{display:inline-block;margin:0 6px 0 0;cursor:pointer}.dir-rtl #course-category-listings #category-listing,.dir-rtl #course-category-listings #course-listing{float:right;margin-left:0}.dir-rtl #course-category-listings .listitem>div>.float-left{float:right}.dir-rtl #course-category-listings .listitem>div>.float-right{float:left;text-align:left}.dir-rtl #course-category-listings li .tree-icon{margin:2px 0 0 6px}.dir-rtl #course-category-listings li .tree-icon{margin-right:0}.dir-rtl #course-category-listings li li .tree-icon{margin-right:1em}.dir-rtl #course-category-listings li li li .tree-icon{margin-right:2em}.dir-rtl #course-category-listings li li li li .tree-icon{margin-right:3em}.dir-rtl #course-category-listings li li li li li .tree-icon{margin-right:4em}.dir-rtl #course-category-listings li li li li li li .tree-icon{margin-right:4.5em}.dir-rtl #course-category-listings li li li li li li li .tree-icon{margin-right:5em}.dir-rtl #course-category-listings li li li li li li li li .tree-icon{margin-right:5.5em}.dir-rtl #course-category-listings #category-listing .listitem>div{margin-right:.5em;margin-left:0}.dir-rtl #course-category-listings #category-listing .listitem>div>.ba-checkbox{margin:-1px 0 0 .5em}.dir-rtl #course-category-listings #category-listing .listitem[data-selected='1']>div>.ba-checkbox{margin:0 0 0 .5em}.dir-rtl #course-category-listings #category-listing .course-count{margin-left:2rem}.dir-rtl #course-category-listings #category-listing .bulk-action-checkbox{margin-right:0;margin-left:-3px}.dir-rtl #course-category-listings #course-listing{padding-right:24px}.dir-rtl #course-category-listings #course-listing .listitem .idnumber{padding-right:2em;color:#a1a1a8}.dir-rtl #course-category-listings #course-listing .listitem .categoryname{display:inline-block;margin-right:1em;margin-left:0}.dir-rtl #course-category-listings #course-listing .listitem .drag-handle{margin:0 6px 0 6px}.dir-rtl #course-category-listings #course-listing .listitem>div{padding-left:1rem}.dir-rtl #course-category-listings #course-listing .bulk-action-checkbox{margin:-2px 0 0 6px;vertical-align:middle}.dir-rtl #course-category-listings .detail-pair>*{float:right;margin-right:0}.dir-rtl #course-category-listings .detail-pair .pair-key span{margin-right:0;margin-left:0}.dir-rtl #course-category-listings .detail-pair .pair-value{margin-right:.5em}.coursecat-management-header{vertical-align:middle}.coursecat-management-header h2{display:inline-block;text-align:left}.coursecat-management-header>div{display:inline-block;float:right;line-height:40px}.coursecat-management-header>div>div{display:inline-block;margin:10px 0;margin-left:1em}.coursecat-management-header select{max-width:300px;padding:.4em .5em .45em 1em;white-space:nowrap;vertical-align:baseline;cursor:pointer}.coursecat-management-header .view-mode-selector .moodle-actionmenu{display:inline-block;white-space:nowrap}.coursecat-management-header .view-mode-selector .moodle-actionmenu[data-enhanced].show .menu a{padding-left:1em}.dir-rtl .coursecat-management-header h2{text-align:right}.dir-rtl .coursecat-management-header>div{float:left;margin-right:1em;margin-left:0}.course-being-dragged-proxy{padding:0 0 0 4em;color:#0070a8;vertical-align:middle;border:0}.course-being-dragged{opacity:.5;filter:alpha(opacity=50)}@media(min-width:1200px) and (max-width:1600px){#course-category-listings.columns-3{background-color:transparent;border:0}#course-category-listings.columns-3 #category-listing,#course-category-listings.columns-3 #course-listing{width:50%}#course-category-listings.columns-3 #category-listing>div,#course-category-listings.columns-3 #course-listing>div,#course-category-listings.columns-3 #course-detail>div{background-color:#FFF;border:1px solid #e1e1e8}#course-category-listings.columns-3 #course-detail{width:100%;margin-top:1em}}@media(max-width:1199px){#course-category-listings.columns-2,#course-category-listings.columns-3{background-color:transparent;border:0}#course-category-listings.columns-2 #category-listing,#course-category-listings.columns-3 #category-listing,#course-category-listings.columns-2 #course-listing,#course-category-listings.columns-3 #course-listing,#course-category-listings.columns-2 #course-detail,#course-category-listings.columns-3 #course-detail{width:100%;margin:0 0 1em}#course-category-listings.columns-2 #category-listing>div,#course-category-listings.columns-3 #category-listing>div,#course-category-listings.columns-2 #course-listing>div,#course-category-listings.columns-3 #course-listing>div,#course-category-listings.columns-2 #course-detail>div,#course-category-listings.columns-3 #course-detail>div{background-color:#FFF;border:1px solid #e1e1e8}}.filemanager,.filepicker,.file-picker{font-size:11px}.filemanager a,.file-picker a,.filemanager a:hover,.file-picker a:hover{color:#555;text-decoration:none}.filemanager input[type="text"],.file-picker input[type="text"]{width:265px}.filemanager .fp-license td,.file-picker .fp-setlicense td{max-width:265px}.filemanager .fp-license select,.file-picker .fp-setlicense select{max-width:100%}.fp-content-center{display:table-cell;width:100%;height:100%;vertical-align:middle}.fp-content-hidden{visibility:hidden}.yui3-panel-focused{outline:0}#filesskin .yui3-panel-content{display:inline-block;*display:inline;padding-bottom:20px;background:#f2f2f2;border:1px solid #fff;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px;*zoom:1;-webkit-box-shadow:5px 5px 20px 0 #666;-moz-box-shadow:5px 5px 20px 0 #666;box-shadow:5px 5px 20px 0 #666}#filesskin .yui3-widget-hd{padding:5px;font-size:12px;letter-spacing:1px;color:#333;text-align:center;text-shadow:1px 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#fff,#ccc);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#ccc));background-image:-webkit-linear-gradient(top,#fff,#ccc);background-image:-o-linear-gradient(top,#fff,#ccc);background-image:linear-gradient(to bottom,#fff,#ccc);background-repeat:repeat-x;border-bottom:1px solid #bbb;-webkit-border-radius:10px 10px 0 0;-moz-border-radius:10px 10px 0 0;border-radius:10px 10px 0 0;filter:dropshadow(color=#ffffff,offx=1,offy=1);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffcccccc',GradientType=0)}.fp-panel-button{display:inline-block;*display:inline;padding:3px 20px 2px 20px;margin:10px;text-align:center;background:#fff;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;*zoom:1;-webkit-box-shadow:2px 2px 3px .1px #999;-moz-box-shadow:2px 2px 3px .1px #999;box-shadow:2px 2px 3px .1px #999}.moodle-dialogue-base .filepicker .moodle-dialogue-wrap .moodle-dialogue-bd{padding:0}#filesskin .file-picker.fp-generallayout{position:relative;width:859px;background:#fff;border:1px solid #ccc;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.file-picker .fp-repo-area{display:inline-block;*display:inline;float:left;width:180px;height:525px;overflow:auto;border-right:1px solid #bbb;*zoom:1}.dir-rtl .file-picker .fp-repo-area{float:right;border-right:0;border-left:1px solid #bbb}.file-picker .fp-repo-items{float:none;width:auto;margin-left:181px}.moodle-dialogue-fullscreen .file-picker .fp-repo-items{float:left;margin-right:0;margin-left:0}.dir-rtl .file-picker .fp-repo-items{margin-right:181px;margin-left:0}.dir-rtl .moodle-dialogue-fullscreen .file-picker .fp-repo-items{float:right;margin-right:0;margin-left:0}.file-picker .fp-navbar{min-height:40px;overflow:hidden;background:#f2f2f2;border-bottom:1px solid #bbb}.file-picker .fp-navbar .fp-viewbar{margin:4px}.file-picker .fp-content{height:452px;overflow:auto;clear:none;background:#fff}.filepicker.moodle-dialogue-fullscreen .file-picker .fp-content{width:100%}.file-picker .fp-content-loading{display:table;width:100%;height:100%;text-align:center}.file-picker .fp-content .fp-object-container{width:98%;height:98%}.dir-rtl .file-picker .fp-list{text-align:right}.dir-rtl .file-picker .fp-toolbar{padding:4px}.dir-rtl .file-picker .fp-list{text-align:right}.dir-rtl .file-picker .fp-repo-name{display:inline}.dir-rtl .file-picker .fp-pathbar{display:block;text-align:right;border-top:0}.dir-rtl .file-picker div.bd{text-align:right}.dir-rtl #filemenu .yuimenuitemlabel{text-align:right}.dir-rtl .filepicker .yui-layout-unit-left{left:500px}.dir-rtl .filepicker .yui-layout-unit-center{left:0}.dir-rtl .filemanager-toolbar a{padding:0}.file-picker .fp-list{float:left;width:100%;padding:0;margin:0;list-style-type:none}.dir-rtl .file-picker .fp-list{float:left;text-align:right}.file-picker .fp-list .fp-repo a{display:block;padding:.5em .7em}.file-picker .fp-list .fp-repo.active{background:#f2f2f2}.file-picker .fp-list .fp-repo-icon{width:16px;height:16px;padding:0 7px 0 5px}.fp-toolbar{float:left}.dir-rtl .fp-toolbar{float:right}.fp-toolbar.empty{display:none}.dir-rtl .fp-toolbar div.disabled,.fp-toolbar .disabled{display:none}.fp-toolbar div{display:block;float:left;margin-right:4px}.dir-rtl .fp-toolbar div{display:block;float:right;margin-right:0;margin-left:4px}.fp-toolbar img{margin-right:5px;vertical-align:-15%}.fp-toolbar .fp-tb-search{width:235px;height:27px}.fp-toolbar .fp-tb-search input{width:200px;height:27px;padding:2px 6px 1px 27px;background:#fff url('[[pix:a/search]]') no-repeat 7px 7px;border:1px solid #bbb}.fp-viewbar{float:right;height:30px;background:white;border:1px solid #CCC;border-bottom:1px solid #b3b3b3;border-radius:4px}.fp-repo-items fp-viewbar{margin:4px}.dir-rtl .fp-toolbar img{vertical-align:-35%}.dir-rtl .fp-viewbar{float:left}.fp-viewbar a{display:block;float:left;width:30px;height:30px;border-right:1px solid #CCC}.fp-viewbar a.checked:hover,.fp-viewbar a:hover{background-color:#ebebeb;background-image:radial-gradient(ellipse at center,#fff 60%,#dfdfdf 100%)}.fp-viewbar a.checked,.fp-viewbar a:active{background-color:#dfdfdf;background-image:radial-gradient(ellipse at center,#fff 40%,#dfdfdf 100%)}.fp-viewbar a.fp-vb-icons{border-radius:4px 0 0 4px}.fp-viewbar a.fp-vb-tree{border-right:0;border-radius:0 4px 4px 0}.fp-viewbar a img{margin:7px}.fp-viewbar.disabled a{cursor:default;background:0;opacity:.45}.file-picker .fp-clear-left{clear:left}.dir-rtl .filemanager-toolbar .fp-vb-icons a:hover{background:url('[[pix:theme|fp/view_icon_selected]]')}.dir-rtl .filemanager-toolbar .fp-vb-icons.checked a:hover{background:url('[[pix:theme|fp/view_icon_active]]') no-repeat 0 0}.dir-rtl .fp-vb-details a:hover{background:0;border:20px solid black}.dir-rtl .fp-vb-details.checked a:hover{background:0;border:40px solid black}.dir-rtl .fp-vb-tree a:hover{background:0;border:30px solid black}.dir-rtl .fp-vb-tree.checked a:hover{background:0;border:50px solid black}.file-picker .fp-pathbar{display:table-row}.fp-pathbar.empty{display:none}.fp-pathbar .fp-path-folder{width:27px;height:12px;margin-left:4px;background:url('[[pix:theme|fp/path_folder]]') no-repeat 0 0}.dir-rtl .fp-pathbar .fp-path-folder{width:auto;height:12px;margin-left:4px;background:url('[[pix:theme|fp/path_folder_rtl]]') no-repeat right top}.dir-rtl .fp-pathbar span{display:inline-block;*display:inline;float:right;margin-left:32px;*zoom:1}.fp-pathbar .fp-path-folder-name{margin-left:32px;line-height:20px}.dir-rtl .fp-pathbar .fp-path-folder-name{margin-right:32px;line-height:20px}.fp-iconview .fp-file{position:relative;float:left;margin:10px 10px 35px;text-align:center}.fp-iconview .fp-thumbnail{display:block;min-width:110px;min-height:110px;line-height:110px;text-align:center;border:1px solid #fff}.fp-iconview .fp-thumbnail img{padding:3px;vertical-align:middle;border:1px solid #ddd;-webkit-box-shadow:1px 1px 2px 0 #ccc;-moz-box-shadow:1px 1px 2px 0 #ccc;box-shadow:1px 1px 2px 0 #ccc}.fp-iconview .fp-thumbnail:hover{background:#fff;border:1px solid #ddd;-webkit-box-shadow:inset 0 0 10px 0 #ccc;-moz-box-shadow:inset 0 0 10px 0 #ccc;box-shadow:inset 0 0 10px 0 #ccc}.fp-iconview .fp-filename-field{position:absolute;height:33px;overflow:hidden;word-wrap:break-word}.fp-iconview .fp-filename-field:hover{z-index:1000;overflow:visible}.fp-iconview .fp-filename-field .fp-filename{min-width:112px;padding-top:5px;padding-bottom:12px;background:#fff}.dir-rtl .fp-iconview .fp-file{float:right}.file-picker .yui3-datatable table{width:100%;border:0 solid #bbb}#filesskin .file-picker .yui3-datatable-header{color:#555;background:#fff;border-bottom:1px solid #ccc;border-left:0 solid #fff}#filesskin .file-picker .yui3-datatable-odd .yui3-datatable-cell{background-color:#f6f6f6;border-left:0 solid #f6f6f6}#filesskin .file-picker .yui3-datatable-even .yui3-datatable-cell{background-color:#fff;border-left:0 solid #fff}.dir-rtl .file-picker .yui3-datatable-header{text-align:right}.file-picker .ygtvtn,.filemanager .ygtvtn{width:17px;height:22px;background:url('[[pix:moodle|y/tn]]') 0 0 no-repeat}.dir-rtl .filemanager .ygtvtn,.dir-rtl .file-picker .ygtvtn{width:17px;height:22px;background:url('[[pix:moodle|y/tn_rtl]]') 0 0 no-repeat}.file-picker .ygtvtm,.filemanager .ygtvtm{width:13px;height:12px;cursor:pointer;background:url('[[pix:moodle|y/tm]]') 0 10px no-repeat}.file-picker .ygtvtmh,.filemanager .ygtvtmh{width:13px;height:12px;cursor:pointer;background:url('[[pix:moodle|y/tm]]') 0 10px no-repeat}.file-picker .ygtvtp,.filemanager .ygtvtp{width:13px;height:12px;cursor:pointer;background:url('[[pix:moodle|y/tp]]') 0 10px no-repeat}.dir-rtl .file-picker .ygtvtp,.dir-rtl .filemanager .ygtvtp{background:url('[[pix:moodle|y/tp_rtl]]') 0 10px no-repeat}.file-picker .ygtvtph,.filemanager .ygtvtph{width:13px;height:22px;cursor:pointer;background:url('[[pix:moodle|y/tp]]') 0 10px no-repeat}.dir-rtl .file-picker .ygtvtph,.dir-rtl .filemanager .ygtvtph{background:url('[[pix:moodle|y/tp_rtl]]') 0 10px no-repeat}.file-picker .ygtvln,.filemanager .ygtvln{width:17px;height:22px;background:url('[[pix:moodle|y/ln]]') 0 0 no-repeat}.dir-rtl .file-picker .ygtvln,.dir-rtl .filemanager .ygtvln{background:url('[[pix:moodle|y/ln_rtl]]') 0 0 no-repeat}.file-picker .ygtvlm,.filemanager .ygtvlm{width:13px;height:12px;cursor:pointer;background:url('[[pix:moodle|y/lm]]') 0 10px no-repeat}.file-picker .ygtvlmh,.filemanager .ygtvlmh{width:13px;height:12px;cursor:pointer;background:url('[[pix:moodle|y/lm]]') 0 10px no-repeat}.file-picker .ygtvlp,.filemanager .ygtvlp{width:13px;height:12px;cursor:pointer;background:url('[[pix:moodle|y/lp]]') 0 10px no-repeat}.dir-rtl .file-picker .ygtvlp,.dir-rtl .filemanager .ygtvlp{background:url('[[pix:moodle|y/lp_rtl]]') 0 10px no-repeat}.file-picker .ygtvlph,.filemanager .ygtvlph{width:13px;height:12px;cursor:pointer;background:url('[[pix:moodle|y/lp]]') 0 10px no-repeat}.dir-rtl .file-picker .ygtvlph,.dir-rtl .filemanager .ygtvlph{background:url('[[pix:moodle|y/lp_rtl]]') 0 10px no-repeat}.file-picker .ygtvloading,.filemanager .ygtvloading{width:16px;height:22px;background:transparent url('[[pix:moodle|y/loading]]') 0 0 no-repeat}.file-picker .ygtvdepthcell,.filemanager .ygtvdepthcell{width:17px;height:32px;background:url('[[pix:moodle|y/vline]]') 0 0 no-repeat}.file-picker .ygtvblankdepthcell,.filemanager .ygtvblankdepthcell{width:17px;height:22px}a.ygtvspacer:hover{color:transparent;text-decoration:none}.ygtvlabel,.ygtvlabel:link,.ygtvlabel:visited,.ygtvlabel:hover{margin-left:2px;text-decoration:none;cursor:pointer;background-color:transparent}.file-picker .ygtvfocus,.filemanager .ygtvfocus{background-color:#eee}.fp-filename-icon{position:relative;display:block;margin-top:10px}.fp-icon{float:left;width:24px;height:24px;margin-top:-7px;margin-right:10px;line-height:24px;text-align:center}.dir-rtl .fp-icon{float:right;margin-right:0;margin-left:10px}.fp-icon img{max-width:24px;max-height:24px;vertical-align:middle}.fp-filename{padding-right:10px}.dir-rtl .fp-filename{padding-right:0;padding-left:10px}.file-picker .fp-login-form{display:table;width:100%;height:100%}.file-picker .fp-login-form table{margin:0 auto}.file-picker .fp-login-form p{margin-top:3em;text-align:center}.file-picker .fp-login-form .fp-login-input label{display:block;text-align:right}.file-picker .fp-login-form .fp-login-input .input{text-align:left}.file-picker .fp-login-form input[type="checkbox"]{width:15px;height:15px}.file-picker .fp-upload-form{display:table;width:100%;height:100%}.file-picker .fp-upload-form table{margin:0 auto}.file-picker.fp-dlg{text-align:center}.file-picker.fp-dlg .fp-dlg-text{padding:30px 20px 10px;font-size:12px}.file-picker.fp-dlg .fp-dlg-buttons{margin:0 20px}.file-picker.fp-msg{text-align:center}.file-picker.fp-msg .fp-msg-text{max-width:500px;max-height:300px;min-width:200px;padding:40px 20px 10px 20px;overflow:auto;font-size:12px}.file-picker.fp-msg.fp-msg-error .fp-msg-text{padding:40px 20px 10px 20px;font-size:12px}.file-picker .fp-content-error{display:table;width:100%;height:100%;text-align:center}.file-picker .fp-content-error .fp-error{display:table-cell;width:100%;height:100%;padding:40px 20px 10px 20px;font-size:12px;vertical-align:middle}.file-picker .fp-nextpage{clear:both}.file-picker .fp-nextpage .fp-nextpage-loading{display:none}.file-picker .fp-nextpage.loading .fp-nextpage-link{display:none}.file-picker .fp-nextpage.loading .fp-nextpage-loading{display:block;height:100px;padding-top:50px;text-align:center}.fp-select form{padding:20px 20px 0}.fp-select .fp-select-loading{margin-top:20px;text-align:center}.fp-select .fp-hr{width:auto;height:1px;margin:10px 0;clear:both;background-color:#fff;border-bottom:1px solid #bbb}.fp-select table{padding:0 0 10px}.fp-select table .mdl-right{min-width:84px}.fp-select .fp-reflist .mdl-right{vertical-align:top}.fp-select .fp-select-buttons{float:right}.fp-select .fp-info{display:block;padding:1px 20px 0;clear:both}.fp-select .fp-thumbnail{float:left;min-width:110px;min-height:110px;margin:10px 20px 0 0;line-height:110px;text-align:center;background:#fff;border:1px solid #ddd;-webkit-box-shadow:inset 0 0 10px 0 #ccc;-moz-box-shadow:inset 0 0 10px 0 #ccc;box-shadow:inset 0 0 10px 0 #ccc}.fp-select .fp-thumbnail img{padding:3px;margin:10px;vertical-align:middle;border:1px solid #ddd}.fp-select .fp-fileinfo{display:inline-block;*display:inline;margin-top:10px;*zoom:1}.file-picker.fp-select .fp-fileinfo{max-width:240px}.fp-select .fp-fileinfo div{padding-bottom:5px}.file-picker.fp-select .uneditable{display:none}.file-picker.fp-select .fp-select-loading{display:none}.file-picker.fp-select.loading .fp-select-loading{display:block}.file-picker.fp-select.loading form{display:none}.fp-select .fp-dimensions.fp-unknown{display:none}.filemanager-loading{display:none}.jsenabled .filemanager-loading{display:block;margin-top:100px}.filemanager.fm-loading .filemanager-toolbar,.filemanager.fm-loading .fp-pathbar,.filemanager.fm-loading .filemanager-container,.filemanager.fm-loaded .filemanager-loading,.filemanager.fm-maxfiles .fp-btn-add,.filemanager.fm-maxfiles .dndupload-message,.filemanager.fm-noitems .fp-btn-download,.filemanager .fm-empty-container,.filemanager.fm-noitems .filemanager-container .fp-content{display:none}.filemanager .filemanager-updating{display:none;text-align:center}.filemanager.fm-updating .filemanager-updating{display:block;margin-top:37px}.filemanager.fm-updating .fm-content-wrapper,.filemanager.fm-nomkdir .fp-btn-mkdir,.fitem.disabled .filemanager .filemanager-toolbar,.fitem.disabled .filemanager .fp-pathbar,.fitem.disabled .filemanager .fp-restrictions,.fitem.disabled .filemanager .fm-content-wrapper{display:none}.filemanager .fp-restrictions{text-align:right}.filemanager .fp-navbar{background:#f2f2f2;border:1px solid #bbb;border-bottom:0}.filemanager-toolbar{padding:4px;overflow:hidden}.fp-pathbar{min-height:20px;padding:5px 8px 1px;border-top:1px solid #bbb}.file-picker .fp-toolbar{padding:4px}.fp-toolbar .fp-btn-add,.fp-toolbar .fp-btn-download,.fp-toolbar .fp-btn-mkdir,.fp-toolbar .fp-tb-help,.fp-toolbar .fp-tb-manage,.fp-toolbar .fp-tb-logout,.fp-toolbar .fp-tb-refresh{width:30px;height:30px;background:white;border:1px solid #CCC;border-bottom:1px solid #b3b3b3;border-radius:4px}.fp-toolbar a:hover{background-color:#ebebeb;background-image:radial-gradient(ellipse at center,#fff 60%,#dfdfdf 100%)}.fp-toolbar a:active{background-color:#dfdfdf;background-image:radial-gradient(ellipse at center,#fff 40%,#dfdfdf 100%)}.fp-btn-add a,.fp-btn-download a,.fp-btn-mkdir a,.fp-tb-help a,.fp-tb-manage a,.fp-tb-logout a,.fp-tb-refresh a{display:block;width:30px;height:30px;border-radius:4px}.fp-btn-add img,.fp-btn-download img,.fp-btn-mkdir img,.fp-tb-help img,.fp-tb-manage img,.fp-tb-logout img,.fp-tb-refresh img{margin:7px}.filemanager .fp-pathbar.empty{display:none}.filepicker-filelist,.filemanager-container{position:relative;min-height:140px;overflow:auto;clear:both;background:#fff;border:1px solid #bbb}.filemanager .fp-content{max-height:472px;min-height:157px;overflow:auto}.filemanager-container,.filepicker-filelist{overflow:hidden}.fitem.disabled .filepicker-filelist,.fitem.disabled .filemanager-container{background-color:#ebebe4}.fitem.disabled .fp-btn-choose{color:#999}.fitem.disabled .filepicker-filelist .filepicker-filename{display:none}.fp-iconview .fp-reficons1{position:absolute;top:0;left:0;width:100%;height:100%}.fp-iconview .fp-reficons2{position:absolute;top:0;left:0;width:100%;height:100%}.fp-iconview .fp-file.fp-hasreferences .fp-reficons1{background:url('[[pix:theme|fp/link]]') no-repeat;background-position:bottom right}.fp-iconview .fp-file.fp-isreference .fp-reficons2{background:url('[[pix:theme|fp/alias]]') no-repeat;background-position:bottom left}.filemanager .fp-iconview .fp-file.fp-originalmissing .fp-thumbnail img{display:none}.filemanager .fp-iconview .fp-file.fp-originalmissing .fp-thumbnail{background:url([[pix:s/dead]]) no-repeat;background-position:center center}.filemanager .yui3-datatable table{width:100%;border:0 solid #bbb}.filemanager .yui3-datatable-header{color:#555!important;background:#fff!important;border-bottom:1px solid #ccc!important;border-left:0 solid #fff!important}.filemanager .yui3-datatable-odd .yui3-datatable-cell{background-color:#f6f6f6!important;border-left:0 solid #f6f6f6}.filemanager .yui3-datatable-even .yui3-datatable-cell{background-color:#fff!important;border-left:0 solid #fff}.filemanager .fp-filename-icon.fp-hasreferences .fp-reficons1{position:absolute;top:8px;left:17px;z-index:1000;width:100%;height:100%;background:url('[[pix:theme|fp/link_sm]]') no-repeat 0 0}.filemanager .fp-filename-icon.fp-isreference .fp-reficons2{position:absolute;top:9px;left:-6px;z-index:1001;width:100%;height:100%;background:url('[[pix:theme|fp/alias_sm]]') no-repeat 0 0}.filemanager .fp-contextmenu{display:none}.filemanager .fp-iconview .fp-folder.fp-hascontextmenu .fp-contextmenu{position:absolute;right:7px;bottom:5px;display:block}.filemanager .fp-treeview .fp-folder.fp-hascontextmenu .fp-contextmenu,.filemanager .fp-tableview .fp-folder.fp-hascontextmenu .fp-contextmenu{position:absolute;top:6px;left:14px;display:inline;margin-right:-20px}.dir-rtl .filemanager .fp-iconview .fp-folder.fp-hascontextmenu .fp-contextmenu{right:inherit;left:7px}.dir-rtl .filemanager .fp-treeview .fp-folder.fp-hascontextmenu .fp-contextmenu,.dir-rtl .filemanager .fp-tableview .fp-folder.fp-hascontextmenu .fp-contextmenu{right:16px;left:inherit;margin-right:0}.filepicker-filelist .filepicker-container,.filemanager.fm-noitems .fm-empty-container{position:absolute;top:10px;right:10px;bottom:10px;left:10px;display:block;padding-top:85px;text-align:center;border:2px dashed #bbb}.filepicker-filelist .dndupload-target,.filemanager-container .dndupload-target{position:absolute;top:10px;right:10px;bottom:10px;left:10px;padding-top:85px;text-align:center;background:#fff;border:2px dashed #fb7979;-webkit-box-shadow:0 0 0 10px #fff;-moz-box-shadow:0 0 0 10px #fff;box-shadow:0 0 0 10px #fff}.filepicker-filelist.dndupload-over .dndupload-target,.filemanager-container.dndupload-over .dndupload-target{position:absolute;top:10px;right:10px;bottom:10px;left:10px;padding-top:85px;text-align:center;background:#fff;border:2px dashed #6c8cd3}.dndupload-message{display:none}.dndsupported .dndupload-message{display:inline}.dnduploadnotsupported-message{display:none}.dndnotsupported .dnduploadnotsupported-message{display:inline}.dndupload-target{display:none}.dndsupported .dndupload-ready .dndupload-target{display:block}.dndupload-uploadinprogress{display:none;text-align:center}.dndupload-uploading .dndupload-uploadinprogress{display:block}.dndupload-arrow{position:absolute;top:5px;width:100%;height:80px;background:url([[pix:theme|fp/dnd_arrow]]) center no-repeat}.fitem.disabled .filepicker-container,.fitem.disabled .fm-empty-container{display:none}.dndupload-progressbars{display:none;padding:10px}.dndupload-inprogress .dndupload-progressbars{display:block}.dndupload-inprogress .fp-content{display:none}.filemanager.fm-noitems .dndupload-inprogress .fm-empty-container{display:none}.filepicker-filelist.dndupload-inprogress .filepicker-container{display:none}.filepicker-filelist.dndupload-inprogress a{display:none}.filemanager.fp-select .fp-select-loading{display:none}.filemanager.fp-select.loading .fp-select-loading{display:block}.filemanager.fp-select.loading form{display:none}.filemanager.fp-select.fp-folder .fp-license,.filemanager.fp-select.fp-folder .fp-author,.filemanager.fp-select.fp-file .fp-file-unzip,.filemanager.fp-select.fp-folder .fp-file-unzip,.filemanager.fp-select.fp-file .fp-file-zip,.filemanager.fp-select.fp-zip .fp-file-zip{display:none}.filemanager.fp-select .fp-file-setmain,.filemanager.fp-select .fp-file-setmain-help{display:none}.filemanager.fp-select.fp-cansetmain .fp-file-setmain,.filemanager.fp-select.fp-cansetmain .fp-file-setmain-help{display:inline-block;*display:inline;*zoom:1}.filemanager .fp-mainfile .fp-filename{font-weight:bold}.filemanager.fp-select.fp-folder .fp-file-download{display:none}.fm-operation{font-weight:bold}.filemanager.fp-select .fp-original.fp-unknown,.filemanager.fp-select .fp-original .fp-originloading{display:none}.filemanager.fp-select .fp-original.fp-loading .fp-originloading{display:inline}.filemanager.fp-select .fp-reflist.fp-unknown,.filemanager.fp-select .fp-reflist .fp-reflistloading{display:none}.filemanager.fp-select .fp-refcount{max-width:265px}.filemanager.fp-select .fp-reflist.fp-loading .fp-reflistloading{display:inline}.filemanager.fp-select .fp-reflist .fp-value{max-width:265px;max-height:75px;padding:8px 7px;margin:0;overflow:auto;background:#f9f9f9;border:1px solid #bbb}.filemanager.fp-select .fp-reflist .fp-value li{padding-bottom:7px}.filemanager.fp-mkdir-dlg{text-align:center}.filemanager.fp-mkdir-dlg .fp-mkdir-dlg-text{margin:20px;text-align:left}.dir-rtl .filemanager .fp-mkdir-dlg p{text-align:right}.filemanager.fp-dlg{text-align:center}.filemanager.fp-dlg .fp-dlg-text{max-width:340px;max-height:300px;min-width:200px;padding:0 10px;margin:40px 20px 20px;overflow:auto;font-size:12px;line-height:22px}.file-picker div.bd{text-align:left}.dir-rtl .filemanager .fp-restrictions{text-align:left}.dir-rtl .file-picker div.bd,.dir-rtl .file-picker .fp-pathbar,.dir-rtl .file-picker .fp-list,.dir-rtl #filemenu .yuimenuitemlabel,.dir-rtl .filemanager-container .yui3-skin-sam .yui3-datatable-header{text-align:right}.dir-rtl .filepicker .yui-layout-unit-left{left:500px}.dir-rtl .filepicker .yui-layout-unit-center{left:0}.dir-rtl .file-picker .fp-toolbar .fp-tb-search input{padding:2px 30px 1px 3px;background-position:208px 7px}.dir-rtl .file-picker .fp-toolbar div{float:right;margin-left:4px}.message-discussion-noframes h1{font-size:1em}.message-discussion-noframes #userinfo .commands,.message .noframesjslink,.message .link{font-size:11.9px}.message .heading{font-size:1em;font-weight:bold}.message .author{font-weight:bold}.message .time{font-style:italic}#page-message-user .commands span{font-size:.7em}#page-message-user .name{font-size:1.1em;font-weight:bold}table.message_search_results td{border-color:#ddd}.message .time,.message.me .author{color:#999}.message.other .author{color:#88c}#page-message-messages{padding:10px}#page-message-send .notifysuccess{padding:1px}#page-message-send td.fixeditor{text-align:center}.message .note{padding:10px}table.message .searchresults td{padding:5px}.message .contactselector{float:left;width:24%}.message .contactselector .contact{text-align:left}.message .contactselector .messageselecteduser{font-weight:bold}.message .contactselector .paging{position:relative;z-index:1}.message .messagearea{float:right;width:74%;min-height:200px;padding-left:1%;border-left:1px solid #d3d3d3}.message .messagearea .messagehistorytype{padding-bottom:20px;clear:both}.message .messagearea .messagehistory .message_user_pictures{margin-right:auto;margin-left:auto}.message .messagearea .messagehistory .message_user_pictures #user1{width:200px;vertical-align:top}.message .messagearea .messagehistory .message_user_pictures #user2{width:200px;vertical-align:top}.message .messagearea .messagehistory .message_user_pictures .useractionlinks{font-size:.9em}.message .messagearea .messagehistory .heading{width:100%;clear:both}.message .messagearea .messagehistory .left{float:left;width:50%;padding-bottom:10px;clear:both}.dir-rtl .message .messagearea .messagehistory .left{float:right}.message .messagearea .messagehistory .right{float:right;width:50%;padding-bottom:10px;clear:both}.dir-rtl .message .messagearea .messagehistory .right{float:left}.message .messagearea .messagehistory .notification{padding:10px;margin-top:5px;background-color:#eee}.message .messagearea .messagesend{padding-top:20px;clear:both}.message .messagearea .messagesend .messagesendbox{width:100%}.message .messagearea .messagesend fieldset{padding:0;margin:0}.message .messagearea .messagerecent{width:100%;text-align:left}.message .messagearea .messagerecent .singlemessage{padding:10px;border-bottom:1px solid #d3d3d3}.message .messagearea .messagerecent .singlemessage .otheruser span{padding:5px}.message .messagearea .messagerecent .singlemessage .messagedate{float:right}.message .hiddenelement{display:none}.message .visible{display:inline}.message #usergroupselector.fieldset,.message #viewing{width:100%}.messagesearchresults{margin-bottom:40px}.messagesearchresults td{padding:0 10px 0 20px}.messagesearchresults td span{white-space:nowrap}.messagesearchresults td img.userpicture{padding-right:.45em;vertical-align:text-bottom}.dir-rtl .messagesearchresults td img.userpicture{padding-right:0;padding-left:.45em}.messagesearchresults td span img{padding:0 0 0 .45em;vertical-align:text-bottom}.dir-rtl .messagesearchresults td span img{padding:0 .45em 0 0}#newmessageoverlay{position:fixed;right:0;bottom:0;padding:20px;background-color:#d3d3d3;border:1px solid black}#newmessageoverlay #usermessage{padding:10px}#page-user-action_redir #edit-messagebody{width:auto}.questionbank h2{margin-top:0}.questioncategories h3{margin-top:0}#chooseqtypebox{margin-top:1em}#chooseqtype h3{margin:0 0 .3em}#chooseqtype .instruction{display:none}#chooseqtype .fakeqtypes{border-top:1px solid silver}#chooseqtype .qtypeoption{margin-bottom:.5em}#chooseqtype label{display:block}#chooseqtype .qtypename img{padding:0 .3em}#chooseqtype .qtypename{display:inline-table;width:16em}#chooseqtype .qtypesummary{display:block;margin:0 2em}#chooseqtype .submitbuttons{margin:.7em 0;text-align:center}#qtypechoicecontainer{display:none}#qtypechoicecontainer_c.yui-panel-container.shadow .underlay{background:0}#qtypechoicecontainer.yui-panel .hd{letter-spacing:1px;color:#333;text-shadow:1px 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#fff,#ccc);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#ccc));background-image:-webkit-linear-gradient(top,#fff,#ccc);background-image:-o-linear-gradient(top,#fff,#ccc);background-image:linear-gradient(to bottom,#fff,#ccc);background-repeat:repeat-x;border:1px solid #ccc;border-bottom:1px solid #bbb;-webkit-border-top-right-radius:10px;border-top-right-radius:10px;-webkit-border-top-left-radius:10px;border-top-left-radius:10px;-moz-border-radius-topright:10px;-moz-border-radius-topleft:10px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffcccccc',GradientType=0)}#qtypechoicecontainer{font-size:12px;color:#333;background:#f2f2f2;border:1px solid #ccc;border-top:0 none;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;-webkit-box-shadow:5px 5px 20px 0 #666;-moz-box-shadow:5px 5px 20px 0 #666;box-shadow:5px 5px 20px 0 #666}#qtypechoicecontainer #chooseqtype{width:40em}#chooseqtypehead h3{margin:0;font-weight:normal}#chooseqtype .qtypes{position:relative;padding:.24em 0;border-bottom:1px solid #bbb}#chooseqtype .alloptions{width:60%;max-height:400px;max-height:calc(85vh);max-height:60vh;overflow-x:hidden;overflow-y:auto}#chooseqtype .qtypeoption{padding:.3em .3em .3em 1.6em;margin-bottom:0}#chooseqtype .qtypeoption img{padding-right:.5em;padding-left:1em;vertical-align:text-bottom}#chooseqtype .selected{background-color:#fff;-webkit-box-shadow:0 0 10px 0 #ccc;-moz-box-shadow:0 0 10px 0 #ccc;box-shadow:0 0 10px 0 #ccc}#chooseqtype .instruction,#chooseqtype .qtypesummary{position:absolute;top:0;right:0;bottom:0;left:60%;display:none;padding:1.5em 1.6em;margin:0;overflow-x:hidden;overflow-y:auto;background-color:#fff}#chooseqtype .instruction,#chooseqtype .selected .qtypesummary{display:block}#categoryquestions{margin:0}#categoryquestions td,#categoryquestions th{padding:0 .2em}#categoryquestions th{font-weight:normal;text-align:left}#categoryquestions .checkbox{padding-left:5px}#categoryquestions .checkbox input[type="checkbox"]{float:none;margin-left:0}#categoryquestions img.iconsmall{padding:0}#categoryquestions .iconcol{padding:3px}#categoryquestions label{margin:0}#page-mod-quiz-edit div.questionbankwindow div.header{margin:0}#page-mod-quiz-edit div.questionbankwindow.block{padding:0}.dir-rtl #categoryquestions th{text-align:right}.questionbank .singleselect{margin:0}#combinedfeedbackhdr div.fhtmleditor{padding:0}#combinedfeedbackhdr div.fcheckbox{margin-bottom:1em}#multitriesheader div.fitem_feditor{margin-top:1em}#multitriesheader div.fitem_fgroup{margin-bottom:1em}#multitriesheader div.fitem_fgroup fieldset.felement label{margin-right:.3em;margin-left:.3em}body.path-question-type .fitem_fgroup .accesshide{position:static;left:0;padding-right:.3em;font:inherit}.que{margin:0 auto 1.8em auto;clear:left;text-align:left}.dir-rtl .que{text-align:right}.que .info{float:left;width:7em;padding:.5em;margin-bottom:1.8em;background-color:#eee;border:1px solid #dcdcdc;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.que h3.no{margin:0;font-size:.8em;line-height:1}.que span.qno{font-size:1.5em;font-weight:bold}.que .info>div{margin-top:.7em;font-size:.8em}.que .info .questionflag.editable{cursor:pointer}.que .info .editquestion img,.que .info .questionflag img,.que .info .questionflag input{vertical-align:bottom}.que .content{margin:0 0 0 8.5em}.que .formulation,.que .outcome,.que .comment{padding:8px 35px 8px 14px;margin-bottom:20px;color:#c09853;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.que .formulation{color:#3a87ad;color:#333;background-color:#d9edf7;border-color:#bce8f1}.formulation input[type="text"],.formulation select{width:auto}.path-mod-quiz input[size]{width:auto}.que .comment{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.que .history{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.que .history blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.que .ablock{margin:.7em 0 .3em 0}.que .im-controls{margin-top:.5em;text-align:left}.dir-rtl .que .im-controls{text-align:right}.que .specificfeedback,.que .generalfeedback,.que .rightanswer,.que .im-feedback,.que .feedback,.que p{margin:0 0 .5em}.que .qtext{margin-bottom:1.5em}.que .correctness{display:inline-block;padding:2px 4px;font-size:11.844px;font-weight:bold;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);white-space:nowrap;vertical-align:baseline;background-color:#999;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.que .correctness:empty{display:none}.que .correctness-important{background-color:#b94a48}.que .correctness-important[href]{background-color:#953b39}.que .correctness-warning{background-color:#f89406}.que .correctness-warning[href]{background-color:#c67605}.que .correctness-success{background-color:#468847}.que .correctness-success[href]{background-color:#356635}.que .correctness-info{background-color:#3a87ad}.que .correctness-info[href]{background-color:#2d6987}.que .correctness-inverse{background-color:#333}.que .correctness-inverse[href]{background-color:#1a1a1a}.que .correctness.correct{background-color:#468847}.que .correctness.partiallycorrect{background-color:#f89406}.que .correctness.notanswered,.que .correctness.incorrect{background-color:#b94a48}.que .validationerror{color:#b94a48}.formulation .correct{background-color:#dff0d8}.formulation .partiallycorrect{background-color:#fcf8e3}.formulation .incorrect{background-color:#f2dede}.formulation select.correct,.formulation input.correct{color:#468847;background-color:#dff0d8;border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.formulation select.correct:focus,.formulation input.correct:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.formulation select.partiallycorrect,.formulation input.partiallycorrect{color:#c09853;background-color:#fcf8e3;border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.formulation select.partiallycorrect:focus,.formulation input.partiallycorrect:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.formulation select.incorrect,.formulation input.incorrect{color:#b94a48;background-color:#f2dede;border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.formulation select.incorrect:focus,.formulation input.incorrect:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.que .grading,.que .comment,.que .commentlink,.que .history{margin-top:.5em}.que .history h3{margin:0 0 .2em;font-size:1em}.que .history table{width:100%;margin:0}.que .history .current{font-weight:bold}.que .questioncorrectnessicon{vertical-align:text-bottom}.que input.questionflagimage{padding-right:3px}.dir-rtl .que input.questionflagimage{padding-right:0;padding-left:3px}.importerror{margin-top:10px;border-bottom:1px solid #555}.mform .que.comment .fitemtitle{width:20%}#page-question-preview #techinfo{margin:1em 0}.dir-rtl #chooseqtype .instruction,.dir-rtl #chooseqtype .qtypesummary{right:60%;left:0;border-right:1px solid grey;border-left:0}#page-mod-quiz-edit .box.generalbox.questionbank{padding:.5em}#page-mod-quiz-edit .questionbank .categorypagingbarcontainer,#page-mod-quiz-edit .questionbank .categoryquestionscontainer,#page-mod-quiz-edit .questionbank .choosecategory{padding:0}#page-mod-quiz-edit .questionbank .choosecategory select{width:100%}#page-mod-quiz-edit div.questionbank .categoryquestionscontainer{background:transparent}#page-mod-quiz-edit #categoryquestions>thead{background:#FFF}#page-mod-quiz-edit #categoryquestions>tbody>tr:nth-of-type(even){background:#e4e4e4}#page-mod-quiz-edit .questionbankwindow div.header{padding:3px;padding:2px 10px 2px 10px;margin:0 -10px 0 -10px;color:#444;text-shadow:none;background:transparent;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px}#page-mod-quiz-edit .questionbankwindow div.header a:link,#page-mod-quiz-edit .questionbankwindow div.header a:visited{color:#0070a8}#page-mod-quiz-edit .questionbankwindow div.header a:hover{color:#003d5c}#page-mod-quiz-edit .createnewquestion{padding:.3em 0}#page-mod-quiz-edit .createnewquestion div,#page-mod-quiz-edit .createnewquestion input{margin:0}#page-mod-quiz-edit .questionbankwindow div.header .title{color:#333}#page-mod-quiz-edit div.container div.generalbox{padding:1.5em;background-color:transparent}#page-mod-quiz-edit .categoryinfo{background-color:transparent;border-bottom:0}#page-mod-quiz-edit .createnewquestion .singlebutton input{margin-bottom:0}#page-mod-quiz-edit div.questionbank .categorysortopotionscontainer,#page-mod-quiz-edit div.questionbank .categoryselectallcontainer{padding:0 0 1.5em 0}#page-mod-quiz-edit div.questionbank .categorypagingbarcontainer{margin:0;background-color:transparent;border-top:0;border-bottom:0}#page-mod-quiz-edit div.questionbank .categorypagingbarcontainer .paging{padding:0 .3em}#page-mod-quiz-edit div.question div.content div.questioncontrols{background-color:#fff}#page-mod-quiz-edit div.question div.content div.points{padding-bottom:.5em;margin-top:-0.5em;background-color:#fff;border:0}#page-mod-quiz-edit div.question div.content div.points label{display:inline-block}#page-mod-quiz-edit div.quizpage .pagecontent .pagestatus{background-color:#fff}#page-mod-quiz-edit .quizpagedelete,#page-mod-quiz-edit .quizpagedelete img{background-color:transparent}#page-mod-quiz-edit div.quizpage .pagecontent{overflow:hidden;border:1px solid #ddd;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}#page-mod-quiz-edit div.questionbank .categoryinfo{padding:.3em 0}#page-mod-quiz-edit div.questionbank .modulespecificbuttonscontainer{padding:0}#page-mod-quiz-edit div.questionbank .modulespecificbuttonscontainer strong{display:block}#page-mod-quiz-edit div.questionbank .modulespecificbuttonscontainer hr,#page-mod-quiz-edit div.questionbank .modulespecificbuttonscontainer br{display:none}#page-mod-quiz-edit div.questionbank .modulespecificbuttonscontainer strong{margin-left:-0.3em}#page-mod-quiz-edit div.questionbank .modulespecificbuttonscontainer strong label{margin-left:.3em}#page-mod-quiz-edit div.questionbank .modulespecificbuttonscontainer input{margin-left:0}#page-mod-quiz-edit div.questionbank .modulespecificbuttonscontainer input+input{margin-left:5px}.questionbankwindow .module{width:auto}#page-mod-quiz-edit div.editq div.question div.content{overflow:hidden;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.path-mod-quiz .statedetails{display:block;font-size:.9em}a#hidebankcmd{color:#0070a8}.que.shortanswer .answer{padding:0}.que label{display:inline}.userprofile .fullprofilelink{margin:10px;text-align:center}.userprofile .description{margin-bottom:20px}.userprofile dl.list{*zoom:1}.userprofile dl.list:before,.userprofile dl.list:after{display:table;line-height:0;content:""}.userprofile dl.list:after{clear:both}.userprofile dl.list dt{float:left;width:180px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.userprofile dl.list dd{margin-left:200px}.user-box{float:left;width:115px;height:160px;margin:8px;clear:none;text-align:center}.dir-rtl .userprofile .description{margin-right:0}.dir-rtl .user-box{float:right}.dir-rtl .userprofile dl.list dt{float:right;padding-left:10px;text-align:left}.dir-rtl .userprofile dl.list dd{margin-left:0}.userlist .action-icon img{vertical-align:middle}.userlist #showall{margin:10px 0}.userlist .buttons{text-align:center}.userlist .buttons label{padding:0 3px}.userlist table#participants{text-align:center}.userlist table#participants td,.userlist table#participants th{padding:4px;text-align:left;vertical-align:middle}.userlist table.controls{width:100%}.userlist table.controls tr{vertical-align:top}.userlist table.controls .right{text-align:right}.userlist table.controls .groupselector{margin-top:0;margin-bottom:0}.userlist table.controls .groupselector label{display:block}.userinfobox{width:100%;padding:10px;border:1px solid;border-collapse:separate}.userinfobox .left,.userinfobox .side{width:100px;vertical-align:top}.userinfobox .userpicture{width:100px;height:100px}.userinfobox .content{vertical-align:top}.userinfobox .links{width:100px;padding:5px;vertical-align:bottom}.userinfobox .links a{display:block}.userinfobox .list td{padding:3px}.userinfobox .username{padding-bottom:20px;font-weight:bold}.userinfobox td.label{font-weight:bold;text-align:right;white-space:nowrap;vertical-align:top}.groupinfobox{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.groupinfobox blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.groupinfobox .left{width:100px;padding:10px;vertical-align:top}.course-participation #showall{margin:10px 0;text-align:center}#user-policy .noticebox{width:80%;height:250px;margin-right:auto;margin-bottom:10px;margin-left:auto;text-align:center}#user-policy #policyframe{width:100%;height:100%}.iplookup #map{margin:auto}.userselector select{width:100%}.userselector div{margin-top:.2em}.userselector div label{margin-right:.3em}.userselector .userselector-infobelow{font-size:.8em}#userselector_options{padding:.3em 0}#userselector_options .collapsibleregioncaption{font-weight:bold}#userselector_options p{margin:.2em 0;text-align:left}.dir-rtl #userselector_options p{text-align:right}#page-user-profile .messagebox{margin-right:auto;margin-left:auto;text-align:center}#page-course-view-weeks .messagebox{margin-right:auto;margin-left:auto;text-align:center}.dir-rtl .userprofilebox .descriptionbox{margin:0}.dir-rtl .userlist table#participants td,.dir-rtl .userlist table#participants th{text-align:right}.dir-rtl .userlist table#participants{margin:0 auto}#page-my-index.dir-rtl .block h3{text-align:right}.profileeditor>.singleselect{margin:0 .5em 0 0}.profileeditor>.singlebutton{display:inline-block;margin:0 0 0 .5em}.profileeditor>.singlebutton div,.profileeditor>.singlebutton input{margin:0}.dir-rtl .profileeditor>.singleselect{margin:0 0 0 .5em}.dir-rtl .profileeditor>.singlebutton{margin:0 .5em 0 0}/*! +.layout-option-noheader #page-header,.layout-option-nonavbar #page-navbar,.layout-option-nofooter #page-footer,.layout-option-nocourseheader .course-content-header,.layout-option-nocoursefooter .course-content-footer{display:none}.empty-region-side-pre #block-region-side-pre,.empty-region-side-post #block-region-side-post,.jsenabled.docked-region-side-post #block-region-side-post,.jsenabled.docked-region-side-pre #block-region-side-pre{display:none}.empty-region-side-post #region-bs-main-and-pre.span9,.empty-region-side-pre #region-bs-main-and-post.span9,.empty-region-side-post #region-bs-main-and-post.span9 #region-main.span8,.jsenabled.docked-region-side-post #region-bs-main-and-pre.span9,.jsenabled.docked-region-side-post #region-bs-main-and-post.span9 #region-main.span8,.jsenabled.docked-region-side-pre #region-bs-main-and-post.span9{width:100%}.empty-region-side-pre #region-bs-main-and-pre.span9 #region-main,.jsenabled.docked-region-side-pre #region-bs-main-and-pre.span9 #region-main{float:none;width:100%}.empty-region-side-post.used-region-side-pre #region-main.span8,.jsenabled.docked-region-side-post.used-region-side-pre #region-main.span8{width:74.46808510638297%;*width:74.41489361702126%}.empty-region-side-post.used-region-side-pre #block-region-side-pre.span4,.jsenabled.docked-region-side-post.used-region-side-pre #block-region-side-pre.span4{width:23.404255319148934%;*width:23.351063829787233%}.empty-region-side-pre #region-bs-main-and-post.span9 #region-main.span8,.jsenabled.docked-region-side-pre #region-bs-main-and-post.span9 #region-main.span8{float:right}.dir-ltr,.mdl-left,.dir-rtl .mdl-right{text-align:left}.dir-rtl,.mdl-right,.dir-rtl .mdl-left{text-align:right}#add,#remove,.centerpara,.mdl-align{text-align:center}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,.usersuspended,.usersuspended a,.usersuspended a:link,.usersuspended a:visited,.dimmed_category,.dimmed_category a{color:#999}.activity.label .dimmed_text{opacity:.5;filter:alpha(opacity=50)}.unlist,.unlist li,.inline-list,.inline-list li,.block .list,.block .list li,.section li.activity,.section li.movehere,.tabtree li{padding:0;margin:0;list-style:none}.inline,.inline-list li{display:inline}.notifytiny{font-size:10.5px}.notifytiny li,.notifytiny td{font-size:100%}.red,.notifyproblem{color:#b94a48}.green,.notifysuccess{color:#468847}.highlight{background:#d9edf7}.reportlink{text-align:right}a.autolink.glossary:hover{cursor:help}.collapsibleregioncaption{white-space:nowrap}.collapsibleregioncaption img{vertical-align:middle}.jsenabled .hiddenifjs{display:none}.visibleifjs{display:none}.jsenabled .visibleifjs{display:inline}.jsenabled .collapsibleregion{overflow:hidden}.jsenabled .collapsed .collapsibleregioninner{visibility:hidden}.collapsible-actions{display:none;text-align:right}.dir-rtl .collapsible-actions{text-align:left}.jsenabled .collapsible-actions{display:block}.collapsible-actions .collapseexpand{padding-left:20px;background:url([[pix:t/collapsed]]) 2px center no-repeat}.dir-rtl .collapsible-actions .collapseexpand{padding-right:20px;padding-left:0;background:url([[pix:t/collapsed_rtl]]) right center no-repeat}.collapsible-actions .collapse-all,.dir-rtl .collapsible-actions .collapse-all{background-image:url([[pix:t/expanded]])}.yui-overlay .yui-widget-bd{position:relative;top:0;left:0;z-index:1;padding:2px 5px;color:#000;background-color:#ffee69;border:1px solid #a6982b;border-top-color:#d4c237}.clearer{display:block;height:1px;padding:0;margin:0;clear:both;background:transparent;border-width:0}.bold,.warning,.errorbox .title,.pagingbar .title,.pagingbar .thispage{font-weight:bold}img.resize{width:1em;height:1em}.block img.resize,.breadcrumb img.resize{width:.8em;height:.9em}img.icon{width:16px;height:16px;padding-right:6px;vertical-align:text-bottom}.dir-rtl img.icon{padding-right:0;padding-left:6px}img.iconsmall{width:12px;height:12px;margin-right:3px;vertical-align:middle}img.iconhelp,.helplink img{width:16px;height:16px;padding-left:3px;vertical-align:text-bottom}h1 img.iconhelp,h1 img.icon,h2 img.iconhelp,h2 img.icon,h3 img.iconhelp,h3 img.icon,h4 img.iconhelp,h4 img.icon,h5 img.iconhelp,h5 img.icon,h6 img.iconhelp,h6 img.icon{padding:4px;vertical-align:middle}.dir-rtl img.iconhelp,.dir-rtl .helplink img{padding-right:3px;padding-left:0}img.iconlarge{width:24px;height:24px;vertical-align:middle}img.iconsort{padding-left:.3em;margin-bottom:.15em;vertical-align:text-bottom}.dir-rtl img.iconsort{padding-right:.3em;padding-left:0}img.icontoggle{width:50px;height:17px;vertical-align:middle}img.iconkbhelp{width:49px;height:17px}img.icon-pre,.dir-rtl img.icon-post{padding-right:3px;padding-left:0}img.icon-post,.dir-rtl img.icon-pre{padding-right:0;padding-left:3px}.boxaligncenter{margin-right:auto;margin-left:auto}.boxalignright{margin-right:0;margin-left:auto}.boxalignleft{margin-right:auto;margin-left:0}.boxwidthnarrow{width:30%}.boxwidthnormal{width:50%}.boxwidthwide{width:80%}.headermain{font-weight:bold}#maincontent{display:block;height:1px;overflow:hidden}img.uihint{cursor:help}#addmembersform table{margin-right:auto;margin-left:auto}.flexible th{white-space:nowrap}table.flexible .emptyrow{display:none}img.emoticon{width:15px;height:15px;vertical-align:middle}form.popupform,form.popupform div{display:inline}.arrow_button input{overflow:hidden}.action-icon img.smallicon{margin:0 .3em;vertical-align:text-bottom}.no-overflow{padding-bottom:1px;overflow:auto}.pagelayout-report .no-overflow{overflow:visible}.no-overflow>.generaltable{margin-bottom:0}.accesshide{position:absolute;left:-10000px;font-size:1em;font-weight:normal}.dir-rtl .accesshide{top:-30000px;left:auto}span.hide,div.hide{display:none}a.skip-block,a.skip{position:absolute;top:-1000em;font-size:.85em;text-decoration:none}a.skip-block:focus,a.skip-block:active,a.skip:focus,a.skip:active{position:static;display:block}.skip-block-to{display:block;height:1px;overflow:hidden}.addbloglink{text-align:center}.blog_entry .audience{padding-right:4px;text-align:right}.blog_entry .tags{margin-top:15px}.blog_entry .tags .action-icon img.smallicon{width:16px;height:16px}.blog_entry .content{margin-left:43px}#page-group-index #groupeditform{text-align:center}#doc-contents h1{margin:1em 0 0 0}#doc-contents ul{width:90%;padding:0;margin:0}#doc-contents ul li{list-style-type:none}.groupmanagementtable td{vertical-align:top}.groupmanagementtable #existingcell,.groupmanagementtable #potentialcell{width:42%}.groupmanagementtable #buttonscell{width:16%}.groupmanagementtable #buttonscell p.arrow_button input{width:auto;min-width:80%;margin:0 auto}.groupmanagementtable #removeselect_wrapper,.groupmanagementtable #addselect_wrapper{width:100%}.groupmanagementtable #removeselect_wrapper label,.groupmanagementtable #addselect_wrapper label{font-weight:normal}.dir-rtl .groupmanagementtable p{text-align:right}#group-usersummary{width:14em}.groupselector{display:inline-block;margin-top:3px;margin-bottom:3px}.groupselector label{display:inline-block}.loginbox{margin:15px;overflow:visible}.loginbox.twocolumns{margin:15px}.loginbox h2,.loginbox .subcontent{padding:10px;margin:5px;text-align:center}.loginbox .loginpanel .desc{padding:0;margin:0;margin-top:15px;margin-bottom:5px}.loginbox .signuppanel .subcontent{text-align:left}.dir-rtl .loginbox .signuppanel .subcontent{text-align:right}.loginbox .loginsub{margin-right:0;margin-left:0}.loginbox .guestsub,.loginbox .forgotsub,.loginbox .potentialidps{margin:5px 12%}.loginbox .potentialidps .potentialidplist{margin-left:40%}.loginbox .potentialidps .potentialidplist div{text-align:left}.loginbox .loginform{margin-top:1em;text-align:left}.loginbox .loginform .form-label{float:left;width:44%;text-align:right;white-space:nowrap;direction:rtl}.dir-rtl .loginbox .loginform .form-label{float:left;width:44%;text-align:right;white-space:nowrap;direction:ltr}.loginbox .loginform .form-input{float:right;width:55%}.loginbox .loginform .form-input input{width:6em}.loginbox .signupform{margin-top:1em;text-align:center}.loginbox.twocolumns .loginpanel,.loginbox.twocolumns .signuppanel{display:block;float:left;width:48%;min-height:30px;padding:0;padding-bottom:2000px;margin:0;margin-bottom:-2000px;margin-left:2.76243%;border:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.dir-rtl .loginbox.twocolumns .loginpanel,.dir-rtl .loginbox.twocolumns .signuppanel{float:right}.loginbox .potentialidp .smallicon{margin:0 .3em;vertical-align:text-bottom}.notepost{margin-bottom:1em}.notepost .userpicture{float:left;margin-right:5px}.notepost .content,.notepost .footer{clear:both}.notesgroup{margin-left:20px}.path-my .coursebox .overview{margin:15px 30px 10px 30px}.path-my .coursebox .info{float:none;margin:0}.mod_introbox{padding:10px}table.mod_index{width:100%}.comment-ctrl{display:none;padding:0;margin:0;font-size:12px}.comment-ctrl h5{padding:5px;margin:0}.comment-area{max-width:400px;padding:5px}.comment-area textarea{width:100%;overflow:auto}.comment-area .fd{text-align:right}.comment-meta span{color:gray}.comment-link img{vertical-align:text-bottom}.comment-list{padding:0;margin:0;overflow:auto;font-size:11px;list-style:none}.comment-list li{position:relative;padding:.3em;margin:2px;margin-bottom:5px;clear:both;list-style:none}.comment-list li.first{display:none}.comment-paging{text-align:center}.comment-paging .pageno{padding:2px}.comment-paging .curpage{border:1px solid #CCC}.comment-message .picture{float:left;width:20px}.dir-rtl .comment-message .picture{float:right}.comment-message .text{padding:0;margin:0}.comment-message .text p{padding:0;margin:0 18px 0 0}.comment-delete{position:absolute;top:0;right:0;margin:.3em}.dir-rtl .comment-delete{position:absolute;right:auto;left:0;margin:.3em}.comment-delete-confirm{width:5em;padding:2px;text-align:center;background:#eee}.comment-container{float:left;margin:4px}.comment-report-selectall{display:none}.comment-link{display:none}.jsenabled .comment-link{display:block}.jsenabled .showcommentsnonjs{display:none}.jsenabled .comment-report-selectall{display:inline}.completion-expired{background:#f2dede}.completion-expected{font-size:10.5px}.completion-sortchoice,.completion-identifyfield{font-size:10.5px;vertical-align:bottom}.completion-progresscell{text-align:right}.completion-expired .completion-expected{font-weight:bold}#page-tag-coursetags_edit .coursetag_edit_centered{position:relative;width:600px;margin:20px auto}#page-tag-coursetags_edit .coursetag_edit_row{clear:both}#page-tag-coursetags_edit .coursetag_edit_row .coursetag_edit_left{float:left;width:50%;text-align:right}#page-tag-coursetags_edit .coursetag_edit_row .coursetag_edit_right{margin-left:50%}#page-tag-coursetags_edit .coursetag_edit_input3{display:none}#page-tag-coursetags_more .coursetag_more_large{font-size:120%}#page-tag-coursetags_more .coursetag_more_small{font-size:80%}#page-tag-coursetags_more .coursetag_more_link{font-size:80%}#tag-description,#tag-blogs{width:100%}#tag-management-box{margin-bottom:10px;line-height:20px}#tag-user-table{width:100%;padding:3px;clear:both}#tag-user-table{*zoom:1}#tag-user-table:before,#tag-user-table:after{display:table;line-height:0;content:""}#tag-user-table:after{clear:both}img.user-image{width:100px;height:100px}#small-tag-cloud-box{width:300px;margin:0 auto}#big-tag-cloud-box{float:none;width:600px;margin:0 auto}ul#tag-cloud-list{padding:5px;margin:0;list-style:none}ul#tag-cloud-list li{display:inline;margin:0;list-style-type:none}#tag-search-box{margin:10px auto;text-align:center}#tag-search-results-container{width:100%;padding:0}#tag-search-results{display:block;float:left;width:60%;padding:0;margin:15px 20% 0 20%}#tag-search-results li{float:left;width:30%;padding-right:1%;padding-left:1%;line-height:20px;text-align:left;list-style:none}span.flagged-tag,span.flagged-tag a{color:#b94a48}table#tag-management-list{width:100%;text-align:left}table#tag-management-list td,table#tag-management-list th{padding:4px;text-align:left;vertical-align:middle}.tag-management-form{text-align:center}#relatedtags-autocomplete-container{width:100%;min-height:4.6em;margin-right:auto;margin-left:auto}#relatedtags-autocomplete{position:relative;display:block;width:60%;margin-right:auto;margin-left:auto}#relatedtags-autocomplete .yui-ac-content{position:absolute;left:20%;z-index:9050;width:420px;overflow:hidden;background:#fff;border:1px solid #404040}#relatedtags-autocomplete .ysearchquery{position:absolute;right:10px;z-index:10;color:#808080}#relatedtags-autocomplete .yui-ac-shadow{position:absolute;z-index:9049;width:100%;margin:.3em;background:#a0a0a0}#relatedtags-autocomplete ul{width:100%;padding:0;margin:0;list-style-type:none}#relatedtags-autocomplete li{padding:0 5px;white-space:nowrap;cursor:default}#relatedtags-autocomplete li.yui-ac-highlight{background:#ffc}h2.tag-heading,div#tag-description,div#tag-blogs,body.tag .managelink{padding:5px}.tag_cloud .s20{font-size:1.5em;font-weight:bold}.tag_cloud .s19{font-size:1.5em}.tag_cloud .s18{font-size:1.4em;font-weight:bold}.tag_cloud .s17{font-size:1.4em}.tag_cloud .s16{font-size:1.3em;font-weight:bold}.tag_cloud .s15{font-size:1.3em}.tag_cloud .s14{font-size:1.2em;font-weight:bold}.tag_cloud .s13{font-size:1.2em}.tag_cloud .s12,.tag_cloud .s11{font-size:1.1em;font-weight:bold}.tag_cloud .s10,.tag_cloud .s9{font-size:1.1em}.tag_cloud .s8,.tag_cloud .s7{font-size:1em;font-weight:bold}.tag_cloud .s6,.tag_cloud .s5{font-size:1em}.tag_cloud .s4,.tag_cloud .s3{font-size:.9em;font-weight:bold}.tag_cloud .s2,.tag_cloud .s1{font-size:.9em}.tag_cloud .s0{font-size:.8em}#webservice-doc-generator td{text-align:left;border:0 solid black}.smartselect{position:absolute}.smartselect .smartselect_mask{background-color:#fff}.smartselect ul{padding:0;margin:0}.smartselect ul li{list-style:none}.smartselect .smartselect_menu{margin-right:5px}.safari .smartselect .smartselect_menu{margin-left:2px}.smartselect .smartselect_menu,.smartselect .smartselect_submenu{display:none;background-color:#FFF;border:1px solid #000}.smartselect .smartselect_menu.visible,.smartselect .smartselect_submenu.visible{display:block}.smartselect .smartselect_menu_content ul li{position:relative;padding:2px 5px}.smartselect .smartselect_menu_content ul li a{color:#333;text-decoration:none}.smartselect .smartselect_menu_content ul li a.selectable{color:inherit}.smartselect .smartselect_submenuitem{background-image:url([[pix:moodle|t/collapsed]]);background-position:100%;background-repeat:no-repeat}.smartselect.spanningmenu .smartselect_submenu{position:absolute;top:-1px;left:100%}.smartselect.spanningmenu .smartselect_submenu a{padding-right:16px;white-space:nowrap}.smartselect.spanningmenu .smartselect_menu_content ul li a.selectable:hover{text-decoration:underline}.smartselect.compactmenu .smartselect_submenu{position:relative;z-index:1010;display:none;margin:2px -3px;margin-left:10px;border-width:0}.smartselect.compactmenu .smartselect_submenu.visible{display:block}.smartselect.compactmenu .smartselect_menu{z-index:1000;overflow:hidden}.smartselect.compactmenu .smartselect_submenu .smartselect_submenu{z-index:1020}.smartselect.compactmenu .smartselect_submenuitem:hover>.smartselect_menuitem_label{font-weight:bold}#page-admin-registration-register .registration_textfield{width:300px}.userenrolment{width:100%;border-collapse:collapse}.userenrolment td{height:41px;padding:0}.userenrolment .subfield{margin-right:5px}.userenrolment .col_userdetails .subfield_picture{float:left}.userenrolment .col_lastseen{width:150px}.userenrolment .col_role{width:262px}.userenrolment .col_role .roles{margin-right:30px}.userenrolment .col_role .role{float:left;padding:3px;margin:3px}.dir-rtl .userenrolment .col_role .role{float:right}.userenrolment .col_role .role a{margin-left:3px;cursor:pointer}.userenrolment .col_role .addrole{float:right;width:18px;height:18px;margin:3px;text-align:center;background-color:#dff0d8;border:1px solid #d6e9c6}.userenrolment .col_role .addrole img{vertical-align:baseline}.userenrolment .hasAllRoles .col_role .addrole{display:none}.userenrolment .col_group .groups{margin-right:30px}.userenrolment .col_group .group{float:left;padding:3px;margin:3px;white-space:nowrap}.userenrolment .col_group .group a{margin-left:3px;cursor:pointer}.userenrolment .col_group .addgroup{float:right;width:18px;height:18px;margin:3px;text-align:center}.userenrolment .col_group .addgroup a img{vertical-align:bottom}.userenrolment .col_enrol .enrolment{float:left;padding:3px;margin:3px}.userenrolment .col_enrol .enrolment a{float:right;margin-left:3px}#page-enrol-users .enrol_user_buttons{float:right}#page-enrol-users .enrol_user_buttons .enrolusersbutton{display:inline}#page-enrol-users .enrol_user_buttons .enrolusersbutton div,#page-enrol-users .enrol_user_buttons .enrolusersbutton form{display:inline;margin-right:0}#page-enrol-users #filterform{display:inline-block;min-height:20px;padding:19px;padding:9px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-webkit-border-radius:3px;-moz-border-radius:4px;-moz-border-radius:3px;border-radius:4px;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}#page-enrol-users #filterform blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}#page-enrol-users #filterform .fitem{display:inline-block;margin-right:.3em;line-height:40px;white-space:nowrap}#page-enrol-users #filterform .fitem label{display:inline;padding-right:.3em;line-height:20px}#page-enrol-users #filterform .fitem :before,#page-enrol-users #filterform .fitem:after{display:inline}#page-enrol-users #filterform div,#page-enrol-users #filterform fieldset{display:inline;float:none;width:auto;margin:0;clear:none}#page-enrol-users #filterform select,#page-enrol-users #filterform .ftext input{width:7em}#page-enrol-users #filterform input,#page-enrol-users #filterform select{margin-bottom:0}#page-enrol-users .user-enroller-panel .uep-search-results .user .details{width:237px}.dir-rtl#page-enrol-users .col_userdetails .subfield_picture{float:right}.dir-rtl#page-enrol-users .enrol_user_buttons{float:left}.dir-rtl#page-enrol-users .enrol_user_buttons .enrolusersbutton{margin-right:1em;margin-left:0}.dir-rtl#page-enrol-users .enrol_user_buttons .enrolusersbutton div{margin-left:0}.dir-rtl#page-enrol-users #filterform .fitem{margin-right:0;margin-left:.3em}.dir-rtl#page-enrol-users #filterform .fitem label{padding-right:0;padding-left:.3em}.dir-rtl .headermain{float:right}.dir-rtl .headermenu{float:left}.dir-rtl .loginbox .loginform .form-label{float:right;text-align:left}.dir-rtl .loginbox .loginform .form-input{text-align:right}.dir-rtl .yui3-menu-hidden{left:0}#page-admin-roles-define.dir-rtl #rolesform .felement{margin-right:180px}#page-message-edit.dir-rtl table.generaltable th.c0{text-align:right}.corelightbox{position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;background-color:#CCC}.corelightbox img{position:fixed;top:50%;left:50%}.mod-indent-outer{display:table}.mod-indent{display:table-cell}.label .mod-indent{float:left;padding-top:20px}.mod-indent-1{width:30px}.mod-indent-2{width:60px}.mod-indent-3{width:90px}.mod-indent-4{width:120px}.mod-indent-5{width:150px}.mod-indent-6{width:180px}.mod-indent-7{width:210px}.mod-indent-8{width:240px}.mod-indent-9{width:270px}.mod-indent-10{width:300px}.mod-indent-11{width:330px}.mod-indent-12{width:360px}.mod-indent-13{width:390px}.mod-indent-14{width:420px}.mod-indent-15{width:450px}.mod-indent-16{width:480px}.mod-indent-huge{width:480px}.resourcecontent .mediaplugin_mp3 object{width:600px;height:25px}.resourcecontent audio.mediaplugin_html5audio{width:600px}.resourceimage{max-width:100%}.mediaplugin_mp3 object{width:300px;height:15px}audio.mediaplugin_html5audio{width:300px}.core_media_preview.pagelayout-embedded #content{padding:0}.core_media_preview.pagelayout-embedded #maincontent{height:0}body#page-lib-editor-tinymce-plugins-moodlemedia-preview{min-width:0;padding:0;margin:0;background:0}.dir-rtl .ygtvtn,.dir-rtl .ygtvtm,.dir-rtl .ygtvtmh,.dir-rtl .ygtvtmhh,.dir-rtl .ygtvtp,.dir-rtl .ygtvtph,.dir-rtl .ygtvtphh,.dir-rtl .ygtvln,.dir-rtl .ygtvlm,.dir-rtl .ygtvlmh,.dir-rtl .ygtvlmhh,.dir-rtl .ygtvlp,.dir-rtl .ygtvlph,.dir-rtl .ygtvlphh,.dir-rtl .ygtvdepthcell,.dir-rtl .ygtvok,.dir-rtl .ygtvok:hover,.dir-rtl .ygtvcancel,.dir-rtl .ygtvcancel:hover{width:18px;height:22px;cursor:pointer;background-image:url([[pix:theme|yui2-treeview-sprite-rtl]]);background-repeat:no-repeat}.dir-rtl .ygtvtn{background-position:0 -5600px}.dir-rtl .ygtvtm{background-position:0 -4000px}.dir-rtl .ygtvtmh,.dir-rtl .ygtvtmhh{background-position:0 -4800px}.dir-rtl .ygtvtp{background-position:0 -6400px}.dir-rtl .ygtvtph,.dir-rtl .ygtvtphh{background-position:0 -7200px}.dir-rtl .ygtvln{background-position:0 -1600px}.dir-rtl .ygtvlm{background-position:0 0}.dir-rtl .ygtvlmh,.dir-rtl .ygtvlmhh{background-position:0 -800px}.dir-rtl .ygtvlp{background-position:0 -2400px}.dir-rtl .ygtvlph,.dir-rtl .ygtvlphh{background-position:0 -3200px}.dir-rtl .ygtvdepthcell{background-position:0 -8000px}.dir-rtl .ygtvok{background-position:0 -8800px}.dir-rtl .ygtvok:hover{background-position:0 -8844px}.dir-rtl .ygtvcancel{background-position:0 -8822px}.dir-rtl .ygtvcancel:hover{background-position:0 -8866px}.dir-rtl.yui-skin-sam .yui-panel .hd{text-align:right}.dir-rtl .yui-skin-sam .yui-layout .yui-layout-unit div.yui-layout-bd{text-align:right}.dir-rtl .clearlooks2.ie9 .mceAlert .mceMiddle span,.dir-rtl .clearlooks2 .mceConfirm .mceMiddle span{top:44px}.dir-rtl .o2k7Skin table,.dir-rtl .o2k7Skin tbody,.dir-rtl .o2k7Skin a,.dir-rtl .o2k7Skin img,.dir-rtl .o2k7Skin tr,.dir-rtl .o2k7Skin div,.dir-rtl .o2k7Skin td,.dir-rtl .o2k7Skin iframe,.dir-rtl .o2k7Skin span,.dir-rtl .o2k7Skin *,.dir-rtl .o2k7Skin .mceText,.dir-rtl .o2k7Skin .mceListBox .mceText{text-align:right}.path-rating .ratingtable{width:100%;margin-bottom:1em}.path-rating .ratingtable th.rating{width:100%}.path-rating .ratingtable td.rating,.path-rating .ratingtable td.time{text-align:center;white-space:nowrap}.initialbar a,.initialbar strong{padding-right:3px;padding-left:3px}.moodle-dialogue-base .moodle-dialogue-lightbox{background-color:#AAA}.moodle-dialogue-base .hidden,.moodle-dialogue-base .moodle-dialogue-hidden{display:none}.no-scrolling{overflow:hidden}.moodle-dialogue-base .moodle-dialogue-fullscreen{position:fixed;top:0;right:0;bottom:-50px;left:0}.moodle-dialogue-base .moodle-dialogue-fullscreen .moodle-dialogue-content{overflow:auto}.moodle-dialogue-base .moodle-dialogue-fullscreen .closebutton{width:28px;height:16px;background-size:100%}.moodle-dialogue-base .moodle-dialogue{z-index:600;padding:0;margin:0;background:0;border:0;outline:#000 dotted 0}.moodle-dialogue-base .moodle-dialogue-wrap{margin-top:-3px;margin-left:-3px;background-color:#fff;border:1px solid #ccc;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;-webkit-box-shadow:5px 5px 20px 0 #666;-moz-box-shadow:5px 5px 20px 0 #666;box-shadow:5px 5px 20px 0 #666}.moodle-dialogue-base .moodle-dialogue-wrap .moodle-dialogue-hd,.moodle-dialogue-base .moodle-dialogue-wrap .moodle-dialogue-hd.yui3-widget-hd{padding:5px;margin:0;font-size:12px;font-weight:normal;letter-spacing:1px;color:#333;text-align:center;text-shadow:1px 1px 1px #fff;background:#ccc;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#fff,#ccc);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#ccc));background-image:-webkit-linear-gradient(top,#fff,#ccc);background-image:-o-linear-gradient(top,#fff,#ccc);background-image:linear-gradient(to bottom,#fff,#ccc);background-repeat:repeat-x;border-bottom:1px solid #bbb;-webkit-border-radius:10px 10px 0 0;-moz-border-radius:10px 10px 0 0;border-radius:10px 10px 0 0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffcccccc',GradientType=0);filter:0}.moodle-dialogue-base .moodle-dialogue-wrap .moodle-dialogue-hd h1{display:inline;padding:0;margin:0;font-size:100%;font-weight:bold}.moodle-dialogue-base .moodle-dialogue-wrap .moodle-dialogue-hd .yui3-widget-buttons{padding:5px}.moodle-dialogue-base .closebutton{display:inline-block;float:right;width:25px;height:15px;padding:0;vertical-align:middle;cursor:pointer;background-image:url([[pix:theme|sprite]]);background-repeat:no-repeat;border-style:none}.dir-rtl .moodle-dialogue-base .moodle-dialogue-wrap .moodle-dialogue-hd .yui3-widget-buttons{right:auto;left:0}.moodle-dialogue-base .moodle-dialogue .moodle-dialogue-bd{padding:1em;font-size:12px;line-height:2em;color:#555}.moodle-dialogue-base .moodle-dialogue-wrap .moodle-dialogue-content{padding:0;background:#FFF}.moodle-dialogue-base .moodle-dialogue-fullscreen .moodle-dialogue-hd{padding:10px;font-size:16px}.moodle-dialogue-base .moodle-dialogue-fullscreen .moodle-dialogue-content{position:absolute;top:0;right:0;bottom:50px;left:0;margin:0;overflow:auto;border:0}.moodle-dialogue-base .moodle-dialogue-fullscreen .moodle-dialogue-hd,.moodle-dialogue-base .moodle-dialogue-fullscreen .moodle-dialogue-wrap{border-radius:0}.moodle-dialogue-confirm .confirmation-dialogue{text-align:center}.moodle-dialogue-confirm .confirmation-dialogue input{text-align:center}.moodle-dialogue-exception .moodle-exception-message{text-align:center}.moodle-dialogue-exception .moodle-exception-param label{font-weight:bold}.moodle-dialogue-exception .param-stacktrace label{background-color:#EEE;border:1px solid #ccc;border-bottom-width:0}.moodle-dialogue-exception .param-stacktrace pre{background-color:#fff;border:1px solid #ccc}.moodle-dialogue-exception .param-stacktrace .stacktrace-file{font-size:11.9px;color:navy}.moodle-dialogue-exception .param-stacktrace .stacktrace-line{font-size:11.9px;color:#b94a48}.moodle-dialogue-exception .param-stacktrace .stacktrace-call{font-size:90%;color:#333;border-bottom:1px solid #eee}.moodle-dialogue-base .moodle-dialogue .moodle-dialogue-content .moodle-dialogue-ft{padding:0;margin:.7em 1em;font-size:12px;text-align:right;background-color:#FFF}.moodle-dialogue-confirm .confirmation-message{margin:.5em 1em}.moodle-dialogue-confirm .confirmation-dialogue input{min-width:80px}.moodle-dialogue-exception .moodle-exception-message{margin:1em}.moodle-dialogue-exception .moodle-exception-param{margin-bottom:.5em}.moodle-dialogue-exception .moodle-exception-param label{width:150px}.moodle-dialogue-exception .param-stacktrace label{display:block;padding:4px 1em;margin:0}.moodle-dialogue-exception .param-stacktrace pre{display:block;height:200px;overflow:auto}.moodle-dialogue-exception .param-stacktrace .stacktrace-file{display:inline-block;margin:4px 0}.moodle-dialogue-exception .param-stacktrace .stacktrace-line{display:inline-block;width:50px;margin:4px 1em}.moodle-dialogue-exception .param-stacktrace .stacktrace-call{padding-bottom:4px;padding-left:25px;margin-bottom:4px}.moodle-dialogue .moodle-dialogue-bd .content-lightbox{top:0;left:0;width:100%;height:100%;padding:10% 0;text-align:center;background-color:white;opacity:.75;filter:alpha(opacity=75)}.moodle-dialogue .tooltiptext{max-height:300px}.moodle-dialogue-base .moodle-dialogue.moodle-dialogue-tooltip{z-index:3001}.moodle-dialogue-base .moodle-dialogue.moodle-dialogue-tooltip .moodle-dialogue-bd{overflow:auto}#page-question-edit.dir-rtl a.container-close{right:auto;left:6px}.chooserdialoguebody,.choosertitle{display:none}.moodle-dialogue.chooserdialogue .moodle-dialogue-content .moodle-dialogue-ft{margin:0}.chooserdialogue .moodle-dialogue-wrap .moodle-dialogue-bd{padding:0;background:#f2f2f2;-webkit-border-bottom-right-radius:10px;border-bottom-right-radius:10px;-webkit-border-bottom-left-radius:10px;border-bottom-left-radius:10px;-moz-border-radius-bottomright:10px;-moz-border-radius-bottomleft:10px}.choosercontainer #chooseform .submitbuttons{padding:.7em 0;text-align:center}@media(max-height:639px){.ios.safari .choosercontainer #chooseform .submitbuttons{padding:45px 0}}.choosercontainer #chooseform .submitbuttons input{min-width:100px;margin:0 .5em}.choosercontainer #chooseform .options{position:relative;border-bottom:1px solid #bbb}.jsenabled .choosercontainer #chooseform .alloptions{max-width:20.3em;overflow-x:hidden;overflow-y:auto;-webkit-box-shadow:inset 0 0 30px 0 #ccc;-moz-box-shadow:inset 0 0 30px 0 #ccc;box-shadow:inset 0 0 30px 0 #ccc}.dir-rtl.jsenabled .choosercontainer #chooseform .alloptions{max-width:18.3em}.choosercontainer #chooseform .moduletypetitle,.choosercontainer #chooseform .option,.choosercontainer #chooseform .nonoption{padding:0 1.6em 0 1.6em;margin-bottom:0}.choosercontainer #chooseform .moduletypetitle{padding-top:1.2em;padding-bottom:.4em;text-transform:uppercase}.choosercontainer #chooseform .option .typename,.choosercontainer #chooseform .option span.modicon img.icon,.choosercontainer #chooseform .nonoption .typename,.choosercontainer #chooseform .nonoption span.modicon img.icon{padding:0 0 0 .5em}.dir-rtl .choosercontainer #chooseform .option .typename,.dir-rtl .choosercontainer #chooseform .option span.modicon img.icon,.dir-rtl .choosercontainer #chooseform .nonoption .typename,.dir-rtl .choosercontainer #chooseform .nonoption span.modicon img.icon{padding:0 .5em 0 0}.choosercontainer #chooseform .option span.modicon img.icon,.choosercontainer #chooseform .nonoption span.modicon img.icon{width:24px;height:24px}.choosercontainer #chooseform .option input[type=radio],.choosercontainer #chooseform .option span.typename,.choosercontainer #chooseform .option span.modicon{vertical-align:middle}.choosercontainer #chooseform .option label{display:block;padding:.3em 0 .1em 0;border-bottom:1px solid #fff}.choosercontainer #chooseform .nonoption{padding-top:.3em;padding-bottom:.1em;padding-left:2.7em}.dir-rtl .choosercontainer #chooseform .nonoption{padding-right:2.7em;padding-left:0}.choosercontainer #chooseform .subtype{padding:0 1.6em 0 3.2em;margin-bottom:0}.dir-rtl .choosercontainer #chooseform .subtype{padding:0 3.2em 0 1.6em}.choosercontainer #chooseform .subtype .typename{margin:0 0 0 .2em}.dir-rtl .choosercontainer #chooseform .subtype .typename{margin:0 .2em 0 0}.jsenabled .choosercontainer #chooseform .instruction,.jsenabled .choosercontainer #chooseform .typesummary{position:absolute;top:0;right:0;bottom:0;left:20.3em;display:none;padding:1.6em;margin:0;overflow-x:hidden;overflow-y:auto;line-height:2em;background-color:#fff}.dir-rtl.jsenabled .choosercontainer #chooseform .instruction,.dir-rtl.jsenabled .choosercontainer #chooseform .typesummary{right:18.5em;left:0;border-right:1px solid grey}.jsenabled .choosercontainer #chooseform .instruction,.choosercontainer #chooseform .selected .typesummary{display:block}.choosercontainer #chooseform .selected{background-color:#fff;-webkit-box-shadow:0 0 10px 0 #ccc;-moz-box-shadow:0 0 10px 0 #ccc;box-shadow:0 0 10px 0 #ccc}.section-modchooser-link img.smallicon{padding:3px}.formlistingradio{padding-right:10px;padding-bottom:25px}.formlistinginputradio{float:left}.formlistingmain{min-height:225px}.formlisting{position:relative;padding:1px 19px 14px;margin:15px 0;background-color:white;border:1px solid #DDD;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.formlistingmore{position:absolute;right:-1px;bottom:-1px;padding:3px 7px;font-size:12px;font-weight:bold;color:#9da0a4;cursor:pointer;background-color:whiteSmoke;border:1px solid #ddd;-webkit-border-radius:4px 0 4px 0;-moz-border-radius:4px 0 4px 0;border-radius:4px 0 4px 0}.formlistingall{padding:0;margin:15px 0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.formlistingrow{top:50%;left:50%;float:left;width:150px;min-height:34px;padding:6px;cursor:pointer;background-color:#f7f7f9;border-right:1px solid #e1e1e8;border-bottom:1px solid;border-left:1px solid #e1e1e8;border-color:#e1e1e8;-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}body.jsenabled .formlistingradio{display:none}body.jsenabled .formlisting{display:block}table.collection{width:100%;margin-bottom:20px;border:1px solid #ddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}table.collection th,table.collection td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #ddd}table.collection th{font-weight:bold}table.collection thead th{vertical-align:bottom}table.collection caption+thead tr:first-child th,table.collection caption+thead tr:first-child td,table.collection colgroup+thead tr:first-child th,table.collection colgroup+thead tr:first-child td,table.collection thead:first-child tr:first-child th,table.collection thead:first-child tr:first-child td{border-top:0}table.collection tbody+tbody{border-top:2px solid #ddd}table.collection .table{background-color:#fff}table.collection th,table.collection td{border-left:1px solid #ddd}table.collection caption+thead tr:first-child th,table.collection caption+tbody tr:first-child th,table.collection caption+tbody tr:first-child td,table.collection colgroup+thead tr:first-child th,table.collection colgroup+tbody tr:first-child th,table.collection colgroup+tbody tr:first-child td,table.collection thead:first-child tr:first-child th,table.collection tbody:first-child tr:first-child th,table.collection tbody:first-child tr:first-child td{border-top:0}table.collection thead:first-child tr:first-child>th:first-child,table.collection tbody:first-child tr:first-child>td:first-child,table.collection tbody:first-child tr:first-child>th:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}table.collection thead:first-child tr:first-child>th:last-child,table.collection tbody:first-child tr:first-child>td:last-child,table.collection tbody:first-child tr:first-child>th:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}table.collection thead:last-child tr:last-child>th:first-child,table.collection tbody:last-child tr:last-child>td:first-child,table.collection tbody:last-child tr:last-child>th:first-child,table.collection tfoot:last-child tr:last-child>td:first-child,table.collection tfoot:last-child tr:last-child>th:first-child{-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px}table.collection thead:last-child tr:last-child>th:last-child,table.collection tbody:last-child tr:last-child>td:last-child,table.collection tbody:last-child tr:last-child>th:last-child,table.collection tfoot:last-child tr:last-child>td:last-child,table.collection tfoot:last-child tr:last-child>th:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px}table.collection tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomleft:0}table.collection tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomright:0}table.collection caption+thead tr:first-child th:first-child,table.collection caption+tbody tr:first-child td:first-child,table.collection colgroup+thead tr:first-child th:first-child,table.collection colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}table.collection caption+thead tr:first-child th:last-child,table.collection caption+tbody tr:first-child td:last-child,table.collection colgroup+thead tr:first-child th:last-child,table.collection colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}table.collection tbody>tr:nth-child(odd)>td,table.collection tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}table.collection .name{text-align:left;vertical-align:middle}table.collection .awards{width:10%;text-align:center;vertical-align:middle}table.collection .criteria{width:40%;text-align:left;vertical-align:top}table.collection .badgeimage,table.collection .status{width:15%;text-align:center;vertical-align:middle}table.collection .description{width:25%;text-align:left}table.collection .actions{width:11em;text-align:center;vertical-align:middle}a.criteria-action{float:right;padding:0 3px}table.issuedbadgebox{width:750px;background-color:#fff}table.badgeissuedimage{width:150px;text-align:center}table.badgeissuedinfo{width:600px}table.badgeissuedinfo .bvalue{text-align:left;vertical-align:middle}table.badgeissuedinfo .bfield{width:125px;font-style:italic;text-align:left}.dir-rtl table.badgeissuedinfo .bvalue,.dir-rtl table.badgeissuedinfo .bfield{text-align:right}ul.badges{margin:0;list-style:none}.badges li{position:relative;display:inline-block;width:150px;padding-bottom:2em;text-align:center;vertical-align:top}.badges li .badge-name{display:block;padding:5px}.badges li>img{position:absolute}.badges li .badge-image{top:0;left:10px;z-index:1;width:90px;height:90px}.badges li .badge-actions{position:relative}div.badge{position:relative;display:block}div.badge .expireimage{top:0;left:20px;width:100px;height:100px}.expireimage{position:absolute;top:0;left:30px;z-index:10;width:90px;height:90px;opacity:.85;filter:alpha(opacity=85)}.badge-profile{vertical-align:top}.connected{color:#468847}.notconnected{color:#b94a48}.connecting{color:#c09853}#page-badges-award .recipienttable tr td{vertical-align:top}#page-badges-award .recipienttable tr td.actions .actionbutton{width:100%;padding:.5em 0;margin:.3em 0}#page-badges-award .recipienttable tr td.existing,#page-badges-award .recipienttable tr td.potential{width:42%}.statustable{margin-bottom:0}.statusbox.active{background-color:#dff0d8}.statusbox.inactive{background-color:#fcf8e3}.activatebadge{margin:0;text-align:left;vertical-align:middle}.dir-rtl .activatebadge{text-align:right}img#persona_signin{cursor:pointer}.addcourse{float:right}.invisiblefieldset{display:inline;padding:0;margin:0;border-width:0}.breadcrumb-nav{float:left;margin-bottom:10px}.dir-rtl .breadcrumb-nav{float:right}.breadcrumb-button .singlebutton div{margin-right:0}.breadcrumb-nav .breadcrumb{margin:0}.moodle-actionmenu,.moodle-actionmenu>ul,.moodle-actionmenu>ul>li{display:inline-block}.moodle-actionmenu ul{padding:0;margin:0;list-style-type:none}.moodle-actionmenu .toggle-display,.moodle-actionmenu .menu-action-text{display:none}.jsenabled .moodle-actionmenu[data-enhance]{display:block}.jsenabled .moodle-actionmenu[data-enhance] .menu{display:none}.jsenabled .moodle-actionmenu[data-enhance] .toggle-display{display:inline;opacity:.5;filter:alpha(opacity=50)}.jsenabled .moodle-actionmenu[data-enhance] .toggle-display.textmenu{display:block;padding-right:4px;padding-left:4px;margin-left:4px}.jsenabled .moodle-actionmenu[data-enhance] .toggle-display.textmenu .iconsmall{padding:8px 4px 0 2px;margin:4px 4px 4px 0;vertical-align:text-bottom}.jsenabled .moodle-actionmenu[data-enhance] .toggle-display.textmenu .caret{margin-top:8px;margin-left:2px;border-top-color:#777}.jsenabled .moodle-actionmenu[data-enhance] .toggle-display.textmenu .caret:hover,.jsenabled .moodle-actionmenu[data-enhance] .toggle-display.textmenu .caret:active{border-top-color:#555}.jsenabled .moodle-actionmenu[data-enhanced] .toggle-display{opacity:1;filter:alpha(opacity=100)}.jsenabled .moodle-actionmenu[data-enhanced] .menu-action-text{display:inline}.jsenabled.dir-rtl .moodle-actionmenu[data-enhance] .toggle-display.textmenu{margin-right:4px;margin-left:initial}.jsenabled.dir-rtl .moodle-actionmenu[data-enhance] .toggle-display.textmenu .caret{margin-right:2px;margin-left:initial}.moodle-actionmenu[data-enhanced].show{position:relative}.moodle-actionmenu[data-enhanced].show .menu{position:absolute;z-index:1000;display:block;text-align:left;background-color:#fff;border:1px solid #ccc;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-box-shadow:5px 5px 20px 0 #666;-moz-box-shadow:5px 5px 20px 0 #666;box-shadow:5px 5px 20px 0 #666}.moodle-actionmenu[data-enhanced].show .menu a{display:block;padding:2px 1em 2px 28px;color:#333}.moodle-actionmenu[data-enhanced].show .menu a:hover{color:#fff;background-color:#0070a8}.moodle-actionmenu[data-enhanced].show .menu a:first-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px}.moodle-actionmenu[data-enhanced].show .menu a:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-moz-border-radius-bottomleft:4px}.moodle-actionmenu[data-enhanced].show .menu a.hidden{display:none}.moodle-actionmenu[data-enhanced].show .menu img{vertical-align:middle}.moodle-actionmenu[data-enhanced].show .menu .iconsmall{margin:4px 4px 4px -24px}.moodle-actionmenu[data-enhanced].show .menu>li{display:block}.moodle-actionmenu[data-enhanced].show .menu.align-tl-bl{top:100%;left:0;margin-top:4px}.moodle-actionmenu[data-enhanced].show .menu.align-tr-bl{top:100%;right:100%}.moodle-actionmenu[data-enhanced].show .menu.align-bl-bl{bottom:100%;left:0}.moodle-actionmenu[data-enhanced].show .menu.align-br-bl{right:100%;bottom:100%}.moodle-actionmenu[data-enhanced].show .menu.align-tl-br{top:100%;left:100%}.moodle-actionmenu[data-enhanced].show .menu.align-tr-br{top:100%;right:0;margin-top:4px}.moodle-actionmenu[data-enhanced].show .menu.align-bl-br{bottom:100%;left:100%}.moodle-actionmenu[data-enhanced].show .menu.align-br-br{right:0;bottom:100%}.moodle-actionmenu[data-enhanced].show .menu.align-tl-tl{top:0;left:0}.moodle-actionmenu[data-enhanced].show .menu.align-tr-tl{top:0;right:100%;margin-right:4px}.moodle-actionmenu[data-enhanced].show .menu.align-bl-tl{bottom:100%;left:0;margin-bottom:4px}.moodle-actionmenu[data-enhanced].show .menu.align-br-tl{right:100%;bottom:100%}.moodle-actionmenu[data-enhanced].show .menu.align-tl-tr{top:0;left:100%;margin-left:4px}.moodle-actionmenu[data-enhanced].show .menu.align-tr-tr{top:0;right:0}.moodle-actionmenu[data-enhanced].show .menu.align-bl-tr{bottom:100%;left:100%}.moodle-actionmenu[data-enhanced].show .menu.align-br-tr{right:0;bottom:100%;margin-bottom:4px}.block .moodle-actionmenu{text-align:right}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu{right:auto;left:0;text-align:right}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu .iconsmall{margin-right:0;margin-left:8px}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu.align-tl-bl{right:0;left:auto}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu.align-tr-bl{right:auto;left:100%}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu.align-bl-bl{right:0;left:auto}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu.align-br-bl{right:auto;left:100%}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu.align-tl-br{right:100%;left:auto}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu.align-tr-br{right:auto;left:0}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu.align-bl-br{right:100%;left:auto}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu.align-br-br{right:auto;left:0}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu.align-tl-tl{right:0;left:auto}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu.align-tr-tl{right:auto;left:100%}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu.align-bl-tl{right:0;left:auto}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu.align-br-tl{right:auto;left:100%}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu.align-tl-tr{right:100%;left:auto}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu.align-tr-tr{right:auto;left:0}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu.align-bl-tr{right:100%;left:auto}.dir-rtl .moodle-actionmenu[data-enhanced].show .menu.align-br-tr{right:auto;left:0}.dir-rtl .block .moodle-actionmenu{text-align:right}ul.dragdrop-keyboard-drag li{list-style-type:none}.block-control-actions .moodle-core-dragdrop-draghandle img{width:12px;height:12px}a.disabled:hover,a.disabled{font-style:italic;color:#808080;text-decoration:none;cursor:default}body.lockscroll{height:100%;overflow:hidden}.dir-rtl ul,.dir-rtl ol{margin-right:25px}.formtable tbody th{font-weight:normal;text-align:right}.path-admin #assignrole{width:60%;margin-right:auto;margin-left:auto}.path-admin .admintable .leftalign{text-align:left}.environmenttable p.warn{color:#c09853;background-color:#fcf8e3}.environmenttable .error,.environmenttable span.warn,.environmenttable .ok{display:inline-block;padding:2px 4px;font-size:11.844px;font-weight:bold;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);white-space:nowrap;vertical-align:baseline;background-color:#999;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.environmenttable .error:empty,.environmenttable span.warn:empty,.environmenttable .ok:empty{display:none}.environmenttable .error-important,.environmenttable span.warn-important,.environmenttable .ok-important{background-color:#b94a48}.environmenttable .error-important[href],.environmenttable span.warn-important[href],.environmenttable .ok-important[href]{background-color:#953b39}.environmenttable .error-warning,.environmenttable span.warn-warning,.environmenttable .ok-warning{background-color:#f89406}.environmenttable .error-warning[href],.environmenttable span.warn-warning[href],.environmenttable .ok-warning[href]{background-color:#c67605}.environmenttable .error-success,.environmenttable span.warn-success,.environmenttable .ok-success{background-color:#468847}.environmenttable .error-success[href],.environmenttable span.warn-success[href],.environmenttable .ok-success[href]{background-color:#356635}.environmenttable .error-info,.environmenttable span.warn-info,.environmenttable .ok-info{background-color:#3a87ad}.environmenttable .error-info[href],.environmenttable span.warn-info[href],.environmenttable .ok-info[href]{background-color:#2d6987}.environmenttable .error-inverse,.environmenttable span.warn-inverse,.environmenttable .ok-inverse{background-color:#333}.environmenttable .error-inverse[href],.environmenttable span.warn-inverse[href],.environmenttable .ok-inverse[href]{background-color:#1a1a1a}.environmenttable .error{background-color:#b94a48}.environmenttable span.warn{background-color:#f89406}.environmenttable .ok{background-color:#468847}.path-admin .admintable.environmenttable .name,.path-admin .admintable.environmenttable .info,.path-admin #assignrole .admintable .role,.path-admin #assignrole .admintable .userrole,.path-admin #assignrole .admintable .roleholder{white-space:nowrap}.path-admin .incompatibleblockstable td.c0{font-weight:bold}#page-admin-course-category .addcategory{padding:10px}#page-admin-course-index .editcourse{margin:20px auto}#page-admin-course-index .editcourse th,#page-admin-course-index .editcourse td{padding-right:10px;padding-left:10px}.timewarninghidden{display:none}.statusok,.statuswarning,.statusserious,.statuscritical{display:inline-block;padding:2px 4px;font-size:11.844px;font-weight:bold;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);white-space:nowrap;vertical-align:baseline;background-color:#999;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.statusok:empty,.statuswarning:empty,.statusserious:empty,.statuscritical:empty{display:none}.statusok-important,.statuswarning-important,.statusserious-important,.statuscritical-important{background-color:#b94a48}.statusok-important[href],.statuswarning-important[href],.statusserious-important[href],.statuscritical-important[href]{background-color:#953b39}.statusok-warning,.statuswarning-warning,.statusserious-warning,.statuscritical-warning{background-color:#f89406}.statusok-warning[href],.statuswarning-warning[href],.statusserious-warning[href],.statuscritical-warning[href]{background-color:#c67605}.statusok-success,.statuswarning-success,.statusserious-success,.statuscritical-success{background-color:#468847}.statusok-success[href],.statuswarning-success[href],.statusserious-success[href],.statuscritical-success[href]{background-color:#356635}.statusok-info,.statuswarning-info,.statusserious-info,.statuscritical-info{background-color:#3a87ad}.statusok-info[href],.statuswarning-info[href],.statusserious-info[href],.statuscritical-info[href]{background-color:#2d6987}.statusok-inverse,.statuswarning-inverse,.statusserious-inverse,.statuscritical-inverse{background-color:#333}.statusok-inverse[href],.statuswarning-inverse[href],.statusserious-inverse[href],.statuscritical-inverse[href]{background-color:#1a1a1a}.statusok{background-color:#468847}.statuswarning{background-color:#c09853}.statusserious{background-color:#f89406}.statuscritical{background-color:#b94a48}#page-admin-report-capability-index #capabilitysearch{width:30em}#page-admin-report-backups-index .backup-error,#page-admin-report-backups-index .backup-unfinished{color:#b94a48}#page-admin-report-backups-index .backup-skipped,#page-admin-report-backups-index .backup-ok,#page-admin-report-backups-index .backup-notyetrun{color:#468847}#page-admin-report-backups-index .backup-warning{color:#c09853}#page-admin-qtypes .disabled,#page-admin-qbehaviours .disabled{color:#999}#page-admin-qtypes #qtypes div,#page-admin-qtypes #qtypes form,#page-admin-qbehaviours #qbehaviours div,#page-admin-qbehaviours #qbehaviours form{display:inline}#page-admin-qtypes #qtypes img.spacer,#page-admin-qbehaviours #qbehaviours img.spacer{width:16px}img.iconsmall{padding:.3em;margin:0}#page-admin-qbehaviours .cell.c3,#page-admin-qtypes .cell.c3{font-size:10.5px}#page-admin-lang .generalbox,#page-admin-course-index .singlebutton,#page-admin-course-index .addcategory,#page-course-index .buttons,#page-course-index-category .buttons,#page-admin-course-category .addcategory,#page-admin-stickyblocks .generalbox,#page-admin-maintenance .buttons,#page-admin-course-index .buttons,#page-admin-course-category .buttons,#page-admin-index .copyright,#page-admin-index .copyrightnotice,#page-admin-index .adminerror,#page-admin-index .availableupdatesinfo,#page-admin-index .adminerror .singlebutton,#page-admin-index .adminwarning .singlebutton,#page-admin-index #layout-table .singlebutton{margin-bottom:1em;text-align:center}.path-admin-roles .capabilitysearchui{margin-right:auto;margin-left:auto;text-align:left}#page-admin-roles-define .topfields{margin:1em 0 2em}#page-admin-roles-define .capdefault{background-color:#eee;border:1px solid #cecece}#page-filter-manage .backlink,.path-admin-roles .backlink{margin-top:1em}#page-admin-roles-explain #chooseuser h3,#page-admin-roles-usersroles .contextname{margin-top:0}#page-admin-roles-explain #chooseusersubmit{margin-top:0;text-align:center}#page-admin-roles-usersroles p{margin:0}#page-admin-roles-override .cell.c1,#page-admin-roles-assign .cell.c3,#page-admin-roles-assign .cell.c1{padding-top:.75em}#page-admin-roles-override .overridenotice,#page-admin-roles-define .definenotice{margin:1em 10% 2em 10%;text-align:left}#notice{width:60%;min-width:220px;margin:auto}#page-admin-index .releasenoteslink,#page-admin-index .adminwarning,#page-admin-index .maturitywarning,#page-admin-index .testsitewarning,#page-admin-index .maturityinfo{width:60%;min-width:220px;padding:8px 35px 8px 14px;margin:auto;margin-bottom:20px;color:#c09853;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}#page-admin-index .maturitywarning,#page-admin-index .testsitewarning,#page-admin-index .adminwarning.maturityinfo.maturity50{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}#page-admin-index .adminwarning.availableupdatesinfo,#page-admin-index .releasenoteslink{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}#page-admin-index .adminwarning.availableupdatesinfo .moodleupdateinfo span{display:block}#page-admin-index .updateplugin div,#page-admin-plugins .updateplugin div{margin-bottom:.5em}#page-admin-index .updateplugin .updatepluginconfirmexternal,#page-admin-plugins .updateplugin .updatepluginconfirmexternal{padding:1em;background-color:#f2dede;border:1px solid #eed3d7}#page-admin-user-user_bulk #users .fgroup{white-space:nowrap}#page-admin-report-stats-index .graph{margin-bottom:1em;text-align:center}#page-admin-report-courseoverview-index .graph{margin-bottom:1em;text-align:center}#page-admin-lang .translator{border-style:solid;border-width:1px}.path-admin .roleassigntable{width:100%}.path-admin .roleassigntable td{padding:.2em .3em;vertical-align:top}.path-admin .roleassigntable p{margin:.2em 0;text-align:left}.path-admin .roleassigntable #existingcell,.path-admin .roleassigntable #potentialcell{width:42%}.path-admin .roleassigntable #existingcell p>label:first-child,.path-admin .roleassigntable #potentialcell p>label:first-child{font-weight:bold}.path-admin .roleassigntable #buttonscell{width:16%}.path-admin .roleassigntable #buttonscell #assignoptions{font-size:10.5px}.path-admin .roleassigntable #removeselect_wrapper,.path-admin .roleassigntable #addselect_wrapper{width:100%}.path-admin table.rolecap tr.rolecap th{font-weight:normal;text-align:left}.path-admin.dir-rtl table.rolecap tr.rolecap th{text-align:right}.path-admin .rolecap .hiddenrow{display:none}.path-admin #defineroletable .rolecap .inherit,.path-admin #defineroletable .rolecap .allow,.path-admin #defineroletable .rolecap .prevent,.path-admin #defineroletable .rolecap .prohibit{min-width:3.5em;padding:0;text-align:center}.path-admin .rolecap .cap-name,.path-admin .rolecap .note{display:block;font-size:10.5px;font-weight:normal;white-space:nowrap}.path-admin .rolecap label{display:block;padding:.5em;margin:0;text-align:center}.plugincheckwrapper{width:100%}.environmentbox{margin-top:1em}#mnetconfig table{margin-right:auto;margin-left:auto}.environmenttable .cell{padding:.15em .5em}.environmenttable img.iconhelp{padding-right:.3em}.dir-rtl .environmenttable img.iconhelp{padding-right:0;padding-left:.3em}#trustedhosts .generaltable{width:500px;margin-right:auto;margin-left:auto}#trustedhosts .standard{width:auto}#adminsettings legend{display:none}#adminsettings fieldset.error{margin:.2em 0 .5em 0}#adminsettings fieldset.error legend{display:block}.dir-rtl #admin-spelllanguagelist textarea,#page-admin-setting-editorsettingstinymce.dir-rtl .form-textarea textarea{text-align:left;direction:ltr}.adminsettingsflags{float:right}.dir-rtl .adminsettingsflags{float:left}.adminsettingsflags label{margin-right:7px}.dir-rtl .adminsettingsflags label{margin-left:7px}.form-description{clear:right}.dir-rtl .form-description{clear:left}.form-item .form-setting .form-htmlarea{display:inline;width:640px}.form-item .form-setting .form-htmlarea .htmlarea{display:block;width:640px}.form-item .form-setting .form-multicheckbox ul{padding:0;margin:7px 0 0 0;list-style:none}.form-item .form-setting .defaultsnext{display:inline;margin-right:.5em}.dir-rtl .form-item .form-setting .defaultsnext{margin-right:0;margin-left:.5em}.form-item .form-setting .locked-checkbox{display:inline;margin-right:.2em;margin-left:.5em}.dir-rtl .form-item .form-setting .locked-checkbox{display:inline;margin-right:.5em;margin-left:.2em}.form-item .form-setting .form-password .unmask,.form-item .form-setting .form-defaultinfo{display:inline-block}.form-item .pathok,.form-item .patherror{margin-left:.5em}#admin-emoticons td input{width:8em}#admin-emoticons td.c0 input{width:4em}#adminthemeselector .selectedtheme td.c0{border:1px solid;border-right-width:0}#adminthemeselector .selectedtheme td.c1{border:1px solid;border-left-width:0}.admin_colourpicker,.admin_colourpicker_preview{display:none}.jsenabled .admin_colourpicker_preview{display:inline}.jsenabled .admin_colourpicker{display:block;width:410px;height:102px;margin-bottom:10px}.admin_colourpicker .loadingicon{margin-left:auto;vertical-align:middle}.admin_colourpicker .colourdialogue{float:left;border:1px solid #000}.admin_colourpicker .previewcolour{margin-left:301px;border:1px solid #000}.admin_colourpicker .currentcolour{margin-left:301px;border:1px solid #000;border-top-width:0}.dir-rtl .form-item .form-setting,.dir-rtl .form-item .form-label,.dir-rtl .form-item .form-description,.dir-rtl.path-admin .roleassigntable p{text-align:right}#page-admin-index #notice .checkforupdates{text-align:center}#plugins-check-info{margin:1em;text-align:center}#plugins-check .displayname .pluginicon{width:16px}#plugins-check .status-new .status{background-color:#dff0d8}#page-admin-index .adminwarning.availableupdatesinfo .moodleupdateinfo.maturity200 .info.release,#plugins-check .status-upgrade .status,#plugins-check .status-delete .status{background-color:#d9edf7}#plugins-control-panel .extension .source,#page-admin-index .adminwarning.availableupdatesinfo .moodleupdateinfo.maturity100 .info.release,#page-admin-index .adminwarning.availableupdatesinfo .moodleupdateinfo.maturity150 .info.release,.pluginupdateinfo.maturity100,.pluginupdateinfo.maturity150,#plugins-check .extension .source{background-color:#fcf8e3}#page-admin-index .adminwarning.availableupdatesinfo .moodleupdateinfo.maturity50 .info.release,.pluginupdateinfo.maturity50,#plugins-check .requires-failed,#plugins-check .missingfromdisk .displayname,#plugins-check .status-missing .status,#plugins-check .status-downgrade .status{background-color:#f2dede}#plugins-control-panel .statusmsg{padding:3px;background-color:#eee;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}#plugins-control-panel .status-missing .pluginname{background-color:#f2dede}#plugins-control-panel .status-missing .statusmsg{color:#b94a48}#plugins-control-panel .status-new .pluginname{background-color:#dff0d8}#plugins-control-panel .status-new .statusmsg{color:#468847}#plugins-control-panel .disabled .availability{background-color:#eee}#plugins-check .standard .source,#plugins-check .status-nodb .status,#plugins-check .status-uptodate .status,#plugins-check .requires-ok{color:#999}#plugins-check .requires ul{margin:0;font-size:10.5px}#plugins-check .status .pluginupdateinfo{padding:5px 10px;margin:10px;background-color:#d9edf7;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}#plugins-check .status .pluginupdateinfo span,#plugins-check .status .pluginupdateinfo a{padding-right:1em}#page-admin-index .upgradepluginsinfo{text-align:center}#page-admin-plugins .checkforupdates{margin:0 auto 1em;text-align:center}#plugins-control-panel .requiredby,#plugins-control-panel .pluginname .componentname{font-size:11.9px;color:#999}#plugins-control-panel .pluginname .componentname{margin-left:22px}#plugins-overview-filter .filter-item,#plugins-overview-panel .info{padding:0 10px}#page-admin-index .adminwarning.availableupdatesinfo .moodleupdateinfo .separator,#plugins-check .status .pluginupdateinfo .separator,#page-admin-plugins .separator{border-left:1px dotted #999}#plugins-control-panel .msg td{text-align:center}#plugins-overview-filter,#plugins-overview-panel{margin:1em auto;text-align:center}#plugins-overview-panel .info.updatable{margin-left:10px;font-weight:bold;background-color:#d9edf7;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}#plugins-overview-filter .filter-item.active{font-weight:bold}#plugins-control-panel .displayname img.icon{padding-top:0;padding-bottom:0}#plugins-control-panel .uninstall a{color:#b94a48}#plugins-control-panel .notes .pluginupdateinfo{padding:5px 10px;margin:10px;background-color:#d9edf7;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}#plugins-control-panel .notes .pluginupdateinfo span,#plugins-control-panel .notes .pluginupdateinfo a{padding-right:1em}.dir-rtl #plugins-check .pluginupdateinfo{text-align:center;direction:ltr}.dir-rtl #plugins-check .rootdir,.dir-rtl #plugins-check .requires-ok{text-align:left;direction:ltr}#page-admin-mnet-peers .box.deletedhosts{margin-bottom:1em;font-size:11.9px}#page-admin-mnet-peers .mform .certdetails{background-color:white}#page-admin-mnet-peers .mform .deletedhostinfo{padding:4px;margin-bottom:5px;background-color:#f2dede;border:2px solid #eed3d7}#core-cache-plugin-summaries table,#core-cache-store-summaries table{width:100%}#core-cache-lock-summary table,#core-cache-definition-summaries table,#core-cache-mode-mappings table{margin:0 auto}#core-cache-store-summaries .default-store td{font-style:italic;color:#333}#core-cache-rescan-definitions,#core-cache-mode-mappings .edit-link,#core-cache-lock-summary .new-instance{margin-top:.5em;text-align:center}.tinymcesubplugins img.icon{padding-top:0;padding-bottom:0}#adminsettings .form-overridden{color:#3a87ad;background-color:#d9edf7}.calendartable{width:100%}.calendartable th,.calendartable td{width:14%;text-align:center;vertical-align:top;border:0}.calendar_event_course{background-color:#ffd3bd}.calendar_event_global{background-color:#d6f8cd}.calendar_event_group{background-color:#fee7ae}.calendar_event_user{background-color:#dce7ec}.path-calendar .calendar-controls .previous,.path-calendar .calendar-controls .next,.path-calendar .calendar-controls .current{display:block;float:left;width:12%}.path-calendar .calendar-controls .previous{text-align:left}.path-calendar .calendar-controls .current{width:76%;text-align:center}.path-calendar .calendar-controls .next{text-align:right}.path-calendar .maincalendar{padding:0;vertical-align:top}.path-calendar .maincalendar .bottom{padding:5px 0 0 0;text-align:center}.path-calendar .maincalendar .heightcontainer{position:relative;height:100%}.path-calendar .maincalendar .calendarmonth{width:98%;margin:10px auto}.path-calendar .maincalendar .calendarmonth ul{margin:0}.path-calendar .maincalendar .calendarmonth ul li{margin-top:4px;list-style-type:none}.path-calendar .maincalendar .calendarmonth td{height:5em}.path-calendar .maincalendar .calendar-controls .previous,.path-calendar .maincalendar .calendar-controls .next{width:30%}.path-calendar .maincalendar .calendar-controls .current{width:39.95%}.path-calendar .maincalendar .controls{width:98%;margin:10px auto}.path-calendar .maincalendar .eventlist .event{width:100%;margin-bottom:10px;border-collapse:separate;border-spacing:0;border-style:solid;border-width:1px}.path-calendar .maincalendar .eventlist .event .topic .name{float:left}.dir-rtl.path-calendar .maincalendar .eventlist .event .topic .name,.path-calendar .maincalendar .eventlist .event .topic .date{float:right}.dir-rtl.path-calendar .maincalendar .eventlist .event .topic .date{float:left}.path-calendar .maincalendar .eventlist .event .subscription,.path-calendar .maincalendar .eventlist .event .course{float:left;clear:left}.dir-rtl.path-calendar .maincalendar .eventlist .event .subscription,.dir-rtl.path-calendar .maincalendar .eventlist .event .course{float:right;clear:right}.path-calendar .maincalendar .eventlist .event .side{width:32px}.path-calendar .maincalendar .eventlist .event .commands a{margin:0 3px}.path-calendar .maincalendar .header{overflow:hidden}.path-calendar .maincalendar .header .buttons{float:right}.dir-rtl.path-calendar .maincalendar .header .buttons{float:left}.path-calendar .filters table{width:100%;border-collapse:separate;border-spacing:2px}#page-calendar-export .indent{padding-left:20px}.path-calendar .cal_courses_flt label{margin-right:.45em}.dir-rtl.path-calendar .cal_courses_flt label{margin-right:0;margin-left:.45em}.block .minicalendar th,.block .minicalendar td{padding:2px;font-size:.8em}.block .minicalendar{max-width:280px;margin-right:auto;margin-left:auto}.block .minicalendar td.weekend{color:#A00}.block .calendar-controls .previous{display:block;float:left;width:12%;text-align:left}.block .calendar-controls .current{display:block;float:left;width:76%;text-align:center}.block .calendar-controls .next{display:block;float:left;width:12%;text-align:right}.block .calendar_filters ul{margin:0;list-style:none}.block .calendar_filters li{margin-bottom:.2em}.block .calendar_filters li span img{padding:0 .2em}.block .calendar_filters .eventname{padding-left:.2em}.dir-rtl .block .calendar_filters .eventname{padding-right:.2em;padding-left:0}.block .content h3.eventskey{margin-top:.5em}@media(min-width:768px){#page-calender-view .container fluid{min-width:1024px}}.section_add_menus{text-align:right}.dir-rtl .section_add_menus{text-align:left}.section_add_menus .horizontal div,.section_add_menus .horizontal form{display:inline}.section_add_menus optgroup{font-style:italic;font-weight:normal}.section_add_menus .urlselect{margin-left:.4em}.dir-rtl .section_add_menus .urlselect{margin-right:.4em;margin-left:0}.section_add_menus .urlselect select{margin-left:.2em}.dir-rtl .section_add_menus .urlselect select{margin-right:.2em;margin-left:0}.section_add_menus .urlselect img.iconhelp{padding:0;margin:0;vertical-align:text-bottom}.sitetopic ul.section{margin:0}.course-content ul.section{margin:1em}.section .spinner{width:16px;height:16px}.section .activity .spinner{position:absolute;left:100%;vertical-align:text-bottom}.section .activity .editing_move{position:absolute;top:0;left:0}.section .activity .mod-indent-outer{padding-left:32px}.section .activity .actions{position:absolute;top:0;right:0}.section .activity .contentwithoutlink,.section .activity .activityinstance{display:table-cell;min-width:40%;min-height:2em;padding-right:4px}.section .activity .contentwithoutlink .dimmed img.activityicon,.section .activity .activityinstance .dimmed img.activityicon{opacity:.5;filter:alpha(opacity=50)}.section .label .contentwithoutlink,.section .label .activityinstance{display:block;height:inherit;padding-right:32px}.section .label .mod-indent-outer{display:block;padding-left:24px}.section .filler{display:inline-block;width:16px;height:16px;padding:.3em}.section .activity.editor_displayed a.editing_title,.section .activity.editor_displayed .moodle-actionmenu{display:none}.section .activity.editor_displayed div.activityinstance{padding-right:initial}.section .activity.editor_displayed div.activityinstance input{padding-top:initial;padding-bottom:initial;margin-bottom:initial;vertical-align:text-bottom}.dir-rtl .section .activity .spinner{right:100%;left:auto}.dir-rtl .section .activity .mod-indent-outer{padding-right:32px;padding-left:initial}.dir-rtl .section .activity .actions{right:auto;left:0}.dir-rtl .section .activity .contentwithoutlink,.dir-rtl .section .activity .activityinstance{padding-right:initial;padding-left:4px}.dir-rtl.editing .section .activity .editing_move{right:0;left:auto}.dir-rtl.editing .section .activity.editor_displayed div.activityinstance{padding-left:initial}.activity img.activityicon{margin-right:6px;vertical-align:text-bottom}.dir-rtl .section .activity img.activityicon{margin-right:0;margin-left:6px}.section .activity .activityinstance,.section .activity .activityinstance div{display:inline-block}.editing .section .activity .contentwithoutlink,.editing .section .activity .activityinstance{padding-right:200px}.dir-rtl.editing .section .activity .contentwithoutlink,.dir-rtl.editing .section .activity .activityinstance{padding-right:0;padding-left:200px}.editing_show+.editing_assign,.editing_hide+.editing_assign{margin-left:20px}.section .activity .commands{display:inline;white-space:nowrap}.section .activity.modtype_label.label{padding:.2em;font-weight:normal}.section li.activity{padding:.2em;clear:both}.section .activity .activityinstance .groupinglabel{padding-left:30px}.dir-rtl .section .activity .activityinstance .groupinglabel{padding-right:30px}.section .activity .availabilityinfo,.section .activity .contentafterlink{margin-top:.5em;margin-left:30px}.dir-rtl .section .activity .availabilityinfo,.dir-rtl .section .activity .contentafterlink{margin-right:30px;margin-left:0}.section .activity .contentafterlink p{margin:.5em 0}.editing .section .activity:hover,.editing .section .activity.action-menu-shown{background-color:#eee}.course-content .current{background-color:#d9edf7}.course-content .section-summary{margin-top:5px;list-style:none;border:1px solid #DDD}.course-content .section-summary .section-title{margin:2px 5px 10px 5px}.course-content .section-summary .summarytext{margin:2px 5px 2px 5px}.course-content .section-summary .section-summary-activities .activity-count{display:inline-block;margin:3px;font-size:11.9px;color:#999;white-space:nowrap}.course-content .section-summary .summary{margin-top:5px}.course-content .single-section{margin-top:1em}.course-content .single-section .section-navigation{display:block;padding:.5em;margin-bottom:-0.5em}.course-content .single-section .section-navigation .title{clear:both;font-size:108%;font-weight:bold}.course-content .single-section .section-navigation .mdl-left{float:left;margin-right:1em;font-weight:normal}.dir-rtl .course-content .single-section .section-navigation .mdl-left{float:right}.course-content .single-section .section-navigation .mdl-left .larrow{margin-right:.1em}.course-content .single-section .section-navigation .mdl-right{float:right;margin-left:1em;font-weight:normal}.dir-rtl .course-content .single-section .section-navigation .mdl-right{float:left}.course-content .single-section .section-navigation .mdl-right .rarrow{margin-left:.1em}.course-content .single-section .section-navigation .mdl-bottom{margin-top:0}.course-content ul li.section.main{margin-top:0;border-bottom:2px solid #eee}.course-content ul li.section.hidden{opacity:.5}.course-content ul.topics li.section .content,.course-content ul.weeks li.section .content{padding:0;margin-right:20px;margin-left:20px}.course-content{margin-top:0}.course-content ul.topics li.section{padding-bottom:20px}.course-content ul.topics li.section .summary{margin-left:25px}.path-course-view .completionprogress{margin-left:25px}.path-course-view .completionprogress{position:relative;z-index:1000;display:block;float:right;height:20px}#page-site-index .subscribelink{text-align:right}#site-news-forum h2,#frontpage-course-list h2,#frontpage-category-names h2,#frontpage-category-combo h2{margin-bottom:9px}.path-course-view a.reduce-sections{padding-left:.2em}.path-course-view .subscribelink{text-align:right}.path-course-view .unread{margin-left:30px}.dir-rtl.path-course-view .unread{margin-right:30px}.path-course-view .block.drag .header{cursor:move}.path-course-view .completionprogress{text-align:right}.dir-rtl.path-course-view .completionprogress{text-align:left}.path-course-view .single-section .completionprogress{margin-right:5px}.path-course-view .section .summary{line-height:normal}.path-site li.activity>div,.path-course-view li.activity>div{position:relative;padding:0 16px 0 0}.dir-rtl.path-site li.activity>div,.dir-rtl.path-course-view li.activity>div{position:relative;padding:0 0 0 16px}.path-course-view li.activity span.autocompletion img{vertical-align:text-bottom}.path-course-view li.activity form.togglecompletion img{max-width:none}.path-course-view li.activity form.togglecompletion .ajaxworking{position:absolute;top:3px;right:22px;width:16px;height:16px;background:url([[pix:i/ajaxloader]]) no-repeat}.dir-rtl.path-course-view .completionprogress{float:none}.dir-rtl.path-course-view li.activity form.togglecompletion .ajaxworking{right:-22px}li.section.hidden span.commands a.editing_hide,li.section.hidden span.commands a.editing_show{cursor:default}ul.weeks h3.sectionname{white-space:nowrap}.editing ul.weeks h3.sectionname{white-space:normal}.single-section h3.sectionname{clear:both;text-align:center}.section img.movetarget{width:80px;height:16px}input.titleeditor{width:330px;vertical-align:text-bottom}span.editinstructions{position:absolute;top:0;z-index:9999;padding:.1em .4em;margin-top:-22px;margin-left:30px;font-size:11.9px;line-height:16px;color:#3a87ad;text-decoration:none;background-color:#d9edf7;border:1px solid #bce8f1;-webkit-box-shadow:2px 2px 5px 1px #ccc;-moz-box-shadow:2px 2px 5px 1px #ccc;box-shadow:2px 2px 5px 1px #ccc}#dndupload-status{position:fixed;left:0;z-index:1;width:40%;padding:6px;margin:0 30%;color:#3a87ad;text-align:center;background:#d9edf7;border:1px solid #bce8f1;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px;-webkit-box-shadow:2px 2px 5px 1px #ccc;-moz-box-shadow:2px 2px 5px 1px #ccc;box-shadow:2px 2px 5px 1px #ccc}.dndupload-preview{padding:.3em;margin-top:.2em;color:#909090;list-style:none;border:1px dashed #909090}.dndupload-preview img.icon{padding:0;vertical-align:text-bottom}.dndupload-progress-outer{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#fff9f9f9',GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.dndupload-progress-inner{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf',endColorstr='#ff0480be',GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.dndupload-hidden{display:none}#page-course-pending .singlebutton,#page-course-index .singlebutton,#page-course-index-category .singlebutton,#page-course-editsection .singlebutton{text-align:center}#page-admin-course-manage #movecourses td img{margin:0 .22em;vertical-align:text-bottom}#page-admin-course-manage #movecourses td img.icon{padding:0}#coursesearch{margin-top:1em;text-align:center}#page-course-pending .pendingcourserequests{margin-bottom:1em}#page-course-pending .pendingcourserequests .singlebutton{display:inline}#page-course-pending .pendingcourserequests .cell{padding:0 5px}#page-course-pending .pendingcourserequests .cell.c6{white-space:nowrap}.coursebox{padding:5px;margin-bottom:15px;border:1px dotted #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.coursebox>.info>.coursename a{display:block;padding-left:21px;background-image:url([[pix:moodle|i/course]]);background-position:left .5em;background-repeat:no-repeat}.dir-rtl .coursebox>.info>.coursename a{padding-right:21px;padding-left:0;background-position:right}.coursebox.remotehost>.info>.categoryname a{background-image:url([[pix:moodle|i/mnethost]])}.coursebox .content .teachers,.coursebox .content .courseimage,.coursebox .content .coursefile{float:left;width:40%;clear:left}.dir-rtl .coursebox>.info>.coursename,.dir-rtl .coursebox .teachers,.dir-rtl .coursebox .content .courseimage,.dir-rtl .coursebox .content .coursefile{float:right;clear:right}.coursebox>.info>h3.coursename{margin:5px}.coursebox>.info>.coursename{padding:0;margin:5px}.coursebox .content .teachers li{padding:0;margin:0;list-style-type:none}.coursebox .enrolmenticons{float:right;padding:3px 0}.coursebox .moreinfo{float:right;padding:3px 0}.coursebox .enrolmenticons img,.coursebox .moreinfo img{margin:0 .2em}.coursebox .content{clear:both}.coursebox .content .summary,.coursebox .content .coursecat{float:right;width:55%}.coursebox .content .coursecat{clear:right;text-align:right}.coursebox.remotecoursebox .remotecourseinfo{float:left;width:40%}.coursebox .content .courseimage img{max-width:100px;max-height:100px}.coursebox .content .coursecat,.coursebox .content .summary,.coursebox .content .courseimage,.coursebox .content .coursefile,.coursebox .content .teachers,.coursebox.remotecoursebox .remotecourseinfo{padding:0;margin:3px 5px}.dir-rtl .coursebox>.info>.categoryname a{padding-right:21px;padding-left:0;background-position:center right}.dir-rtl .coursebox>.info>.categoryname,.dir-rtl .coursebox .teachers,.dir-rtl .coursebox .content .courseimage,.dir-rtl .coursebox .content .coursefile{float:right;clear:right}.dir-rtl .coursebox .enrolmenticons,.dir-rtl .coursebox .moreinfo{float:left}.dir-rtl .coursebox .summary,.dir-rtl .coursebox .coursecat{float:left}.dir-rtl .coursebox .coursecat{clear:left;text-align:left}.coursebox.collapsed{margin-bottom:0}.coursebox.collapsed>.content{display:none}.courses .coursebox.collapsed{padding:5px;border:1px solid #eee}.courses .coursebox.even{background-color:#f6f6f6}.courses .coursebox:hover,.course_category_tree .courses>.paging.paging-morelink:hover{background-color:#eee}.course_category_tree .category .numberofcourse{font-size:11.9px}.course_category_tree .controls{visibility:hidden}.course_category_tree .controls div{display:inline;cursor:pointer}.jsenabled .course_category_tree .controls{visibility:visible}.course_category_tree .controls{float:right;margin-bottom:5px;text-align:right}.course_category_tree .controls div{padding-right:2em;font-size:75%}.course_category_tree .category>.info>.categoryname{padding:2px 18px;margin:3px;background-image:url([[pix:moodle|t/collapsed_empty]]);background-position:center left;background-repeat:no-repeat}.dir-rtl .course_category_tree .category>.info>.categoryname{background-image:url([[pix:moodle|t/collapsed_empty_rtl]]);background-position:center right}.course_category_tree .category.with_children>.info>.categoryname{cursor:pointer;background-image:url([[pix:moodle|t/expanded]])}.course_category_tree .category.with_children.collapsed>.info>.categoryname{background-image:url([[pix:moodle|t/collapsed]])}.dir-rtl .course_category_tree .category.with_children.collapsed>.info>.categoryname{background-image:url([[pix:moodle|t/collapsed_rtl]])}.course_category_tree .category.collapsed>.content{display:none}.course_category_tree .category>.info{min-height:20px;min-height:0;padding:19px;padding:0;margin:3px 0;margin-bottom:20px;margin-bottom:3px;clear:both;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.course_category_tree .category>.info blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.course_category_tree.frontpage-category-names .category>.info{margin:0;background:0;border:0}.course_category_tree .category>.content{padding-left:16px}.dir-rtl .course_category_tree .category>.content{padding-right:16px;padding-left:0}.course_category_tree .subcategories>.paging,.courses>.paging{padding:5px;margin:0;text-align:center}.courses>.paging.paging-morelink,.course_category_tree .subcategories>.paging.paging-morelink{text-align:left}.course_category_tree .paging.paging-morelink a{font-size:11.9px}.dir-rtl .courses>.paging.paging-morelink,.dir-rtl .course_category_tree .paging.paging-morelink{text-align:right}#page-course-index-category .generalbox.info{padding:5px;margin-bottom:15px;border:1px dotted #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}#page-course-index-category .categorypicker{margin:10px 0 20px;text-align:center}.section .summary .iconsmall,.section .activity .iconsmall{width:16px;height:16px}.section .editing_title .iconsmall{width:12px;height:12px;padding:4px 8px 0 0;margin:8px 8px 0 0;vertical-align:text-bottom}.section .moodle-actionmenu .iconsmall{width:16px;height:16px;max-width:none!important;padding:4px;vertical-align:text-bottom}.section .moodle-actionmenu[data-enhanced] .menu img{width:12px;height:12px}.dir-rtl .section .editing_title .iconsmall{padding:4px 0 0 8px;margin:8px 0 0 8px}#course-category-listings{margin-bottom:200px;background-color:#fff}#course-category-listings.columns-2>#course-listing>div{position:relative;left:-1px}#course-category-listings.columns-3>#course-listing>div{height:100%}#course-category-listings>div>div{min-height:300px;border:1px solid #e1e1e8}#course-category-listings>div>div>ul.ml>li:first-child>div{border-top:0}#course-category-listings h3{padding:.4rem .6rem .3rem;margin:0;background-color:#f5f5f5;border-bottom:1px solid #e1e1e8}#course-category-listings h4{padding:.6rem 1rem .5rem;margin:1rem 0 0}#course-category-listings .moodle-actionmenu{white-space:nowrap}#course-category-listings .moodle-actionmenu[data-enhance] .toggle-display img{width:auto}#course-category-listings .moodle-actionmenu[data-enhance] .toggle-display.textmenu{padding-right:4px}#course-category-listings .moodle-actionmenu[data-enhance] .toggle-display.textmenu .caret{margin-top:12px}#course-category-listings .listing-actions{padding:.4rem .3rem .3rem;line-height:2.2em;text-align:center}#course-category-listings .listing-actions>.moodle-actionmenu{display:inline-block}#course-category-listings .listing-actions>.moodle-actionmenu .menu a{padding-left:1rem}#course-category-listings .listing-actions .moodle-actionmenu:not([data-enhanced]) li{line-height:normal}#course-category-listings .listing-actions .moodle-actionmenu:not([data-enhanced])>.menubar a{display:inline-block;color:inherit}#course-category-listings .listing-actions .moodle-actionmenu:not([data-enhanced])>.menubar a>img{display:none}#course-category-listings .listing-actions .moodle-actionmenu:not([data-enhanced])>.menubar a .caret{display:none}#course-category-listings .listing-actions .moodle-actionmenu:not([data-enhanced])>.menu .menu-action-text{display:inline-block}#course-category-listings ul.ml{margin:1rem 0;list-style:none}#course-category-listings ul.ml ul.ml{margin:0}#course-category-listings li{line-height:2.2em}#course-category-listings li>div:hover{background-color:#fafafa}#course-category-listings li .tree-icon{width:12px;margin:2px 6px 0 0;vertical-align:inherit}#course-category-listings li[data-selected='1']>div{background-color:#ffffd8;border-top-color:#e1e1e8;border-bottom-color:#f5f5f5}#course-category-listings li[data-selected='1'] li:first-of-type>div,#course-category-listings li[data-selected='1'][data-expandable='0']+li>div{border-top-color:#e1e1e8}#course-category-listings li[data-selected='1']:last-of-type>div{border-bottom-color:#e1e1e8}#course-category-listings li .tree-icon{margin-left:0}#course-category-listings li li .tree-icon{margin-left:1em}#course-category-listings li li li .tree-icon{margin-left:2em}#course-category-listings li li li li .tree-icon{margin-left:3em}#course-category-listings li li li li li .tree-icon{margin-left:4em}#course-category-listings li li li li li li .tree-icon{margin-left:4.5em}#course-category-listings li li li li li li li .tree-icon{margin-left:5em}#course-category-listings li li li li li li li li .tree-icon{margin-left:5.5em}#course-category-listings li+li>div,#course-category-listings li:first-child>div{border-top-color:#f5f5f5}#course-category-listings .item-actions{display:inline-block;display:initial;margin-right:1em}#course-category-listings .item-actions img{height:12px;padding:0;margin:0 4px;vertical-align:inherit}#course-category-listings .item-actions.show .menu a{padding:4px 1em 4px 4px}#course-category-listings .item-actions.show .menu img{width:12px;max-width:none}#course-category-listings .item-actions .menu-action-text{vertical-align:inherit}#course-category-listings .listitem>div>.float-left{float:left}#course-category-listings .listitem>div>.float-right{float:right;text-align:right}#course-category-listings .listitem>div .item-actions .action-show{display:none}#course-category-listings .listitem>div .item-actions .action-hide{display:inline}#course-category-listings .listitem>div .without-actions{color:#333}#course-category-listings .listitem>div .idnumber{margin-right:2em;color:#a1a1a8}#course-category-listings .listitem[data-visible="0"]{color:#999}#course-category-listings .listitem[data-visible="0"]>div>a{color:#999}#course-category-listings .listitem[data-visible="0"]>div .item-actions .action-show{display:inline}#course-category-listings .listitem[data-visible="0"]>div .item-actions .action-hide{display:none}#course-category-listings .listitem.highlight{background-color:transparent}#course-category-listings .listitem.highlight>div,#course-category-listings .listitem.highlight>div:hover,#course-category-listings .listitem.highlight[data-selected='1']>div{background-color:#dfa}#course-category-listings #course-listing .listitem .categoryname{display:inline-block;margin-left:1em;color:#a1a1a8}#course-category-listings #course-listing .listitem .coursename{display:inline-block}#course-category-listings #course-listing .listitem>div{padding-left:1rem}#course-category-listings #course-listing>.firstpage .listitem:first-child>div .item-actions .action-moveup,#course-category-listings #course-listing>.lastpage .listitem:last-child>div .item-actions .action-movedown{display:none}#course-category-listings #course-listing .bulk-action-checkbox{margin:-2px 6px 0 0}#course-category-listings #category-listing .listitem.collapsed>ul.ml{display:none}#course-category-listings #category-listing .listitem>div>.ba-checkbox{width:2.2em;padding-top:2px;margin:-1px .5em 0 0;text-align:center}#course-category-listings #category-listing .listitem.highlight>div>.ba-checkbox{background-color:#dfa}#course-category-listings #category-listing .listitem[data-selected='1']>div>.ba-checkbox{padding:0;margin:0 .5em 0 0;background-color:inherit}#course-category-listings #category-listing .listitem:first-child>div .item-actions .action-moveup,#course-category-listings #category-listing .listitem:last-child>div .item-actions .action-movedown{display:none}#course-category-listings #category-listing .course-count{display:inline-block;min-width:3.5em;margin-right:2rem;color:#a1a1a8}#course-category-listings #category-listing .course-count .smallicon{width:12px;margin-left:4px;vertical-align:inherit}#course-category-listings #category-listing .bulk-action-checkbox{margin-right:-3px}#course-category-listings #category-listing .category-listing>ul>.listitem:first-child{position:relative}#course-category-listings #category-listing .category-bulk-actions{position:relative;margin:0 .5em .5em}#course-category-listings .detail-pair{margin:0 1rem;border-bottom:1px solid #e1e1e8}#course-category-listings .detail-pair>*{display:inline-block;line-height:2.2rem}#course-category-listings .detail-pair .pair-key{font-weight:bold;vertical-align:top}#course-category-listings .detail-pair .pair-key span{display:block;margin-right:1rem}#course-category-listings .detail-pair .pair-value select{max-width:100%}#course-category-listings .bulk-actions .detail-pair>*{display:block;width:100%}#course-category-listings .listing-pagination{text-align:center}#course-category-listings .listing-pagination .yui3-button{margin:.4rem .2rem .45rem;font-size:10.4px;background-color:#FFF;border:0}#course-category-listings .listing-pagination .yui3-button.active-page{background-color:#e5effd}#course-category-listings .listing-pagination-totals{text-align:center}#course-category-listings .listing-pagination-totals.dimmed{margin:.4rem 1rem .45rem;color:#999}#course-category-listings .select-a-category .notifymessage,#course-category-listings .select-a-category .alert{margin:1em}#course-category-listings #course-listing .listitem .drag-handle{display:none}.jsenabled #course-category-listings #course-listing .listitem .drag-handle{display:inline-block;margin:0 6px 0 0;cursor:pointer}.dir-rtl #course-category-listings #category-listing,.dir-rtl #course-category-listings #course-listing{float:right;margin-left:0}.dir-rtl #course-category-listings .listitem>div>.float-left{float:right}.dir-rtl #course-category-listings .listitem>div>.float-right{float:left;text-align:left}.dir-rtl #course-category-listings li .tree-icon{margin:2px 0 0 6px}.dir-rtl #course-category-listings li .tree-icon{margin-right:0}.dir-rtl #course-category-listings li li .tree-icon{margin-right:1em}.dir-rtl #course-category-listings li li li .tree-icon{margin-right:2em}.dir-rtl #course-category-listings li li li li .tree-icon{margin-right:3em}.dir-rtl #course-category-listings li li li li li .tree-icon{margin-right:4em}.dir-rtl #course-category-listings li li li li li li .tree-icon{margin-right:4.5em}.dir-rtl #course-category-listings li li li li li li li .tree-icon{margin-right:5em}.dir-rtl #course-category-listings li li li li li li li li .tree-icon{margin-right:5.5em}.dir-rtl #course-category-listings #category-listing .listitem>div{margin-right:.5em;margin-left:0}.dir-rtl #course-category-listings #category-listing .listitem>div>.ba-checkbox{margin:-1px 0 0 .5em}.dir-rtl #course-category-listings #category-listing .listitem[data-selected='1']>div>.ba-checkbox{margin:0 0 0 .5em}.dir-rtl #course-category-listings #category-listing .course-count{margin-left:2rem}.dir-rtl #course-category-listings #category-listing .bulk-action-checkbox{margin-right:0;margin-left:-3px}.dir-rtl #course-category-listings #course-listing{padding-right:24px}.dir-rtl #course-category-listings #course-listing .listitem .idnumber{padding-right:2em;color:#a1a1a8}.dir-rtl #course-category-listings #course-listing .listitem .categoryname{display:inline-block;margin-right:1em;margin-left:0}.dir-rtl #course-category-listings #course-listing .listitem .drag-handle{margin:0 6px 0 6px}.dir-rtl #course-category-listings #course-listing .listitem>div{padding-left:1rem}.dir-rtl #course-category-listings #course-listing .bulk-action-checkbox{margin:-2px 0 0 6px;vertical-align:middle}.dir-rtl #course-category-listings .detail-pair>*{float:right;margin-right:0}.dir-rtl #course-category-listings .detail-pair .pair-key span{margin-right:0;margin-left:0}.dir-rtl #course-category-listings .detail-pair .pair-value{margin-right:.5em}.coursecat-management-header{vertical-align:middle}.coursecat-management-header h2{display:inline-block;text-align:left}.coursecat-management-header>div{display:inline-block;float:right;line-height:40px}.coursecat-management-header>div>div{display:inline-block;margin:10px 0;margin-left:1em}.coursecat-management-header select{max-width:300px;padding:.4em .5em .45em 1em;white-space:nowrap;vertical-align:baseline;cursor:pointer}.coursecat-management-header .view-mode-selector .moodle-actionmenu{display:inline-block;white-space:nowrap}.coursecat-management-header .view-mode-selector .moodle-actionmenu[data-enhanced].show .menu a{padding-left:1em}.dir-rtl .coursecat-management-header h2{text-align:right}.dir-rtl .coursecat-management-header>div{float:left;margin-right:1em;margin-left:0}.course-being-dragged-proxy{padding:0 0 0 4em;color:#0070a8;vertical-align:middle;border:0}.course-being-dragged{opacity:.5;filter:alpha(opacity=50)}@media(min-width:1200px) and (max-width:1600px){#course-category-listings.columns-3{background-color:transparent;border:0}#course-category-listings.columns-3 #category-listing,#course-category-listings.columns-3 #course-listing{width:50%}#course-category-listings.columns-3 #category-listing>div,#course-category-listings.columns-3 #course-listing>div,#course-category-listings.columns-3 #course-detail>div{background-color:#FFF;border:1px solid #e1e1e8}#course-category-listings.columns-3 #course-detail{width:100%;margin-top:1em}}@media(max-width:1199px){#course-category-listings.columns-2,#course-category-listings.columns-3{background-color:transparent;border:0}#course-category-listings.columns-2 #category-listing,#course-category-listings.columns-3 #category-listing,#course-category-listings.columns-2 #course-listing,#course-category-listings.columns-3 #course-listing,#course-category-listings.columns-2 #course-detail,#course-category-listings.columns-3 #course-detail{width:100%;margin:0 0 1em}#course-category-listings.columns-2 #category-listing>div,#course-category-listings.columns-3 #category-listing>div,#course-category-listings.columns-2 #course-listing>div,#course-category-listings.columns-3 #course-listing>div,#course-category-listings.columns-2 #course-detail>div,#course-category-listings.columns-3 #course-detail>div{background-color:#FFF;border:1px solid #e1e1e8}}.filemanager,.filepicker,.file-picker{font-size:11px}.filemanager a,.file-picker a,.filemanager a:hover,.file-picker a:hover{color:#555;text-decoration:none}.filemanager input[type="text"],.file-picker input[type="text"]{width:265px}.filemanager .fp-license td,.file-picker .fp-setlicense td{max-width:265px}.filemanager .fp-license select,.file-picker .fp-setlicense select{max-width:100%}.fp-content-center{display:table-cell;width:100%;height:100%;vertical-align:middle}.fp-content-hidden{visibility:hidden}.yui3-panel-focused{outline:0}#filesskin .yui3-panel-content{display:inline-block;*display:inline;padding-bottom:20px;background:#f2f2f2;border:1px solid #fff;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px;*zoom:1;-webkit-box-shadow:5px 5px 20px 0 #666;-moz-box-shadow:5px 5px 20px 0 #666;box-shadow:5px 5px 20px 0 #666}#filesskin .yui3-widget-hd{padding:5px;font-size:12px;letter-spacing:1px;color:#333;text-align:center;text-shadow:1px 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#fff,#ccc);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#ccc));background-image:-webkit-linear-gradient(top,#fff,#ccc);background-image:-o-linear-gradient(top,#fff,#ccc);background-image:linear-gradient(to bottom,#fff,#ccc);background-repeat:repeat-x;border-bottom:1px solid #bbb;-webkit-border-radius:10px 10px 0 0;-moz-border-radius:10px 10px 0 0;border-radius:10px 10px 0 0;filter:dropshadow(color=#ffffff,offx=1,offy=1);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffcccccc',GradientType=0)}.fp-panel-button{display:inline-block;*display:inline;padding:3px 20px 2px 20px;margin:10px;text-align:center;background:#fff;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;*zoom:1;-webkit-box-shadow:2px 2px 3px .1px #999;-moz-box-shadow:2px 2px 3px .1px #999;box-shadow:2px 2px 3px .1px #999}.moodle-dialogue-base .filepicker .moodle-dialogue-wrap .moodle-dialogue-bd{padding:0}#filesskin .file-picker.fp-generallayout{position:relative;width:859px;background:#fff;border:1px solid #ccc;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.file-picker .fp-repo-area{display:inline-block;*display:inline;float:left;width:180px;height:525px;overflow:auto;border-right:1px solid #bbb;*zoom:1}.dir-rtl .file-picker .fp-repo-area{float:right;border-right:0;border-left:1px solid #bbb}.file-picker .fp-repo-items{float:none;width:auto;margin-left:181px}.moodle-dialogue-fullscreen .file-picker .fp-repo-items{float:left;margin-right:0;margin-left:0}.dir-rtl .file-picker .fp-repo-items{margin-right:181px;margin-left:0}.dir-rtl .moodle-dialogue-fullscreen .file-picker .fp-repo-items{float:right;margin-right:0;margin-left:0}.file-picker .fp-navbar{min-height:40px;overflow:hidden;background:#f2f2f2;border-bottom:1px solid #bbb}.file-picker .fp-navbar .fp-viewbar{margin:4px}.file-picker .fp-content{height:452px;overflow:auto;clear:none;background:#fff}.filepicker.moodle-dialogue-fullscreen .file-picker .fp-content{width:100%}.file-picker .fp-content-loading{display:table;width:100%;height:100%;text-align:center}.file-picker .fp-content .fp-object-container{width:98%;height:98%}.dir-rtl .file-picker .fp-list{text-align:right}.dir-rtl .file-picker .fp-toolbar{padding:4px}.dir-rtl .file-picker .fp-list{text-align:right}.dir-rtl .file-picker .fp-repo-name{display:inline}.dir-rtl .file-picker .fp-pathbar{display:block;text-align:right;border-top:0}.dir-rtl .file-picker div.bd{text-align:right}.dir-rtl #filemenu .yuimenuitemlabel{text-align:right}.dir-rtl .filepicker .yui-layout-unit-left{left:500px}.dir-rtl .filepicker .yui-layout-unit-center{left:0}.dir-rtl .filemanager-toolbar a{padding:0}.file-picker .fp-list{float:left;width:100%;padding:0;margin:0;list-style-type:none}.dir-rtl .file-picker .fp-list{float:left;text-align:right}.file-picker .fp-list .fp-repo a{display:block;padding:.5em .7em}.file-picker .fp-list .fp-repo.active{background:#f2f2f2}.file-picker .fp-list .fp-repo-icon{width:16px;height:16px;padding:0 7px 0 5px}.fp-toolbar{float:left}.dir-rtl .fp-toolbar{float:right}.fp-toolbar.empty{display:none}.dir-rtl .fp-toolbar div.disabled,.fp-toolbar .disabled{display:none}.fp-toolbar div{display:block;float:left;margin-right:4px}.dir-rtl .fp-toolbar div{display:block;float:right;margin-right:0;margin-left:4px}.fp-toolbar img{margin-right:5px;vertical-align:-15%}.fp-toolbar .fp-tb-search{width:235px;height:27px}.fp-toolbar .fp-tb-search input{width:200px;height:27px;padding:2px 6px 1px 27px;background:#fff url('[[pix:a/search]]') no-repeat 7px 7px;border:1px solid #bbb}.fp-viewbar{float:right;height:30px;background:white;border:1px solid #CCC;border-bottom:1px solid #b3b3b3;border-radius:4px}.fp-repo-items fp-viewbar{margin:4px}.dir-rtl .fp-toolbar img{vertical-align:-35%}.dir-rtl .fp-viewbar{float:left}.fp-viewbar a{display:block;float:left;width:30px;height:30px;border-right:1px solid #CCC}.fp-viewbar a.checked:hover,.fp-viewbar a:hover{background-color:#ebebeb;background-image:radial-gradient(ellipse at center,#fff 60%,#dfdfdf 100%)}.fp-viewbar a.checked,.fp-viewbar a:active{background-color:#dfdfdf;background-image:radial-gradient(ellipse at center,#fff 40%,#dfdfdf 100%)}.fp-viewbar a.fp-vb-icons{border-radius:4px 0 0 4px}.fp-viewbar a.fp-vb-tree{border-right:0;border-radius:0 4px 4px 0}.fp-viewbar a img{margin:7px}.fp-viewbar.disabled a{cursor:default;background:0;opacity:.45}.file-picker .fp-clear-left{clear:left}.dir-rtl .filemanager-toolbar .fp-vb-icons a:hover{background:url('[[pix:theme|fp/view_icon_selected]]')}.dir-rtl .filemanager-toolbar .fp-vb-icons.checked a:hover{background:url('[[pix:theme|fp/view_icon_active]]') no-repeat 0 0}.dir-rtl .fp-vb-details a:hover{background:0;border:20px solid black}.dir-rtl .fp-vb-details.checked a:hover{background:0;border:40px solid black}.dir-rtl .fp-vb-tree a:hover{background:0;border:30px solid black}.dir-rtl .fp-vb-tree.checked a:hover{background:0;border:50px solid black}.file-picker .fp-pathbar{display:table-row}.fp-pathbar.empty{display:none}.fp-pathbar .fp-path-folder{width:27px;height:12px;margin-left:4px;background:url('[[pix:theme|fp/path_folder]]') no-repeat 0 0}.dir-rtl .fp-pathbar .fp-path-folder{width:auto;height:12px;margin-left:4px;background:url('[[pix:theme|fp/path_folder_rtl]]') no-repeat right top}.dir-rtl .fp-pathbar span{display:inline-block;*display:inline;float:right;margin-left:32px;*zoom:1}.fp-pathbar .fp-path-folder-name{margin-left:32px;line-height:20px}.dir-rtl .fp-pathbar .fp-path-folder-name{margin-right:32px;line-height:20px}.fp-iconview .fp-file{position:relative;float:left;margin:10px 10px 35px;text-align:center}.fp-iconview .fp-thumbnail{display:block;min-width:110px;min-height:110px;line-height:110px;text-align:center;border:1px solid #fff}.fp-iconview .fp-thumbnail img{padding:3px;vertical-align:middle;border:1px solid #ddd;-webkit-box-shadow:1px 1px 2px 0 #ccc;-moz-box-shadow:1px 1px 2px 0 #ccc;box-shadow:1px 1px 2px 0 #ccc}.fp-iconview .fp-thumbnail:hover{background:#fff;border:1px solid #ddd;-webkit-box-shadow:inset 0 0 10px 0 #ccc;-moz-box-shadow:inset 0 0 10px 0 #ccc;box-shadow:inset 0 0 10px 0 #ccc}.fp-iconview .fp-filename-field{position:absolute;height:33px;overflow:hidden;word-wrap:break-word}.fp-iconview .fp-filename-field:hover{z-index:1000;overflow:visible}.fp-iconview .fp-filename-field .fp-filename{min-width:112px;padding-top:5px;padding-bottom:12px;background:#fff}.dir-rtl .fp-iconview .fp-file{float:right}.file-picker .yui3-datatable table{width:100%;border:0 solid #bbb}#filesskin .file-picker .yui3-datatable-header{color:#555;background:#fff;border-bottom:1px solid #ccc;border-left:0 solid #fff}#filesskin .file-picker .yui3-datatable-odd .yui3-datatable-cell{background-color:#f6f6f6;border-left:0 solid #f6f6f6}#filesskin .file-picker .yui3-datatable-even .yui3-datatable-cell{background-color:#fff;border-left:0 solid #fff}.dir-rtl .file-picker .yui3-datatable-header{text-align:right}.file-picker .ygtvtn,.filemanager .ygtvtn{width:17px;height:22px;background:url('[[pix:moodle|y/tn]]') 0 0 no-repeat}.dir-rtl .filemanager .ygtvtn,.dir-rtl .file-picker .ygtvtn{width:17px;height:22px;background:url('[[pix:moodle|y/tn_rtl]]') 0 0 no-repeat}.file-picker .ygtvtm,.filemanager .ygtvtm{width:13px;height:12px;cursor:pointer;background:url('[[pix:moodle|y/tm]]') 0 10px no-repeat}.file-picker .ygtvtmh,.filemanager .ygtvtmh{width:13px;height:12px;cursor:pointer;background:url('[[pix:moodle|y/tm]]') 0 10px no-repeat}.file-picker .ygtvtp,.filemanager .ygtvtp{width:13px;height:12px;cursor:pointer;background:url('[[pix:moodle|y/tp]]') 0 10px no-repeat}.dir-rtl .file-picker .ygtvtp,.dir-rtl .filemanager .ygtvtp{background:url('[[pix:moodle|y/tp_rtl]]') 0 10px no-repeat}.file-picker .ygtvtph,.filemanager .ygtvtph{width:13px;height:22px;cursor:pointer;background:url('[[pix:moodle|y/tp]]') 0 10px no-repeat}.dir-rtl .file-picker .ygtvtph,.dir-rtl .filemanager .ygtvtph{background:url('[[pix:moodle|y/tp_rtl]]') 0 10px no-repeat}.file-picker .ygtvln,.filemanager .ygtvln{width:17px;height:22px;background:url('[[pix:moodle|y/ln]]') 0 0 no-repeat}.dir-rtl .file-picker .ygtvln,.dir-rtl .filemanager .ygtvln{background:url('[[pix:moodle|y/ln_rtl]]') 0 0 no-repeat}.file-picker .ygtvlm,.filemanager .ygtvlm{width:13px;height:12px;cursor:pointer;background:url('[[pix:moodle|y/lm]]') 0 10px no-repeat}.file-picker .ygtvlmh,.filemanager .ygtvlmh{width:13px;height:12px;cursor:pointer;background:url('[[pix:moodle|y/lm]]') 0 10px no-repeat}.file-picker .ygtvlp,.filemanager .ygtvlp{width:13px;height:12px;cursor:pointer;background:url('[[pix:moodle|y/lp]]') 0 10px no-repeat}.dir-rtl .file-picker .ygtvlp,.dir-rtl .filemanager .ygtvlp{background:url('[[pix:moodle|y/lp_rtl]]') 0 10px no-repeat}.file-picker .ygtvlph,.filemanager .ygtvlph{width:13px;height:12px;cursor:pointer;background:url('[[pix:moodle|y/lp]]') 0 10px no-repeat}.dir-rtl .file-picker .ygtvlph,.dir-rtl .filemanager .ygtvlph{background:url('[[pix:moodle|y/lp_rtl]]') 0 10px no-repeat}.file-picker .ygtvloading,.filemanager .ygtvloading{width:16px;height:22px;background:transparent url('[[pix:moodle|y/loading]]') 0 0 no-repeat}.file-picker .ygtvdepthcell,.filemanager .ygtvdepthcell{width:17px;height:32px;background:url('[[pix:moodle|y/vline]]') 0 0 no-repeat}.file-picker .ygtvblankdepthcell,.filemanager .ygtvblankdepthcell{width:17px;height:22px}a.ygtvspacer:hover{color:transparent;text-decoration:none}.ygtvlabel,.ygtvlabel:link,.ygtvlabel:visited,.ygtvlabel:hover{margin-left:2px;text-decoration:none;cursor:pointer;background-color:transparent}.file-picker .ygtvfocus,.filemanager .ygtvfocus{background-color:#eee}.fp-filename-icon{position:relative;display:block;margin-top:10px}.fp-icon{float:left;width:24px;height:24px;margin-top:-7px;margin-right:10px;line-height:24px;text-align:center}.dir-rtl .fp-icon{float:right;margin-right:0;margin-left:10px}.fp-icon img{max-width:24px;max-height:24px;vertical-align:middle}.fp-filename{padding-right:10px}.dir-rtl .fp-filename{padding-right:0;padding-left:10px}.file-picker .fp-login-form{display:table;width:100%;height:100%}.file-picker .fp-login-form table{margin:0 auto}.file-picker .fp-login-form p{margin-top:3em;text-align:center}.file-picker .fp-login-form .fp-login-input label{display:block;text-align:right}.file-picker .fp-login-form .fp-login-input .input{text-align:left}.file-picker .fp-login-form input[type="checkbox"]{width:15px;height:15px}.file-picker .fp-upload-form{display:table;width:100%;height:100%}.file-picker .fp-upload-form table{margin:0 auto}.file-picker.fp-dlg{text-align:center}.file-picker.fp-dlg .fp-dlg-text{padding:30px 20px 10px;font-size:12px}.file-picker.fp-dlg .fp-dlg-buttons{margin:0 20px}.file-picker.fp-msg{text-align:center}.file-picker.fp-msg .fp-msg-text{max-width:500px;max-height:300px;min-width:200px;padding:40px 20px 10px 20px;overflow:auto;font-size:12px}.file-picker.fp-msg.fp-msg-error .fp-msg-text{padding:40px 20px 10px 20px;font-size:12px}.file-picker .fp-content-error{display:table;width:100%;height:100%;text-align:center}.file-picker .fp-content-error .fp-error{display:table-cell;width:100%;height:100%;padding:40px 20px 10px 20px;font-size:12px;vertical-align:middle}.file-picker .fp-nextpage{clear:both}.file-picker .fp-nextpage .fp-nextpage-loading{display:none}.file-picker .fp-nextpage.loading .fp-nextpage-link{display:none}.file-picker .fp-nextpage.loading .fp-nextpage-loading{display:block;height:100px;padding-top:50px;text-align:center}.fp-select form{padding:20px 20px 0}.fp-select .fp-select-loading{margin-top:20px;text-align:center}.fp-select .fp-hr{width:auto;height:1px;margin:10px 0;clear:both;background-color:#fff;border-bottom:1px solid #bbb}.fp-select table{padding:0 0 10px}.fp-select table .mdl-right{min-width:84px}.fp-select .fp-reflist .mdl-right{vertical-align:top}.fp-select .fp-select-buttons{float:right}.fp-select .fp-info{display:block;padding:1px 20px 0;clear:both}.fp-select .fp-thumbnail{float:left;min-width:110px;min-height:110px;margin:10px 20px 0 0;line-height:110px;text-align:center;background:#fff;border:1px solid #ddd;-webkit-box-shadow:inset 0 0 10px 0 #ccc;-moz-box-shadow:inset 0 0 10px 0 #ccc;box-shadow:inset 0 0 10px 0 #ccc}.fp-select .fp-thumbnail img{padding:3px;margin:10px;vertical-align:middle;border:1px solid #ddd}.fp-select .fp-fileinfo{display:inline-block;*display:inline;margin-top:10px;*zoom:1}.file-picker.fp-select .fp-fileinfo{max-width:240px}.fp-select .fp-fileinfo div{padding-bottom:5px}.file-picker.fp-select .uneditable{display:none}.file-picker.fp-select .fp-select-loading{display:none}.file-picker.fp-select.loading .fp-select-loading{display:block}.file-picker.fp-select.loading form{display:none}.fp-select .fp-dimensions.fp-unknown{display:none}.filemanager-loading{display:none}.jsenabled .filemanager-loading{display:block;margin-top:100px}.filemanager.fm-loading .filemanager-toolbar,.filemanager.fm-loading .fp-pathbar,.filemanager.fm-loading .filemanager-container,.filemanager.fm-loaded .filemanager-loading,.filemanager.fm-maxfiles .fp-btn-add,.filemanager.fm-maxfiles .dndupload-message,.filemanager.fm-noitems .fp-btn-download,.filemanager .fm-empty-container,.filemanager.fm-noitems .filemanager-container .fp-content{display:none}.filemanager .filemanager-updating{display:none;text-align:center}.filemanager.fm-updating .filemanager-updating{display:block;margin-top:37px}.filemanager.fm-updating .fm-content-wrapper,.filemanager.fm-nomkdir .fp-btn-mkdir,.fitem.disabled .filemanager .filemanager-toolbar,.fitem.disabled .filemanager .fp-pathbar,.fitem.disabled .filemanager .fp-restrictions,.fitem.disabled .filemanager .fm-content-wrapper{display:none}.filemanager .fp-restrictions{text-align:right}.filemanager .fp-navbar{background:#f2f2f2;border:1px solid #bbb;border-bottom:0}.filemanager-toolbar{padding:4px;overflow:hidden}.fp-pathbar{min-height:20px;padding:5px 8px 1px;border-top:1px solid #bbb}.file-picker .fp-toolbar{padding:4px}.fp-toolbar .fp-btn-add,.fp-toolbar .fp-btn-download,.fp-toolbar .fp-btn-mkdir,.fp-toolbar .fp-tb-help,.fp-toolbar .fp-tb-manage,.fp-toolbar .fp-tb-logout,.fp-toolbar .fp-tb-refresh{width:30px;height:30px;background:white;border:1px solid #CCC;border-bottom:1px solid #b3b3b3;border-radius:4px}.fp-toolbar a:hover{background-color:#ebebeb;background-image:radial-gradient(ellipse at center,#fff 60%,#dfdfdf 100%)}.fp-toolbar a:active{background-color:#dfdfdf;background-image:radial-gradient(ellipse at center,#fff 40%,#dfdfdf 100%)}.fp-btn-add a,.fp-btn-download a,.fp-btn-mkdir a,.fp-tb-help a,.fp-tb-manage a,.fp-tb-logout a,.fp-tb-refresh a{display:block;width:30px;height:30px;border-radius:4px}.fp-btn-add img,.fp-btn-download img,.fp-btn-mkdir img,.fp-tb-help img,.fp-tb-manage img,.fp-tb-logout img,.fp-tb-refresh img{margin:7px}.filemanager .fp-pathbar.empty{display:none}.filepicker-filelist,.filemanager-container{position:relative;min-height:140px;overflow:auto;clear:both;background:#fff;border:1px solid #bbb}.filemanager .fp-content{max-height:472px;min-height:157px;overflow:auto}.filemanager-container,.filepicker-filelist{overflow:hidden}.fitem.disabled .filepicker-filelist,.fitem.disabled .filemanager-container{background-color:#ebebe4}.fitem.disabled .fp-btn-choose{color:#999}.fitem.disabled .filepicker-filelist .filepicker-filename{display:none}.fp-iconview .fp-reficons1{position:absolute;top:0;left:0;width:100%;height:100%}.fp-iconview .fp-reficons2{position:absolute;top:0;left:0;width:100%;height:100%}.fp-iconview .fp-file.fp-hasreferences .fp-reficons1{background:url('[[pix:theme|fp/link]]') no-repeat;background-position:bottom right}.fp-iconview .fp-file.fp-isreference .fp-reficons2{background:url('[[pix:theme|fp/alias]]') no-repeat;background-position:bottom left}.filemanager .fp-iconview .fp-file.fp-originalmissing .fp-thumbnail img{display:none}.filemanager .fp-iconview .fp-file.fp-originalmissing .fp-thumbnail{background:url([[pix:s/dead]]) no-repeat;background-position:center center}.filemanager .yui3-datatable table{width:100%;border:0 solid #bbb}.filemanager .yui3-datatable-header{color:#555!important;background:#fff!important;border-bottom:1px solid #ccc!important;border-left:0 solid #fff!important}.filemanager .yui3-datatable-odd .yui3-datatable-cell{background-color:#f6f6f6!important;border-left:0 solid #f6f6f6}.filemanager .yui3-datatable-even .yui3-datatable-cell{background-color:#fff!important;border-left:0 solid #fff}.filemanager .fp-filename-icon.fp-hasreferences .fp-reficons1{position:absolute;top:8px;left:17px;z-index:1000;width:100%;height:100%;background:url('[[pix:theme|fp/link_sm]]') no-repeat 0 0}.filemanager .fp-filename-icon.fp-isreference .fp-reficons2{position:absolute;top:9px;left:-6px;z-index:1001;width:100%;height:100%;background:url('[[pix:theme|fp/alias_sm]]') no-repeat 0 0}.filemanager .fp-contextmenu{display:none}.filemanager .fp-iconview .fp-folder.fp-hascontextmenu .fp-contextmenu{position:absolute;right:7px;bottom:5px;display:block}.filemanager .fp-treeview .fp-folder.fp-hascontextmenu .fp-contextmenu,.filemanager .fp-tableview .fp-folder.fp-hascontextmenu .fp-contextmenu{position:absolute;top:6px;left:14px;display:inline;margin-right:-20px}.dir-rtl .filemanager .fp-iconview .fp-folder.fp-hascontextmenu .fp-contextmenu{right:inherit;left:7px}.dir-rtl .filemanager .fp-treeview .fp-folder.fp-hascontextmenu .fp-contextmenu,.dir-rtl .filemanager .fp-tableview .fp-folder.fp-hascontextmenu .fp-contextmenu{right:16px;left:inherit;margin-right:0}.filepicker-filelist .filepicker-container,.filemanager.fm-noitems .fm-empty-container{position:absolute;top:10px;right:10px;bottom:10px;left:10px;display:block;padding-top:85px;text-align:center;border:2px dashed #bbb}.filepicker-filelist .dndupload-target,.filemanager-container .dndupload-target{position:absolute;top:10px;right:10px;bottom:10px;left:10px;padding-top:85px;text-align:center;background:#fff;border:2px dashed #fb7979;-webkit-box-shadow:0 0 0 10px #fff;-moz-box-shadow:0 0 0 10px #fff;box-shadow:0 0 0 10px #fff}.filepicker-filelist.dndupload-over .dndupload-target,.filemanager-container.dndupload-over .dndupload-target{position:absolute;top:10px;right:10px;bottom:10px;left:10px;padding-top:85px;text-align:center;background:#fff;border:2px dashed #6c8cd3}.dndupload-message{display:none}.dndsupported .dndupload-message{display:inline}.dnduploadnotsupported-message{display:none}.dndnotsupported .dnduploadnotsupported-message{display:inline}.dndupload-target{display:none}.dndsupported .dndupload-ready .dndupload-target{display:block}.dndupload-uploadinprogress{display:none;text-align:center}.dndupload-uploading .dndupload-uploadinprogress{display:block}.dndupload-arrow{position:absolute;top:5px;width:100%;height:80px;background:url([[pix:theme|fp/dnd_arrow]]) center no-repeat}.fitem.disabled .filepicker-container,.fitem.disabled .fm-empty-container{display:none}.dndupload-progressbars{display:none;padding:10px}.dndupload-inprogress .dndupload-progressbars{display:block}.dndupload-inprogress .fp-content{display:none}.filemanager.fm-noitems .dndupload-inprogress .fm-empty-container{display:none}.filepicker-filelist.dndupload-inprogress .filepicker-container{display:none}.filepicker-filelist.dndupload-inprogress a{display:none}.filemanager.fp-select .fp-select-loading{display:none}.filemanager.fp-select.loading .fp-select-loading{display:block}.filemanager.fp-select.loading form{display:none}.filemanager.fp-select.fp-folder .fp-license,.filemanager.fp-select.fp-folder .fp-author,.filemanager.fp-select.fp-file .fp-file-unzip,.filemanager.fp-select.fp-folder .fp-file-unzip,.filemanager.fp-select.fp-file .fp-file-zip,.filemanager.fp-select.fp-zip .fp-file-zip{display:none}.filemanager.fp-select .fp-file-setmain,.filemanager.fp-select .fp-file-setmain-help{display:none}.filemanager.fp-select.fp-cansetmain .fp-file-setmain,.filemanager.fp-select.fp-cansetmain .fp-file-setmain-help{display:inline-block;*display:inline;*zoom:1}.filemanager .fp-mainfile .fp-filename{font-weight:bold}.filemanager.fp-select.fp-folder .fp-file-download{display:none}.fm-operation{font-weight:bold}.filemanager.fp-select .fp-original.fp-unknown,.filemanager.fp-select .fp-original .fp-originloading{display:none}.filemanager.fp-select .fp-original.fp-loading .fp-originloading{display:inline}.filemanager.fp-select .fp-reflist.fp-unknown,.filemanager.fp-select .fp-reflist .fp-reflistloading{display:none}.filemanager.fp-select .fp-refcount{max-width:265px}.filemanager.fp-select .fp-reflist.fp-loading .fp-reflistloading{display:inline}.filemanager.fp-select .fp-reflist .fp-value{max-width:265px;max-height:75px;padding:8px 7px;margin:0;overflow:auto;background:#f9f9f9;border:1px solid #bbb}.filemanager.fp-select .fp-reflist .fp-value li{padding-bottom:7px}.filemanager.fp-mkdir-dlg{text-align:center}.filemanager.fp-mkdir-dlg .fp-mkdir-dlg-text{margin:20px;text-align:left}.dir-rtl .filemanager .fp-mkdir-dlg p{text-align:right}.filemanager.fp-dlg{text-align:center}.filemanager.fp-dlg .fp-dlg-text{max-width:340px;max-height:300px;min-width:200px;padding:0 10px;margin:40px 20px 20px;overflow:auto;font-size:12px;line-height:22px}.file-picker div.bd{text-align:left}.dir-rtl .filemanager .fp-restrictions{text-align:left}.dir-rtl .file-picker div.bd,.dir-rtl .file-picker .fp-pathbar,.dir-rtl .file-picker .fp-list,.dir-rtl #filemenu .yuimenuitemlabel,.dir-rtl .filemanager-container .yui3-skin-sam .yui3-datatable-header{text-align:right}.dir-rtl .filepicker .yui-layout-unit-left{left:500px}.dir-rtl .filepicker .yui-layout-unit-center{left:0}.dir-rtl .file-picker .fp-toolbar .fp-tb-search input{padding:2px 30px 1px 3px;background-position:208px 7px}.dir-rtl .file-picker .fp-toolbar div{float:right;margin-left:4px}.message-discussion-noframes h1{font-size:1em}.message-discussion-noframes #userinfo .commands,.message .noframesjslink,.message .link{font-size:11.9px}.message .heading{font-size:1em;font-weight:bold}.message .author{font-weight:bold}.message .time{font-style:italic}#page-message-user .commands span{font-size:.7em}#page-message-user .name{font-size:1.1em;font-weight:bold}table.message_search_results td{border-color:#ddd}.message .time,.message.me .author{color:#999}.message.other .author{color:#88c}#page-message-messages{padding:10px}#page-message-send .notifysuccess{padding:1px}#page-message-send td.fixeditor{text-align:center}.message .note{padding:10px}table.message .searchresults td{padding:5px}.message .contactselector{float:left;width:24%}.message .contactselector .contact{text-align:left}.message .contactselector .messageselecteduser{font-weight:bold}.message .contactselector .paging{position:relative;z-index:1}.message .messagearea{float:right;width:74%;min-height:200px;padding-left:1%;border-left:1px solid #d3d3d3}.message .messagearea .messagehistorytype{padding-bottom:20px;clear:both}.message .messagearea .messagehistory .message_user_pictures{margin-right:auto;margin-left:auto}.message .messagearea .messagehistory .message_user_pictures #user1{width:200px;vertical-align:top}.message .messagearea .messagehistory .message_user_pictures #user2{width:200px;vertical-align:top}.message .messagearea .messagehistory .message_user_pictures .useractionlinks{font-size:.9em}.message .messagearea .messagehistory .heading{width:100%;clear:both}.message .messagearea .messagehistory .left{float:left;width:50%;padding-bottom:10px;clear:both}.dir-rtl .message .messagearea .messagehistory .left{float:right}.message .messagearea .messagehistory .right{float:right;width:50%;padding-bottom:10px;clear:both}.dir-rtl .message .messagearea .messagehistory .right{float:left}.message .messagearea .messagehistory .notification{padding:10px;margin-top:5px;background-color:#eee}.message .messagearea .messagesend{padding-top:20px;clear:both}.message .messagearea .messagesend .messagesendbox{width:100%}.message .messagearea .messagesend fieldset{padding:0;margin:0}.message .messagearea .messagerecent{width:100%;text-align:left}.message .messagearea .messagerecent .singlemessage{padding:10px;border-bottom:1px solid #d3d3d3}.message .messagearea .messagerecent .singlemessage .otheruser span{padding:5px}.message .messagearea .messagerecent .singlemessage .messagedate{float:right}.message .hiddenelement{display:none}.message .visible{display:inline}.message #usergroupselector.fieldset,.message #viewing{width:100%}.messagesearchresults{margin-bottom:40px}.messagesearchresults td{padding:0 10px 0 20px}.messagesearchresults td span{white-space:nowrap}.messagesearchresults td img.userpicture{padding-right:.45em;vertical-align:text-bottom}.dir-rtl .messagesearchresults td img.userpicture{padding-right:0;padding-left:.45em}.messagesearchresults td span img{padding:0 0 0 .45em;vertical-align:text-bottom}.dir-rtl .messagesearchresults td span img{padding:0 .45em 0 0}#newmessageoverlay{position:fixed;right:0;bottom:0;padding:20px;background-color:#d3d3d3;border:1px solid black}#newmessageoverlay #usermessage{padding:10px}#page-user-action_redir #edit-messagebody{width:auto}.questionbank h2{margin-top:0}.questioncategories h3{margin-top:0}#chooseqtypebox{margin-top:1em}#chooseqtype h3{margin:0 0 .3em}#chooseqtype .instruction{display:none}#chooseqtype .fakeqtypes{border-top:1px solid silver}#chooseqtype .qtypeoption{margin-bottom:.5em}#chooseqtype label{display:block}#chooseqtype .qtypename img{padding:0 .3em}#chooseqtype .qtypename{display:inline-table;width:16em}#chooseqtype .qtypesummary{display:block;margin:0 2em}#chooseqtype .submitbuttons{margin:.7em 0;text-align:center}#qtypechoicecontainer{display:none}#qtypechoicecontainer_c.yui-panel-container.shadow .underlay{background:0}#qtypechoicecontainer.yui-panel .hd{letter-spacing:1px;color:#333;text-shadow:1px 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#fff,#ccc);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#ccc));background-image:-webkit-linear-gradient(top,#fff,#ccc);background-image:-o-linear-gradient(top,#fff,#ccc);background-image:linear-gradient(to bottom,#fff,#ccc);background-repeat:repeat-x;border:1px solid #ccc;border-bottom:1px solid #bbb;-webkit-border-top-right-radius:10px;border-top-right-radius:10px;-webkit-border-top-left-radius:10px;border-top-left-radius:10px;-moz-border-radius-topright:10px;-moz-border-radius-topleft:10px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffcccccc',GradientType=0)}#qtypechoicecontainer{font-size:12px;color:#333;background:#f2f2f2;border:1px solid #ccc;border-top:0 none;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;-webkit-box-shadow:5px 5px 20px 0 #666;-moz-box-shadow:5px 5px 20px 0 #666;box-shadow:5px 5px 20px 0 #666}#qtypechoicecontainer #chooseqtype{width:40em}#chooseqtypehead h3{margin:0;font-weight:normal}#chooseqtype .qtypes{position:relative;padding:.24em 0;border-bottom:1px solid #bbb}#chooseqtype .alloptions{width:60%;max-height:400px;max-height:calc(85vh);max-height:60vh;overflow-x:hidden;overflow-y:auto}#chooseqtype .qtypeoption{padding:.3em .3em .3em 1.6em;margin-bottom:0}#chooseqtype .qtypeoption img{padding-right:.5em;padding-left:1em;vertical-align:text-bottom}#chooseqtype .selected{background-color:#fff;-webkit-box-shadow:0 0 10px 0 #ccc;-moz-box-shadow:0 0 10px 0 #ccc;box-shadow:0 0 10px 0 #ccc}#chooseqtype .instruction,#chooseqtype .qtypesummary{position:absolute;top:0;right:0;bottom:0;left:60%;display:none;padding:1.5em 1.6em;margin:0;overflow-x:hidden;overflow-y:auto;background-color:#fff}#chooseqtype .instruction,#chooseqtype .selected .qtypesummary{display:block}#categoryquestions{margin:0}#categoryquestions td,#categoryquestions th{padding:0 .2em}#categoryquestions th{font-weight:normal;text-align:left}#categoryquestions .checkbox{padding-left:5px}#categoryquestions .checkbox input[type="checkbox"]{float:none;margin-left:0}#categoryquestions img.iconsmall{padding:0}#categoryquestions .iconcol{padding:3px}#categoryquestions label{margin:0}#page-mod-quiz-edit div.questionbankwindow div.header{margin:0}#page-mod-quiz-edit div.questionbankwindow.block{padding:0}.dir-rtl #categoryquestions th{text-align:right}.questionbank .singleselect{margin:0}#combinedfeedbackhdr div.fhtmleditor{padding:0}#combinedfeedbackhdr div.fcheckbox{margin-bottom:1em}#multitriesheader div.fitem_feditor{margin-top:1em}#multitriesheader div.fitem_fgroup{margin-bottom:1em}#multitriesheader div.fitem_fgroup fieldset.felement label{margin-right:.3em;margin-left:.3em}body.path-question-type .fitem_fgroup .accesshide{position:static;left:0;padding-right:.3em;font:inherit}.que{margin:0 auto 1.8em auto;clear:left;text-align:left}.dir-rtl .que{text-align:right}.que .info{float:left;width:7em;padding:.5em;margin-bottom:1.8em;background-color:#eee;border:1px solid #dcdcdc;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.que h3.no{margin:0;font-size:.8em;line-height:1}.que span.qno{font-size:1.5em;font-weight:bold}.que .info>div{margin-top:.7em;font-size:.8em}.que .info .questionflag.editable{cursor:pointer}.que .info .editquestion img,.que .info .questionflag img,.que .info .questionflag input{vertical-align:bottom}.que .content{margin:0 0 0 8.5em}.que .formulation,.que .outcome,.que .comment{padding:8px 35px 8px 14px;margin-bottom:20px;color:#c09853;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.que .formulation{color:#3a87ad;color:#333;background-color:#d9edf7;border-color:#bce8f1}.formulation input[type="text"],.formulation select{width:auto}.path-mod-quiz input[size]{width:auto}.que .comment{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.que .history{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.que .history blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.que .ablock{margin:.7em 0 .3em 0}.que .im-controls{margin-top:.5em;text-align:left}.dir-rtl .que .im-controls{text-align:right}.que .specificfeedback,.que .generalfeedback,.que .rightanswer,.que .im-feedback,.que .feedback,.que p{margin:0 0 .5em}.que .qtext{margin-bottom:1.5em}.que .correctness{display:inline-block;padding:2px 4px;font-size:11.844px;font-weight:bold;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);white-space:nowrap;vertical-align:baseline;background-color:#999;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.que .correctness:empty{display:none}.que .correctness-important{background-color:#b94a48}.que .correctness-important[href]{background-color:#953b39}.que .correctness-warning{background-color:#f89406}.que .correctness-warning[href]{background-color:#c67605}.que .correctness-success{background-color:#468847}.que .correctness-success[href]{background-color:#356635}.que .correctness-info{background-color:#3a87ad}.que .correctness-info[href]{background-color:#2d6987}.que .correctness-inverse{background-color:#333}.que .correctness-inverse[href]{background-color:#1a1a1a}.que .correctness.correct{background-color:#468847}.que .correctness.partiallycorrect{background-color:#f89406}.que .correctness.notanswered,.que .correctness.incorrect{background-color:#b94a48}.que .validationerror{color:#b94a48}.formulation .correct{background-color:#dff0d8}.formulation .partiallycorrect{background-color:#fcf8e3}.formulation .incorrect{background-color:#f2dede}.formulation select.correct,.formulation input.correct{color:#468847;background-color:#dff0d8;border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.formulation select.correct:focus,.formulation input.correct:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.formulation select.partiallycorrect,.formulation input.partiallycorrect{color:#c09853;background-color:#fcf8e3;border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.formulation select.partiallycorrect:focus,.formulation input.partiallycorrect:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.formulation select.incorrect,.formulation input.incorrect{color:#b94a48;background-color:#f2dede;border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.formulation select.incorrect:focus,.formulation input.incorrect:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.que .grading,.que .comment,.que .commentlink,.que .history{margin-top:.5em}.que .history h3{margin:0 0 .2em;font-size:1em}.que .history table{width:100%;margin:0}.que .history .current{font-weight:bold}.que .questioncorrectnessicon{vertical-align:text-bottom}.que input.questionflagimage{padding-right:3px}.dir-rtl .que input.questionflagimage{padding-right:0;padding-left:3px}.importerror{margin-top:10px;border-bottom:1px solid #555}.mform .que.comment .fitemtitle{width:20%}#page-question-preview #techinfo{margin:1em 0}.dir-rtl #chooseqtype .instruction,.dir-rtl #chooseqtype .qtypesummary{right:60%;left:0;border-right:1px solid grey;border-left:0}#page-mod-quiz-edit .box.generalbox.questionbank{padding:.5em}#page-mod-quiz-edit .questionbank .categorypagingbarcontainer,#page-mod-quiz-edit .questionbank .categoryquestionscontainer,#page-mod-quiz-edit .questionbank .choosecategory{padding:0}#page-mod-quiz-edit .questionbank .choosecategory select{width:100%}#page-mod-quiz-edit div.questionbank .categoryquestionscontainer{background:transparent}#page-mod-quiz-edit #categoryquestions>thead{background:#FFF}#page-mod-quiz-edit #categoryquestions>tbody>tr:nth-of-type(even){background:#e4e4e4}#page-mod-quiz-edit .questionbankwindow div.header{padding:3px;padding:2px 10px 2px 10px;margin:0 -10px 0 -10px;color:#444;text-shadow:none;background:transparent;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px}#page-mod-quiz-edit .questionbankwindow div.header a:link,#page-mod-quiz-edit .questionbankwindow div.header a:visited{color:#0070a8}#page-mod-quiz-edit .questionbankwindow div.header a:hover{color:#003d5c}#page-mod-quiz-edit .createnewquestion{padding:.3em 0}#page-mod-quiz-edit .createnewquestion div,#page-mod-quiz-edit .createnewquestion input{margin:0}#page-mod-quiz-edit .questionbankwindow div.header .title{color:#333}#page-mod-quiz-edit div.container div.generalbox{padding:1.5em;background-color:transparent}#page-mod-quiz-edit .categoryinfo{background-color:transparent;border-bottom:0}#page-mod-quiz-edit .createnewquestion .singlebutton input{margin-bottom:0}#page-mod-quiz-edit div.questionbank .categorysortopotionscontainer,#page-mod-quiz-edit div.questionbank .categoryselectallcontainer{padding:0 0 1.5em 0}#page-mod-quiz-edit div.questionbank .categorypagingbarcontainer{margin:0;background-color:transparent;border-top:0;border-bottom:0}#page-mod-quiz-edit div.questionbank .categorypagingbarcontainer .paging{padding:0 .3em}#page-mod-quiz-edit div.question div.content div.questioncontrols{background-color:#fff}#page-mod-quiz-edit div.question div.content div.points{padding-bottom:.5em;margin-top:-0.5em;background-color:#fff;border:0}#page-mod-quiz-edit div.question div.content div.points label{display:inline-block}#page-mod-quiz-edit div.quizpage .pagecontent .pagestatus{background-color:#fff}#page-mod-quiz-edit .quizpagedelete,#page-mod-quiz-edit .quizpagedelete img{background-color:transparent}#page-mod-quiz-edit div.quizpage .pagecontent{overflow:hidden;border:1px solid #ddd;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}#page-mod-quiz-edit div.questionbank .categoryinfo{padding:.3em 0}#page-mod-quiz-edit div.questionbank .modulespecificbuttonscontainer{padding:0}#page-mod-quiz-edit div.questionbank .modulespecificbuttonscontainer strong{display:block}#page-mod-quiz-edit div.questionbank .modulespecificbuttonscontainer hr,#page-mod-quiz-edit div.questionbank .modulespecificbuttonscontainer br{display:none}#page-mod-quiz-edit div.questionbank .modulespecificbuttonscontainer strong{margin-left:-0.3em}#page-mod-quiz-edit div.questionbank .modulespecificbuttonscontainer strong label{margin-left:.3em}#page-mod-quiz-edit div.questionbank .modulespecificbuttonscontainer input{margin-left:0}#page-mod-quiz-edit div.questionbank .modulespecificbuttonscontainer input+input{margin-left:5px}.questionbankwindow .module{width:auto}#page-mod-quiz-edit div.editq div.question div.content{overflow:hidden;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.path-mod-quiz .statedetails{display:block;font-size:.9em}a#hidebankcmd{color:#0070a8}.que.shortanswer .answer{padding:0}.que label{display:inline}.userprofile .fullprofilelink{margin:10px;text-align:center}.userprofile .description{margin-bottom:20px}.userprofile dl.list{*zoom:1}.userprofile dl.list:before,.userprofile dl.list:after{display:table;line-height:0;content:""}.userprofile dl.list:after{clear:both}.userprofile dl.list dt{float:left;width:180px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.userprofile dl.list dd{margin-left:200px}.user-box{float:left;width:115px;height:160px;margin:8px;clear:none;text-align:center}.dir-rtl .userprofile .description{margin-right:0}.dir-rtl .user-box{float:right}.dir-rtl .userprofile dl.list dt{float:right;padding-left:10px;text-align:left}.dir-rtl .userprofile dl.list dd{margin-left:0}.userlist .action-icon img{vertical-align:middle}.userlist #showall{margin:10px 0}.userlist .buttons{text-align:center}.userlist .buttons label{padding:0 3px}.userlist table#participants{text-align:center}.userlist table#participants td,.userlist table#participants th{padding:4px;text-align:left;vertical-align:middle}.userlist table.controls{width:100%}.userlist table.controls tr{vertical-align:top}.userlist table.controls .right{text-align:right}.userlist table.controls .groupselector{margin-top:0;margin-bottom:0}.userlist table.controls .groupselector label{display:block}.userinfobox{width:100%;padding:10px;border:1px solid;border-collapse:separate}.userinfobox .left,.userinfobox .side{width:100px;vertical-align:top}.userinfobox .userpicture{width:100px;height:100px}.userinfobox .content{vertical-align:top}.userinfobox .links{width:100px;padding:5px;vertical-align:bottom}.userinfobox .links a{display:block}.userinfobox .list td{padding:3px}.userinfobox .username{padding-bottom:20px;font-weight:bold}.userinfobox td.label{font-weight:bold;text-align:right;white-space:nowrap;vertical-align:top}.groupinfobox{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.groupinfobox blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.groupinfobox .left{width:100px;padding:10px;vertical-align:top}.course-participation #showall{margin:10px 0;text-align:center}#user-policy .noticebox{width:80%;height:250px;margin-right:auto;margin-bottom:10px;margin-left:auto;text-align:center}#user-policy #policyframe{width:100%;height:100%}.iplookup #map{margin:auto}.userselector select{width:100%}.userselector div{margin-top:.2em}.userselector div label{margin-right:.3em}.userselector .userselector-infobelow{font-size:.8em}#userselector_options{padding:.3em 0}#userselector_options .collapsibleregioncaption{font-weight:bold}#userselector_options p{margin:.2em 0;text-align:left}.dir-rtl #userselector_options p{text-align:right}#page-user-profile .messagebox{margin-right:auto;margin-left:auto;text-align:center}#page-course-view-weeks .messagebox{margin-right:auto;margin-left:auto;text-align:center}.dir-rtl .userprofilebox .descriptionbox{margin:0}.dir-rtl .userlist table#participants td,.dir-rtl .userlist table#participants th{text-align:right}.dir-rtl .userlist table#participants{margin:0 auto}#page-my-index.dir-rtl .block h3{text-align:right}.profileeditor>.singleselect{margin:0 .5em 0 0}.profileeditor>.singlebutton{display:inline-block;margin:0 0 0 .5em}.profileeditor>.singlebutton div,.profileeditor>.singlebutton input{margin:0}.dir-rtl .profileeditor>.singleselect{margin:0 0 0 .5em}.dir-rtl .profileeditor>.singlebutton{margin:0 .5em 0 0}/*! * Bootstrap v2.3.0 * * Copyright 2012 Twitter, Inc From e2f577e074879b163ee2dff919a8e2ad8b972560 Mon Sep 17 00:00:00 2001 From: Frederic Massart Date: Tue, 3 Jun 2014 15:38:06 +0800 Subject: [PATCH 05/32] MDL-45579 group: Prevent duplicate enrolment keys in course groups --- group/group_form.php | 19 ++++++++++++++++--- lang/en/group.php | 1 + 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/group/group_form.php b/group/group_form.php index 72e6849fa40..85b3e7556ff 100644 --- a/group/group_form.php +++ b/group/group_form.php @@ -111,11 +111,19 @@ class group_form extends moodleform { } } - if (!empty($CFG->groupenrolmentkeypolicy) and $data['enrolmentkey'] != '' and $group->enrolmentkey !== $data['enrolmentkey']) { - // enforce password policy only if changing password + if ($data['enrolmentkey'] != '') { $errmsg = ''; - if (!check_password_policy($data['enrolmentkey'], $errmsg)) { + if (!empty($CFG->groupenrolmentkeypolicy) && $group->enrolmentkey !== $data['enrolmentkey'] + && !check_password_policy($data['enrolmentkey'], $errmsg)) { + // Enforce password policy when the password is changed. $errors['enrolmentkey'] = $errmsg; + } else { + // Prevent twice the same enrolment key in course groups. + $sql = "SELECT id FROM {groups} WHERE id <> :groupid AND courseid = :courseid AND enrolmentkey = :key"; + $params = array('groupid' => $data['id'], 'courseid' => $COURSE->id, 'key' => $data['enrolmentkey']); + if ($DB->record_exists_sql($sql, $params)) { + $errors['enrolmentkey'] = get_string('enrolmentkeyalreadyinuse', 'group'); + } } } @@ -123,6 +131,11 @@ class group_form extends moodleform { $errors['name'] = get_string('groupnameexists', 'group', $name); } else if (!empty($idnumber) && groups_get_group_by_idnumber($COURSE->id, $idnumber)) { $errors['idnumber']= get_string('idnumbertaken'); + } else if ($data['enrolmentkey'] != '') { + // Prevent twice the same enrolment key in course groups. + if ($DB->record_exists('groups', array('courseid' => $COURSE->id, 'enrolmentkey' => $data['enrolmentkey']))) { + $errors['enrolmentkey'] = get_string('enrolmentkeyalreadyinuse', 'group'); + } } return $errors; diff --git a/lang/en/group.php b/lang/en/group.php index 715634ef920..50001261906 100644 --- a/lang/en/group.php +++ b/lang/en/group.php @@ -61,6 +61,7 @@ $string['enrolmentkey'] = 'Enrolment key'; $string['enrolmentkey_help'] = 'An enrolment key enables access to the course to be restricted to only those who know the key. If a group enrolment key is specified, then not only will entering that key let the user into the course, but it will also automatically make them a member of this group. Note: Group enrolment keys must be enabled in the self enrolment settings and an enrolment key for the course must also be specified.'; +$string['enrolmentkeyalreadyinuse'] = 'This enrolment key is already used for another group.'; $string['erroraddremoveuser'] = 'Error adding/removing user {$a} to group'; $string['erroreditgroup'] = 'Error creating/updating group {$a}'; $string['erroreditgrouping'] = 'Error creating/updating grouping {$a}'; From ed94a2affd29946f30d79079149488400fbb6560 Mon Sep 17 00:00:00 2001 From: Frederic Massart Date: Wed, 4 Jun 2014 15:03:38 +0800 Subject: [PATCH 06/32] MDL-45579 group: Behat tests to cover group enrolment key rules --- group/group_form.php | 2 +- group/tests/behat/create_groups.feature | 34 +++++++++++++++++ group/tests/behat/update_groups.feature | 51 +++++++++++++++++++++++++ 3 files changed, 86 insertions(+), 1 deletion(-) diff --git a/group/group_form.php b/group/group_form.php index 85b3e7556ff..a7f15564fca 100644 --- a/group/group_form.php +++ b/group/group_form.php @@ -132,7 +132,7 @@ class group_form extends moodleform { } else if (!empty($idnumber) && groups_get_group_by_idnumber($COURSE->id, $idnumber)) { $errors['idnumber']= get_string('idnumbertaken'); } else if ($data['enrolmentkey'] != '') { - // Prevent twice the same enrolment key in course groups. + // Prevent the same enrolment key from being used multiple times in course groups. if ($DB->record_exists('groups', array('courseid' => $COURSE->id, 'enrolmentkey' => $data['enrolmentkey']))) { $errors['enrolmentkey'] = get_string('enrolmentkeyalreadyinuse', 'group'); } diff --git a/group/tests/behat/create_groups.feature b/group/tests/behat/create_groups.feature index 7ec76223217..9b149e72e31 100644 --- a/group/tests/behat/create_groups.feature +++ b/group/tests/behat/create_groups.feature @@ -89,3 +89,37 @@ Feature: Organize students into groups | Grouping name | Not the greatest grouping, but it's ok! | And I press "Save changes" And I should see "Not the greatest grouping, but it's ok!" + + Scenario: Create groups with enrolment key + Given the following "courses" exist: + | fullname | shortname | category | groupmode | + | Course 1 | C1 | 0 | 1 | + | Course 2 | C2 | 0 | 1 | + And I log in as "admin" + And I follow "Course 1" + And I expand "Users" node + And I follow "Groups" + When I press "Create group" + And I set the following fields to these values: + | Group name | Group A | + | Enrolment key | Abcdef-1 | + And I press "Save changes" + And I press "Create group" + And I set the following fields to these values: + | Group name | Group B | + | Enrolment key | Abcdef-1 | + And I press "Save changes" + Then I should see "This enrolment key is already used for another group." + And I set the following fields to these values: + | Enrolment key | Abcdef-2 | + And I press "Save changes" + And the "groups" select box should contain "Group B (0)" + And I am on homepage + And I follow "Course 2" + And I expand "Users" node + And I follow "Groups" + And I press "Create group" + And I set the following fields to these values: + | Group name | Group A | + | Enrolment key | Abcdef-1 | + And I should not see "This enrolment key is already used for another group." diff --git a/group/tests/behat/update_groups.feature b/group/tests/behat/update_groups.feature index eb927439cd9..19add532898 100644 --- a/group/tests/behat/update_groups.feature +++ b/group/tests/behat/update_groups.feature @@ -100,3 +100,54 @@ Feature: Automatic updating of groups and groupings And the "idnumber" "field" should be readonly And the "idnumber" field should match "An ID" value + @javascript + Scenario: Update groups with enrolment key + Given the following "courses" exist: + | fullname | shortname | + | Course 2 | C2 | + And the following "course enrolments" exist: + | user | course | role | + | teacher1 | C2 | editingteacher | + And I log out + And I log in as "teacher1" + And I follow "Course 1" + And I expand "Users" node + And I follow "Groups" + And I set the field "groups" to "Group (with ID)" + And I press "Edit group settings" + And I set the following fields to these values: + | Enrolment key | badpasswd | + When I press "Save changes" + Then I should see "Passwords must have at least 1 digit(s)" + And I set the following fields to these values: + | Enrolment key | Abcdef-1 | + And I press "Save changes" + And I set the field "groups" to "Group (with ID)" + And I press "Edit group settings" + And I press "Save changes" + And I should not see "This enrolment key is already used for another group." + And I set the field "groups" to "Group (without ID)" + And I press "Edit group settings" + And I set the following fields to these values: + | Enrolment key | Abcdef-1 | + And I press "Save changes" + And I should see "This enrolment key is already used for another group." + And I set the following fields to these values: + | Enrolment key | Abcdef-2 | + And I press "Save changes" + And I should not see "This enrolment key is already used for another group." + And I am on homepage + And I follow "Course 2" + And I expand "Users" node + And I follow "Groups" + And I press "Create group" + And I set the following fields to these values: + | Group name | Group A | + And I press "Save changes" + And I should not see "This enrolment key is already used for another group." + And I set the field "groups" to "Group A" + And I press "Edit group settings" + And I set the following fields to these values: + | Enrolment key | Abcdef-1 | + And I press "Save changes" + And I should not see "This enrolment key is already used for another group." From 7de5920dd8dd98494df0833e87aa1d1e5d03efcb Mon Sep 17 00:00:00 2001 From: Adrian Greeve Date: Tue, 3 Jun 2014 10:15:09 +0800 Subject: [PATCH 07/32] MDL-44501 mod_data: Only attempt to export files when a file exists. The error only occurs when portfolios are enabled and there is only one field which is a file field. --- mod/data/locallib.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mod/data/locallib.php b/mod/data/locallib.php index 7410091455f..ae182535a3d 100644 --- a/mod/data/locallib.php +++ b/mod/data/locallib.php @@ -348,7 +348,9 @@ class data_portfolio_caller extends portfolio_module_caller_base { $includedfiles = array(); foreach ($fields as $singlefield) { if (is_callable(array($singlefield, 'get_file'))) { - $includedfiles[] = $singlefield->get_file($record->id); + if ($file = $singlefield->get_file($record->id)) { + $includedfiles[] = $file; + } } } if (count($includedfiles) == 1 && count($fields) == 1) { From 200862ff6e006e5169d0c70668717f3b3a03194e Mon Sep 17 00:00:00 2001 From: Eric Merrill Date: Mon, 2 Jun 2014 15:57:19 -0400 Subject: [PATCH 08/32] MDL-39726 backup: Move question files by context, not one at a time Use question category contexts to send file to the file pool in bulk. Questions are only restored in whole category chunks, so this is safe to do. --- backup/moodle2/restore_stepslib.php | 132 ++++++++++++++++++---------- 1 file changed, 84 insertions(+), 48 deletions(-) diff --git a/backup/moodle2/restore_stepslib.php b/backup/moodle2/restore_stepslib.php index 30a37b0cbd9..1e6fd563065 100644 --- a/backup/moodle2/restore_stepslib.php +++ b/backup/moodle2/restore_stepslib.php @@ -3558,13 +3558,16 @@ class restore_move_module_questions_categories extends restore_execution_step { * Execution step that will create all the question/answers/qtype-specific files for the restored * questions. It must be executed after {@link restore_move_module_questions_categories} * because only then each question is in its final category and only then the - * context can be determined - * - * TODO: Improve this. Instead of looping over each question, it can be reduced to - * be done by contexts (this will save a huge ammount of queries) + * contexts can be determined. */ class restore_create_question_files extends restore_execution_step { + /** @var array Question-type specific component items cache. */ + private $qtypecomponentscache = array(); + + /** + * Preform the restore_create_question_files step. + */ protected function define_execution() { global $DB; @@ -3572,60 +3575,93 @@ class restore_create_question_files extends restore_execution_step { $progress = $this->task->get_progress(); $progress->start_progress($this->get_name(), core_backup_progress::INDETERMINATE); - // Let's process only created questions - $questionsrs = $DB->get_recordset_sql("SELECT bi.itemid, bi.newitemid, bi.parentitemid, q.qtype - FROM {backup_ids_temp} bi - JOIN {question} q ON q.id = bi.newitemid + // Parentitemids of question_createds in backup_ids_temp are the category it is in. + // MUST use a recordset, as there is no unique key in the first (or any) column. + $catqtypes = $DB->get_recordset_sql("SELECT DISTINCT bi.parentitemid AS categoryid, q.qtype as qtype + FROM {backup_ids_temp} AS bi + JOIN {question} AS q ON q.id = bi.newitemid WHERE bi.backupid = ? - AND bi.itemname = 'question_created'", array($this->get_restoreid())); - foreach ($questionsrs as $question) { - // Report progress for each question. - $progress->progress(); + AND bi.itemname = 'question_created' + ORDER BY categoryid ASC", array($this->get_restoreid())); - // Get question_category mapping, it contains the target context for the question - if (!$qcatmapping = restore_dbops::get_backup_ids_record($this->get_restoreid(), 'question_category', $question->parentitemid)) { - // Something went really wrong, cannot find the question_category for the question - debugging('Error fetching target context for question', DEBUG_DEVELOPER); - continue; - } - // Calculate source and target contexts - $oldctxid = $qcatmapping->info->contextid; - $newctxid = $qcatmapping->parentitemid; + $currentcatid = -1; + foreach ($catqtypes as $categoryid => $row) { + $qtype = $row->qtype; - // Add common question files (question and question_answer ones) - restore_dbops::send_files_to_pool($this->get_basepath(), $this->get_restoreid(), 'question', 'questiontext', - $oldctxid, $this->task->get_userid(), 'question_created', $question->itemid, $newctxid, true, $progress); - restore_dbops::send_files_to_pool($this->get_basepath(), $this->get_restoreid(), 'question', 'generalfeedback', - $oldctxid, $this->task->get_userid(), 'question_created', $question->itemid, $newctxid, true, $progress); - restore_dbops::send_files_to_pool($this->get_basepath(), $this->get_restoreid(), 'question', 'answer', - $oldctxid, $this->task->get_userid(), 'question_answer', null, $newctxid, true, $progress); - restore_dbops::send_files_to_pool($this->get_basepath(), $this->get_restoreid(), 'question', 'answerfeedback', - $oldctxid, $this->task->get_userid(), 'question_answer', null, $newctxid, true, $progress); - restore_dbops::send_files_to_pool($this->get_basepath(), $this->get_restoreid(), 'question', 'hint', - $oldctxid, $this->task->get_userid(), 'question_hint', null, $newctxid, true, $progress); - restore_dbops::send_files_to_pool($this->get_basepath(), $this->get_restoreid(), 'question', 'correctfeedback', - $oldctxid, $this->task->get_userid(), 'question_created', $question->itemid, $newctxid, true, $progress); - restore_dbops::send_files_to_pool($this->get_basepath(), $this->get_restoreid(), 'question', 'partiallycorrectfeedback', - $oldctxid, $this->task->get_userid(), 'question_created', $question->itemid, $newctxid, true, $progress); - restore_dbops::send_files_to_pool($this->get_basepath(), $this->get_restoreid(), 'question', 'incorrectfeedback', - $oldctxid, $this->task->get_userid(), 'question_created', $question->itemid, $newctxid, true, $progress); + // Check if we are in a new category. + if ($currentcatid !== $categoryid) { + // Report progress for each category. + $progress->progress(); - // Add qtype dependent files - $components = backup_qtype_plugin::get_components_and_fileareas($question->qtype); - foreach ($components as $component => $fileareas) { - foreach ($fileareas as $filearea => $mapping) { - // Use itemid only if mapping is question_created - $itemid = ($mapping == 'question_created') ? $question->itemid : null; - restore_dbops::send_files_to_pool($this->get_basepath(), $this->get_restoreid(), $component, $filearea, - $oldctxid, $this->task->get_userid(), $mapping, $itemid, $newctxid, true, $progress); + if (!$qcatmapping = restore_dbops::get_backup_ids_record($this->get_restoreid(), + 'question_category', $categoryid)) { + // Something went really wrong, cannot find the question_category for the question_created records. + debugging('Error fetching target context for question', DEBUG_DEVELOPER); + continue; } + + // Calculate source and target contexts. + $oldctxid = $qcatmapping->info->contextid; + $newctxid = $qcatmapping->parentitemid; + + $this->send_common_files($oldctxid, $newctxid, $progress); + $currentcatid = $categoryid; } + + $this->send_qtype_files($qtype, $oldctxid, $newctxid, $progress); } - $questionsrs->close(); + $catqtypes->close(); $progress->end_progress(); } -} + /** + * Send the common question files to a new context. + * + * @param int $oldctxid Old context id. + * @param int $newctxid New context id. + * @param \core\progress $progress Progress object to use. + */ + private function send_common_files($oldctxid, $newctxid, $progress) { + // Add common question files (question and question_answer ones). + restore_dbops::send_files_to_pool($this->get_basepath(), $this->get_restoreid(), 'question', 'questiontext', + $oldctxid, $this->task->get_userid(), 'question_created', null, $newctxid, true, $progress); + restore_dbops::send_files_to_pool($this->get_basepath(), $this->get_restoreid(), 'question', 'generalfeedback', + $oldctxid, $this->task->get_userid(), 'question_created', null, $newctxid, true, $progress); + restore_dbops::send_files_to_pool($this->get_basepath(), $this->get_restoreid(), 'question', 'answer', + $oldctxid, $this->task->get_userid(), 'question_answer', null, $newctxid, true, $progress); + restore_dbops::send_files_to_pool($this->get_basepath(), $this->get_restoreid(), 'question', 'answerfeedback', + $oldctxid, $this->task->get_userid(), 'question_answer', null, $newctxid, true, $progress); + restore_dbops::send_files_to_pool($this->get_basepath(), $this->get_restoreid(), 'question', 'hint', + $oldctxid, $this->task->get_userid(), 'question_hint', null, $newctxid, true, $progress); + restore_dbops::send_files_to_pool($this->get_basepath(), $this->get_restoreid(), 'question', 'correctfeedback', + $oldctxid, $this->task->get_userid(), 'question_created', null, $newctxid, true, $progress); + restore_dbops::send_files_to_pool($this->get_basepath(), $this->get_restoreid(), 'question', 'partiallycorrectfeedback', + $oldctxid, $this->task->get_userid(), 'question_created', null, $newctxid, true, $progress); + restore_dbops::send_files_to_pool($this->get_basepath(), $this->get_restoreid(), 'question', 'incorrectfeedback', + $oldctxid, $this->task->get_userid(), 'question_created', null, $newctxid, true, $progress); + } + + /** + * Send the question type specific files to a new context. + * + * @param text $qtype The qtype name to send. + * @param int $oldctxid Old context id. + * @param int $newctxid New context id. + * @param \core\progress $progress Progress object to use. + */ + private function send_qtype_files($qtype, $oldctxid, $newctxid, $progress) { + if (!isset($this->qtypecomponentscache[$qtype])) { + $this->qtypecomponentscache[$qtype] = backup_qtype_plugin::get_components_and_fileareas($qtype); + } + $components = $this->qtypecomponentscache[$qtype]; + foreach ($components as $component => $fileareas) { + foreach ($fileareas as $filearea => $mapping) { + restore_dbops::send_files_to_pool($this->get_basepath(), $this->get_restoreid(), $component, $filearea, + $oldctxid, $this->task->get_userid(), $mapping, null, $newctxid, true, $progress); + } + } + } +} /** * Try to restore aliases and references to external files. From 3616569d45a4f7635fc6b2e6c1f59d3cebe1264b Mon Sep 17 00:00:00 2001 From: Eric Merrill Date: Thu, 29 May 2014 14:20:26 -0400 Subject: [PATCH 09/32] MDL-20154 quiz: Remove unused random questions When a random question is removed from a quiz, and it is not in use elsewhere, it should be deleted. Conflicts: mod/quiz/editlib.php mod/quiz/lib.php --- mod/quiz/editlib.php | 6 ++++++ mod/quiz/lib.php | 13 +++++++++++++ 2 files changed, 19 insertions(+) diff --git a/mod/quiz/editlib.php b/mod/quiz/editlib.php index b395d91a96d..0f245312015 100644 --- a/mod/quiz/editlib.php +++ b/mod/quiz/editlib.php @@ -76,6 +76,12 @@ function quiz_remove_question($quiz, $questionid) { $DB->set_field('quiz', 'questions', $quiz->questions, array('id' => $quiz->id)); $DB->delete_records('quiz_question_instances', array('quiz' => $quiz->instance, 'question' => $questionid)); + + $qtype = $DB->get_field('question', 'qtype', array('id' => $questionid)); + if ($qtype === 'random') { + // This function automatically checks if the question is in use, and won't delete if it is. + question_delete_question($questionid); + } } /** diff --git a/mod/quiz/lib.php b/mod/quiz/lib.php index d2ad58df4d8..84b80a06bc1 100644 --- a/mod/quiz/lib.php +++ b/mod/quiz/lib.php @@ -170,7 +170,20 @@ function quiz_delete_instance($id) { quiz_delete_all_attempts($quiz); quiz_delete_all_overrides($quiz); + // Look for random questions that may no longer be used when this quiz is gone. + $sql = "SELECT q.id + FROM {quiz_question_instances} instance + JOIN {question} q ON q.id = instance.question + WHERE instance.quiz = ? AND q.qtype = ?"; + $questionids = $DB->get_fieldset_sql($sql, array($quiz->id, 'random')); + + // We need to do this before we try and delete randoms, otherwise they would still be 'in use'. $DB->delete_records('quiz_question_instances', array('quiz' => $quiz->id)); + + foreach ($questionids as $questionid) { + question_delete_question($questionid); + } + $DB->delete_records('quiz_feedback', array('quizid' => $quiz->id)); quiz_access_manager::delete_settings($quiz); From 52878b707a72265aabba6b442f253628575974a7 Mon Sep 17 00:00:00 2001 From: Eric Merrill Date: Wed, 4 Jun 2014 10:46:48 -0400 Subject: [PATCH 10/32] MDL-20154 questions: question_delete_question should not check perms By Moodle convention, library functions should not implement permission checks, they are to be handled by the invoking code. --- lib/questionlib.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/lib/questionlib.php b/lib/questionlib.php index 5cdfb69ba9c..49350e1f295 100644 --- a/lib/questionlib.php +++ b/lib/questionlib.php @@ -321,9 +321,6 @@ function question_delete_question($questionid) { return; } - // Check permissions. - question_require_capability_on($question, 'edit'); - $dm = new question_engine_data_mapper(); $dm->delete_previews($questionid); From 0d7ed311f8f99f7a414a5504ea9fc0c01f233548 Mon Sep 17 00:00:00 2001 From: Michael de Raadt Date: Thu, 5 Jun 2014 10:44:06 +0800 Subject: [PATCH 11/32] MDL-44309 Administration - correcting inproperly assigned column classes in environment table --- admin/renderer.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/admin/renderer.php b/admin/renderer.php index 1597ed02f11..81d2ac5fda2 100644 --- a/admin/renderer.php +++ b/admin/renderer.php @@ -1369,7 +1369,7 @@ class core_admin_renderer extends plugin_renderer_base { get_string('report'), get_string('status'), ); - $servertable->colclasses = array('centeralign name', 'centeralign status', 'leftalign report', 'centeralign info'); + $servertable->colclasses = array('centeralign name', 'centeralign info', 'leftalign report', 'centeralign status'); $servertable->attributes['class'] = 'admintable environmenttable generaltable'; $servertable->id = 'serverstatus'; From 464280a23d79c1c6fd6a92a1e23f1d1d33b410e4 Mon Sep 17 00:00:00 2001 From: Sam Chaffee Date: Wed, 30 Apr 2014 11:55:57 -0600 Subject: [PATCH 12/32] MDL-45767: Fixed DB error when returning to course from external tool The instance ID is not always returned from the external tool provider. --- mod/lti/return.php | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/mod/lti/return.php b/mod/lti/return.php index b0940bbff95..a85c442dc0a 100644 --- a/mod/lti/return.php +++ b/mod/lti/return.php @@ -29,7 +29,7 @@ require_once($CFG->dirroot.'/mod/lti/lib.php'); require_once($CFG->dirroot.'/mod/lti/locallib.php'); $courseid = required_param('course', PARAM_INT); -$instanceid = required_param('instanceid', PARAM_INT); +$instanceid = optional_param('instanceid', 0, PARAM_INT); $errormsg = optional_param('lti_errormsg', '', PARAM_RAW); $unsigned = optional_param('unsigned', '0', PARAM_INT); @@ -37,9 +37,14 @@ $unsigned = optional_param('unsigned', '0', PARAM_INT); $launchcontainer = optional_param('launch_container', LTI_LAUNCH_CONTAINER_WINDOW, PARAM_INT); $course = $DB->get_record('course', array('id' => $courseid), '*', MUST_EXIST); -$lti = $DB->get_record('lti', array('id' => $instanceid), '*', MUST_EXIST); -$cm = get_coursemodule_from_instance('lti', $lti->id, $lti->course, false, MUST_EXIST); -$context = context_module::instance($cm->id); +$lti = null; +$context = null; +if (!empty($instanceid)) { + $lti = $DB->get_record('lti', array('id' => $instanceid), '*', MUST_EXIST); + $cm = get_coursemodule_from_instance('lti', $lti->id, $lti->course, false, MUST_EXIST); + $context = context_module::instance($cm->id); +} + require_login($course); @@ -59,7 +64,9 @@ if (!empty($errormsg)) { } echo $OUTPUT->header(); - echo $OUTPUT->heading(format_string($lti->name, true, array('context' => $context))); + if (!empty($lti) and !empty($context)) { + echo $OUTPUT->heading(format_string($lti->name, true, array('context' => $context))); + } echo get_string('lti_launch_error', 'lti'); @@ -74,12 +81,13 @@ if (!empty($errormsg)) { $coursetooleditor = new moodle_url('/mod/lti/instructor_edit_tool_type.php', array('course' => $courseid, 'action' => 'add')); $links->course_tool_editor = $coursetooleditor->out(false); - $adminrequesturl = new moodle_url('/mod/lti/request_tool.php', array('instanceid' => $instanceid)); - $links->admin_request_url = $adminrequesturl->out(false); - echo get_string('lti_launch_error_unsigned_help', 'lti', $links); - echo get_string('lti_launch_error_tool_request', 'lti', $links); + if (!empty($lti)) { + $adminrequesturl = new moodle_url('/mod/lti/request_tool.php', array('instanceid' => $lti->id)); + $links->admin_request_url = $adminrequesturl->out(false); + echo get_string('lti_launch_error_tool_request', 'lti', $links); + } } echo $OUTPUT->footer(); From a5a3c48851d6a5026431b9251026850dff961dd9 Mon Sep 17 00:00:00 2001 From: Nobelium Date: Wed, 4 Jun 2014 14:02:46 +0000 Subject: [PATCH 13/32] MDL-42835 mod_scorm: Close tree nodes using TreeView API --- mod/scorm/module.js | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/mod/scorm/module.js b/mod/scorm/module.js index f0d65155a7e..f64902113a3 100644 --- a/mod/scorm/module.js +++ b/mod/scorm/module.js @@ -60,25 +60,16 @@ M.mod_scorm.init = function(Y, nav_display, navposition_left, navposition_top, h }; Y.TreeView.prototype.openAll = function () { - var tree = this; - Y.all('.yui3-treeview-can-have-children').each(function() { - var node = tree.getNodeById(this.get('id')); - node.open(); - }); + this.get('container').all('.yui3-treeview-can-have-children').each(function(target) { + this.getNodeById(target.get('id')).open(); + }, this); }; - // TODO: Remove next(), previous() prototype functions after YUI has been updated to 3.11.0 - MDL-41208. - Y.Tree.Node.prototype.next = function () { - if (this.parent) { - return this.parent.children[this.index() + 1]; - } - }; - - Y.Tree.Node.prototype.previous = function () { - if (this.parent) { - return this.parent.children[this.index() - 1]; - } - }; + Y.TreeView.prototype.closeAll = function () { + this.get('container').all('.yui3-treeview-can-have-children').each(function(target) { + this.getNodeById(target.get('id')).close(); + }, this); + } var scorm_parse_toc_tree = function(srcNode) { var SELECTORS = { @@ -141,6 +132,7 @@ M.mod_scorm.init = function(Y, nav_display, navposition_left, navposition_top, h scorm_current_node.select(); } + scorm_tree_node.closeAll(); // remove any reference to the old API if (window.API) { window.API = null; @@ -202,6 +194,7 @@ M.mod_scorm.init = function(Y, nav_display, navposition_left, navposition_top, h } scorm_fixnav(); } + scorm_tree_node.openAll(); }; mod_scorm_activate_item = scorm_activate_item; From 807c6707656e024024f6c18b80d9f54ac3f89205 Mon Sep 17 00:00:00 2001 From: Jenny Gray Date: Wed, 4 Jun 2014 16:10:18 +0100 Subject: [PATCH 14/32] MDL-45846 Libraries Reinstate custom user agent device detection --- lib/classes/useragent.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/classes/useragent.php b/lib/classes/useragent.php index 7e0d40d0eaa..39c3ed811f6 100644 --- a/lib/classes/useragent.php +++ b/lib/classes/useragent.php @@ -120,7 +120,7 @@ class core_useragent { protected function __construct($forceuseragent = null) { global $CFG; if (!empty($CFG->devicedetectregex)) { - $this->devicetypecustoms = json_decode($CFG->devicedetectregex); + $this->devicetypecustoms = json_decode($CFG->devicedetectregex, true); } if ($forceuseragent !== null) { $this->useragent = $forceuseragent; From 7aa0860ecaded098e3443b88e9e784f218c4710f Mon Sep 17 00:00:00 2001 From: sam marshall Date: Thu, 15 May 2014 14:50:24 +0100 Subject: [PATCH 15/32] MDL-45574 Backup progress: Can time out with large number of files When there are many files inside a single resource, it's possible for the backup to time out because it does not report progress while adding entries to the backup_ids table. --- .../dbops/backup_structure_dbops.class.php | 22 ++++++++++++++++++- .../backup_structure_processor.class.php | 2 +- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/backup/util/dbops/backup_structure_dbops.class.php b/backup/util/dbops/backup_structure_dbops.class.php index 61a903a9919..080c0a6f58c 100644 --- a/backup/util/dbops/backup_structure_dbops.class.php +++ b/backup/util/dbops/backup_structure_dbops.class.php @@ -103,7 +103,18 @@ abstract class backup_structure_dbops extends backup_dbops { } } - public static function annotate_files($backupid, $contextid, $component, $filearea, $itemid) { + /** + * Adds backup id database record for all files in the given file area. + * + * @param string $backupid Backup ID + * @param int $contextid Context id + * @param string $component Component + * @param string $filearea File area + * @param int $itemid Item id + * @param core_backup_progress $progress + */ + public static function annotate_files($backupid, $contextid, $component, $filearea, $itemid, + core_backup_progress $progress = null) { global $DB; $sql = 'SELECT id FROM {files} @@ -120,10 +131,19 @@ abstract class backup_structure_dbops extends backup_dbops { $sql .= ' AND itemid = ?'; $params[] = $itemid; } + if ($progress) { + $progress->start_progress(''); + } $rs = $DB->get_recordset_sql($sql, $params); foreach ($rs as $record) { + if ($progress) { + $progress->progress(); + } self::insert_backup_ids_record($backupid, 'file', $record->id); } + if ($progress) { + $progress->end_progress(); + } $rs->close(); } diff --git a/backup/util/structure/backup_structure_processor.class.php b/backup/util/structure/backup_structure_processor.class.php index 88cfeca3cee..10bced39e86 100644 --- a/backup/util/structure/backup_structure_processor.class.php +++ b/backup/util/structure/backup_structure_processor.class.php @@ -86,7 +86,7 @@ class backup_structure_processor extends base_processor { foreach ($area as $filearea => $info) { $contextid = !is_null($info->contextid) ? $info->contextid : $this->get_var(backup::VAR_CONTEXTID); $itemid = !is_null($info->element) ? $info->element->get_value() : null; - backup_structure_dbops::annotate_files($backupid, $contextid, $component, $filearea, $itemid); + backup_structure_dbops::annotate_files($backupid, $contextid, $component, $filearea, $itemid, $this->progress); } } } From 874db754cebd7220df9c662ccb10b43e3ae6bb01 Mon Sep 17 00:00:00 2001 From: Matteo Scaramuccia Date: Sun, 1 Jun 2014 09:14:37 +0200 Subject: [PATCH 16/32] MDL-29708 Fixed extra slashes in $string['storedfilenotcreated']. --- lang/en/error.php | 2 +- lib/filestorage/tests/file_storage_test.php | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lang/en/error.php b/lang/en/error.php index b5c1c3c7fb0..7bef32afe7a 100644 --- a/lang/en/error.php +++ b/lang/en/error.php @@ -489,7 +489,7 @@ $string['statsnodata'] = 'There is no available data for that combination of cou $string['storedfilecannotcreatefile'] = 'Can not create local file pool file, please verify permissions in dataroot and available disk space.'; $string['storedfilecannotcreatefiledirs'] = 'Can not create local file pool directories, please verify permissions in dataroot.'; $string['storedfilecannotread'] = 'Can not read file, either file does not exist or there are permission problems'; -$string['storedfilenotcreated'] = 'Can not create file "{$a->contextid}/{$a->component}/{$a->filearea}/{$a->itemid}/{$a->filepath}/{$a->filename}"'; +$string['storedfilenotcreated'] = 'Can not create file "{$a->contextid}/{$a->component}/{$a->filearea}/{$a->itemid}{$a->filepath}{$a->filename}"'; $string['storedfileproblem'] = 'Unknown exception related to local files ({$a})'; $string['tagdisabled'] = 'Tags are disabled!'; $string['tagnotfound'] = 'The specified tag was not found in the database'; diff --git a/lib/filestorage/tests/file_storage_test.php b/lib/filestorage/tests/file_storage_test.php index abd8c1de7ea..9c7ff1dfec7 100644 --- a/lib/filestorage/tests/file_storage_test.php +++ b/lib/filestorage/tests/file_storage_test.php @@ -300,7 +300,8 @@ class core_files_file_storage_testcase extends advanced_testcase { $this->assertEquals($contenthash, $file->get_contenthash()); // Try break it. - $this->setExpectedException('file_exception'); + $this->setExpectedException('file_exception', + 'Can not create file "1/core/unittest/0/test/newtest.txt" (file exists, cannot rename)'); // This shall throw exception. $originalfile->rename($newpath, $newname); } @@ -1146,7 +1147,7 @@ class core_files_file_storage_testcase extends advanced_testcase { $this->assertInstanceOf('stored_file', $file1); // Creating a file validating unique constraint. - $this->setExpectedException('stored_file_creation_exception'); + $this->setExpectedException('stored_file_creation_exception', 'Can not create file "1/core/phpunit/0/testfile.txt"'); $fs->create_file_from_storedfile($filerecord, $file1->get_id()); } @@ -1426,7 +1427,7 @@ class core_files_file_storage_testcase extends advanced_testcase { $this->assertInstanceOf('stored_file', $file1); // Creating a file validating unique constraint. - $this->setExpectedException('stored_file_creation_exception'); + $this->setExpectedException('stored_file_creation_exception', 'Can not create file "1/core/phpunit/0/testfile.txt"'); $file2 = $fs->create_file_from_pathname($filerecord, $path); } From 6637cf27b98356e1e432694ee7769f283ef100a2 Mon Sep 17 00:00:00 2001 From: Matteo Scaramuccia Date: Sun, 1 Jun 2014 09:17:09 +0200 Subject: [PATCH 17/32] MDL-29708 Fixed file_exception() arguments in rename(). --- lib/filestorage/stored_file.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/filestorage/stored_file.php b/lib/filestorage/stored_file.php index 6b4645dad87..ed15afcefb5 100644 --- a/lib/filestorage/stored_file.php +++ b/lib/filestorage/stored_file.php @@ -205,7 +205,14 @@ class stored_file { */ public function rename($filepath, $filename) { if ($this->fs->file_exists($this->get_contextid(), $this->get_component(), $this->get_filearea(), $this->get_itemid(), $filepath, $filename)) { - throw new file_exception('storedfilenotcreated', '', 'file exists, cannot rename'); + $a = new stdClass(); + $a->contextid = $this->get_contextid(); + $a->component = $this->get_component(); + $a->filearea = $this->get_filearea(); + $a->itemid = $this->get_itemid(); + $a->filepath = $filepath; + $a->filename = $filename; + throw new file_exception('storedfilenotcreated', $a, 'file exists, cannot rename'); } $filerecord = new stdClass; $filerecord->filepath = $filepath; From 82358535df78ff5f4ece6b975497907659d5713e Mon Sep 17 00:00:00 2001 From: Sam Hemelryk Date: Fri, 21 Mar 2014 13:08:35 +1300 Subject: [PATCH 18/32] MDL-44711 navigation: improved expandable course calculation --- .../tests/behat/expand_courses_node.feature | 190 ++++++++++++++++++ lang/en/cache.php | 1 + lib/db/caches.php | 10 + lib/navigationlib.php | 71 ++++++- 4 files changed, 271 insertions(+), 1 deletion(-) create mode 100644 blocks/navigation/tests/behat/expand_courses_node.feature diff --git a/blocks/navigation/tests/behat/expand_courses_node.feature b/blocks/navigation/tests/behat/expand_courses_node.feature new file mode 100644 index 00000000000..2fd28caf442 --- /dev/null +++ b/blocks/navigation/tests/behat/expand_courses_node.feature @@ -0,0 +1,190 @@ +@block @block_navigation +Feature: Expand the courses nodes within the navigation block + In order to navigate the site + As an anonymous user, a guest, a student, and an admin + I need to expand the courses node in the navigation block and check the display of courses and categories. + + Background: + Given the following "users" exist: + | username | firstname | lastname | email | + | teacher1 | Teacher | 1 | teacher1@local.host | + | student1 | Student | 1 | student1@local.host | + And the following "categories" exist: + | name | category | idnumber | visible | + | cat1 | 0 | cat1 | 1 | + | cat2 | 0 | cat2 | 1 | + | cat21 | cat2 | cat21 | 1 | + | cat211 | cat21 | cat211 | 1 | + | cat3 | 0 | cat3 | 0 | + And the following "courses" exist: + | fullname | shortname | category | visible | + | Course 1 | c1 | cat1 | 1 | + | Course 2 | c2 | cat2 | 1 | + | Course 3 | c3 | cat21 | 1 | + | Course 4 | c4 | cat211 | 1 | + | Course 5 | c5 | cat211 | 0 | + | Course 6 | c6 | cat211 | 0 | + | Course 7 | c7 | cat3 | 1 | + | Course 8 | c8 | cat3 | 0 | + And the following "course enrolments" exist: + | user | course | role | + | teacher1 | c1 | teacher | + | teacher1 | c3 | teacher | + | teacher1 | c5 | teacher | + | student1 | c1 | student | + | student1 | c2 | student | + | student1 | c4 | student | + And I log in as "admin" + And I follow "Course 2" + And I turn editing mode on + And I click on "Edit settings" "link" in the "Administration" "block" + And I set the following fields to these values: + | Allow guest access | Yes | + And I press "Save changes" + And I set the following administration settings values: + | Show all courses | 1 | + And I log out + + @javascript + Scenario: As an anonymous user I expand the courses node to see courses. + When I should see "You are not logged in." in the ".logininfo" "css_element" + And I should see "Home" in the "Navigation" "block" + And I should see "Courses" in the "Navigation" "block" + And I expand "Courses" node + And I should see "cat1" in the "Navigation" "block" + And I should see "cat2" in the "Navigation" "block" + And I should not see "cat3" in the "Navigation" "block" + And I expand "cat1" node + And I expand "cat2" node + And I should see "cat21" in the "Navigation" "block" + And I expand "cat21" node + And I should see "cat211" in the "Navigation" "block" + And I expand "cat211" node + Then I should see "c1" in the "Navigation" "block" + And I should see "c2" in the "Navigation" "block" + And I should see "c3" in the "Navigation" "block" + And I should see "c4" in the "Navigation" "block" + And I should not see "c5" in the "Navigation" "block" + And I should not see "c6" in the "Navigation" "block" + And navigation node "c1" should not be expandable + And navigation node "c2" should not be expandable + And navigation node "c3" should not be expandable + And navigation node "c4" should not be expandable + + @javascript + Scenario: As the admin user I expand the courses and category nodes to see courses. + When I log in as "admin" + And I should see "Home" in the "Navigation" "block" + And I should see "Courses" in the "Navigation" "block" + And I expand "Courses" node + And I should see "cat1" in the "Navigation" "block" + And I should see "cat2" in the "Navigation" "block" + And I should see "cat3" in the "Navigation" "block" + And I expand "cat1" node + And I expand "cat2" node + And I expand "cat3" node + And I should see "cat21" in the "Navigation" "block" + And I expand "cat21" node + And I should see "cat211" in the "Navigation" "block" + And I expand "cat211" node + Then I should see "c1" in the "Navigation" "block" + And I should see "c2" in the "Navigation" "block" + And I should see "c3" in the "Navigation" "block" + And I should see "c4" in the "Navigation" "block" + And I should see "c5" in the "Navigation" "block" + And I should see "c6" in the "Navigation" "block" + And I should see "c7" in the "Navigation" "block" + And I should see "c8" in the "Navigation" "block" + And navigation node "c1" should be expandable + And navigation node "c2" should be expandable + And navigation node "c3" should be expandable + And navigation node "c4" should be expandable + And navigation node "c5" should be expandable + And navigation node "c6" should be expandable + And navigation node "c7" should be expandable + And navigation node "c8" should be expandable + + @javascript + Scenario: As teacher1 I expand the courses and category nodes to see courses. + When I log in as "teacher1" + And I should see "Home" in the "Navigation" "block" + And I should see "Courses" in the "Navigation" "block" + And I expand "Courses" node + And I should see "cat1" in the "Navigation" "block" + And I should see "cat2" in the "Navigation" "block" + And I should not see "cat3" in the "Navigation" "block" + And I expand "cat1" node + And I expand "cat2" node + And I should see "cat21" in the "Navigation" "block" + And I expand "cat21" node + And I should see "cat211" in the "Navigation" "block" + And I expand "cat211" node + Then I should see "c1" in the "Navigation" "block" + And I should see "c2" in the "Navigation" "block" + And I should see "c3" in the "Navigation" "block" + And I should see "c4" in the "Navigation" "block" + And I should see "c5" in the "Navigation" "block" + And I should not see "c6" in the "Navigation" "block" + And I should not see "c7" in the "Navigation" "block" + And I should not see "c8" in the "Navigation" "block" + And navigation node "c1" should be expandable + And navigation node "c2" should be expandable + And navigation node "c3" should be expandable + And navigation node "c4" should not be expandable + And navigation node "c5" should be expandable + + @javascript + Scenario: As student1 I expand the courses and category nodes to see courses. + When I log in as "student1" + And I should see "Home" in the "Navigation" "block" + And I should see "Courses" in the "Navigation" "block" + And I expand "Courses" node + And I should see "cat1" in the "Navigation" "block" + And I should see "cat2" in the "Navigation" "block" + And I should not see "cat3" in the "Navigation" "block" + And I expand "cat1" node + And I expand "cat2" node + And I should see "cat21" in the "Navigation" "block" + And I expand "cat21" node + And I should see "cat211" in the "Navigation" "block" + And I expand "cat211" node + Then I should see "c1" in the "Navigation" "block" + And I should see "c2" in the "Navigation" "block" + And I should see "c3" in the "Navigation" "block" + And I should see "c4" in the "Navigation" "block" + And I should not see "c5" in the "Navigation" "block" + And I should not see "c6" in the "Navigation" "block" + And I should not see "c7" in the "Navigation" "block" + And I should not see "c8" in the "Navigation" "block" + And navigation node "c1" should be expandable + And navigation node "c2" should be expandable + And navigation node "c3" should not be expandable + And navigation node "c4" should be expandable + + @javascript + Scenario: As guest I expand the courses and category nodes to see courses. + When I log in as "guest" + And I should see "Home" in the "Navigation" "block" + And I should see "Courses" in the "Navigation" "block" + And I expand "Courses" node + And I should see "cat1" in the "Navigation" "block" + And I should see "cat2" in the "Navigation" "block" + And I should not see "cat3" in the "Navigation" "block" + And I expand "cat1" node + And I expand "cat2" node + And I should see "cat21" in the "Navigation" "block" + And I expand "cat21" node + And I should see "cat211" in the "Navigation" "block" + And I expand "cat211" node + Then I should see "c1" in the "Navigation" "block" + And I should see "c2" in the "Navigation" "block" + And I should see "c3" in the "Navigation" "block" + And I should see "c4" in the "Navigation" "block" + And I should not see "c5" in the "Navigation" "block" + And I should not see "c6" in the "Navigation" "block" + And I should not see "c7" in the "Navigation" "block" + And I should not see "c8" in the "Navigation" "block" + And navigation node "c1" should not be expandable + And navigation node "c2" should be expandable + And navigation node "c3" should not be expandable + And navigation node "c4" should not be expandable \ No newline at end of file diff --git a/lang/en/cache.php b/lang/en/cache.php index 6d4eab72f76..603746947aa 100644 --- a/lang/en/cache.php +++ b/lang/en/cache.php @@ -51,6 +51,7 @@ $string['cachedef_groupdata'] = 'Course group information'; $string['cachedef_htmlpurifier'] = 'HTML Purifier - cleaned content'; $string['cachedef_langmenu'] = 'List of available languages'; $string['cachedef_locking'] = 'Locking'; +$string['cachedef_navigation_expandcourse'] = 'Navigation expandable courses'; $string['cachedef_observers'] = 'Event observers'; $string['cachedef_plugin_manager'] = 'Plugin info manager'; $string['cachedef_questiondata'] = 'Question definitions'; diff --git a/lib/db/caches.php b/lib/db/caches.php index c8820730764..c2f99cfd767 100644 --- a/lib/db/caches.php +++ b/lib/db/caches.php @@ -212,4 +212,14 @@ $definitions = array( 'staticaccelerationsize' => 2, // Should not be required for more than one user at a time. 'ttl' => 3600, ), + + // A simple cache that stores whether a user can expand a course in the navigation. + // The key is the course ID and the value will either be 1 or 0 (cast to bool). + // The cache isn't always up to date, it should only ever be used to save a costly call to + // can_access_course on the first page request a user makes. + 'navigation_expandcourse' => array( + 'mode' => cache_store::MODE_SESSION, + 'simplekeys' => true, + 'simpledata' => true + ) ); diff --git a/lib/navigationlib.php b/lib/navigationlib.php index fbabd289745..ad5474d7d19 100644 --- a/lib/navigationlib.php +++ b/lib/navigationlib.php @@ -1001,6 +1001,8 @@ class global_navigation extends navigation_node { protected $expansionlimit = 0; /** @var int userid to allow parent to see child's profile page navigation */ protected $useridtouseforparentchecks = 0; + /** @var cache_session A cache that stores information on expanded courses */ + protected $cacheexpandcourse = null; /** Used when loading categories to load all top level categories [parent = 0] **/ const LOAD_ROOT_CATEGORIES = 0; @@ -1166,6 +1168,14 @@ class global_navigation extends navigation_node { // Not enrolled, can't view, and hasn't switched roles if (!can_access_course($course)) { + if ($coursenode->isexpandable === true) { + // Obviously the situation has changed, update the cache and adjust the node. + // This occurs if the user access to a course has been revoked (one way or another) after + // initially logging in for this session. + $this->get_expand_course_cache()->set($course->id, 1); + $coursenode->isexpandable = true; + $coursenode->nodetype = self::NODETYPE_BRANCH; + } // Very ugly hack - do not force "parents" to enrol into course their child is enrolled in, // this hack has been propagated from user/view.php to display the navigation node. (MDL-25805) if (!$this->current_user_is_parent_role()) { @@ -1175,6 +1185,15 @@ class global_navigation extends navigation_node { } } + if ($coursenode->isexpandable === false) { + // Obviously the situation has changed, update the cache and adjust the node. + // This occurs if the user has been granted access to a course (one way or another) after initially + // logging in for this session. + $this->get_expand_course_cache()->set($course->id, 1); + $coursenode->isexpandable = true; + $coursenode->nodetype = self::NODETYPE_BRANCH; + } + // Add the essentials such as reports etc... $this->add_course_essentials($coursenode, $course); // Extend course navigation with it's sections/activities @@ -2373,6 +2392,8 @@ class global_navigation extends navigation_node { // This is the name that will be shown for the course. $coursename = empty($CFG->navshowfullcoursenames) ? $shortname : $fullname; + // Can the user expand the course to see its content. + $canexpandcourse = true; if ($issite) { $parent = $this; $url = null; @@ -2392,6 +2413,8 @@ class global_navigation extends navigation_node { } else { $parent = $this->rootnodes['courses']; $url = new moodle_url('/course/view.php', array('id'=>$course->id)); + // They can only expand the course if they can access it. + $canexpandcourse = $this->can_expand_course($course); if (!empty($course->category) && $this->show_categories($coursetype == self::COURSE_MY)) { if (!$this->is_category_fully_loaded($course->category)) { // We need to load the category structure for this course @@ -2408,11 +2431,18 @@ class global_navigation extends navigation_node { } $coursenode = $parent->add($coursename, $url, self::TYPE_COURSE, $shortname, $course->id); - $coursenode->nodetype = self::NODETYPE_BRANCH; $coursenode->hidden = (!$course->visible); // We need to decode &'s here as they will have been added by format_string above and attributes will be encoded again // later. $coursenode->title(str_replace('&', '&', $fullname)); + if ($canexpandcourse) { + // This course can be expanded by the user, make it a branch to make the system aware that its expandable by ajax. + $coursenode->nodetype = self::NODETYPE_BRANCH; + $coursenode->isexpandable = true; + } else { + $coursenode->nodetype = self::NODETYPE_LEAF; + $coursenode->isexpandable = false; + } if (!$forcegeneric) { $this->addedcourses[$course->id] = $coursenode; } @@ -2420,6 +2450,45 @@ class global_navigation extends navigation_node { return $coursenode; } + /** + * Returns a cache instance to use for the expand course cache. + * @return cache_session + */ + protected function get_expand_course_cache() { + if ($this->cacheexpandcourse === null) { + $this->cacheexpandcourse = cache::make('core', 'navigation_expandcourse'); + } + return $this->cacheexpandcourse; + } + + /** + * Checks if a user can expand a course in the navigation. + * + * We use a cache here because in order to be accurate we need to call can_access_course which is a costly function. + * Because this functionality is basic + non-essential and because we lack good event triggering this cache + * permits stale data. + * In the situation the user is granted access to a course after we've initialised this session cache the cache + * will be stale. + * It is brought up to date in only one of two ways. + * 1. The user logs out and in again. + * 2. The user browses to the course they've just being given access to. + * + * Really all this controls is whether the node is shown as expandable or not. It is uber un-important. + * + * @param stdClass $course + * @return bool + */ + protected function can_expand_course($course) { + $cache = $this->get_expand_course_cache(); + $canexpand = $cache->get($course->id); + if ($canexpand === false) { + $canexpand = isloggedin() && can_access_course($course); + $canexpand = (int)$canexpand; + $cache->set($course->id, $canexpand); + } + return ($canexpand === 1); + } + /** * Returns true if the category has already been loaded as have any child categories * From 7a684b732ce2791a737736ece6397dc4dbf6c156 Mon Sep 17 00:00:00 2001 From: Sam Hemelryk Date: Thu, 5 Jun 2014 08:29:42 +1200 Subject: [PATCH 19/32] MDL-45524 navigation: fixed non-expandable node behat tests --- blocks/navigation/tests/behat/view_my_courses.feature | 2 -- 1 file changed, 2 deletions(-) diff --git a/blocks/navigation/tests/behat/view_my_courses.feature b/blocks/navigation/tests/behat/view_my_courses.feature index 443edc40668..ceeb581ca0a 100644 --- a/blocks/navigation/tests/behat/view_my_courses.feature +++ b/blocks/navigation/tests/behat/view_my_courses.feature @@ -87,8 +87,6 @@ Feature: View my courses in navigation block When I expand "cat3" node And I expand "cat31" node And I expand "cat1" node - And I should see "c1" in the "Navigation" "block" - And I expand "c1" node Then I should see "cat1" in the "Navigation" "block" And I should see "cat2" in the "Navigation" "block" And I should see "cat3" in the "Navigation" "block" From 1d20e997a05c88c1ac3b4a7fa21732e247ac486e Mon Sep 17 00:00:00 2001 From: Jenny Gray Date: Thu, 5 Jun 2014 15:47:30 +0100 Subject: [PATCH 20/32] MDL-45846 Libraries custom user agent device detection unit test added --- lib/classes/useragent.php | 5 +++++ lib/tests/theme_config_test.php | 27 +++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/lib/classes/useragent.php b/lib/classes/useragent.php index 39c3ed811f6..81094ba1ef5 100644 --- a/lib/classes/useragent.php +++ b/lib/classes/useragent.php @@ -122,6 +122,11 @@ class core_useragent { if (!empty($CFG->devicedetectregex)) { $this->devicetypecustoms = json_decode($CFG->devicedetectregex, true); } + if ($this->devicetypecustoms === null) { + // This shouldn't happen unless you're hardcoding the config value. + debugging('Config devicedetectregex is not valid JSON object'); + $this->devicetypecustoms = array(); + } if ($forceuseragent !== null) { $this->useragent = $forceuseragent; } else if (!empty($_SERVER['HTTP_USER_AGENT'])) { diff --git a/lib/tests/theme_config_test.php b/lib/tests/theme_config_test.php index 3f88d227ace..99ab6a98423 100644 --- a/lib/tests/theme_config_test.php +++ b/lib/tests/theme_config_test.php @@ -126,4 +126,31 @@ class core_theme_config_testcase extends advanced_testcase { } } } + + /** + * This function will test custom device detection regular expression setting. + */ + public function test_devicedetectregex() { + global $CFG; + + $this->resetAfterTest(); + + // Check config currently empty. + $this->assertEmpty(json_decode($CFG->devicedetectregex)); + $this->assertTrue(core_useragent::set_user_device_type('tablet')); + $exceptionoccured = false; + try { + core_useragent::set_user_device_type('featurephone'); + } catch (moodle_exception $e) { + $exceptionoccured = true; + } + $this->assertTrue($exceptionoccured); + + // Set config and recheck. + $config = array('featurephone' => '(Symbian|MIDP-1.0|Maemo|Windows CE)'); + $CFG->devicedetectregex = json_encode($config); + core_useragent::instance(true); // Clears singleton cache. + $this->assertTrue(core_useragent::set_user_device_type('tablet')); + $this->assertTrue(core_useragent::set_user_device_type('featurephone')); + } } From 272878cab9df03a6e551f8e706918255a68d1d28 Mon Sep 17 00:00:00 2001 From: Eric Merrill Date: Tue, 10 Jun 2014 05:57:19 -0400 Subject: [PATCH 21/32] MDL-45763 question: Correct random question text if set to true or false --- question/type/random/questiontype.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/question/type/random/questiontype.php b/question/type/random/questiontype.php index fbb85a75578..97ea6e2ada6 100644 --- a/question/type/random/questiontype.php +++ b/question/type/random/questiontype.php @@ -151,12 +151,13 @@ class qtype_random extends question_type { public function save_question($question, $form) { $form->name = ''; - if ($form->questiontext) { - $form->questiontext = '1'; + + // In case someone set the question text to true/false in the old style, set it properly. + if ($form->questiontext['text']) { + $form->questiontext['text'] = '1'; } else { - $form->questiontext = '0'; + $form->questiontext['text'] = '0'; } - $form->questiontextformat = FORMAT_MOODLE; $form->tags = array(); // Name is not a required field for random questions, but From af21acd4723d772fad30e39f1229d126d6a1ba7f Mon Sep 17 00:00:00 2001 From: James McLean Date: Tue, 6 May 2014 14:24:28 +0800 Subject: [PATCH 22/32] MDL-45418 Files: Adding publisher docs to Filetypes --- lib/filelib.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/filelib.php b/lib/filelib.php index e4efbf49bc3..3ad65bcfd63 100644 --- a/lib/filelib.php +++ b/lib/filelib.php @@ -1507,7 +1507,6 @@ function &get_mimetypes_array() { 'pic' => array ('type'=>'image/pict', 'icon'=>'image', 'groups'=>array('image'), 'string'=>'image'), 'pict' => array ('type'=>'image/pict', 'icon'=>'image', 'groups'=>array('image'), 'string'=>'image'), 'png' => array ('type'=>'image/png', 'icon'=>'png', 'groups'=>array('image', 'web_image'), 'string'=>'image'), - 'pps' => array ('type'=>'application/vnd.ms-powerpoint', 'icon'=>'powerpoint', 'groups'=>array('presentation')), 'ppt' => array ('type'=>'application/vnd.ms-powerpoint', 'icon'=>'powerpoint', 'groups'=>array('presentation')), 'pptx' => array ('type'=>'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'icon'=>'powerpoint'), @@ -1517,8 +1516,9 @@ function &get_mimetypes_array() { 'ppam' => array ('type'=>'application/vnd.ms-powerpoint.addin.macroEnabled.12', 'icon'=>'powerpoint'), 'ppsx' => array ('type'=>'application/vnd.openxmlformats-officedocument.presentationml.slideshow', 'icon'=>'powerpoint'), 'ppsm' => array ('type'=>'application/vnd.ms-powerpoint.slideshow.macroEnabled.12', 'icon'=>'powerpoint'), - 'ps' => array ('type'=>'application/postscript', 'icon'=>'pdf'), + 'pub' => array ('type'=>'application/x-mspublisher', 'icon'=>'publisher', 'groups'=>array('presentation')), + 'qt' => array ('type'=>'video/quicktime', 'icon'=>'quicktime', 'groups'=>array('video','web_video'), 'string'=>'video'), 'ra' => array ('type'=>'audio/x-realaudio-plugin', 'icon'=>'audio', 'groups'=>array('audio','web_audio'), 'string'=>'audio'), 'ram' => array ('type'=>'audio/x-pn-realaudio-plugin', 'icon'=>'audio', 'groups'=>array('audio'), 'string'=>'audio'), From 5fd16a3761e9c315e9900cf50912bb2f674a01bc Mon Sep 17 00:00:00 2001 From: Jason Fowler Date: Wed, 7 May 2014 13:38:46 +0800 Subject: [PATCH 23/32] MDL-45418 Files: Adding upgrade steps for publisher docs Conflicts: lib/db/upgrade.php lib/db/upgradelib.php version.php --- lib/db/upgrade.php | 7 +++++++ lib/db/upgradelib.php | 22 +++++++++++++++++++++- version.php | 2 +- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/lib/db/upgrade.php b/lib/db/upgrade.php index 00c7d651ef3..df8786ab514 100644 --- a/lib/db/upgrade.php +++ b/lib/db/upgrade.php @@ -2984,5 +2984,12 @@ function xmldb_main_upgrade($oldversion) { upgrade_main_savepoint(true, 2013111803.01); } + if ($oldversion < 2013111803.05) { + // Fixing possible wrong MIME type for Publisher files. + $filetypes = array('%.pub'=>'application/x-mspublisher'); + upgrade_mimetypes($filetypes); + upgrade_main_savepoint(true, 2013111803.05); + } + return true; } diff --git a/lib/db/upgradelib.php b/lib/db/upgradelib.php index 31637f52d0b..ddb84a3e7ef 100644 --- a/lib/db/upgradelib.php +++ b/lib/db/upgradelib.php @@ -347,4 +347,24 @@ function upgrade_course_modules_sequences() { unset($sections); // Note that we don't need to reset course cache here because it is reset automatically after upgrade. -} \ No newline at end of file +} + +/** + * Updates the mime-types for files that exist in the database, based on their + * file extension. + * + * @param array $filetypes Array with file extension as the key, and mimetype as the value + */ +function upgrade_mimetypes($filetypes) { + global $DB; + $select = $DB->sql_like('filename', '?', false); + foreach ($filetypes as $extension=>$mimetype) { + $DB->set_field_select( + 'files', + 'mimetype', + $mimetype, + $select, + array($extension) + ); + } +} diff --git a/version.php b/version.php index fc7e2100956..545573be598 100644 --- a/version.php +++ b/version.php @@ -29,7 +29,7 @@ defined('MOODLE_INTERNAL') || die(); -$version = 2013111803.04; // 20131118 = branching date YYYYMMDD - do not modify! +$version = 2013111803.05; // 20131118 = branching date YYYYMMDD - do not modify! // RR = release increments - 00 in DEV branches. // .XX = incremental changes. From 9fca4525dcd7390e8aa22745065c9826ff26f7e3 Mon Sep 17 00:00:00 2001 From: Barbara Ramiro Date: Tue, 10 Jun 2014 22:30:57 +0800 Subject: [PATCH 24/32] MDL-45943: Replacement for publisher icons --- pix/f/publisher-128.png | Bin 0 -> 13866 bytes pix/f/publisher-24.png | Bin 0 -> 2426 bytes pix/f/publisher-256.png | Bin 0 -> 31539 bytes pix/f/publisher-32.png | Bin 0 -> 3129 bytes pix/f/publisher-48.png | Bin 0 -> 4780 bytes pix/f/publisher-64.png | Bin 0 -> 6232 bytes pix/f/publisher-72.png | Bin 0 -> 7259 bytes pix/f/publisher-80.png | Bin 0 -> 8089 bytes pix/f/publisher-96.png | Bin 0 -> 9958 bytes pix/f/publisher.png | Bin 0 -> 1733 bytes 10 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 pix/f/publisher-128.png create mode 100644 pix/f/publisher-24.png create mode 100644 pix/f/publisher-256.png create mode 100644 pix/f/publisher-32.png create mode 100644 pix/f/publisher-48.png create mode 100644 pix/f/publisher-64.png create mode 100644 pix/f/publisher-72.png create mode 100644 pix/f/publisher-80.png create mode 100644 pix/f/publisher-96.png create mode 100644 pix/f/publisher.png diff --git a/pix/f/publisher-128.png b/pix/f/publisher-128.png new file mode 100644 index 0000000000000000000000000000000000000000..d664aa9fc43cbcc7c1cae6ccc998285363480359 GIT binary patch literal 13866 zcmbVzbyOVRwk9<09^5UsyF=ra;K2#**1?_N5G+7&2$rD1oyOe>4xzCSys;qN!0@~G z-8b{cTQh4-tyOmF+j73McU7%AyW-wxDdS*LU?LzO;Hatqbzb&i|E%b!FWUiWtBIE# zIY`k6r0Z@6^0o4^MUb;`e{V~t>S|?gt7B_re-ZUU8IPZp2M-@N zFORG1KmGa_+8d-}`@h}zAJN`={vNhGI=0^KAH1wz#>0;BKf*8E{of7!1AOsDT-(d> zWl*eKfbP~GTy5Pzsz51*mn+;hjyB@FVxqi!d?JFpBK*9+H;qvYl8O7|~@#U1|#4|wJNUp@b~tj+%qYdkN`@ca`V|3|p|r|BgI|2h2c z;D0&!@AR>Cd&wEEm*kLIALK+p;5SkQ%IW#7odjcirm_z{sH;5BJ}b}_C}{_6wI*`W zlC8g6NkQvGMoW{W!QY{x@`q+>=B@m&%;Wq*m7B8pV~o&?NCkjMW$6h(B|@VNQfqKa z5~N5H%z>SBR`onSgC8n89`eo(X~tlZHHMXkM@N-M50B?ng7nBs=5-rczGW6R{okYf zKxQM8lh~+eXaosE)k!(OkDpgXz}{C9p?`ys=32M}bQiwNl+SGthHoA0@*ut&SX<^@ z%-M2w!a4TV)P*_DI&>B_XO9&%mZ2;w)me(a8d+?2)W}}-xAxmhcz?3S=q~Qz_ZJI% zqlz4f_~rLR1_m$=jJbtCldRP$+u4IG%bLhr+Z+@VS5#7>z~~{>adx2?dU#4p)^?kO zhs~nNsWoFMH__i(i$l&(-9#s=%XUn>>Vj)i9NTNY4n#QiW*G-b#`V=|C0caFj*YPm zK8p8)Ha=xKB!u`qKPH&ZP`kJ93(3%8qOfW%m|jc;ws-w`$d-6zc)dyTEo|AYaTpC} zpewFtU2lR^Q+&Dqgp+?THB{Kg9OmT1)=4m*$R9QWz|Kq5>LY zec-{g60!YVH4#~bI4akwT$eX)H|nh{@?jG*#@^bEbarN;^Yt&w3}W@2>3j*#zhy+T zM2ko2j!mTvZK2PaqD>zpI*9Kk??Kj? z2d(-5FyU70AOD7!^JnP(3Vgo(J28xfe!WBz{yN($ws$nIMl&EOR^b@ybAkN4>VhpoX4A6_ZhS;z^)(cv?gwWd#b1JD1095j1 zJhzpof!vm!hQ8KT$3^QhYZCM5`TI}>$n(%1GnI>*g0WW*>2{_8K*k!;hOC(g@$iL( zC#m3EK7U)iqY5;UlltEC(5Ofrr(3O?MZohpci~WB`t-T*heQq20lha0AFG2`^0cGP zPJxi9!i`baZ67KLZ#9YpTJu)&7!kL3NEX$cg2i>HcNSz)3E%>XzJhWCCPL3i!Fzm1 z*Nml(`QoTtG{e>01_^l~=JlWmonP)`&Zmwk<%Yr6mrWBw~vf z@B>FW_sTbY+FmA9cu�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 literal 0 HcmV?d00001 diff --git a/pix/f/publisher-72.png b/pix/f/publisher-72.png new file mode 100644 index 0000000000000000000000000000000000000000..b2bbe079799a2fd394e166e99b3f2d325050aa22 GIT binary patch literal 7259 zcmbVxWmHsuyY>hOLw6$*f=CU`%+L(o-AE20H84Yi2uKJD=+NDrqJT&U2m?rmAT24~ zsldVKdH&~pKb&>mwcfqf-oLu8yYIa}>{mKk%ESZ=1ONblSXD(q?`~B2djoOro`$>i z%69`jO3?(R@8N**wef-jO4Ps;Y7X;-Z#rAKbOf+>^ zU>;s@7EyiyK05(1K^8F)enAldhzNw2MMywU03;{`5)kJT6o86~Lj?p`{&TV2Y4fso zfa)nI{YTf`N{Y=1g+f3imbt%o;CitWzQf4ks@(A4~I!S2Za1nMqiAU_)fNRVFuEZ2Vcb5+b_J7ECvHRZ@{RQ4x1J(9&zDtUYtAdA} zw;S9YrK%vsc6Y*W?`#hh11k!O3xX8|z(N9IU_n87h=`CpOavw%qNFGf78CnN#{a}s z5>gV92P?r8!7!MhprSBX6arCz34;Yig%#z+VWR(VRo#&&8+SYSKYE?-^!|q{|G#pf zFfX_b%EQaR!^8ET3ea)#KzSgYJP<4}eNlcv7EK#FXZOE5e-rd?e-+?f&OUH^B`*&* zmVZSU>ij=gAO`t=dH!#%{r^wYKzGJ~{+7r8RWAQ*-PPdV>3VB@O4W*x3=^MgX#s6or+*s42t{BpI=_{_YogZBfuX$un z8$&)G&A3#j(mfb2*yRIW7yvEtP*>(%xxNdJH34^%XUrpl3@9?t!;pAQWglty%bg@91%^vuqlGdh0Lj|6#*w|za|#CDrt zSWdvTxqB3A=3zDk$H~}*7eQOPGdop4Uk=>OW=|w1`ZwEPar>A?g!3Q23z4?t08r#I zB^~MIQbF(lSp@D;x~P*xN>pxWW?Z#3@a?E-P|&r*&g}Ciwsmxag)wPCaR-9D>ocxo z-9KoxBEjcL2!%u}gZ}Jg$H|TH^mMjcI$){q5N@t!pZ%37mMWYfIU^+uaPMFq4O)>1 zuCZlH=`ooGfy&39XVI|_stbq8X`%PkjJmKwusaJVo8Y@NJM(SWZ>rq5T3?beyOJ@l zv#I&9t4*`FXnec=VJ(Jd*xFj<&p40C6QVrEioS6oep9|Q=UYyDo-GxrARU|5gZt8{ zz1T&PAtPvWk0Y;!2$q;g?ZJm0nzN+2Zqd zabLoKAnLK~hv5xX@c;&y(BqY<_~qZhHE&hz^F$*?Wq%*rGZ3V`x*nUJsQgVZa&9TY z#=g?zKiNI~87`6URt5Ls)(Ly|1H--Kmue`=nRJ_#@ZA7cXTGfiYolGeJtlC7iNkah zmNdov0 z_9tAwW(n{5al+`)2#_gBQ}y5>&pNjG!t~dEQ-q@<+nR`?MRKw@W0e@~_x@^HHuU|hX; z!udj&aD76kZq}oH{v&(FpzV0Err+-#WJrG>uW&V;~yA~D{M)X<|0#5 zRd5wH{c@$%B#qQ^1Zo%Y4-f00?28gErxuSqr{u^LTSds@dF)toH0VU|!K9jy?OzZB^uLy!b+nKYh-u10}vC5jKw|zm5a=S1{VH zEeQxP=|~F&;mSOKzL|0;wjRk6AG-_=GJdc1NTc!bwnF45?MCTs3mQSDoCl&Dzx{p( zc9la$CDsUkWzb;^Y2CiiE?n|I651>uDC3yCSvRS0iPAO{+$}&qg7ApP+*mwUHQ30E z9r~fRRLgT~jj^@RTIk1(Ql=c7qofRPI=whn;le!|wtU_G^b-vsLq3pFR!o8jvx^^P z9pJDoit6Hj{gsWJ$#08Z@??&%m<_o9KI(u%f|T(%iv8zNMUlQkS=fNOag432O5>ig z2wM4Nn5@s5#1!O;ES;~Fqd)yS3!xOYe$Zd40Z8zD_sl=ij zGAFwzT2$|pt+K>!sb1%jB{AfDba}{OJJ@Phv+`5DT1oo@e#y8hg?|BpnUM}VIl)Za z8S4>2E?sTMQ9tg>-_HrDVK&{)NrVphyw>Gw>)r)HT7D0Wu|Bo2$1Ieym*_4--o$%@ zFy?AuUzCI@a!4}2NU=XYtavb$D@D~KP{*l}8_{d;&mhtj0E}gA{+Pw#Hj3)P>ZO_p z!;i_wroEr?nCT$8GnsV`U^tl>fUWrC^&UfkA^r!zdw1uyJT|EGD{cNJvOu*lJQ@E+ z8=-H*+0fS>mF+~xPTfBT1A>yY4;5d0ok4w0xay{s?64-|VtP5q%90}5Xrt?rA<~T# zN}!x)7_ArVCE=*}1PhL3KXGOh2QG8q=adSUu=WHbI)+5tZzJopTWNxiGN?&5vdpXx z^|L?PvD)13zB(h>*~*Lxb;ZTQL>=aoJjG(@)SIi)EAroKF{~L%6Lm@Qsd0115Yt+| zK8>ZZ5s+ff>HRjKwqaSf#U0ZXq-*^Y0$z}_gC_>v_uXWg3+|-=p8$~Lvi5#Vjc1iT zdvDAK0^+bAJPb}PGz~$tJQU}D`i5NVng6;00bv*`3)Q0phF`56e|VK^!B}#eKoZi^ zl@(Iy7q{2*asx$n!tyB{xz6d4uUADOIBpqTb7HIK>8C$%Rm!Z5>hEF9!>Q_dewM@z z>B5|t->f7X(%PLDS7j%C0i;bKSI2^JdKqlxWa^^m;T7dRyDTs=`EO7hSZYYnEwS+cBfGIm!ty zwzAs+Zgq5Fp}F=f;Yp8{KD%~R;Ar)A8Mv%mJ?7-J+@aUztbJ>7G237jBdf2kiFlbL zoBmd8bdKU7u8L2uiO010rNTXyuCdte#DD`Ah_gB4t8;s(E`rKpVQq>^P+-uXel6^C za!pSp$G5|y1Hf}+C2bV`gfPYm7P!HL@*a+mVR*aYy;^4|ib7+5DIJ^SRNvG#sE zrN;D)PkNfYv~hj5erf#-`TL~gZzrKE4~q>Juv8iWY_g0`q|<4I#xoDoMBZ(F@Mq@P zbmh=?0K2Dueyn=+TSW1ka8|-|{ySYm&C@9M;F5#RGP_^FKgr|=`KD3+L=llCY%R2) z#Pwjqmb8$qjB_x9=?TmHgY)g*)mNok$9xqP({RDk)S&cwd#W+K8FkihBA@Ad33A21 zUXX>uMK+&U}Jo{m^Jou(y~*4ICy z%Z{bxu6fT@!D`;kEdlc#pu;>`v1hwaSwEc&qUy9xqjpOmIc)oU)=p?#^HjfSAuJMj zQyKV{3HC`OP6IQVk=Y4;E$zyoRQ=PJ~J4_lHV_{x0zf(oXr2C1=pr9U_u@~OW5{SX^Z{WaVx?_ZoLZMdOBfLBx?8B;W;s-ozf=j zE^a{rgMI9WP(*K3$jnDZWFN=3mCc`|+HY0_@XygJ>`l&>X1<ji_86GWjsC_gZ*?Cco&Z=KGgRRFPUmDhc?! z)pC49%5}|U5o||FriM$R*gVknrS*zM)*2}h5!T^6ze;%|S?>e>!AQB&7wqR|3|~p@ zrfhbO%4P@08)|;RBi}psVI?sq)7P=h?6`-IUpCG3+783b2L&>e28L{oB0*%wd;7z0 zKa<+9hyK~SR4=4g!;?e58+2J%0_XG^I&#yp-!k4Ssf87jbz0)1YE=l{*T$_hkj|eG zNu3Cz3kpI0eYit?J`KZ91VNS#zlgMk`X@L{jQBFtwfqTqbK>KFa``v<4uX16D~Ha_ znXD<70m3EIf%@gi63?oOt0qZ|Vu~m}C-cV4M`OvRw^B`WRoZ7M^JjX*i8^tilO6O- zI+Za3>>OY(#JYRyxTAxSmUzJyQLEMbJnYJT=v*Xgdjq5+zkU9>#gMh!M|5Lx1gjhx zxRy*ysivBv{w}gjy=d@##pKC~7tolTKU%Dht10${+5Gf!vyhBPxQ#HUM_qJBpZO+k zhy#eWkSoYz>QCq5&E8i}hR2BcE52UG4@dd7s%5YxCdKBx2%P4h`L)3|?vhFw`6eIz zvH9KI6{BTe;f9a&iQx*Bb(SS31UiaAYS0bSZ;$Cr@#FB9MEsi!A5Bzb#1M}}#Yx6H ztCe7u@(@v6;86xL-3S85~^cHRK>Cg6b zWFZerY|@Q;D4bK$l3a&%p4BzFgl;d8=InN5%EqdDwRSw=_bD~lD}{wWdr<&32j&-+ zVTg$yxKuTh4*#Kg<&_xLL!&0PLZx%Yx%~d*XOL&|qFnKmhUya-7*D*(?e{Ld*xe51F8sdFdROG1X69A<*;iGsBth^SeMKx$bVYMZkb32n3e$*dmKCfk8oJc#oC2Y6ol~U%*UR7&u-1Zbv5BLu&NsGuufRtr*sX*Xt|7xd7e=}e+?e| z%Lxr;45hvww+x&23)6<=>4vIS%9Ibjy1A)69+*gb>@Ux+!@LCf$i8$o&}C1?`+t>W zUYdT3DhkknlZwT{J&ZPo9>=aZl%VN5q3?Oe9=U)`efCir?9RiF(o`Pa`><6(rVjwT5|;Pno*&Wf*CkGXu!lxEiySJmnzKb;22Q@l1NEdP*mt;uMB^D_R1Q+JAjYNI(uKyff+ zp^og*=fR=9-i=fVR|?4FwbhW-OXjhhl40iL!LMPZ(P~S;)%TFJiAec83mBJ)jBJt` zb5X3)C#t%p0!pipUp9YM`${a>N+8MkTpaV}$kD{>ZTb7D)CPNo@(w$N{rv!Aa@^t) z#Hr%;K#>6T7aKr5jut0c(NTHUq>1&SFxaDd+lhl`U|^!Z$>tgN>GiYr2_DO+0hxFq zf(DO3A>9Grm#xvm#cc>YFKQY(pzc)#OqVs7ETSn%ZkeW04^>g!O*B>+Ey|Q#`kW(h zD$AuLg$0%o?X1G9JLGrFZSB-N%cB}i@Du^Krv|Xi|U3&jxc3zl%I8=2D9fHGpAPquS$sLDnsEN-muc ziRpR`Gm2TNlw6)vEl!of@YHc?cAcYMJ)LwdG(9=Xjx0kbEB-|9FC1K4CEx2D}HUbvK5bqY|Dy>@+Cxl>-@VOW=KS5s-z+NWNFlfycw7B$al)`c-ED{dp*GM9A2swB(PldAIXNM82(;k2Lp{6$bj1QB5-IqnAR zRH&rdpdb;VC0u52B=7fdA4_eZr*ezW6j-5L_ICRWYXd1hM8kwn#y;4!Eko`noTgt- zVUq4>`deerGyFJ7A{7!JOuBJ!^Z<+iXzSq&T$Gk?oq;+BaV9#L{^X_V7f_fmu+GlD zRq3Tz#X?G-%q|XOL+-yg+h2_T#{Ze>;mv`v%B8*+?#rq75vI*Y;zOBN9iBJt8tjye zOiTqfVXy&+Bf^3Kbw0n?QEh2#ZEug0XPsLO-Uzae3r^I~^1mMaDpKc|x|}IaqILHs zfuex34Q^d_@lsm4ju$OJESE4lJ_#)jeV}r_N}=A&uGQ7fn-C!4q9~cO@6a#Pt?BpG z_Tu$|f^G2y&xZIDU?p)J>v+uQsIEf3&2_az+r@dj%+0U)6Fy(8uqCxv`l0Fla?zkT z-$ZXFwQ{nU6>AQf*ocQg2YESeGc9mmv5F-4gpbVUS{1z~1OcXzmi+>{+Oj4qU`D1R zgC9(IQS?M4C(c&Cw^G_qdf7>Dqj?&K!tz8jXPfO14?rHRE^*h9mgw4BM~e0cFzLto z`ug31hu0bB!#VBNZcoQ|?5GGCe@`u`<;j8i0iY@g?(EwVl{&HI(NOZvV_!=evu0kj zyy|e_J3JD}gRjWp>%H1;D!&)DVCK2I7(2<2m_a%Qh z*AGH6H@J(cXoHgoW~sOM;ozh*R##y!EW41Jz*>w$9I@UIgTKqKy&H|gj>LC(#_FWvjY1 ernYbI(*Y#TLbt9$vKs&X?o(CNQmB@<4*M@9LN~1d literal 0 HcmV?d00001 diff --git a/pix/f/publisher-80.png b/pix/f/publisher-80.png new file mode 100644 index 0000000000000000000000000000000000000000..806c25d05c488922c492a6af2f0437ab88523634 GIT binary patch literal 8089 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 A>i_@% literal 0 HcmV?d00001 From 179515b4de85a03c8f92acba6d1d740bfed8f13a Mon Sep 17 00:00:00 2001 From: Frederic Massart Date: Tue, 3 Jun 2014 15:53:57 +0800 Subject: [PATCH 25/32] MDL-45808 group: Observe the group key policy upon group creation --- group/group_form.php | 8 ++++++-- group/tests/behat/create_groups.feature | 5 +++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/group/group_form.php b/group/group_form.php index a7f15564fca..c29947a1f4c 100644 --- a/group/group_form.php +++ b/group/group_form.php @@ -132,8 +132,12 @@ class group_form extends moodleform { } else if (!empty($idnumber) && groups_get_group_by_idnumber($COURSE->id, $idnumber)) { $errors['idnumber']= get_string('idnumbertaken'); } else if ($data['enrolmentkey'] != '') { - // Prevent the same enrolment key from being used multiple times in course groups. - if ($DB->record_exists('groups', array('courseid' => $COURSE->id, 'enrolmentkey' => $data['enrolmentkey']))) { + $errmsg = ''; + if (!empty($CFG->groupenrolmentkeypolicy) && !check_password_policy($data['enrolmentkey'], $errmsg)) { + // Enforce password policy. + $errors['enrolmentkey'] = $errmsg; + } else if ($DB->record_exists('groups', array('courseid' => $COURSE->id, 'enrolmentkey' => $data['enrolmentkey']))) { + // Prevent the same enrolment key from being used multiple times in course groups. $errors['enrolmentkey'] = get_string('enrolmentkeyalreadyinuse', 'group'); } } diff --git a/group/tests/behat/create_groups.feature b/group/tests/behat/create_groups.feature index 9b149e72e31..61bca5cbb58 100644 --- a/group/tests/behat/create_groups.feature +++ b/group/tests/behat/create_groups.feature @@ -100,6 +100,11 @@ Feature: Organize students into groups And I expand "Users" node And I follow "Groups" When I press "Create group" + And I set the following fields to these values: + | Group name | Group A | + | Enrolment key | badpasswd | + And I press "Save changes" + And I should see "Passwords must have at least 1 digit(s)" And I set the following fields to these values: | Group name | Group A | | Enrolment key | Abcdef-1 | From 677267791aa639a49f0f3b11174384c2e3c8a455 Mon Sep 17 00:00:00 2001 From: Marina Glancy Date: Wed, 11 Jun 2014 12:13:19 +0800 Subject: [PATCH 26/32] MDL-45763 question: fix SQL syntax for Oracle --- .../random/backup/moodle2/restore_qtype_random_plugin.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/question/type/random/backup/moodle2/restore_qtype_random_plugin.class.php b/question/type/random/backup/moodle2/restore_qtype_random_plugin.class.php index 44746315fa1..633d298237c 100644 --- a/question/type/random/backup/moodle2/restore_qtype_random_plugin.class.php +++ b/question/type/random/backup/moodle2/restore_qtype_random_plugin.class.php @@ -109,7 +109,7 @@ class restore_qtype_random_plugin extends restore_qtype_plugin { WHERE qtype = 'random' AND " . $DB->sql_compare_text('questiontext') . " = ? AND id IN (SELECT bi.newitemid - FROM {backup_ids_temp} AS bi + FROM {backup_ids_temp} bi WHERE bi.backupid = ? AND bi.itemname = 'question_created')"; From d66cfec3f060fd68d58d429d12e943bed3af3681 Mon Sep 17 00:00:00 2001 From: Marina Glancy Date: Wed, 11 Jun 2014 12:14:16 +0800 Subject: [PATCH 27/32] MDL-39726 backup: fix SQL syntax for Oracle --- backup/moodle2/restore_stepslib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backup/moodle2/restore_stepslib.php b/backup/moodle2/restore_stepslib.php index aff86c48cb5..ff1a35d2048 100644 --- a/backup/moodle2/restore_stepslib.php +++ b/backup/moodle2/restore_stepslib.php @@ -3578,7 +3578,7 @@ class restore_create_question_files extends restore_execution_step { // Parentitemids of question_createds in backup_ids_temp are the category it is in. // MUST use a recordset, as there is no unique key in the first (or any) column. $catqtypes = $DB->get_recordset_sql("SELECT DISTINCT bi.parentitemid AS categoryid, q.qtype as qtype - FROM {backup_ids_temp} AS bi + FROM {backup_ids_temp} bi JOIN {question} AS q ON q.id = bi.newitemid WHERE bi.backupid = ? AND bi.itemname = 'question_created' From 86fdc9dd647e6c1fe7825a1869b56c4b5e7e943a Mon Sep 17 00:00:00 2001 From: Marina Glancy Date: Wed, 11 Jun 2014 17:16:15 +0800 Subject: [PATCH 28/32] MDL-39726 backup: fix SQL syntax for Oracle --- backup/moodle2/restore_stepslib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backup/moodle2/restore_stepslib.php b/backup/moodle2/restore_stepslib.php index ff1a35d2048..5b02ed5dea4 100644 --- a/backup/moodle2/restore_stepslib.php +++ b/backup/moodle2/restore_stepslib.php @@ -3579,7 +3579,7 @@ class restore_create_question_files extends restore_execution_step { // MUST use a recordset, as there is no unique key in the first (or any) column. $catqtypes = $DB->get_recordset_sql("SELECT DISTINCT bi.parentitemid AS categoryid, q.qtype as qtype FROM {backup_ids_temp} bi - JOIN {question} AS q ON q.id = bi.newitemid + JOIN {question} q ON q.id = bi.newitemid WHERE bi.backupid = ? AND bi.itemname = 'question_created' ORDER BY categoryid ASC", array($this->get_restoreid())); From 1110aed46ad98a3b1d71977e63b83f81e75a67d0 Mon Sep 17 00:00:00 2001 From: Damyon Wiese Date: Wed, 11 Jun 2014 16:14:38 +0800 Subject: [PATCH 29/32] MDL-45763 Question types: Allow saving '0' as question text. --- question/type/questiontypebase.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/question/type/questiontypebase.php b/question/type/questiontypebase.php index 73fd706e3ef..cd5c43423e7 100644 --- a/question/type/questiontypebase.php +++ b/question/type/questiontypebase.php @@ -339,7 +339,10 @@ class question_type { $question->length = $this->actual_number_of_questions($question); $question->penalty = isset($form->penalty) ? $form->penalty : 0; - if (empty($form->questiontext['text'])) { + // The trim call below has the effect of casting any strange values received, + // like null or false, to an appropriate string, so we only need to test for + // missing values. Be careful not to break the value '0' here. + if (!isset($form->questiontext['text'])) { $question->questiontext = ''; } else { $question->questiontext = trim($form->questiontext['text']); From 95ef465948064febc15f4d5d4caed921538ccd25 Mon Sep 17 00:00:00 2001 From: Damyon Wiese Date: Thu, 12 Jun 2014 13:56:36 +0800 Subject: [PATCH 30/32] MDL-42835 Scorm: Fix for JS error because no nodes are selected in the toc. --- mod/scorm/locallib.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mod/scorm/locallib.php b/mod/scorm/locallib.php index ab270f1bde8..ac2753f222d 100644 --- a/mod/scorm/locallib.php +++ b/mod/scorm/locallib.php @@ -1381,7 +1381,8 @@ function scorm_format_duration($duration) { function scorm_get_toc_object($user, $scorm, $currentorg='', $scoid='', $mode='normal', $attempt='', $play=false, $organizationsco=null) { global $CFG, $DB, $PAGE, $OUTPUT; - $modestr = ''; + // Always pass the mode even if empty as that is what is done elsewhere and the urls have to match. + $modestr = '&mode='; if ($mode != 'normal') { $modestr = '&mode='.$mode; } From 6e5c445714cacce065e575bd541968f5258c5160 Mon Sep 17 00:00:00 2001 From: Rajesh Taneja Date: Thu, 12 Jun 2014 14:05:59 +0800 Subject: [PATCH 31/32] MDL-45808 enrol_self: Fixed behat to observe the group key policy Conflicts: enrol/self/tests/behat/self_enrolment.feature --- enrol/self/tests/behat/self_enrolment.feature | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/enrol/self/tests/behat/self_enrolment.feature b/enrol/self/tests/behat/self_enrolment.feature index 7921ec7322d..191916f9988 100644 --- a/enrol/self/tests/behat/self_enrolment.feature +++ b/enrol/self/tests/behat/self_enrolment.feature @@ -64,14 +64,14 @@ Feature: Users can auto-enrol themself in courses where self enrolment is allowe And I press "Create group" And I fill the moodle form with: | Group name | Group 1 | - | Enrolment key | testgroupenrolkey | + | Enrolment key | Test-groupenrolkey1 | And I press "Save changes" And I log out And I log in as "student1" And I follow "Course 1" And I fill the moodle form with: - | Enrolment key | testgroupenrolkey | + | Enrolment key | Test-groupenrolkey1 | And I press "Enrol me" Then I should see "Topic 1" And I should not see "Enrolment options" - And I should not see "Enrol me in this course" \ No newline at end of file + And I should not see "Enrol me in this course" From 89c7782a91e0a16a13f054103f51732dad057fa1 Mon Sep 17 00:00:00 2001 From: "Eloy Lafuente (stronk7)" Date: Thu, 12 Jun 2014 18:59:00 +0200 Subject: [PATCH 32/32] weekly release 2.6.3+ --- version.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/version.php b/version.php index 545573be598..6fb3a794e05 100644 --- a/version.php +++ b/version.php @@ -29,11 +29,11 @@ defined('MOODLE_INTERNAL') || die(); -$version = 2013111803.05; // 20131118 = branching date YYYYMMDD - do not modify! +$version = 2013111803.06; // 20131118 = branching date YYYYMMDD - do not modify! // RR = release increments - 00 in DEV branches. // .XX = incremental changes. -$release = '2.6.3+ (Build: 20140605)'; // Human-friendly version name +$release = '2.6.3+ (Build: 20140613)'; // Human-friendly version name $branch = '26'; // This version's branch. $maturity = MATURITY_STABLE; // This version's maturity level.