$temp->add(new admin_setting_configcheckbox('allowuserblockhiding', new lang_string('allowuserblockhiding', 'admin'), new lang_string('configallowuserblockhiding', 'admin'), 1));
$temp->add(new admin_setting_configcheckbox('allowblockstodock', new lang_string('allowblockstodock', 'admin'), new lang_string('configallowblockstodock', 'admin'), 1));
$temp->add(new admin_setting_configtextarea('custommenuitems', new lang_string('custommenuitems', 'admin'), new lang_string('configcustommenuitems', 'admin'), '', PARAM_TEXT, '50', '10'));
+ $temp->add(new admin_setting_configtextarea(
+ 'customusermenuitems',
+ new lang_string('customusermenuitems', 'admin'),
+ new lang_string('configcustomusermenuitems', 'admin'),
+ 'messages,message|/message/index.php|message
+myfiles,moodle|/user/files.php|download
+mybadges,badges|/badges/mybadges.php|award',
+ PARAM_TEXT,
+ '50',
+ '10'
+ ));
$temp->add(new admin_setting_configcheckbox('enabledevicedetection', new lang_string('enabledevicedetection', 'admin'), new lang_string('configenabledevicedetection', 'admin'), 1));
$temp->add(new admin_setting_devicedetectregex('devicedetectregex', new lang_string('devicedetectregex', 'admin'), new lang_string('devicedetectregex_desc', 'admin'), ''));
$ADMIN->add('themes', $temp);
DAYSECS => get_string('oneday', 'tool_messageinbound'),
WEEKSECS => get_string('oneweek', 'tool_messageinbound'),
YEARSECS => get_string('oneyear', 'tool_messageinbound'),
- '' => get_string('noexpiry', 'tool_messageinbound'),
+ 0 => get_string('noexpiry', 'tool_messageinbound'),
);
$mform->addElement('select', 'defaultexpiration', get_string('defaultexpiration', 'tool_messageinbound'), $options);
$mform->addHelpButton('defaultexpiration', 'defaultexpiration', 'tool_messageinbound');
$subscriptionids = $data->subscriptionids;
foreach ($subscriptionids as $id) {
if ($message = $this->generate_message($id, $eventobj)) {
+ mtrace("Sending message to the user with id " . $message->userto->id . " for the subscription with id $id...");
message_send($message);
+ mtrace("Sent.");
}
}
}
return false;
}
$user = \core_user::get_user($subscription->userid);
+ if (empty($user)) {
+ // User doesn't exist. Should never happen, nothing to do return.
+ return false;
+ }
$context = \context_user::instance($user->id, IGNORE_MISSING);
if ($context === false) {
// User context doesn't exist. Should never happen, nothing to do return.
public function __construct($uniqueid, \moodle_url $url, $courseid = 0, $perpage = 100) {
parent::__construct($uniqueid);
+ $this->set_attribute('id', 'toolmonitorrules_table');
$this->set_attribute('class', 'toolmonitor managerules generaltable generalbox');
- $this->define_columns(array('name', 'description', 'plugin', 'eventname', 'filters', 'manage'));
+ $this->define_columns(array('name', 'description', 'context', 'plugin', 'eventname', 'filters', 'manage'));
$this->define_headers(array(
get_string('name'),
get_string('description'),
+ get_string('context', 'tool_monitor'),
get_string('plugin'),
get_string('eventname'),
get_string('frequency', 'tool_monitor'),
$this->initialbars($total > $pagesize);
}
}
+
+ /**
+ * Generate content for context column.
+ *
+ * @param \tool_monitor\rule $rule rule object
+ *
+ * @return string html used to display the context column field.
+ */
+ public function col_context(\tool_monitor\rule $rule) {
+ return ($rule->courseid == 0) ? get_string('system', 'tool_monitor') : get_string('course');
+ }
}
* @return string to display on the mangesubs page.
*/
protected function render_course_select(rules $renderable) {
- $select = $renderable->get_user_courses_select();
- return $this->render($select);;
+ if ($select = $renderable->get_user_courses_select()) {
+ return $this->render($select);
+ }
}
/**
public function col_select(\tool_monitor\rule $rule) {
global $OUTPUT;
$select = $rule->get_module_select($this->courseid);
+ $select->set_label(get_string('subscribeto', 'tool_monitor', $rule->get_name($this->context)), array('class' => 'accesshide'));
return is_object($select) ? $OUTPUT->render($select) : $select;
}
/**
* Gets a list of courses where the current user can subscribe to rules as a dropdown.
*
- * @return \single_select list of courses.
+ * @return \single_select|bool returns the list of courses, or false if the select box
+ * should not be displayed.
*/
public function get_user_courses_select() {
- $courses = get_user_capability_course('tool/monitor:subscribe', null, true, 'fullname');
+ global $DB;
+
+ // If the number of courses on the site exceed the maximum drop down limit do not display the select box.
+ $numcourses = $DB->count_records('course');
+ if ($numcourses > COURSE_MAX_COURSES_PER_DROPDOWN) {
+ return false;
+ }
+
$options = array(0 => get_string('site'));
- $systemcontext = \context_system::instance();
- foreach ($courses as $course) {
- $options[$course->id] = format_text($course->fullname, array('context' => $systemcontext));
+ if ($courses = get_user_capability_course('tool/monitor:subscribe', null, true, 'fullname')) {
+ foreach ($courses as $course) {
+ $options[$course->id] = format_string($course->fullname, true,
+ array('context' => \context_course::instance($course->id)));
+ }
}
$url = new \moodle_url('/admin/tool/monitor/index.php');
$select = new \single_select($url, 'courseid', $options, $this->courseid);
}
}
+ $subscriptions->close();
+
return $success;
}
$string['allevents'] = 'All events';
$string['allmodules'] = 'All modules';
$string['core'] = 'Core';
+$string['context'] = 'Context';
$string['customisefilters'] = 'Select the frequency of the events';
$string['customisemessage'] = 'Customise the notification message';
$string['currentsubscriptions'] = 'Your current subscriptions';
$string['subdeletesuccess'] = "Subscription successfully removed";
$string['subhelp'] = 'Subscription details';
$string['subhelp_help'] = 'This subscription listens for when the event \'{$a->eventname}\' has been triggered in \'{$a->moduleinstance}\' {$a->frequency} time(s) in {$a->minutes} minute(s).';
+$string['subscribeto'] = 'Subscribe to rule "{$a}"';
+$string['system'] = "System";
$string['taskcleanevents'] = 'Removes any unnecessary event monitor events';
$string['title'] = '{$a->coursename} : {$a->reportname}';
$string['monitor:managerules'] = 'Manage event monitor rules';
| minutes | 1 |
| Message template | The forum post was created. {modulelink} |
And I press "Save changes"
- Then I should see "New rule"
+ Then "New rule" row "Context" column of "toolmonitorrules_table" table should contain "Course"
And I should see "I want a rule to monitor posts created on a forum"
And I should see "Forum"
And I should see "Post created"
| minutes | 1 |
| Message template | The forum post was created. {modulelink} |
And I press "Save changes"
- Then I should see "New rule"
+ Then "New rule" row "Context" column of "toolmonitorrules_table" table should contain "System"
And I should see "I want a rule to monitor posts created on a forum"
And I should see "Forum"
And I should see "Post created"
Given I log in as "teacher1"
And I follow "Course 1"
And I navigate to "Event monitoring" node in "My profile settings"
- And I set the field "courseid" to "Course 1"
- When I set the field "cmid" to "All events"
+ And I set the field "Select a course" to "Course 1"
+ When I set the field "Subscribe to rule \"New rule course level\"" to "All events"
Then I should see "Subscription successfully created"
And "#toolmonitorsubs_r0" "css_element" should exist
Given I log in as "teacher1"
And I follow "Course 1"
And I navigate to "Event monitoring" node in "My profile settings"
- And I set the field "courseid" to "Course 1"
- And I set the field "cmid" to "All events"
+ And I set the field "Select a course" to "Course 1"
+ And I set the field "Subscribe to rule \"New rule course level\"" to "All events"
And I should see "Subscription successfully created"
- When I click on "Delete subscription" "link"
+ When I click on "Delete subscription" "link" in the "New rule course level" "table_row"
And I should see "Are you sure you want to delete this subscription for the rule \"New rule course level\"?"
And I press "Yes"
Then I should see "Subscription successfully removed"
Scenario: Subscribe to a rule on site level
Given I log in as "admin"
And I navigate to "Event monitoring" node in "My profile settings"
- And I set the field "courseid" to "Site"
- When I set the field "cmid" to "All events"
+ And I set the field "Select a course" to "Site"
+ When I set the field "Subscribe to rule \"New rule site level\"" to "All events"
Then I should see "Subscription successfully created"
And "#toolmonitorsubs_r0" "css_element" should exist
Scenario: Delete a subscription on site level
Given I log in as "admin"
And I navigate to "Event monitoring" node in "My profile settings"
- And I set the field "courseid" to "Site"
- And I set the field "cmid" to "All events"
+ And I set the field "Select a course" to "Site"
+ And I set the field "Subscribe to rule \"New rule site level\"" to "All events"
And I should see "Subscription successfully created"
And "#toolmonitorsubs_r0" "css_element" should exist
- When I click on "Delete subscription" "link"
+ When I click on "Delete subscription" "link" in the "New rule site level" "table_row"
And I should see "Are you sure you want to delete this subscription for the rule \"New rule site level\"?"
And I press "Yes"
Then I should see "Subscription successfully removed"
And I am on homepage
And I follow "Course 1"
And I navigate to "Event monitoring" node in "My profile settings"
- And I set the field "courseid" to "Site"
- And I set the field "cmid" to "All events"
+ And I set the field "Select a course" to "Site"
+ And I set the field "Subscribe to rule \"New rule site level\"" to "All events"
And I should see "Subscription successfully created"
And "#toolmonitorsubs_r0" "css_element" should exist
And I am on homepage
And I trigger cron
And I am on homepage
- And I expand "My profile" node
- When I follow "Messages"
+ When I navigate to "Messages" node in "My profile"
And I follow "Do not reply to this email (1)"
Then I should see "The course was viewed."
And I am on homepage
And I follow "Course 1"
And I navigate to "Event monitoring" node in "My profile settings"
- And I set the field "courseid" to "Course 1"
- And I set the field "cmid" to "All events"
+ And I set the field "Select a course" to "Course 1"
+ And I set the field "Subscribe to rule \"New rule course level\"" to "All events"
And I should see "Subscription successfully created"
And "#toolmonitorsubs_r0" "css_element" should exist
And I am on homepage
And I follow "Course 1"
And I trigger cron
And I am on homepage
- And I expand "My profile" node
- When I follow "Messages"
+ When I navigate to "Messages" node in "My profile"
And I follow "Do not reply to this email (1)"
Then I should see "The course was viewed."
* Run adhoc tasks.
*/
protected function run_adhock_tasks() {
+ ob_start();
while ($task = \core\task\manager::get_next_adhoc_task(time())) {
$task->execute();
\core\task\manager::adhoc_task_complete($task);
}
+ ob_clean(); // Suppress mtrace debugging info.
}
/**
$this->assertEquals(context_system::instance(), $event->get_context());
// Now, create a bunch of subscriptions for the rule we created.
+ $subids = array();
$sub->courseid = $course->id;
for ($i = 1; $i <= 10; $i++) {
$sub->userid = $i;
$subscription = $monitorgenerator->create_subscription($sub);
- if ($i == 1) {
- $subscription1 = $subscription;
- }
+ $subids[$subscription->id] = $subscription;
}
// Trigger and capture the events.
// Check that there were 10 events in total.
$this->assertCount(10, $events);
- // Get the first event and ensure it is valid (we can assume the rest are the same).
- $event = reset($events);
- $this->assertInstanceOf('\tool_monitor\event\subscription_deleted', $event);
- $this->assertEquals(context_course::instance($course->id), $event->get_context());
- $this->assertEquals($subscription1->id, $event->objectid);
- $this->assertEventContextNotUsed($event);
+ // Get all the events and ensure they are valid.
+ foreach ($events as $event) {
+ $this->assertInstanceOf('\tool_monitor\event\subscription_deleted', $event);
+ $this->assertEquals(context_course::instance($course->id), $event->get_context());
+ $this->assertEventContextNotUsed($event);
+ $this->assertArrayHasKey($event->objectid, $subids);
+ unset($subids[$event->objectid]);
+ }
+
+ // We should have found all the subscriptions.
+ $this->assertEmpty($subids);
}
/**
initializer: function() {
this.plugin = Y.one(SELECTORS.PLUGIN);
this.eventname = Y.one(SELECTORS.EVENTNAME);
+ var selection = this.eventname.get('value'); // Get selected event name.
+ this.updateEventsList();
+ this.updateSelection(selection);
this.plugin.on('change', this.updateEventsList, this);
},
}
}, this);
+ },
+
+ /**
+ * Method to update the selected node from the options list.
+ *
+ * @method updateSelection
+ * @param {string} selection The options node value that should be selected.
+ */
+ updateSelection: function(selection) {
+ this.eventname.get('options').each(function(opt) {
+ if (opt.get('value') === selection) {
+ opt.set('selected', 'selected');
+ }
+ }, this);
}
}, {
NAME: 'dropDown',
if ($scount) {
if ($scount < MAX_BULK_USERS) {
- $in = implode(',', $SESSION->bulk_users);
+ $bulkusers = $SESSION->bulk_users;
} else {
$bulkusers = array_slice($SESSION->bulk_users, 0, MAX_BULK_USERS, true);
- $in = implode(',', $bulkusers);
}
- $userlist['susers'] = $DB->get_records_select_menu('user', "id IN ($in)", null, 'fullname', 'id,'.$DB->sql_fullname().' AS fullname');
+ list($in, $inparams) = $DB->get_in_or_equal($bulkusers);
+ $userlist['susers'] = $DB->get_records_select_menu('user', "id $in", $inparams, 'fullname', 'id,'.$DB->sql_fullname().' AS fullname');
}
return $userlist;
* The name of the component. Used by the configuration.
*/
const COMPONENT_NAME = 'auth_manual';
+ const LEGACY_COMPONENT_NAME = 'auth/manual';
/**
* Constructor.
*/
function auth_plugin_manual() {
$this->authtype = 'manual';
- $this->config = get_config(self::COMPONENT_NAME);
+ $config = get_config(self::COMPONENT_NAME);
+ $legacyconfig = get_config(self::LEGACY_COMPONENT_NAME);
+ $this->config = (object)array_merge((array)$legacyconfig, (array)$config);
}
/**
// hamburger.
// However, the user menu *always* needs to be expanded.
- $xpath ="//div[@class='usermenu']//a[contains(concat(' ', @class, ' '), ' toggle-display ')]";
+ $xpath = "//div[@class='usermenu']//a[contains(concat(' ', @class, ' '), ' toggle-display ')]";
array_unshift($steps, new When('I click on "'.$xpath.'" "xpath_element"'));
return $steps;
$replace_values = array($i,
$i - 1,
- $topic['title'],
+ entities::safexml($topic['title']),
$node_node_course_sections_section_mods_mod);
} else {
* Closes the questions wrapper
*/
public function on_questions_end() {
- $this->xmlwriter->end_tag('questions');
+ if ($this->questionswrapperwritten) {
+ $this->xmlwriter->end_tag('questions');
+ }
}
/**
And I expand all fieldsets
And I set the field "Phone" to "123456789"
And I press "Update profile"
- And I follow "My badges"
+ And I navigate to "My badges" node in "My profile"
Then I should see "Profile Badge"
And I should not see "There are no badges available."
Then I should see "Recipients (2)"
And I log out
And I log in as "student"
- And I expand "My profile" node
- And I follow "My badges"
+ And I navigate to "My badges" node in "My profile"
Then I should see "Site Badge"
@javascript
And I log out
And I log in as "student1"
And I follow "Course 1"
- And I expand "My profile" node
- And I follow "My badges"
+ And I navigate to "My badges" node in "My profile"
Then I should see "Course Badge"
@javascript
And I log out
And I log in as "student1"
And I follow "Course 1"
- And I expand "My profile" node
- And I follow "My badges"
+ And I navigate to "My badges" node in "My profile"
Then I should see "There are no badges available."
And I follow "Home"
And I follow "Course 1"
And I press "Mark as complete: Test assignment name"
- And I expand "My profile" node
- And I follow "My badges"
+ And I navigate to "My badges" node in "My profile"
Then I should see "Course Badge"
@javascript
And I log out
And I log in as "student1"
And I follow "Course 1"
- And I expand "My profile" node
- And I follow "My badges"
+ And I navigate to "My badges" node in "My profile"
Then I should see "There are no badges available."
And I follow "Home"
And I follow "Course 1"
And I am on homepage
And I log out
And I log in as "student1"
- And I expand "My profile" node
- And I follow "My badges"
+ And I navigate to "My badges" node in "My profile"
Then I should see "Course Badge"
if (!isset($modinfo->instances[$modname][$instanceid])) {
continue;
}
- $entry['cmid'] = $modinfo->instances[$modname][$instanceid]->id;
if ($log->action == 'add mod') {
$entry['action'] = 0;
} else {
$entry['action'] = 1;
}
+ $entry['cmid'] = $modinfo->instances[$modname][$instanceid]->id;
}
$entries[] = $entry;
}
} else {
$editbuttons = '';
}
- if ($mod->visible || has_capability('moodle/course:viewhiddenactivities', $context)) {
+ if ($mod->visible || has_capability('moodle/course:viewhiddenactivities', $mod->context)) {
if ($ismoving) {
if ($mod->id == $USER->activitycopy) {
continue;
} else {
$editbuttons = '';
}
- if ($mod->visible || has_capability('moodle/course:viewhiddenactivities', $context)) {
+ if ($mod->visible || has_capability('moodle/course:viewhiddenactivities', $mod->context)) {
if ($ismoving) {
if ($mod->id == $USER->activitycopy) {
continue;
return $this->content;
}
}
-
-
}
$store = new cachestore_mongodb('Test mongodb', $configuration);
+ if (!$store->is_ready()) {
+ return false;
+ }
$store->initialise($definition);
return $store;
$configuration['usesafe'] = 1;
$store = new cachestore_mongodb('Test mongodb', $configuration);
+ if (!$store->is_ready()) {
+ return false;
+ }
$store->initialise($definition);
return $store;
}
// Now display all the calendar
- $daytime = $display->tstart - DAYSECS;
+ $daytime = strtotime('-1 day', $display->tstart);
for($day = 1; $day <= $display->maxdays; ++$day, ++$dayweek) {
- $daytime += DAYSECS;
+ $daytime = strtotime('+1 day', $daytime);
if($dayweek > $display->maxwday) {
// We need to change week (table row)
$content .= '</tr><tr>';
case 'day':
$days = calendar_get_days();
- $prevtimestamp = $time - DAYSECS;
- $nexttimestamp = $time + DAYSECS;
+ $prevtimestamp = strtotime('-1 day', $time);
+ $nexttimestamp = strtotime('+1 day', $time);
$prevdate = $calendartype->timestamp_to_date_array($prevtimestamp);
$nextdate = $calendartype->timestamp_to_date_array($nexttimestamp);
$timeend = calendar_time_representation($event->timestart + $event->timeduration);
// Set printable representation.
- if ($now >= $usermidnightstart && $now < ($usermidnightstart + DAYSECS)) {
+ if ($now >= $usermidnightstart && $now < strtotime('+1 day', $usermidnightstart)) {
$url = calendar_get_link_href(new moodle_url(CALENDAR_URL . 'view.php', $linkparams), 0, 0, 0, $endtime);
$eventtime = $timestart . ' <strong>»</strong> ' . html_writer::link($url, $dayend) . $timeend;
} else {
* @return int tomorrow timestamp
*/
public function timestamp_tomorrow() {
- return $this->time + DAYSECS;
+ return strtotime('+1 day', $this->time);
}
/**
* Adds the pretend blocks for the calendar
$weekend = intval($CFG->calendar_weekend);
}
- $daytime = $display->tstart - DAYSECS;
+ $daytime = strtotime('-1 day', $display->tstart);
for ($day = 1; $day <= $display->maxdays; ++$day, ++$dayweek) {
- $daytime = $daytime + DAYSECS;
+ $daytime = strtotime('+1 day', $daytime);
if($dayweek > $display->maxwday) {
// We need to change week (table row)
$table->data[] = $row;
public function extend_course_navigation($navigation, navigation_node $node) {
// Display orphaned activities for the users who can see them.
$context = context_course::instance($this->courseid);
- if (has_all_capabilities(array('moodle/course:viewhiddensections',
- 'moodle/course:viewhiddenactivities'), $context)) {
+ if (has_capability('moodle/course:viewhiddensections', $context)) {
$modinfo = get_fast_modinfo($this->courseid);
if (!empty($modinfo->sections[1])) {
$section1 = $modinfo->get_section_info(1);
$orphanednode->nodetype = navigation_node::NODETYPE_BRANCH;
$orphanednode->add_class('orphaned');
foreach ($modinfo->sections[1] as $cmid) {
- $this->navigation_add_activity($orphanednode, $modinfo->cms[$cmid]);
+ if (has_capability('moodle/course:viewhiddenactivities', context_module::instance($cmid))) {
+ $this->navigation_add_activity($orphanednode, $modinfo->cms[$cmid]);
+ }
}
}
}
if ($mod->uservisible) {
$conditionalhidden = $this->is_cm_conditionally_hidden($mod);
$accessiblebutdim = (!$mod->visible || $conditionalhidden) &&
- has_capability('moodle/course:viewhiddenactivities',
- context_course::instance($mod->course));
+ has_capability('moodle/course:viewhiddenactivities', $mod->context);
if ($accessiblebutdim) {
$linkclasses .= ' dimmed';
$textclasses .= ' dimmed_text';
if ($mod->uservisible) {
$conditionalhidden = $this->is_cm_conditionally_hidden($mod);
$accessiblebutdim = (!$mod->visible || $conditionalhidden) &&
- has_capability('moodle/course:viewhiddenactivities',
- context_course::instance($mod->course));
+ has_capability('moodle/course:viewhiddenactivities', $mod->context);
if ($accessiblebutdim) {
$textclasses .= ' dimmed_text';
if ($conditionalhidden) {
$label = $this->getDataGenerator()->create_module('label', array('course' => $course->id,
'intro' => $labeldescription));
$labelcm = get_coursemodule_from_instance('label', $label->id);
- $url = $this->getDataGenerator()->create_module('url', array('course' => $course->id));
+ $url = $this->getDataGenerator()->create_module('url', array('course' => $course->id,
+ 'name' => 'URL: % & $ ../'));
// Set the required capabilities by the external function.
$context = context_course::instance($course->id);
}
// Remove fields used by natural weighting if the parent category is not using natural weighting.
- if ($parent_category->aggregation != GRADE_AGGREGATE_SUM) {
+ // Or if the item is a scale and scales are not used in aggregation.
+ if ($parent_category->aggregation != GRADE_AGGREGATE_SUM
+ || (empty($CFG->grade_includescalesinaggregation) && $grade_item->gradetype == GRADE_TYPE_SCALE)) {
if ($mform->elementExists('grade_item_weightoverride')) {
$mform->removeElement('grade_item_weightoverride');
}
}
// Remove fields used by natural weighting if the parent category is not using natural weighting.
- if ($parent_category->aggregation != GRADE_AGGREGATE_SUM) {
+ // Or if the item is a scale and scales are not used in aggregation.
+ if ($parent_category->aggregation != GRADE_AGGREGATE_SUM
+ || (empty($CFG->grade_includescalesinaggregation) && $grade_item->gradetype == GRADE_TYPE_SCALE)) {
if ($mform->elementExists('weightoverride')) {
$mform->removeElement('weightoverride');
}
$object = $element['object'];
$eid = $element['eid'];
- $object->name = $this->gtree->get_element_header($element, true, true, true, true);
+ $object->name = $this->gtree->get_element_header($element, true, true, true, true, true);
$object->stripped_name = $this->gtree->get_element_header($element, false, false, false);
$is_category_item = false;
$item = $category->get_grade_item();
// Add aggregation coef input if not a course item and if parent category has correct aggregation type
- $dimmed = ($item->is_hidden()) ? 'dimmed' : '';
+ $dimmed = ($item->is_hidden()) ? 'dimmed_text' : '';
// Before we print the category's row, we must find out how many rows will appear below it (for the filler cell's rowspan)
$aggregation_position = grade_get_setting($COURSE->id, 'aggregationposition', $CFG->grade_aggregationposition);
}
public function get_item_cell($item, $params) {
+ global $CFG;
if (empty($params['element'])) {
throw new Exception('Array key (element) missing from 2nd param of grade_edit_tree_column_weightorextracredit::get_item_cell($item, $params)');
}
if (!in_array($object->itemtype, array('courseitem', 'categoryitem', 'category'))
&& !in_array($object->gradetype, array(GRADE_TYPE_NONE, GRADE_TYPE_TEXT))
- && (!$object->is_outcome_item() || $object->load_parent_category()->aggregateoutcomes)) {
+ && (!$object->is_outcome_item() || $object->load_parent_category()->aggregateoutcomes)
+ && ($object->gradetype != GRADE_TYPE_SCALE || !empty($CFG->grade_includescalesinaggregation))) {
$itemcell->text = grade_edit_tree::get_weight_input($item);
}
$selectnone = new action_link(new moodle_url('#'), get_string('none'), new component_action('click', 'togglecheckboxes', array('eid' => $params['eid'], 'check' => false)));
$categorycell = parent::get_category_cell($category, $levelclass, $params);
- $categorycell->text = $OUTPUT->render($selectall) . '<br />' . $OUTPUT->render($selectnone);
+ $categorycell->text = $OUTPUT->render($selectall) . ' / ' . $OUTPUT->render($selectnone);
return $categorycell;
}
$returnvalue['maxscore'] = $maxscore;
$returnvalue['minscore'] = 0;
if (!empty($this->moduleinstance->grade)) {
- $returnvalue['modulegrade'] = $this->moduleinstance->grade;
+ $graderange = make_grades_menu($this->moduleinstance->grade);
+ $returnvalue['modulegrade'] = count($graderange) - 1;
}
return $returnvalue;
}
* @param bool $icon Whether or not to display an icon with this header
* @param bool $spacerifnone return spacer if no icon found
* @param bool $withdescription Show description if defined by this item.
+ * @param bool $fulltotal If the item is a category total, returns $categoryname."total"
+ * instead of "Category total" or "Course total"
*
* @return string header
*/
- public function get_element_header(&$element, $withlink=false, $icon=true, $spacerifnone=false, $withdescription=false) {
+ public function get_element_header(&$element, $withlink = false, $icon = true, $spacerifnone = false,
+ $withdescription = false, $fulltotal = false) {
$header = '';
if ($icon) {
$header .= $this->get_element_icon($element, $spacerifnone);
}
- $header .= $element['object']->get_name();
+ $header .= $element['object']->get_name($fulltotal);
if ($element['type'] != 'item' and $element['type'] != 'categoryitem' and
$element['type'] != 'courseitem') {
return $header;
}
- if ($withlink) {
- $url = $this->get_activity_link($element);
- if ($url) {
- $a = new stdClass();
- $a->name = get_string('modulename', $element['object']->itemmodule);
- $title = get_string('linktoactivity', 'grades', $a);
+ if ($withlink && $url = $this->get_activity_link($element)) {
+ $a = new stdClass();
+ $a->name = get_string('modulename', $element['object']->itemmodule);
+ $title = get_string('linktoactivity', 'grades', $a);
- $header = html_writer::link($url, $header, array('title' => $title));
- }
+ $header = html_writer::link($url, $header, array('title' => $title));
+ } else {
+ $header = html_writer::span($header);
}
if ($withdescription) {
$arrow = $this->get_sort_arrow('move', $sortlink);
}
- $headerlink = $this->gtree->get_element_header($element, true, $showactivityicons, false);
+ $headerlink = $this->gtree->get_element_header($element, true, $showactivityicons, false, false, true);
$itemcell = new html_table_cell();
$itemcell->attributes['class'] = $type . ' ' . $catlevel . ' highlightable'. ' i'. $element['object']->id;
public function original_definition() {
$def = array('finalgrade', 'feedback');
- if ($this->requiresextra) {
- $def[] = 'override';
- }
+ $def[] = 'override';
$def[] = 'exclude';
public function original_headers() {
return array(
'', // For filter icon.
- '', // For user picture.
get_string('firstname') . ' (' . get_string('alternatename') . ') ' . get_string('lastname'),
get_string('range', 'grades'),
get_string('grade', 'grades'),
$line = array(
$OUTPUT->action_icon($this->format_link('user', $item->id), new pix_icon('t/editstring', $iconstring)),
- $OUTPUT->user_picture($item),
+ $OUTPUT->user_picture($item, array('visibletoscreenreaders' => false)) .
html_writer::link($url, $fullname),
$this->item_range()
);
+ $lineclasses = array(
+ "action",
+ "user",
+ "range"
+ );
+ $outputline = array();
+ $i = 0;
+ foreach ($line as $key => $value) {
+ $cell = new \html_table_cell($value);
+ if ($isheader = $i == 1) {
+ $cell->header = $isheader;
+ $cell->scope = "row";
+ }
+ if (array_key_exists($key, $lineclasses)) {
+ $cell->attributes['class'] = $lineclasses[$key];
+ }
+ $outputline[] = $cell;
+ $i++;
+ }
- return $this->format_definition($line, $grade);
+ return $this->format_definition($outputline, $grade);
}
/**
return $this->item->get_name();
}
+ /**
+ * Get the summary for this table.
+ *
+ * @return string
+ */
+ public function summary() {
+ return get_string('summarygrade', 'gradereport_singleview');
+ }
+
/**
* Process the data from the form.
*
*/
public abstract function format_line($item);
+ /**
+ * Get the summary for this table.
+ *
+ * @return string
+ */
+ public abstract function summary();
+
/**
* Get the table headers
*
$table->head = $this->headers();
+ $summary = $this->summary();
+ if (!empty($summary)) {
+ $table->summary = $summary;
+ }
+
// To be used for extra formatting.
$this->index = 0;
$this->total = count($this->items);
public function original_headers() {
return array(
'', // For filter icon.
- '', // For activity icon.
get_string('assessmentname', 'gradereport_singleview'),
get_string('gradecategory', 'grades'),
get_string('range', 'grades'),
$gradetreeitem['object'] = $item;
$gradetreeitem['userid'] = $this->item->id;
- $itemlabel = $this->structure->get_element_header($gradetreeitem, true, false);
+ $itemlabel = $this->structure->get_element_header($gradetreeitem, true, false, false, false, true);
$grade->label = $item->get_name();
$line = array(
$OUTPUT->action_icon($this->format_link('grade', $item->id), new pix_icon('t/editstring', $iconstring)),
- $this->format_icon($item) . $lockicon, $itemlabel, $this->category($item), (new range($item))
+ $this->format_icon($item) . $lockicon . $itemlabel,
+ $this->category($item),
+ new range($item)
);
- return $this->format_definition($line, $grade);
+ $lineclasses = array(
+ "action",
+ "gradeitem",
+ "category",
+ "range"
+ );
+
+ $outputline = array();
+ $i = 0;
+ foreach ($line as $key => $value) {
+ $cell = new \html_table_cell($value);
+ if ($isheader = $i == 1) {
+ $cell->header = $isheader;
+ $cell->scope = "row";
+ }
+ if (array_key_exists($key, $lineclasses)) {
+ $cell->attributes['class'] = $lineclasses[$key];
+ }
+ $outputline[] = $cell;
+ $i++;
+ }
+
+ return $this->format_definition($outputline, $grade);
}
/**
return fullname($this->item);
}
+ /**
+ * Get the summary for this table.
+ *
+ * @return string
+ */
+ public function summary() {
+ return get_string('summaryuser', 'gradereport_singleview');
+ }
+
/**
* Default pager
*
$string['overridenone'] = 'Override no grades';
$string['pluginname'] = 'Single view';
$string['singleview:view'] = 'View report';
+$string['summarygrade'] = 'A table of users, with columns for range, grade, feedback, and whether to override or exclude a particular grade.';
+$string['summaryuser'] = 'A table of grade items, with columns for grade category, range, grade, feedback, and whether to override or exclude a particular grade.';
.path-grade-report-singleview input[name^="finalgrade"] {
width: 50px;
}
+.path-grade-report-singleview .generaltable tbody th {
+ white-space: nowrap;
+}
+.path-grade-report-singleview .generaltable tbody th > * {
+ display: inline-block;
+ vertical-align: middle;
+ margin: 0 2px;
+}
.path-grade-report-singleview #region-main h2, .paging{
text-align: center;
$grade_object = $element['object'];
$eid = $grade_object->id;
$element['userid'] = $this->user->id;
- $fullname = $this->gtree->get_element_header($element, true, true, true, true);
+ $fullname = $this->gtree->get_element_header($element, true, true, true, true, true);
$data = array();
$hidden = '';
$excluded = '';
| Test assignment four | 33.33 % | 10.00 | 1.11 % |
| Test assignment five | 33.33 % | 70.00 | 7.78 % |
| Test assignment six | 33.33 % | 30.00 | 3.33 % |
- | Category totalWeighted mean of grades. | 33.33 % | 36.67 | - |
+ | Sub category totalWeighted mean of grades. | 33.33 % | 36.67 | - |
| Course total | - | 156.67 | - |
@javascript
| Test assignment four | 33.33 % | 10.00 | 2.00 % |
| Test assignment five | 33.33 % | 70.00 | 14.00 % |
| Test assignment six | 33.33 % | 30.00 | 6.00 % |
- | Category total | 60.00 % | 110.00 | - |
+ | Sub category total | 60.00 % | 110.00 | - |
| Course total | - | 230.00 | - |
And I set the field "Override weight of Test assignment six" to "1"
And I set the field "Weight of Test assignment six" to "-25"
And I press "Save changes"
- Then the field "Weight of Test assignment six" matches value "0.0"
+ And the field "Weight of Test assignment six" matches value "0.0"
And the field "Weight of Test assignment seven" matches value "100.0"
+ And I reset weights for grade category "Sub category 1"
+ And I set the field "Override weight of Test assignment five" to "1"
+ And I set the field "Override weight of Test assignment six" to "1"
+ And I set the field "Weight of Test assignment five" to "-10"
+ And I set the field "Weight of Test assignment six" to "120"
+ And I press "Save changes"
+ And the field "Weight of Test assignment five" matches value "0.0"
+ And the field "Weight of Test assignment six" matches value "100.0"
+ And the field "Weight of Test assignment seven" matches value "0.0"
And the following should exist in the "user-grade" table:
| Grade item | Grade | Range | Percentage | Contribution to course total |
| Test assignment one | C | F–A | 50.00 % | 60.00 % |
- | Category total | 3.00 | 0–5 | 60.00 % | - |
+ | Sub category 1 total | 3.00 | 0–5 | 60.00 % | - |
| Course total | 3.00 | 0–5 | 60.00 % | - |
And I set the field "jump" to "Categories and items"
And the following should exist in the "grade_edit_tree_table" table:
| Name | Max grade |
| Test assignment one | 5.00 |
- | Category total | 5.00 |
+ | Sub category 1 total | 5.00 |
| Course total | 5.00 |
And I log out
And I log in as "student2"
And the following should exist in the "user-grade" table:
| Grade item | Grade | Range | Percentage | Contribution to course total |
| Test assignment one | B | F–A | 75.00 % | 80.00 % |
- | Category total | 4.00 | 0–5 | 80.00 % | - |
+ | Sub category 1 total | 4.00 | 0–5 | 80.00 % | - |
| Course total | 4.00 | 0–5 | 80.00 % | - |
@javascript
And the following should exist in the "user-grade" table:
| Grade item | Grade | Range | Percentage | Contribution to course total |
| Test assignment one | C | F–A | 50.00 % | <contrib3> |
- | Category total<aggregation>. | 3.00 | 1–5 | 50.00 % | - |
+ | Sub category (<aggregation>) total<aggregation>. | 3.00 | 1–5 | 50.00 % | - |
| Course total<aggregation>. | <coursetotal3> | 0–100 | <courseperc3> | - |
And I set the field "jump" to "Categories and items"
And the following should exist in the "grade_edit_tree_table" table:
| Name | Max grade |
| Test assignment one | A (5) |
- | Category total<aggregation>. | |
+ | Sub category (<aggregation>) total<aggregation>. | |
| Course total<aggregation>. | |
And I log out
And I log in as "student2"
And the following should exist in the "user-grade" table:
| Grade item | Grade | Range | Percentage | Contribution to course total |
| Test assignment one | B | F–A | 75.00 % | <contrib2> |
- | Category total<aggregation>. | 4.00 | 1–5 | 75.00 % | - |
+ | Sub category (<aggregation>) total<aggregation>. | 4.00 | 1–5 | 75.00 % | - |
| Course total<aggregation>. | <coursetotal2> | 0–100 | <courseperc2> | - |
Examples:
--- /dev/null
+@core @core_grades
+Feature: Control the aggregation of the scales
+ In order to use control the aggregation of the scales
+ As an admin
+ I can change use administration setting
+
+ Background:
+ Given the following "courses" exist:
+ | fullname | shortname |
+ | Course 1 | C1 |
+ And the following "users" exist:
+ | username | firstname | lastname | email | idnumber |
+ | teacher1 | Teacher | 1 | teacher1@asd.com | t1 |
+ | student1 | Student | 1 | student1@asd.com | s1 |
+ And the following "course enrolments" exist:
+ | user | course | role |
+ | teacher1 | C1 | editingteacher |
+ | student1 | C1 | student |
+ And I log in as "admin"
+ And I set the following administration settings values:
+ | grade_aggregations_visible | Mean of grades,Weighted mean of grades,Simple weighted mean of grades,Mean of grades (with extra credits),Median of grades,Lowest grade,Highest grade,Mode of grades,Natural |
+ | grade_report_user_showcontributiontocoursetotal | 1 |
+ And I navigate to "Scales" node in "Site administration > Grades"
+ And I press "Add a new scale"
+ And I set the following fields to these values:
+ | Name | Letterscale |
+ | Scale | F,D,C,B,A |
+ And I press "Save changes"
+ And the following "grade items" exist:
+ | itemname | course |
+ | Grade me | C1 |
+ And the following "grade items" exist:
+ | itemname | course | scale |
+ | Scale me | C1 | Letterscale |
+
+ @javascript
+ Scenario Outline: Scales can be exluded from aggregation
+ Given I set the following administration settings values:
+ | grade_includescalesinaggregation | 0 |
+ And I log out
+ And I log in as "teacher1"
+ And I follow "Course 1"
+ And I follow "Grades"
+ And I turn editing mode on
+ When I give the grade "10" to the user "Student 1" for the grade item "Grade me"
+ And I give the grade "B" to the user "Student 1" for the grade item "Scale me"
+ And I press "Save changes"
+ And I set the following settings for grade item "Course 1":
+ | Aggregation | <aggregation> |
+ And I follow "User report"
+ And I set the field "Select all or one user" to "Student 1"
+ Then the following should exist in the "user-grade" table:
+ | Grade item | Grade | Percentage | Contribution to course total |
+ | Grade me | 10.00 | 10.00 % | <gradecontrib> |
+ | Scale me | B | 75.00 % | <scalecontrib> |
+ | Course total<totalstr> | <coursetotal> | <coursepc> | - |
+ And I log out
+ And I log in as "admin"
+ And I set the following administration settings values:
+ | grade_includescalesinaggregation | 1 |
+ And I log out
+ And I log in as "teacher1"
+ And I follow "Course 1"
+ And I follow "Grades"
+ And I follow "User report"
+ And I set the field "Select all or one user" to "Student 1"
+ And the following should exist in the "user-grade" table:
+ | Grade item | Grade | Percentage | Contribution to course total |
+ | Grade me | 10.00 | 10.00 % | <gradecontrib2> |
+ | Scale me | B | 75.00 % | <scalecontrib2> |
+ | Course total<totalstr> | <coursetotal2> | <coursepc2> | - |
+
+ Examples:
+ | aggregation | totalstr | coursetotal | coursepc | gradecontrib | scalecontrib | coursetotal2 | coursepc2 | gradecontrib2 | scalecontrib2 |
+ | Natural | | 10.00 | 10.00 % | 10.00 | 0.00 | 14.00 | 13.33 % | 9.52 % | 3.81 % |
+ | Mean of grades | Mean of grades. | 10.00 | 10.00 % | 10.00 | 0.00 | 42.50 | 42.50 % | 5.00 % | 37.50 % |
+ | Weighted mean of grades | Weighted mean of grades. | 10.00 | 10.00 % | 10.00 | 0.00 | 42.50 | 42.50 % | 5.00 % | 37.50 % |
+ | Simple weighted mean of grades | Simple weighted mean of grades. | 10.00 | 10.00 % | 10.00 | 0.00 | 12.50 | 12.50 % | 9.62 % | 2.88 % |
+ | Mean of grades (with extra credits) | Mean of grades (with extra credits). | 10.00 | 10.00 % | 10.00 | 0.00 | 42.50 | 42.50 % | 5.00 % | 37.50 % |
+ | Median of grades | Median of grades. | 10.00 | 10.00 % | 10.00 | 0.00 | 42.50 | 42.50 % | 5.00 % | 37.50 % |
+ | Lowest grade | Lowest grade. | 10.00 | 10.00 % | 10.00 | 0.00 | 10.00 | 10.00 % | 10.00 % | 0.00 % |
+ | Highest grade | Highest grade. | 10.00 | 10.00 % | 10.00 | 0.00 | 75.00 | 75.00 % | 0.00 % | 75.00 % |
+ | Mode of grades | Mode of grades. | 10.00 | 10.00 % | 10.00 | 0.00 | 75.00 | 75.00 % | 0.00 % | 75.00 % |
+
+ @javascript
+ Scenario: Weights of scales cannot be edited when they are not aggregated
+ Given I set the following administration settings values:
+ | grade_includescalesinaggregation | 0 |
+ And I log out
+ And I log in as "teacher1"
+ And I follow "Course 1"
+ And I follow "Grades"
+ And I turn editing mode on
+ When I set the following settings for grade item "Course 1":
+ | Aggregation | Natural |
+ And I navigate to "Categories and items" node in "Grade administration > Setup"
+ And I set the field "Override weight of Grade me" to "1"
+ Then the field "Override weight of Grade me" matches value "100.00"
+ And I click on "Edit" "link" in the "Scale me" "table_row"
+ And I click on "Edit settings" "link" in the "Scale me" "table_row"
+ And I follow "Show more..."
+ And I should not see "Weight adjusted"
+ And I should not see "Weight"
+ And I log out
+ And I log in as "admin"
+ And I set the following administration settings values:
+ | grade_includescalesinaggregation | 1 |
+ And I log out
+ And I log in as "teacher1"
+ And I follow "Course 1"
+ And I follow "Grades"
+ And I navigate to "Categories and items" node in "Grade administration > Setup"
+ And I set the field "Override weight of Grade me" to "1"
+ And the field "Override weight of Grade me" matches value "95.238"
+ And I set the field "Override weight of Scale me" to "1"
+ And the field "Override weight of Scale me" matches value "4.8"
+ And I click on "Edit" "link" in the "Scale me" "table_row"
+ And I click on "Edit settings" "link" in the "Scale me" "table_row"
+ And I follow "Show more..."
+ And I should see "Weight adjusted"
+ And I should see "Weight"
And the following should exist in the "user-grade" table:
| Grade item | Grade | Range | Contribution to course total |
| Test assignment one | Ace! | Ace!–Ace! | 100.00 % |
- | Category total | 1.00 | 0–1 | - |
+ | Sub category 1 total | 1.00 | 0–1 | - |
| Course total | 1.00 | 0–1 | - |
And I set the field "Select all or one user" to "Student 2"
And the following should exist in the "user-grade" table:
| Grade item | Grade | Range | Contribution to course total |
| Test assignment one | - | Ace!–Ace! | - |
- | Category total | - | 0–1 | - |
+ | Sub category 1 total | - | 0–1 | - |
| Course total | - | 0–1 | - |
And I set the field "jump" to "Categories and items"
And the following should exist in the "grade_edit_tree_table" table:
| Name | Max grade |
| Test assignment one | 1.00 |
- | Category total | 1.00 |
+ | Sub category 1 total | 1.00 |
| Course total | 1.00 |
@javascript
And the following should exist in the "user-grade" table:
| Grade item | Grade | Range | Contribution to course total |
| Test assignment one | Ace! | Ace!–Ace! | <contrib1> |
- | Category total<aggregation>. | <cattotal1> | 0–100 | - |
+ | Sub category (<aggregation>) total<aggregation>. | <cattotal1> | 0–100 | - |
| Course total<aggregation>. | <coursetotal1> | 0–100 | - |
And I set the field "jump" to "Categories and items"
And the following should exist in the "grade_edit_tree_table" table:
| Name | Max grade |
| Test assignment one | Ace! (1) |
- | Category total<aggregation>. | 100.00 |
+ | Sub category (<aggregation>) total<aggregation>. | 100.00 |
| Course total<aggregation>. | 100.00 |
Examples:
defined('MOODLE_INTERNAL') || die();
$string['language'] = 'Jezik';
-$string['next'] = 'Nastavite';
+$string['next'] = 'Nastavi';
$string['previous'] = 'Prethodni';
$string['reload'] = 'Učitaj ponovno';
#####
Moodle.com|http://moodle.com/
</pre>';
+$string['configcustomusermenuitems'] = 'You can configure the contents of the user menu (with the exception of the log out link, which is automatically added). Each line is separated by | characters and consists of 1) a string in "langstringname, componentname" form or as plain text, 2) a URL, and 3) an icon either as a pix icon or as a URL.';
$string['configdbsessions'] = 'If enabled, this setting will use the database to store information about current sessions. Note that changing this setting now will log out all current users (including you). If you are using MySQL please make sure that \'max_allowed_packet\' in my.cnf (or my.ini) is at least 4M. Other session drivers can be configured directly in config.php, see config-dist.php for more information. This option disappears if you specify session driver in config.php file.';
$string['configdebug'] = 'If you turn this on, then PHP\'s error_reporting will be increased so that more warnings are printed. This is only useful for developers.';
$string['configdebugdisplay'] = 'Set to on, the error reporting will go to the HTML page. This is practical, but breaks XHTML, JS, cookies and HTTP headers in general. Set to off, it will send the output to your server logs, allowing better debugging. The PHP setting error_log controls which log this goes to.';
$string['customcheck'] = 'Other checks';
$string['custommenu'] = 'Custom menu';
$string['custommenuitems'] = 'Custom menu items';
+$string['customusermenuitems'] = 'User menu items';
$string['datarootsecurityerror'] = '<p><strong>SECURITY WARNING!</strong></p><p>Your dataroot directory is in the wrong location and is exposed to the web. This means that all your private files are available to anyone in the world, and some of them could be used by a cracker to obtain unauthorised administrative access to your site!</p>
<p>You <em>must</em> move dataroot directory ({$a}) to a new location that is not within your public web directory, and update the <code>$CFG->dataroot</code> setting in your config.php accordingly.</p>';
$string['datarootsecuritywarning'] = 'Your site configuration might not be secure. Please make sure that your dataroot directory ({$a}) is not directly accessible via web.';
$string['errorwithsettings'] = 'Some settings were not changed due to an error.';
$string['everyonewhocan'] = 'Everyone who can \'{$a}\'';
$string['exceptions'] = 'exceptions';
-$string['execpathnotallowed'] = 'Setting executable paths disabled in config.php';
+$string['execpathnotallowed'] = 'Setting executable and local paths disabled in config.php';
$string['experimental'] = 'Experimental';
$string['experimentalsettings'] = 'Experimental settings';
$string['extendedusernamechars'] = 'Allow extended characters in usernames';
$string['authentication'] = 'Authentication';
$string['authenticationplugins'] = 'Authentication plugins';
$string['autosubscribe'] = 'Forum auto-subscribe';
-$string['autosubscribeno'] = 'No: don\'t automatically subscribe me to forums';
-$string['autosubscribeyes'] = 'Yes: when I post, subscribe me to that forum';
+$string['autosubscribeno'] = 'No: don\'t automatically subscribe me to forum discussions';
+$string['autosubscribeyes'] = 'Yes: when I post, subscribe me to that forum discussion';
$string['availability'] = 'Availability';
$string['availablecourses'] = 'Available courses';
$string['back'] = 'Back';
* otherwise use a comma-separated list of the fields you require, not including id
* @param string $orderby If set, use a comma-separated list of fields from course
* table with sql modifiers (DESC) if needed
- * @return array Array of courses, may have zero entries. Or false if query failed.
+ * @return array|bool Array of courses, if none found false is returned.
*/
function get_user_capability_course($capability, $userid = null, $doanything = true, $fieldsexceptid = '', $orderby = '') {
global $DB;
* @return string XHTML field
*/
public function output_html($data, $query='') {
+ global $CFG;
$default = $this->get_defaultsetting();
if ($data) {
} else {
$executable = '';
}
+ $readonly = '';
+ if (!empty($CFG->preventexecpath)) {
+ $this->visiblename .= '<div class="form-overridden">'.get_string('execpathnotallowed', 'admin').'</div>';
+ $readonly = 'readonly="readonly"';
+ }
return format_admin_setting($this, $this->visiblename,
- '<div class="form-file defaultsnext"><input type="text" size="'.$this->size.'" id="'.$this->get_id().'" name="'.$this->get_full_name().'" value="'.s($data).'" />'.$executable.'</div>',
+ '<div class="form-file defaultsnext"><input '.$readonly.' type="text" size="'.$this->size.'" id="'.$this->get_id().'" name="'.$this->get_full_name().'" value="'.s($data).'" />'.$executable.'</div>',
$this->description, true, '', $default, $query);
}
} else {
$executable = '';
}
+ $readonly = '';
if (!empty($CFG->preventexecpath)) {
$this->visiblename .= '<div class="form-overridden">'.get_string('execpathnotallowed', 'admin').'</div>';
+ $readonly = 'readonly="readonly"';
}
return format_admin_setting($this, $this->visiblename,
- '<div class="form-file defaultsnext"><input type="text" size="'.$this->size.'" id="'.$this->get_id().'" name="'.$this->get_full_name().'" value="'.s($data).'" />'.$executable.'</div>',
+ '<div class="form-file defaultsnext"><input '.$readonly.' type="text" size="'.$this->size.'" id="'.$this->get_id().'" name="'.$this->get_full_name().'" value="'.s($data).'" />'.$executable.'</div>',
$this->description, true, '', $default, $query);
}
}
* @return string XHTML
*/
public function output_html($data, $query='') {
+ global $CFG;
$default = $this->get_defaultsetting();
if ($data) {
} else {
$executable = '';
}
+ $readonly = '';
+ if (!empty($CFG->preventexecpath)) {
+ $this->visiblename .= '<div class="form-overridden">'.get_string('execpathnotallowed', 'admin').'</div>';
+ $readonly = 'readonly="readonly"';
+ }
return format_admin_setting($this, $this->visiblename,
- '<div class="form-file defaultsnext"><input type="text" size="'.$this->size.'" id="'.$this->get_id().'" name="'.$this->get_full_name().'" value="'.s($data).'" />'.$executable.'</div>',
+ '<div class="form-file defaultsnext"><input '.$readonly.' type="text" size="'.$this->size.'" id="'.$this->get_id().'" name="'.$this->get_full_name().'" value="'.s($data).'" />'.$executable.'</div>',
$this->description, true, '', $default, $query);
}
}
$params->username = fullname($userto);
$params->badgelink = $issuedlink;
$message = badge_message_from_template($badge->message, $params);
- $plaintext = format_text_email($message, FORMAT_HTML);
+ $plaintext = html_to_text($message);
// Notify recipient.
$eventdata = new stdClass();
$eventdata->notification = 1;
$eventdata->subject = $badge->messagesubject;
$eventdata->fullmessage = $plaintext;
- $eventdata->fullmessageformat = FORMAT_PLAIN;
+ $eventdata->fullmessageformat = FORMAT_HTML;
$eventdata->fullmessagehtml = $message;
- $eventdata->smallmessage = $plaintext;
+ $eventdata->smallmessage = '';
// Attach badge image if possible.
if (!empty($CFG->allowattachments) && $badge->attachment && is_string($filepathhash)) {
$eventdata->userto = $creator;
$eventdata->notification = 1;
$eventdata->subject = $creatorsubject;
- $eventdata->fullmessage = format_text_email($creatormessage, FORMAT_HTML);
- $eventdata->fullmessageformat = FORMAT_PLAIN;
+ $eventdata->fullmessage = html_to_text($creatormessage);
+ $eventdata->fullmessageformat = FORMAT_HTML;
$eventdata->fullmessagehtml = $creatormessage;
- $eventdata->smallmessage = $creatorsubject;
+ $eventdata->smallmessage = '';
message_send($eventdata);
$DB->set_field('badge_issued', 'issuernotified', time(), array('badgeid' => $badge->id, 'userid' => $userid));
if (empty($this->other['name'])) {
throw new \coding_exception('The \'name\' value must be set in other.');
}
- if (empty($this->other['timestart'])) {
+ if (!isset($this->other['timestart'])) {
throw new \coding_exception('The \'timestart\' value must be set in other.');
}
}
/**
* @var int $defaultexpiration The default expiration time to use when created a new key.
*/
- private $defaultexpiration = 86400;
+ private $defaultexpiration = WEEKSECS;
/**
* @var bool $validateaddress Whether to validate the sender address when processing this handler.
if ($dbhost and !empty($this->dboptions['dbpersist'])) {
$dbhost = "p:$dbhost";
}
- ob_start();
- $this->mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname, $dbport, $dbsocket);
- $dberr = ob_get_contents();
- ob_end_clean();
- $errorno = @$this->mysqli->connect_errno;
+ $this->mysqli = @new mysqli($dbhost, $dbuser, $dbpass, $dbname, $dbport, $dbsocket);
- if ($errorno !== 0) {
+ if ($this->mysqli->connect_errno !== 0) {
+ $dberr = $this->mysqli->connect_error;
$this->mysqli = null;
throw new dml_connection_exception($dberr);
}
$DB->connect($CFG->dbhost, $CFG->dbuser, $CFG->dbpass, $CFG->dbname, $CFG->prefix, $CFG->dboptions);
} catch (moodle_exception $e) {
if (empty($CFG->noemailever) and !empty($CFG->emailconnectionerrorsto)) {
+ $body = "Connection error: ".$CFG->wwwroot.
+ "\n\nInfo:".
+ "\n\tError code: ".$e->errorcode.
+ "\n\tDebug info: ".$e->debuginfo.
+ "\n\tServer: ".$_SERVER['SERVER_NAME']." (".$_SERVER['SERVER_ADDR'].")";
if (file_exists($CFG->dataroot.'/emailcount')){
$fp = @fopen($CFG->dataroot.'/emailcount', 'r');
$content = @fread($fp, 24);
//email directly rather than using messaging
@mail($CFG->emailconnectionerrorsto,
'WARNING: Database connection error: '.$CFG->wwwroot,
- 'Connection error: '.$CFG->wwwroot);
+ $body);
$fp = @fopen($CFG->dataroot.'/emailcount', 'w');
@fwrite($fp, time());
}
//email directly rather than using messaging
@mail($CFG->emailconnectionerrorsto,
'WARNING: Database connection error: '.$CFG->wwwroot,
- 'Connection error: '.$CFG->wwwroot);
+ $body);
$fp = @fopen($CFG->dataroot.'/emailcount', 'w');
@fwrite($fp, time());
}
And I press "Save image"
And I press "Accessibility checker"
And I should see "Congratulations, no accessibility problems found!"
+ And I click on ".moodle-dialogue-focused .closebutton" "css_element"
And I select the text in the "Description" Atto editor
And I click on "Image" "button"
And I set the field "Describe this image" to ""
*/
function send_file_not_found() {
global $CFG, $COURSE;
+
+ // Allow cross-origin requests only for Web Services.
+ // This allow to receive requests done by Web Workers or webapps in different domains.
+ if (WS_SERVER) {
+ header('Access-Control-Allow-Origin: *');
+ }
+
send_header_404();
print_error('filenotfound', 'error', $CFG->wwwroot.'/course/view.php?id='.$COURSE->id); //this is not displayed on IIS??
}
}
}
+ // Allow cross-origin requests only for Web Services.
+ // This allow to receive requests done by Web Workers or webapps in different domains.
+ if (WS_SERVER) {
+ header('Access-Control-Allow-Origin: *');
+ }
+
if (empty($filter)) {
// send the contents
readfile_accel($stored_file, $mimetype, !$dontdie);
}
$stripvalues = array(
'#</?(?!img|canvas|hr).*?>#im', // all tags except img, canvas and hr
- '#(\xc2|\xa0|\s| )#', //any whitespaces actually
+ '#(\xc2\xa0|\s| )#', // Any whitespaces actually.
);
if (!empty($CFG->strictformsrequired)) {
$value = preg_replace($stripvalues, '', (string)$value);
* @return void
*/
private function auto_update_weights() {
+ global $CFG;
if ($this->aggregation != GRADE_AGGREGATE_SUM) {
// This is only required if we are using natural weights.
return;
} else if (!$this->aggregateoutcomes && $gradeitem->is_outcome_item()) {
// We will not aggregate outcome items, so we can ignore them.
continue;
+ } else if (empty($CFG->grade_includescalesinaggregation) && $gradeitem->gradetype == GRADE_TYPE_SCALE) {
+ // The scales are not included in the aggregation, ignore them.
+ continue;
}
// Record the ID and the weight for this grade item.
if (!$gradeitemdetail['extracredit']) {
$normalisetotal += $gradeitemdetail['weight'];
}
- if ($gradeitemdetail['weightoverride'] && !$gradeitemdetail['extracredit']) {
+ // The overridden total comprises of items that are set as overridden, that aren't extra credit and have a value
+ // greater than zero.
+ if ($gradeitemdetail['weightoverride'] && !$gradeitemdetail['extracredit'] && $gradeitemdetail['weight'] > 0) {
// Add overriden weights up to see if they are greater than 1.
$overriddentotal += $gradeitemdetail['weight'];
}
} else if (!$this->aggregateoutcomes && $gradeitem->is_outcome_item()) {
// We will not aggregate outcome items, so we can ignore updating their weights.
continue;
+ } else if (empty($CFG->grade_includescalesinaggregation) && $gradeitem->gradetype == GRADE_TYPE_SCALE) {
+ // We will not aggregate the scales, so we can ignore upating their weights.
+ continue;
}
if (!$gradeitem->weightoverride) {
$attachmentpath = $attachment;
+ // Before doing the comparison, make sure that the paths are correct (Windows uses slashes in the other direction).
+ $attachpath = str_replace('\\', '/', $attachmentpath);
+ // Make sure both variables are normalised before comparing.
+ $temppath = str_replace('\\', '/', $CFG->tempdir);
+
// If the attachment is a full path to a file in the tempdir, use it as is,
// otherwise assume it is a relative path from the dataroot (for backwards compatibility reasons).
- if (strpos($attachmentpath, $CFG->tempdir) !== 0) {
+ if (strpos($attachpath, $temppath) !== 0) {
$attachmentpath = $CFG->dataroot . '/' . $attachmentpath;
}
require_course_login($course, true, $cm, false, true);
$this->page->set_context(context_module::instance($cm->id));
$coursenode = $this->load_course($course);
- if ($course->id != $SITE->id) {
- $this->load_course_sections($course, $coursenode, null, $cm);
+ $this->load_course_sections($course, $coursenode, null, $cm);
+ $activitynode = $coursenode->find($cm->id, self::TYPE_ACTIVITY);
+ if ($activitynode) {
+ $modulenode = $this->load_activity($cm, $course, $activitynode);
}
- $modulenode = $this->load_activity($cm, $course, $coursenode->find($cm->id, self::TYPE_ACTIVITY));
break;
default:
throw new Exception('Unknown type');
$idx = 0;
foreach ($opts->navitems as $key => $value) {
$pix = null;
- if (isset($value->pix)) {
+ if (isset($value->pix) && !empty($value->pix)) {
$pix = new pix_icon($value->pix, $value->title, null, array('class' => 'iconsmall'));
+ } else if (isset($value->imgsrc) && !empty($value->imgsrc)) {
+ $value->title = html_writer::img(
+ $value->imgsrc,
+ $value->title,
+ array('class' => 'iconsmall')
+ ) . $value->title;
}
$al = new action_menu_link_secondary(
$value->url,
//IIS - needs a lot of tweaking to make it work
$rurl['fullpath'] = $_SERVER['SCRIPT_NAME'];
- // NOTE: ignore PATH_INFO because it is incorrectly encoded using 8bit filesystem legacy encoding in IIS
- // since 2.0 we rely on iis rewrite extenssion like Helicon ISAPI_rewrite
- // example rule: RewriteRule ^([^\?]+?\.php)(\/.+)$ $1\?file=$2 [QSA]
+ // NOTE: we should ignore PATH_INFO because it is incorrectly encoded using 8bit filesystem legacy encoding in IIS.
+ // Since 2.0, we rely on IIS rewrite extensions like Helicon ISAPI_rewrite
+ // example rule: RewriteRule ^([^\?]+?\.php)(\/.+)$ $1\?file=$2 [QSA]
+ // OR
+ // we rely on a proper IIS 6.0+ configuration: the 'FastCGIUtf8ServerVariables' registry key.
+ if (isset($_SERVER['PATH_INFO']) and $_SERVER['PATH_INFO'] !== '') {
+ // Check that PATH_INFO works == must not contain the script name.
+ if (strpos($_SERVER['PATH_INFO'], $_SERVER['SCRIPT_NAME']) === false) {
+ $rurl['fullpath'] .= clean_param(urldecode($_SERVER['PATH_INFO']), PARAM_PATH);
+ }
+ }
- if ($_SERVER['QUERY_STRING'] != '') {
+ if (isset($_SERVER['QUERY_STRING']) and $_SERVER['QUERY_STRING'] !== '') {
$rurl['fullpath'] .= '?'.$_SERVER['QUERY_STRING'];
}
$_SERVER['REQUEST_URI'] = $rurl['fullpath']; // extra IIS compatibility
$setting->write_setting('/mm/nn');
$this->assertSame('', get_config('abc_cde', 'execpath'));
- // This also (most probably incorrectly) affects admin_setting_configfile.
+ // This also affects admin_setting_configfile and admin_setting_configdirectory.
set_config('preventexecpath', 0);
set_config('execpath', null, 'abc_cde');
$setting->write_setting('/mm/nn');
$this->assertSame('', get_config('abc_cde', 'execpath'));
+ set_config('preventexecpath', 0);
+ set_config('execpath', null, 'abc_cde');
+ $this->assertFalse(get_config('abc_cde', 'execpath'));
+ $setting = new admin_setting_configdirectory('abc_cde/execpath', 'some desc', '', '/xx/yy');
+ $setting->write_setting('/oo/pp');
+ $this->assertSame('/oo/pp', get_config('abc_cde', 'execpath'));
+
+ // Prevent changes.
+ set_config('preventexecpath', 1);
+ $setting->write_setting('/mm/nn');
+ $this->assertSame('/oo/pp', get_config('abc_cde', 'execpath'));
+
+ // Use default in install.
+ set_config('execpath', null, 'abc_cde');
+ $setting->write_setting('/mm/nn');
+ $this->assertSame('/xx/yy', get_config('abc_cde', 'execpath'));
+
+ // Use empty value if no default.
+ $setting = new admin_setting_configdirectory('abc_cde/execpath', 'some desc', '', null);
+ set_config('execpath', null, 'abc_cde');
+ $setting->write_setting('/mm/nn');
+ $this->assertSame('', get_config('abc_cde', 'execpath'));
}
}
$this->assertTrue($rule->validate("Something\nmore"));
$this->assertTrue($rule->validate("\nmore"));
$this->assertTrue($rule->validate(" more "));
+ $this->assertTrue($rule->validate('ш'));
+ $this->assertTrue($rule->validate("の"));
$this->assertTrue($rule->validate("0"));
$this->assertTrue($rule->validate(0));
$this->assertTrue($rule->validate(true));
$this->assertTrue($rule->validate("\nmore"));
$this->assertTrue($rule->validate(" more "));
$this->assertTrue($rule->validate("0"));
+ $this->assertTrue($rule->validate('ш'));
+ $this->assertTrue($rule->validate("の"));
$this->assertTrue($rule->validate(0));
$this->assertTrue($rule->validate(true));
$this->assertTrue($rule->validate('<p>x</p>'));
// Then try extract file from the slasharguments.
if (stripos($_SERVER['SERVER_SOFTWARE'], 'iis') !== false) {
- // NOTE: ISS tends to convert all file paths to single byte DOS encoding,
+ // NOTE: IIS tends to convert all file paths to single byte DOS encoding,
// we can not use other methods because they break unicode chars,
- // the only way is to use URL rewriting.
+ // the only ways are to use URL rewriting
+ // OR
+ // to properly set the 'FastCGIUtf8ServerVariables' registry key.
if (isset($_SERVER['PATH_INFO']) and $_SERVER['PATH_INFO'] !== '') {
// Check that PATH_INFO works == must not contain the script name.
if (strpos($_SERVER['PATH_INFO'], $SCRIPT) === false) {
_orientationevent : null,
_calculatedzindex : false,
+ /**
+ * The original position of the dialogue before it was reposition to
+ * avoid browser jumping.
+ *
+ * @property _originalPosition
+ * @protected
+ * @type Array
+ */
+ _originalPosition: null,
+
/**
* Initialise the dialogue.
*
if (this.get('render')) {
this.render();
}
- this.makeResponsive();
this.after('visibleChange', this.visibilityChanged, this);
if (this.get('center')) {
this.centerDialogue();
}
// Recalculate the zIndex every time the modal is altered.
this.on('maskShow', this.applyZIndex);
- // We must show - after the dialogue has been positioned,
- // either by centerDialogue or makeResonsive. This is because the show() will trigger
- // a focus on the dialogue, which will scroll the page. If the dialogue has not
- // been positioned it will scroll back to the top of the page.
- if (this.get('visible')) {
- this.show();
- this.keyDelegation();
- }
+
+ this.on('maskShow', function() {
+ // When the mask shows, position the boundingBox at the top-left of the window such that when it is
+ // focused, the position does not change.
+ var w = Y.one(Y.config.win),
+ bb = this.get('boundingBox');
+
+ if (!this.get('center')) {
+ this._originalPosition = bb.getXY();
+ }
+
+ if (bb.getStyle('position') !== 'fixed') {
+ // If the boundingBox has been positioned in a fixed manner, then it will not position correctly to scrollTop.
+ bb.setStyles({
+ top: w.get('scrollTop'),
+ left: w.get('scrollLeft')
+ });
+ }
+ }, this);
// Remove the dialogue from the DOM when it is destroyed.
this.after('destroyedChange', function(){
* @method makeResponsive
*/
makeResponsive : function() {
- var bb = this.get('boundingBox'),
- content;
+ var bb = this.get('boundingBox');
if (this.shouldResizeFullscreen()) {
// Make this dialogue fullscreen on a small screen.
'height' : null,
'right' : null,
'bottom' : null});
-
- content = Y.one('#' + this.get('id') + ' .' + CSS.BODY);
} else {
if (this.get('responsive')) {
// We must reset any of the fullscreen changes.
bb.removeClass(DIALOGUE_FULLSCREEN_CLASS)
.setStyles({'width' : this.get('width'),
'height' : this.get('height')});
- content = Y.one('#' + this.get('id') + ' .' + CSS.BODY);
}
}
},
if (hidden) {
bb.addClass(DIALOGUE_HIDDEN_CLASS);
}
+ this.makeResponsive();
},
/**
* Return whether this dialogue should be fullscreen or not.
Math.floor(Y.one(document.body).get('winWidth')) < this.get('responsiveWidth');
},
- show : function() {
+ show: function() {
var result = null,
header = this.headerNode,
content = this.bodyNode,
result = DIALOGUE.superclass.show.call(this);
+ if (!this.get('center') && this._originalPosition) {
+ // Restore the dialogue position to it's location before it was moved at show time.
+ this.get('boundingBox').setXY(this._originalPosition);
+ }
+
// Lock scroll if the plugin is present.
if (this.lockScroll) {
// We need to force the scroll locking for full screen dialogues, even if they have a small vertical size to
}
// Sending the message to the device.
- $serverurl = $CFG->airnotifierurl . ':' . $CFG->airnotifierport . '/notification/';
+ $serverurl = $CFG->airnotifierurl . ':' . $CFG->airnotifierport . '/api/v2/push/';
$header = array('Accept: application/json', 'X-AN-APP-NAME: ' . $CFG->airnotifierappname,
'X-AN-APP-KEY: ' . $CFG->airnotifieraccesskey);
$curl = new curl;
$steps = array();
$steps[] = new Given('I am on homepage');
- if ($this->running_javascript()) {
- $steps[] = new Given('I expand "' . get_string('myprofile') . '" node');
- }
-
- $steps[] = new Given('I follow "' . get_string('messages', 'message') . '"');
+ $steps[] = new Given('I navigate to "' . get_string('messages', 'message') . '" node in "' . get_string('myprofile') . '"');
$steps[] = new Given('I set the field "' . get_string('searchcombined', 'message') .
'" to "' . $this->escape($userfullname) . '"');
$steps[] = new Given('I press "' . get_string('searchcombined', 'message') . '"');
| user1 | User | One | one@asd.com |
| user2 | User | Two | two@asd.com |
And I log in as "user1"
- And I expand "My profile" node
- And I follow "Messages"
+ And I navigate to "Messages" node in "My profile"
And I set the field "Search people and messages" to "User Two"
And I press "Search people and messages"
When I click on "Block contact" "link" in the "User Two" "table_row"
And I should see "User Two"
And I log out
And I log in as "user2"
- And I expand "My profile" node
- And I follow "Messages"
+ And I navigate to "Messages" node in "My profile"
And I set the field "Search people and messages" to "User One"
And I press "Search people and messages"
And I follow "Send message to User One"
And I send "Message 10 from user1 to user2" message to "User Two" user
Scenario: View sent messages
- When I expand "My profile" node
- And I click on "Messages" "link" in the "Navigation" "block"
+ When I navigate to "Messages" node in "My profile"
And I set the field "Search people and messages" to "User Two"
And I press "Search people and messages"
And I click on "Message history" "link" in the "User Two" "table_row"
Scenario: View received messages
When I log out
And I log in as "user2"
- And I expand "My profile" node
- And I click on "Messages" "link" in the "Navigation" "block"
+ And I navigate to "Messages" node in "My profile"
And I follow "User One (10)"
# Should show all of the user's unread messages.
Then I should see "Message 1 from user1 to user2"
And I log in as "user1"
And I send "Message 1 from user1 to user2" message to "User Two" user
And I send "Message 2 from user1 to user2" message to "User Two" user
- And I expand "My profile" node
- And I click on "Messages" "link" in the "Navigation" "block"
+ And I navigate to "Messages" node in "My profile"
And I set the field "Search people and messages" to "User Two"
And I press "Search people and messages"
When I click on "Add contact" "link" in the "User Two" "table_row"
And I press "Preview"
And I press "Send message"
And I follow "Home"
- And I expand "My profile" node
- And I follow "Messages"
+ And I navigate to "Messages" node in "My profile"
And I set the field "Message navigation:" to "Recent conversations"
Then I should see "Here it is, the message content"
And I should see "Student 1"
| user2 | User | Two | two@asd.com |
And I log in as "user1"
When I send "Give me your biscuits" message to "User Two" user
- And I expand "My profile" node
- And I click on "Messages" "link" in the "Navigation" "block"
+ And I navigate to "Messages" node in "My profile"
And I set the field "Search people and messages" to "your biscuits"
And I press "Search people and messages"
Then I should see "User Two"
$DB->insert_record('assignfeedback_editpdf_cmnt', $comment);
}
+ // Delete the existing stamps and copy the source ones.
+ $fs = get_file_storage();
+ $fs->delete_area_files($assignment->get_context()->id, 'assignfeedback_editpdf', 'stamps', $grade->id);
+ if ($files = $fs->get_area_files($assignment->get_context()->id,
+ 'assignfeedback_editpdf',
+ 'stamps',
+ $sourceusergrade->id,
+ "filename",
+ false)) {
+ foreach ($files as $file) {
+ $newrecord = new \stdClass();
+ $newrecord->contextid = $assignment->get_context()->id;
+ $newrecord->itemid = $grade->id;
+ $fs->create_file_from_storedfile($newrecord, $file);
+ }
+ }
+
return true;
}
And I follow "View/grade all submissions"
And I click on "Grade" "link" in the "Student 2" "table_row"
And I follow "Launch PDF editor..."
- And I click on ".linebutton" "css_element"
- And I drag ".drawingcanvas" "css_element" and I drop it in ".assignfeedback_editpdf_widget" "css_element"
+ And I click on ".stampbutton" "css_element"
+ And I click on ".drawingcanvas" "css_element"
And I click on "Close" "button"
And I press "Save changes"
And I should see "The grade changes were saved"
}
this.dialogue.centerDialogue();
this.dialogue.show();
+ drawingcanvas.on('windowresize', this.resize, this);
},
/**
this.currentedit.path = [];
},
+ /**
+ * Resize the dialogue window when the browser is resized.
+ * @public
+ * @method resize
+ */
+ resize : function() {
+ this.dialogue.centerDialogue();
+ return true;
+ },
+
/**
* Factory method for creating annotations of the correct subclass.
* @public
"graphics",
"json",
"event-move",
+ "event-resize",
"querystring-stringify-simple",
"moodle-core-notification-dialog",
"moodle-core-notification-exception",
$fileareas = array();
$plugincomponent = $plugin->get_subtype() . '_' . $plugin->get_type();
$fileareas = $plugin->get_file_areas();
- foreach ($fileareas as $filearea) {
+ foreach ($fileareas as $filearea => $notused) {
$fs->delete_area_files($this->context->id, $plugincomponent, $filearea);
}
$fileareas = array();
$plugincomponent = $plugin->get_subtype() . '_' . $plugin->get_type();
$fileareas = $plugin->get_file_areas();
- foreach ($fileareas as $filearea) {
+ foreach ($fileareas as $filearea => $notused) {
$fs->delete_area_files($this->context->id, $plugincomponent, $filearea);
}
echo $OUTPUT->header();
-/// Check to see if groups are being used here
- $currentgroup = groups_get_activity_group($cm);
+ // Check to see if groups are being used here.
+ // We need the most up to date current group value. Make sure it is updated at this point.
+ $currentgroup = groups_get_activity_group($cm, true);
$groupmode = groups_get_activity_groupmode($cm);
$canmanageentries = has_capability('mod/data:manageentries', $context);
// If a student is not part of a group and seperate groups is enabled, we don't
} else {
$submit_string = get_string('posttoforum', 'forum');
}
- $this->add_action_buttons(false, $submit_string);
+ $this->add_action_buttons(true, $submit_string);
$mform->addElement('hidden', 'course');
$mform->setType('course', PARAM_INT);
upgrade_mod_savepoint(true, 2014081900, 'forum');
}
+ if ($oldversion < 2014103000) {
+ // Find records with multiple userid/postid combinations and find the lowest ID.
+ // Later we will remove all those which don't match this ID.
+ $sql = "
+ SELECT MIN(id) as lowid, userid, postid
+ FROM {forum_read}
+ GROUP BY userid, postid
+ HAVING COUNT(id) > 1";
+
+ if ($duplicatedrows = $DB->get_recordset_sql($sql)) {
+ foreach ($duplicatedrows as $row) {
+ $DB->delete_records_select('forum_read', 'userid = ? AND postid = ? AND id <> ?', array(
+ $row->userid,
+ $row->postid,
+ $row->lowid,
+ ));
+ }
+ }
+ $duplicatedrows->close();
+
+ // Forum savepoint reached.
+ upgrade_mod_savepoint(true, 2014103000, 'forum');
+ }
+
return true;
}
$forum,
$discussiongroup,
$modcontext,
- 'u.id'
+ 'u.id',
+ true
);
// Pre-seed the subscribed_discussion caches.
$newdiscussion->forum = $forumto->id;
foreach ($subscriptionchanges as $userid => $preference) {
if ($preference === \mod_forum\subscriptions::FORUM_DISCUSSION_SUBSCRIBED) {
- \mod_forum\subscriptions::subscribe_user_to_discussion($userid, $newdiscussion, $destinationctx);
+ // Users must have viewdiscussion to a discussion.
+ if (has_capability('mod/forum:viewdiscussion', $destinationctx, $userid)) {
+ \mod_forum\subscriptions::subscribe_user_to_discussion($userid, $newdiscussion, $destinationctx);
+ }
} else {
\mod_forum\subscriptions::unsubscribe_user_from_discussion($userid, $newdiscussion, $destinationctx);
}
echo $OUTPUT->header();
- $headingvalue = format_string($forum->name);
+ echo $OUTPUT->heading(format_string($forum->name), 2);
+ echo $OUTPUT->heading(format_string($discussion->name), 3, 'discussionname');
+
if ((!isguestuser() && isloggedin()) && has_capability('mod/forum:viewdiscussion', $modcontext)) {
// Discussion subscription.
if (\mod_forum\subscriptions::is_subscribable($forum)) {
- $headingvalue .= ' ';
- $headingvalue .= html_writer::tag('span', forum_get_discussion_subscription_icon($forum, $post->discussion), array(
- 'class' => 'discussionsubscription',
- ));
+ echo html_writer::div(
+ forum_get_discussion_subscription_icon($forum, $post->discussion, null, true),
+ 'discussionsubscription'
+ );
}
}
- echo $OUTPUT->heading($headingvalue, 2);
/// Check to see if groups are being used in this forum
// Output the links to neighbour discussions.
$neighbours = forum_get_discussion_neighbours($cm, $discussion);
- echo $renderer->neighbouring_discussion_navigation($neighbours['prev'], $neighbours['next']);
+ $neighbourlinks = $renderer->neighbouring_discussion_navigation($neighbours['prev'], $neighbours['next']);
+ echo $neighbourlinks;
/// Print the controls across the top
echo '<div class="discussioncontrols clearfix">';
$canrate = has_capability('mod/forum:rate', $modcontext);
forum_print_discussion($course, $cm, $forum, $discussion, $post, $displaymode, $canreply, $canrate);
+ echo $neighbourlinks;
+
// Add the subscription toggle JS.
$PAGE->requires->yui_module('moodle-mod_forum-subscriptiontoggle', 'Y.M.mod_forum.subscriptiontoggle.init');
}
// Function forum_get_all_discussion_posts adds postread field.
- if (!isset($post->postread)) {
+ // Note that the value returned can be a boolean or an integer. The WS expects a boolean.
+ if (empty($post->postread)) {
$posts[$pid]->postread = false;
+ } else {
+ $posts[$pid]->postread = true;
}
+
$posts[$pid]->canreply = $canreply;
if (!empty($posts[$pid]->children)) {
$posts[$pid]->children = array_keys($posts[$pid]->children);
}
if ($can_subscribe) {
- if (\mod_forum\subscriptions::subscription_disabled($forum)) {
+ if (!\mod_forum\subscriptions::subscription_disabled($forum)) {
$row[] = forum_get_subscribe_link($forum, $context, array('subscribed' => $stryes,
'unsubscribed' => $strno, 'forcesubscribed' => $stryes,
'cantsubscribe' => '-'), false, false, true);
$string['cannotviewusersposts'] = 'There are no posts made by this user that you are able to view.';
$string['cleanreadtime'] = 'Mark old posts as read hour';
$string['clicktounsubscribe'] = 'You are subscribed to this discussion. Click to unsubscribe.';
-$string['clicktosubscribe'] = 'Not subscribed. Click to subscribe.';
+$string['clicktosubscribe'] = 'You are not subscribed to this discussion. Click to subscribe.';
$string['completiondiscussions'] = 'Student must create discussions:';
$string['completiondiscussionsgroup'] = 'Require discussions';
$string['completiondiscussionshelp'] = 'requiring discussions to complete';
$string['nopostsmadebyyou'] = 'You haven\'t made any posts';
$string['noquestions'] = 'There are no questions yet in this forum';
$string['nosubscribers'] = 'There are no subscribers yet for this forum';
+$string['notsubscribed'] = 'Not subscribed';
$string['notexists'] = 'Discussion no longer exists';
$string['nothingnew'] = 'Nothing new for {$a}';
$string['notingroup'] = 'Sorry, but you need to be part of a group to see this forum.';
* @param int $discussionid The discussion to create an icon for.
* @return string The generated markup.
*/
-function forum_get_discussion_subscription_icon($forum, $discussionid, $returnurl = null) {
+function forum_get_discussion_subscription_icon($forum, $discussionid, $returnurl = null, $includetext = false) {
global $USER, $OUTPUT, $PAGE;
if ($returnurl === null && $PAGE->url) {
'class' => 'discussiontoggle iconsmall',
'data-forumid' => $forum->id,
'data-discussionid' => $discussionid,
+ 'data-includetext' => $includetext,
));
} else {
$o .= html_writer::link($subscriptionlink,
'class' => 'discussiontoggle iconsmall',
'data-forumid' => $forum->id,
'data-discussionid' => $discussionid,
+ 'data-includetext' => $includetext,
));
}
+ if ($includetext) {
+ $o .= $subscriptionstatus ? get_string('subscribed', 'mod_forum') : get_string('notsubscribed', 'mod_forum');
+ }
+
return $o;
}
return $status;
}
- list($usql, $params) = $DB->get_in_or_equal($postids);
- $params[] = $user->id;
-
- $sql = "SELECT id
- FROM {forum_read}
- WHERE postid $usql AND userid = ?";
- if ($existing = $DB->get_records_sql($sql, $params)) {
- $existing = array_keys($existing);
- } else {
- $existing = array();
- }
-
- $new = array_diff($postids, $existing);
-
- if ($new) {
- list($usql, $new_params) = $DB->get_in_or_equal($new);
- $params = array($user->id, $now, $now, $user->id);
- $params = array_merge($params, $new_params);
- $params[] = $cutoffdate;
-
- if ($CFG->forum_allowforcedreadtracking) {
- $trackingsql = "AND (f.trackingtype = ".FORUM_TRACKING_FORCED."
- OR (f.trackingtype = ".FORUM_TRACKING_OPTIONAL." AND tf.id IS NULL))";
- } else {
- $trackingsql = "AND ((f.trackingtype = ".FORUM_TRACKING_OPTIONAL." OR f.trackingtype = ".FORUM_TRACKING_FORCED.")
- AND tf.id IS NULL)";
- }
-
- $sql = "INSERT INTO {forum_read} (userid, postid, discussionid, forumid, firstread, lastread)
+ list($usql, $postidparams) = $DB->get_in_or_equal($postids, SQL_PARAMS_NAMED, 'postid');
- SELECT ?, p.id, p.discussion, d.forum, ?, ?
- FROM {forum_posts} p
- JOIN {forum_discussions} d ON d.id = p.discussion
- JOIN {forum} f ON f.id = d.forum
- LEFT JOIN {forum_track_prefs} tf ON (tf.userid = ? AND tf.forumid = f.id)
- WHERE p.id $usql
- AND p.modified >= ?
- $trackingsql";
- $status = $DB->execute($sql, $params) && $status;
- }
-
- if ($existing) {
- list($usql, $new_params) = $DB->get_in_or_equal($existing);
- $params = array($now, $user->id);
- $params = array_merge($params, $new_params);
+ $insertparams = array(
+ 'userid1' => $user->id,
+ 'userid2' => $user->id,
+ 'userid3' => $user->id,
+ 'firstread' => $now,
+ 'lastread' => $now,
+ 'cutoffdate' => $cutoffdate,
+ );
+ $params = array_merge($postidparams, $insertparams);
- $sql = "UPDATE {forum_read}
- SET lastread = ?
- WHERE userid = ? AND postid $usql";
- $status = $DB->execute($sql, $params) && $status;
- }
+ if ($CFG->forum_allowforcedreadtracking) {
+ $trackingsql = "AND (f.trackingtype = ".FORUM_TRACKING_FORCED."
+ OR (f.trackingtype = ".FORUM_TRACKING_OPTIONAL." AND tf.id IS NULL))";
+ } else {
+ $trackingsql = "AND ((f.trackingtype = ".FORUM_TRACKING_OPTIONAL." OR f.trackingtype = ".FORUM_TRACKING_FORCED.")
+ AND tf.id IS NULL)";
+ }
+
+ // First insert any new entries.
+ $sql = "INSERT INTO {forum_read} (userid, postid, discussionid, forumid, firstread, lastread)
+
+ SELECT :userid1, p.id, p.discussion, d.forum, :firstread, :lastread
+ FROM {forum_posts} p
+ JOIN {forum_discussions} d ON d.id = p.discussion
+ JOIN {forum} f ON f.id = d.forum
+ LEFT JOIN {forum_track_prefs} tf ON (tf.userid = :userid2 AND tf.forumid = f.id)
+ LEFT JOIN {forum_read} fr ON (
+ fr.userid = :userid3
+ AND fr.postid = p.id
+ AND fr.discussionid = d.id
+ AND fr.forumid = f.id
+ )
+ WHERE p.id $usql
+ AND p.modified >= :cutoffdate
+ $trackingsql
+ AND fr.id IS NULL";
+
+ $status = $DB->execute($sql, $params) && $status;
+
+ // Then update all records.
+ $updateparams = array(
+ 'userid' => $user->id,
+ 'lastread' => $now,
+ );
+ $params = array_merge($postidparams, $updateparams);
+ $status = $DB->set_field_select('forum_read', 'lastread', $now, '
+ userid = :userid
+ AND lastread <> :lastread
+ AND postid ' . $usql,
+ $params) && $status;
return $status;
}
print_error("invalidcoursemodule");
}
+ // Retrieve the contexts.
+ $modcontext = context_module::instance($cm->id);
$coursecontext = context_course::instance($course->id);
if (! forum_user_can_post_discussion($forum, $groupid, -1, $cm)) {
print_error('nopostforum', 'forum');
}
- if (!$cm->visible and !has_capability('moodle/course:viewhiddenactivities', $coursecontext)) {
+ if (!$cm->visible and !has_capability('moodle/course:viewhiddenactivities', $modcontext)) {
print_error("activityiscurrentlyhidden");
}
// Ensure lang, theme, etc. is set up properly. MDL-6926
$PAGE->set_cm($cm, $course, $forum);
- $coursecontext = context_course::instance($course->id);
+ // Retrieve the contexts.
$modcontext = context_module::instance($cm->id);
+ $coursecontext = context_course::instance($course->id);
if (! forum_user_can_post($forum, $discussion, $USER, $cm, $course, $modcontext)) {
if (!isguestuser()) {
}
}
- if (!$cm->visible and !has_capability('moodle/course:viewhiddenactivities', $coursecontext)) {
+ if (!$cm->visible and !has_capability('moodle/course:viewhiddenactivities', $modcontext)) {
print_error("activityiscurrentlyhidden");
}
$draftid_editor = file_get_submitted_draft_itemid('message');
$currenttext = file_prepare_draft_area($draftid_editor, $modcontext->id, 'mod_forum', 'post', $postid, mod_forum_post_form::editor_options($modcontext, $postid), $post->message);
-// Always suggest that the user be subscribed to a discussion that they're posting in unless they've already posted, in
-// which case use their existing preference.
-$discussionsubscribe = true;
+// Respect the user's discussion autosubscribe preference unless they have already posted - in which case, use that preference.
+$discussionsubscribe = $USER->autosubscribe;
if (isset($discussion) && forum_user_has_posted($forum->id, $discussion->id, $USER->id)) {
$discussionsubscribe = \mod_forum\subscriptions::is_subscribed($USER->id, $forum, $discussion->id, $cm);
}
array('discussion'=>$discussion->id):
array()));
-if ($fromform = $mform_post->get_data()) {
+if ($mform_post->is_cancelled()) {
+ if (!isset($discussion->id) || $forum->type === 'qanda') {
+ // Q and A forums don't have a discussion page, so treat them like a new thread..
+ redirect(new moodle_url('/mod/forum/view.php', array('f' => $forum->id)));
+ } else {
+ redirect(new moodle_url('/mod/forum/discuss.php', array('d' => $discussion->id)));
+ }
+} else if ($fromform = $mform_post->get_data()) {
if (empty($SESSION->fromurl)) {
$errordestination = "$CFG->wwwroot/mod/forum/view.php?f=$forum->id";
.dir-rtl .forumpost .row .content-mask,
.dir-rtl .forumpost .row .options {margin-right:43px;margin-left:0;}
.dir-rtl .forumpost .row .left {float:right;}
-.dir-rtl.path-mod-forum .indent {margin-right:30px;margin-left:0;}
+.dir-rtl.path-mod-forum .indent {
+ margin-right: 3%;
+ margin-left: 0;
+}
.path-mod-forum .forumolddiscuss,
#page-mod-forum-search .c0 {text-align:right;}
-.path-mod-forum .indent {margin-left: 30px;}
+.path-mod-forum .indent {
+ margin-left: 3%;
+}
.path-mod-forum .forumheaderlist {width: 100%;border-width:1px;border-style:solid;border-collapse:separate;margin-top: 10px;}
.path-mod-forum .forumheaderlist td {border-width:1px 0px 0px 1px;border-style:solid;}
.path-mod-forum .forumheaderlist th.header.replies .iconsmall { margin: 0 .3em;}
display: inline-block;
width: 12px;
}
+
+.path-mod-forum .discussionsubscription {
+ margin-top: -10px;
+ text-align: right;
+ margin-bottom: 10px;
+}
+
+.path-mod-forum .discussionsubscription > a {
+ padding: 0 4px;
+}
+
+.dir-rtl .path-mod-forum .discussionsubscription {
+ text-align: left;
+}
$forumid = required_param('forumid', PARAM_INT); // The forum to subscribe or unsubscribe.
$discussionid = optional_param('discussionid', null, PARAM_INT); // The discussionid to subscribe.
$sesskey = optional_param('sesskey', null, PARAM_RAW);
+$includetext = optional_param('includetext', false, PARAM_BOOL);
$forum = $DB->get_record('forum', array('id' => $forumid), '*', MUST_EXIST);
$course = $DB->get_record('course', array('id' => $forum->course), '*', MUST_EXIST);
$context = context_module::instance($cm->id);
require_login($course, false, $cm);
+require_capability('mod/forum:viewdiscussion', $context);
$return = new stdClass();
}
// Now return the updated subscription icon.
-$return->icon = forum_get_discussion_subscription_icon($forum, $discussion->id);
+$return->icon = forum_get_discussion_subscription_icon($forum, $discussion->id, null, $includetext);
echo json_encode($return);
die;
And I follow "Course 1"
And I follow "Test forum name"
Then I should see "Subscribe to this forum"
- And "Not subscribed. Click to subscribe." "link" should exist in the "Test post subject one" "table_row"
- And "Not subscribed. Click to subscribe." "link" should exist in the "Test post subject two" "table_row"
- And I click on "Not subscribed. Click to subscribe." "link" in the "Test post subject one" "table_row"
+ And "You are not subscribed to this discussion. Click to subscribe." "link" should exist in the "Test post subject one" "table_row"
+ And "You are not subscribed to this discussion. Click to subscribe." "link" should exist in the "Test post subject two" "table_row"
+ And I click on "You are not subscribed to this discussion. Click to subscribe." "link" in the "Test post subject one" "table_row"
And I follow "Continue"
And I should see "Subscribe to this forum"
And "You are subscribed to this discussion. Click to unsubscribe." "link" should exist in the "Test post subject one" "table_row"
- And "Not subscribed. Click to subscribe." "link" should exist in the "Test post subject two" "table_row"
+ And "You are not subscribed to this discussion. Click to subscribe." "link" should exist in the "Test post subject two" "table_row"
And I click on "You are subscribed to this discussion. Click to unsubscribe." "link" in the "Test post subject one" "table_row"
And I follow "Continue"
And I should see "Subscribe to this forum"
- And "Not subscribed. Click to subscribe." "link" should exist in the "Test post subject one" "table_row"
- And "Not subscribed. Click to subscribe." "link" should exist in the "Test post subject two" "table_row"
- And I click on "Not subscribed. Click to subscribe." "link" in the "Test post subject one" "table_row"
+ And "You are not subscribed to this discussion. Click to subscribe." "link" should exist in the "Test post subject one" "table_row"
+ And "You are not subscribed to this discussion. Click to subscribe." "link" should exist in the "Test post subject two" "table_row"
+ And I click on "You are not subscribed to this discussion. Click to subscribe." "link" in the "Test post subject one" "table_row"
And I follow "Continue"
And I should see "Subscribe to this forum"
And "You are subscribed to this discussion. Click to unsubscribe." "link" should exist in the "Test post subject one" "table_row"
- And "Not subscribed. Click to subscribe." "link" should exist in the "Test post subject two" "table_row"
+ And "You are not subscribed to this discussion. Click to subscribe." "link" should exist in the "Test post subject two" "table_row"
And I follow "Subscribe to this forum"
And I follow "Continue"
And I should see "Unsubscribe from this forum"
And I follow "Unsubscribe from this forum"
And I follow "Continue"
And I should see "Subscribe to this forum"
- And "Not subscribed. Click to subscribe." "link" should exist in the "Test post subject one" "table_row"
- And "Not subscribed. Click to subscribe." "link" should exist in the "Test post subject two" "table_row"
+ And "You are not subscribed to this discussion. Click to subscribe." "link" should exist in the "Test post subject one" "table_row"
+ And "You are not subscribed to this discussion. Click to subscribe." "link" should exist in the "Test post subject two" "table_row"
Scenario: An automatic subscription forum can have discussions unsubscribed from
Given I add a "Forum" to section "1" and I fill the form with:
And I click on "You are subscribed to this discussion. Click to unsubscribe." "link" in the "Test post subject one" "table_row"
And I follow "Continue"
And I should see "Unsubscribe from this forum"
- And "Not subscribed. Click to subscribe." "link" should exist in the "Test post subject one" "table_row"
+ And "You are not subscribed to this discussion. Click to subscribe." "link" should exist in the "Test post subject one" "table_row"
And "You are subscribed to this discussion. Click to unsubscribe." "link" should exist in the "Test post subject two" "table_row"
- And I click on "Not subscribed. Click to subscribe." "link" in the "Test post subject one" "table_row"
+ And I click on "You are not subscribed to this discussion. Click to subscribe." "link" in the "Test post subject one" "table_row"
And I follow "Continue"
And I should see "Unsubscribe from this forum"
And "You are subscribed to this discussion. Click to unsubscribe." "link" should exist in the "Test post subject one" "table_row"
And I click on "You are subscribed to this discussion. Click to unsubscribe." "link" in the "Test post subject one" "table_row"
And I follow "Continue"
And I should see "Unsubscribe from this forum"
- And "Not subscribed. Click to subscribe." "link" should exist in the "Test post subject one" "table_row"
+ And "You are not subscribed to this discussion. Click to subscribe." "link" should exist in the "Test post subject one" "table_row"
And "You are subscribed to this discussion. Click to unsubscribe." "link" should exist in the "Test post subject two" "table_row"
And I follow "Unsubscribe from this forum"
And I follow "Continue"
And I should see "Subscribe to this forum"
- And "Not subscribed. Click to subscribe." "link" should exist in the "Test post subject one" "table_row"
- And "Not subscribed. Click to subscribe." "link" should exist in the "Test post subject two" "table_row"
+ And "You are not subscribed to this discussion. Click to subscribe." "link" should exist in the "Test post subject one" "table_row"
+ And "You are not subscribed to this discussion. Click to subscribe." "link" should exist in the "Test post subject two" "table_row"
And I follow "Subscribe to this forum"
And I follow "Continue"
And I should see "Unsubscribe from this forum"
And I follow "Course 1"
And I follow "Test forum name"
And I should see "Subscribe to this forum"
- And "Not subscribed. Click to subscribe." "link" should exist in the "Test post subject one" "table_row"
- And "Not subscribed. Click to subscribe." "link" should exist in the "Test post subject two" "table_row"
- And I click on "Not subscribed. Click to subscribe." "link" in the "Test post subject one" "table_row"
+ And "You are not subscribed to this discussion. Click to subscribe." "link" should exist in the "Test post subject one" "table_row"
+ And "You are not subscribed to this discussion. Click to subscribe." "link" should exist in the "Test post subject two" "table_row"
+ And I click on "You are not subscribed to this discussion. Click to subscribe." "link" in the "Test post subject one" "table_row"
And I follow "Continue"
And I should see "Subscribe to this forum"
And "You are subscribed to this discussion. Click to unsubscribe." "link" should exist in the "Test post subject one" "table_row"
- And "Not subscribed. Click to subscribe." "link" should exist in the "Test post subject two" "table_row"
+ And "You are not subscribed to this discussion. Click to subscribe." "link" should exist in the "Test post subject two" "table_row"
And I log out
And I log in as "admin"
And I follow "Course 1"
And I follow "Continue"
Then I should see "Subscribe to this forum"
And "You are subscribed to this discussion. Click to unsubscribe." "link" should exist in the "Test post subject one" "table_row"
- And "Not subscribed. Click to subscribe." "link" should exist in the "Test post subject two" "table_row"
+ And "You are not subscribed to this discussion. Click to subscribe." "link" should exist in the "Test post subject two" "table_row"
Scenario: A user does not lose their preferences when a forum is switch from optional to automatic
Given I add a "Forum" to section "1" and I fill the form with:
And I follow "Course 1"
And I follow "Test forum name"
And I should see "Subscribe to this forum"
- And "Not subscribed. Click to subscribe." "link" should exist in the "Test post subject one" "table_row"
- And "Not subscribed. Click to subscribe." "link" should exist in the "Test post subject two" "table_row"
- And I click on "Not subscribed. Click to subscribe." "link" in the "Test post subject one" "table_row"
+ And "You are not subscribed to this discussion. Click to subscribe." "link" should exist in the "Test post subject one" "table_row"
+ And "You are not subscribed to this discussion. Click to subscribe." "link" should exist in the "Test post subject two" "table_row"
+ And I click on "You are not subscribed to this discussion. Click to subscribe." "link" in the "Test post subject one" "table_row"
And I follow "Continue"
And I should see "Subscribe to this forum"
And "You are subscribed to this discussion. Click to unsubscribe." "link" should exist in the "Test post subject one" "table_row"
- And "Not subscribed. Click to subscribe." "link" should exist in the "Test post subject two" "table_row"
+ And "You are not subscribed to this discussion. Click to subscribe." "link" should exist in the "Test post subject two" "table_row"
And I log out
And I log in as "admin"
And I follow "Course 1"
And I follow "Continue"
Then I should see "Subscribe to this forum"
And "You are subscribed to this discussion. Click to unsubscribe." "link" should exist in the "Test post subject one" "table_row"
- And "Not subscribed. Click to subscribe." "link" should exist in the "Test post subject two" "table_row"
+ And "You are not subscribed to this discussion. Click to subscribe." "link" should exist in the "Test post subject two" "table_row"
Scenario: An optional forum prompts a user to subscribe to a discussion when posting unless they have already chosen not to subscribe
Given I add a "Forum" to section "1" and I fill the form with:
| Discussion subscription | I don't want email copies of posts to this discussion |
And I follow "Test forum name"
Then "You are subscribed to this discussion. Click to unsubscribe." "link" should exist in the "Test post subject one" "table_row"
- And "Not subscribed. Click to subscribe." "link" should exist in the "Test post subject two" "table_row"
+ And "You are not subscribed to this discussion. Click to subscribe." "link" should exist in the "Test post subject two" "table_row"
And I follow "Test post subject one"
And I follow "Reply"
And the field "Discussion subscription" matches value "Send me email copies of posts to this discussion"
| Discussion subscription | I don't want email copies of posts to this discussion |
And I follow "Test forum name"
Then "You are subscribed to this discussion. Click to unsubscribe." "link" should exist in the "Test post subject one" "table_row"
- And "Not subscribed. Click to subscribe." "link" should exist in the "Test post subject two" "table_row"
+ And "You are not subscribed to this discussion. Click to subscribe." "link" should exist in the "Test post subject two" "table_row"
And I follow "Test post subject one"
And I follow "Reply"
And the field "Discussion subscription" matches value "Send me email copies of posts to this discussion"
And I log out
When I log in as "guest"
And I follow "Test forum name"
- Then "Not subscribed. Click to subscribe." "link" should not exist in the "Test post subject one" "table_row"
+ Then "You are not subscribed to this discussion. Click to subscribe." "link" should not exist in the "Test post subject one" "table_row"
And "You are subscribed to this discussion. Click to unsubscribe." "link" should not exist in the "Test post subject one" "table_row"
And I follow "Test post subject one"
- And "Not subscribed. Click to subscribe." "link" should not exist
+ And "You are not subscribed to this discussion. Click to subscribe." "link" should not exist
And "You are subscribed to this discussion. Click to unsubscribe." "link" should not exist
Scenario: A user who is not logged in should not be able to subscribe to a discussion
| Message | Test post message one |
And I log out
When I follow "Test forum name"
- Then "Not subscribed. Click to subscribe." "link" should not exist in the "Test post subject one" "table_row"
+ Then "You are not subscribed to this discussion. Click to subscribe." "link" should not exist in the "Test post subject one" "table_row"
And "You are subscribed to this discussion. Click to unsubscribe." "link" should not exist in the "Test post subject one" "table_row"
And I follow "Test post subject one"
- And "Not subscribed. Click to subscribe." "link" should not exist
+ And "You are not subscribed to this discussion. Click to subscribe." "link" should not exist
And "You are subscribed to this discussion. Click to unsubscribe." "link" should not exist
Then I should not see "Subscribe to this forum"
And I should not see "Unsubscribe from this forum"
And "You are subscribed to this discussion. Click to unsubscribe." "link" should not exist in the "Test post subject" "table_row"
- And "Not subscribed. Click to subscribe." "link" should not exist in the "Test post subject" "table_row"
+ And "You are not subscribed to this discussion. Click to subscribe." "link" should not exist in the "Test post subject" "table_row"
Scenario: A forced subscription forum cannot be subscribed to
Given I add a "Forum" to section "1" and I fill the form with:
Then I should not see "Subscribe to this forum"
And I should not see "Unsubscribe from this forum"
And "You are subscribed to this discussion. Click to unsubscribe." "link" should not exist in the "Test post subject" "table_row"
- And "Not subscribed. Click to subscribe." "link" should not exist in the "Test post subject" "table_row"
+ And "You are not subscribed to this discussion. Click to subscribe." "link" should not exist in the "Test post subject" "table_row"
Scenario: An optional forum can be subscribed to
Given I add a "Forum" to section "1" and I fill the form with:
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2014082101; // The current module version (Date: YYYYMMDDXX)
+$plugin->version = 2014103000; // The current module version (Date: YYYYMMDDXX)
$plugin->requires = 2014050800; // Requires this Moodle version
$plugin->component = 'mod_forum'; // Full name of the plugin (used for diagnostics)
data: {
sesskey: M.cfg.sesskey,
forumid: clickedLink.getData('forumid'),
- discussionid: clickedLink.getData('discussionid')
+ discussionid: clickedLink.getData('discussionid'),
+ includetext: clickedLink.getData('includetext')
},
context: this,
'arguments': {
$currentsection = "";
foreach ($glossarys as $glossary) {
- if (!$glossary->visible && has_capability('moodle/course:viewhiddenactivities', $context)) {
+ if (!$glossary->visible && has_capability('moodle/course:viewhiddenactivities',
+ context_module::instance($glossary->coursemodule))) {
// Show dimmed if the mod is hidden.
$link = "<a class=\"dimmed\" href=\"view.php?id=$glossary->coursemodule\">".format_string($glossary->name,true)."</a>";
} else if ($glossary->visible) {
$pages = $lesson->load_all_pages();
foreach ($pages as $key=>$page) {
- if ($page->qtype !== LESSON_PAGE_ESSAY) {
+ if ($page->qtype != LESSON_PAGE_ESSAY) {
unset($pages[$key]);
}
}
// Get lesson pages that are essay
$pages = $lesson->load_all_pages();
foreach ($pages as $key=>$page) {
- if ($page->qtype !== LESSON_PAGE_ESSAY) {
+ if ($page->qtype != LESSON_PAGE_ESSAY) {
unset($pages[$key]);
}
}
Y.delegate('mousedown', M.mod_quiz.secure_window.prevent_mouse, 'body', '*');
Y.delegate('mouseup', M.mod_quiz.secure_window.prevent_mouse, 'body', '*');
Y.delegate('dragstart', M.mod_quiz.secure_window.prevent, document, '*');
- Y.delegate('selectstart', M.mod_quiz.secure_window.prevent, document, '*');
+ Y.delegate('selectstart', M.mod_quiz.secure_window.prevent_selection, document, '*');
Y.delegate('cut', M.mod_quiz.secure_window.prevent, document, '*');
Y.delegate('copy', M.mod_quiz.secure_window.prevent, document, '*');
Y.delegate('paste', M.mod_quiz.secure_window.prevent, document, '*');
setTimeout(M.mod_quiz.secure_window.clear_status, 10);
},
+ is_content_editable: function(n) {
+ if (n.test('[contenteditable=true]')) {
+ return true;
+ }
+ n = n.get('parentNode');
+ if (n === null) {
+ return false;
+ }
+ return M.mod_quiz.secure_window.is_content_editable(n);
+ },
+
+ prevent_selection: function(e) {
+ return false;
+ },
+
prevent: function(e) {
alert(M.str.quiz.functiondisabledbysecuremode);
e.halt();
// Left click on a button or similar. No worries.
return;
}
+ if (e.button == 1 && M.mod_quiz.secure_window.is_content_editable(e.target)) {
+ // Left click in Atto or similar.
+ return;
+ }
e.halt();
},
And "Question C" should have number "i" on the edit quiz page
And "Question D" should have number "2" on the edit quiz page
And "Question E" should have number "3" on the edit quiz page
-
+
# Delete from first question in the last remaining page. Are the page breaks updated?
When I delete "Question A" in the quiz by clicking the delete icon
Then "Question B" should have number "1" on the edit quiz page
And "Question C" should have number "i" on the edit quiz page
And "Question D" should have number "2" on the edit quiz page
And "Question E" should have number "3" on the edit quiz page
-
+
When I click on the "Add" page break icon after question "Question C"
Then I should see "Page 1"
And I should see "Question B" on quiz page "1"
Then I should see "Page 2"
And I should see "Question D" on quiz page "2"
And I should see "Question E" on quiz page "2"
-
+
# Test reorder of pages
When I click on the "Add" page break icon after question "Question B"
Then I should see "Page 1"
$trackedusers = scorm_get_count_users($scorm->id, $scorm->groupingid);
if ($trackedusers > 0) {
$reportshow = html_writer::link('report.php?id='.$scorm->coursemodule,
- get_string('viewallreports', 'scorm', $trackedusers)).html_writer::end_div();
+ get_string('viewallreports', 'scorm', $trackedusers));
} else {
$reportshow = get_string('noreports', 'scorm');
}
document.body.innerHTML = "<p><?php echo get_string('activityloading', 'scorm');?>" +
"<span id='countdown'><?php echo $delayseconds ?></span> " +
"<?php echo get_string('numseconds', 'moodle', '');?>. " +
- "<img src='<?php echo $OUTPUT->pix_url('wait', 'scorm') ?>'><p>";
+ "<img src='<?php echo $OUTPUT->pix_url('wait', 'scorm') ?>'></p>";
var e = document.getElementById("countdown");
var cSeconds = parseInt(e.innerHTML);
var timer = setInterval(function() {
$PAGE->set_title($pagetitle);
$PAGE->set_heading($course->fullname);
}
-if (!$cm->visible and !has_capability('moodle/course:viewhiddenactivities', $coursecontext)) {
+if (!$cm->visible and !has_capability('moodle/course:viewhiddenactivities', context_module::instance($cm->id))) {
echo $OUTPUT->header();
notice(get_string("activityiscurrentlyhidden"));
echo $OUTPUT->footer();
$url = array();
$url['type'] = 'url';
- $url['filename'] = $urlrecord->name;
+ $url['filename'] = clean_param(format_string($urlrecord->name), PARAM_FILE);
$url['filepath'] = null;
$url['filesize'] = 0;
$url['fileurl'] = $fullurl;
$limittime = '';
if (!empty($minloginternalreader)) {
$limittime = ' AND time < :timeto ';
- $params['timeto'] = $minloginternalreader;
}
// Check if we need to show the last access.
$sqllasttime = '';
AND m.visible = :visible $limittime
GROUP BY cm.id";
$params = array('courseid' => $course->id, 'action' => 'view%', 'visible' => 1);
+ if (!empty($minloginternalreader)) {
+ $params['timeto'] = $minloginternalreader;
+ }
$views = $DB->get_records_sql($sql, $params);
}
foreach ($v as $key => $value) {
if (isset($views[$key]) && !empty($views[$key]->numviews)) {
$views[$key]->numviews += $value->numviews;
+ if ($value->lasttime > $views[$key]->lasttime) {
+ $views[$key]->lasttime = $value->lasttime;
+ }
} else {
$views[$key] = $value;
}
// If legacy reader is preferred reader.
if ($readerpluginname == 'logstore_legacy') {
$uselegacyreader = true;
- break;
}
// If sql_internal_reader is preferred reader.
$useinternalreader = true;
$logtable = $reader->get_internal_log_table_name();
$minloginternalreader = $DB->get_field_sql('SELECT min(timecreated) FROM {' . $logtable . '}');
- break;
}
}
}
if (!report_stats_can_access_user_report($user, $course, true)) {
require_capability('report/stats:view', $coursecontext);
}
-
+} else if ($mode === STATS_MODE_DETAILED) {
+ print_error('invaliduser');
} else {
require_capability('report/stats:view', $coursecontext);
}
list($sort, $moreparams) = users_order_by_sql('u');
$moreparams['courseid'] = $course->id;
- $sql = "SELECT DISTINCT u.id, u.firstname, u.lastname, u.idnumber
+ $fields = user_picture::fields('u', array('idnumber'));
+ $sql = "SELECT DISTINCT $fields
FROM {stats_user_{$param->table}} s
JOIN {user} u ON u.id = s.userid
WHERE courseid = :courseid";
if (!$us = $DB->get_records_sql($sql, array_merge($param->params, $moreparams))) {
print_error('nousers');
}
-
foreach ($us as $u) {
- $users[$u->userid] = fullname($u, true);
+ $users[$u->id] = fullname($u, true);
}
$table->align = array('left','left','left','left','left','left','left','left');
echo '</div>';
echo '</form>';
- if (!empty($report) && !empty($time)) {
+ // Display the report if:
+ // - A report has been selected.
+ // - A time frame has been provided
+ // - If the mode is not detailed OR a valid user has been selected.
+ if (!empty($report) && !empty($time) && ($mode !== STATS_MODE_DETAILED || !empty($userid))) {
if ($report == STATS_REPORT_LOGINS && $course->id != SITEID) {
print_error('reportnotavailable');
}
| fullname | shortname | category |
| Course 1 | C1 | 0 |
And I log in as "admin"
- And I expand "My profile" node
- And I follow "My private files"
+ And I navigate to "My private files" node in "My profile"
And I upload "lib/tests/fixtures/empty.txt" file to "Files" filemanager
And I upload "lib/tests/fixtures/upload_users.csv" file to "Files" filemanager
And I press "Save changes"
| fullname | shortname | category |
| Course 1 | C1 | 0 |
And I log in as "admin"
- And I expand "My profile" node
- And I follow "My private files"
+ And I navigate to "My private files" node in "My profile"
And I upload "lib/tests/fixtures/empty.txt" file to "Files" filemanager
And I press "Save changes"
And I am on homepage
| user | course | role |
| teacher1 | C1 | editingteacher |
When I log in as "teacher1"
- And I expand "My profile" node
- And I follow "My private files"
+ And I navigate to "My private files" node in "My profile"
And I upload "lib/tests/fixtures/empty.txt" file to "Files" filemanager
Then I should see "empty.txt" in the "div.fp-content" "css_element"
And I press "Save changes"
@javascript @_bug_phantomjs
Scenario: Delete a file and a folder
Given I log in as "admin"
- And I expand "My profile" node
- And I follow "My private files"
+ And I navigate to "My private files" node in "My profile"
And I upload "lib/tests/fixtures/empty.txt" file to "Files" filemanager
And I create "Delete me" folder in "Files" filemanager
And I press "Save changes"
| user | course | role |
| teacher1 | C1 | editingteacher |
When I log in as "teacher1"
- And I expand "My profile" node
- And I follow "My private files"
+ And I navigate to "My private files" node in "My profile"
And I upload "lib/tests/fixtures/empty.txt" file to "Files" filemanager
Then I should see "1" elements in "Files" filemanager
And I upload and overwrite "lib/tests/fixtures/empty.txt" file to "Files" filemanager
.path-grade-edit-tree .setup-grades.generaltable .leveleven {
background-color: #fafafa;
}
-.path-grade-edit-tree .setup-grades.generaltable tbody tr:hover > td,
-.path-grade-edit-tree .setup-grades.generaltable tbody tr:hover > th {
- background-color: #f5f5f5;
-}
.path-grade-edit-tree .setup-grades .column-weight.level3 {
padding-left: 37px;
}
}
.path-grade-edit-tree table.setup-grades .gradeitemdescription {
+ padding-left: 24px;
font-weight: normal;
- font-style: italic;
}
/** User report **/
.path-grade-report-user .user-grade.generaltable .leveleven {
background-color: #fafafa;
}
-.path-grade-report-user .user-grade.generaltable tbody tr:hover > td,
-.path-grade-report-user .user-grade.generaltable tbody tr:hover > th {
- background-color: #f5f5f5;
-}
.has_dock.path-grade-report-grader .gradeparent .sideonly.floating > .cell,
.has_dock.path-grade-report-grader .gradeparent .sideonly.floating > .cell,
// Set up grades layout.
.path-grade-edit-tree .setup-grades {
+ h4 {
+ margin: 0;
+ }
.column-rowspan {
padding: 0;
width: 24px;
.emptyrow {
display: none;
}
+ .gradeitemdescription {
+ font-weight: normal;
+ padding-left: 24px;
+ }
.column-weight {
+ white-space: nowrap;
&.level3 {
padding-left: 37px;
}
.leveleven {
background-color: @tableBackground;
}
- tbody tr:hover > td,
- tbody tr:hover > th {
- background-color: @tableBackgroundHover;
- }
}
}
.column-name h4 img.icon {
padding-left: 4px;
}
+ .gradeitemdescription {
+ padding-left: 0;
+ padding-right: 24px;
+ }
.column-weight {
&.level3 {
padding-left: 0;
}
}
-.path-grade-edit-tree table.setup-grades .column-weight {
- white-space: nowrap;
-}
-
-.path-grade-edit-tree table.setup-grades .gradeitemdescription {
- font-weight: normal;
- font-style: italic;
-}
-
/**
* Grader report.
*/
.path-grade-report {
.gradeparent {
- tr .cell {
+ table {
.border-radius(@baseBorderRadius);
+ }
+ tr .cell {
background-color: @paginationBackground;
}
table,
.leveleven {
background-color: @tableBackground;
}
- tbody tr:hover > td,
- tbody tr:hover > th {
- background-color: @tableBackgroundHover;
- }
}
}
* http://www.apache.org/licenses/LICENSE-2.0
*
* Designed and built with all the love in the world @twitter by @mdo and @fat.
- */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}.img-responsive{width:auto\9;height:auto;max-width:100%;-ms-interpolation-mode:bicubic}img{vertical-align:middle;border:0}#map_canvas img,.google-maps img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;color:#333;background-color:#fff}a{color:#0070a8;text-decoration:none}a:hover,a:focus{color:#003d5c;text-decoration:underline}.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.1);box-shadow:0 1px 3px rgba(0,0,0,0.1)}.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px}.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.span12{width:940px}.span11{width:860px}.span10{width:780px}.span9{width:700px}.span8{width:620px}.span7{width:540px}.span6{width:460px}.span5{width:380px}.span4{width:300px}.span3{width:220px}.span2{width:140px}.span1{width:60px}.offset12{margin-left:980px}.offset11{margin-left:900px}.offset10{margin-left:820px}.offset9{margin-left:740px}.offset8{margin-left:660px}.offset7{margin-left:580px}.offset6{margin-left:500px}.offset5{margin-left:420px}.offset4{margin-left:340px}.offset3{margin-left:260px}.offset2{margin-left:180px}.offset1{margin-left:100px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%}.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%}.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%}.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%}.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%}.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%}.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%}.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%}.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%}.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%}.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%}.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%}.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%}.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%}.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%}.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%}.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%}.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%}.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%}.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%}.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%}.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%}.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%}.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%}.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%}.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%}.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%}.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%}.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%}.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%}.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%}.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%}.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%}.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%}.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%}[class*="span"].hide,.row-fluid [class*="span"].hide{display:none}[class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right}.container{margin-right:auto;margin-left:auto;*zoom:1}.container:before,.container:after{display:table;line-height:0;content:""}.container:after{clear:both}.container-fluid{padding-right:20px;padding-left:20px;*zoom:1}.container-fluid:before,.container-fluid:after{display:table;line-height:0;content:""}.container-fluid:after{clear:both}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:21px;font-weight:200;line-height:30px}small{font-size:85%}strong{font-weight:bold}em{font-style:italic}cite{font-style:normal}.muted{color:#999}a.muted:hover,a.muted:focus{color:#808080}.text-warning{color:#c09853}a.text-warning:hover,a.text-warning:focus{color:#a47e3c}.text-error{color:#b94a48}a.text-error:hover,a.text-error:focus{color:#953b39}.text-info{color:#3a87ad}a.text-info:hover,a.text-info:focus{color:#2d6987}.text-success{color:#468847}a.text-success:hover,a.text-success:focus{color:#356635}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:bold;line-height:20px;color:inherit;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{line-height:40px}h1{font-size:38.5px}h2{font-size:31.5px}h3{font-size:24.5px}h4{font-size:17.5px}h5{font-size:14px}h6{font-size:11.9px}h1 small{font-size:24.5px}h2 small{font-size:17.5px}h3 small{font-size:14px}h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eee}ul,ol{padding:0;margin:0 0 10px 25px}ul ul,ul ol,ol ol,ol ul{margin-bottom:0}li{line-height:20px}ul.unstyled,ol.unstyled{margin-left:0;list-style:none}ul.inline,ol.inline{margin-left:0;list-style:none}ul.inline>li,ol.inline>li{display:inline-block;*display:inline;padding-right:5px;padding-left:5px;*zoom:1}dl{margin-bottom:20px}dt,dd{line-height:20px}dt{font-weight:bold}dd{margin-left:10px}.dl-horizontal{*zoom:1}.dl-horizontal:before,.dl-horizontal:after{display:table;line-height:0;content:""}.dl-horizontal:after{clear:both}.dl-horizontal dt{float:left;width:180px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:200px}hr{margin:20px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{margin-bottom:0;font-size:17.5px;font-weight:300;line-height:1.25}blockquote small{display:block;line-height:20px;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:20px}code,pre{padding:0 3px 2px;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:12px;color:#333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}code{padding:2px 4px;color:#d14;white-space:nowrap;background-color:#f7f7f9;border:1px solid #e1e1e8}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}form{margin:0 0 20px}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333;border:0;border-bottom:1px solid #e5e5e5}legend small{font-size:15px;color:#999}label,input,button,select,textarea{font-size:14px;font-weight:normal;line-height:20px}input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}label{display:block;margin-bottom:5px}select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:14px;line-height:20px;color:#555;vertical-align:middle;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}input,textarea,.uneditable-input{width:206px}textarea{height:auto}textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#fff;border:1px solid #ccc;-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);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82,168,236,0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;*margin-top:0;line-height:normal}input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto}select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px}select{width:220px;background-color:#fff;border:1px solid #ccc}select[multiple],select[size]{height:auto}select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.uneditable-input,.uneditable-textarea{color:#999;cursor:not-allowed;background-color:#fcfcfc;border-color:#ccc;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);box-shadow:inset 0 1px 2px rgba(0,0,0,0.025)}.uneditable-input{overflow:hidden;white-space:nowrap}.uneditable-textarea{width:auto;height:auto}input:-moz-placeholder,textarea:-moz-placeholder{color:#999}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.radio,.checkbox{min-height:20px;padding-left:20px}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-20px}.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}.input-mini{width:60px}.input-small{width:90px}.input-medium{width:150px}.input-large{width:210px}.input-xlarge{width:270px}.input-xxlarge{width:530px}input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0}.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:926px}input.span11,textarea.span11,.uneditable-input.span11{width:846px}input.span10,textarea.span10,.uneditable-input.span10{width:766px}input.span9,textarea.span9,.uneditable-input.span9{width:686px}input.span8,textarea.span8,.uneditable-input.span8{width:606px}input.span7,textarea.span7,.uneditable-input.span7{width:526px}input.span6,textarea.span6,.uneditable-input.span6{width:446px}input.span5,textarea.span5,.uneditable-input.span5{width:366px}input.span4,textarea.span4,.uneditable-input.span4{width:286px}input.span3,textarea.span3,.uneditable-input.span3{width:206px}input.span2,textarea.span2,.uneditable-input.span2{width:126px}input.span1,textarea.span1,.uneditable-input.span1{width:46px}.controls-row{*zoom:1}.controls-row:before,.controls-row:after{display:table;line-height:0;content:""}.controls-row:after{clear:both}.controls-row [class*="span"],.row-fluid .controls-row [class*="span"]{float:left}.controls-row .checkbox[class*="span"],.controls-row .radio[class*="span"]{padding-top:5px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eee}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent}.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853}.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853}.control-group.warning input,.control-group.warning select,.control-group.warning textarea{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)}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea: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}.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48}.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48}.control-group.error input,.control-group.error select,.control-group.error textarea{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)}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea: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}.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847}.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847}.control-group.success input,.control-group.success select,.control-group.success textarea{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)}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea: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}.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847}.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad}.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad}.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-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)}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3}.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1}.form-actions:before,.form-actions:after{display:table;line-height:0;content:""}.form-actions:after{clear:both}.help-block,.help-inline{color:#595959}.help-block{display:block;margin-bottom:10px}.help-inline{display:inline-block;*display:inline;padding-left:5px;vertical-align:middle;*zoom:1}.input-append,.input-prepend{display:inline-block;margin-bottom:10px;font-size:0;white-space:nowrap;vertical-align:middle}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input,.input-append .dropdown-menu,.input-prepend .dropdown-menu,.input-append .popover,.input-prepend .popover{font-size:14px}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2}.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #fff;background-color:#eee;border:1px solid #ccc}.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546}.input-prepend .add-on,.input-prepend .btn{margin-right:-1px}.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child,.input-append .uneditable-input+.btn-group .btn:last-child{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px}.input-append .add-on:last-child,.input-append .btn:last-child,.input-append .btn-group:last-child>.dropdown-toggle{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend.input-append input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn,.input-prepend.input-append .uneditable-input+.btn-group .btn{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .btn-group:first-child{margin-left:0}input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;margin-bottom:0;vertical-align:middle;*zoom:1}.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none}.form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block}.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0}.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0}.control-group{margin-bottom:10px}legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate}.form-horizontal .control-group{margin-bottom:20px;*zoom:1}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;line-height:0;content:""}.form-horizontal .control-group:after{clear:both}.form-horizontal .control-label{float:left;width:180px;padding-top:5px;text-align:right}.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:200px;*margin-left:0}.form-horizontal .controls:first-child{*padding-left:200px}.form-horizontal .help-block{margin-bottom:0}.form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .input-append+.help-block{margin-top:10px}.form-horizontal .form-actions{padding-left:200px}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}.table{width:100%;margin-bottom:20px}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #ddd}.table th{font-weight:bold}.table thead th{vertical-align:bottom}.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed th,.table-condensed td{padding:4px 5px}.table-bordered{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-bordered th,.table-bordered td{border-left:1px solid #ddd}.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0}.table-bordered thead:first-child tr:first-child>th:first-child,.table-bordered tbody:first-child tr:first-child>td:first-child,.table-bordered 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-bordered thead:first-child tr:first-child>th:last-child,.table-bordered tbody:first-child tr:first-child>td:last-child,.table-bordered 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-bordered thead:last-child tr:last-child>th:first-child,.table-bordered tbody:last-child tr:last-child>td:first-child,.table-bordered tbody:last-child tr:last-child>th:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child,.table-bordered 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-bordered thead:last-child tr:last-child>th:last-child,.table-bordered tbody:last-child tr:last-child>td:last-child,.table-bordered tbody:last-child tr:last-child>th:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child,.table-bordered 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-bordered 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-bordered 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-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered 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-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered 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-striped tbody>tr:nth-child(odd)>td,.table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover tbody tr:hover>td,.table-hover tbody tr:hover>th{background-color:#f5f5f5}table td[class*="span"],table th[class*="span"],.row-fluid table td[class*="span"],.row-fluid table th[class*="span"]{display:table-cell;float:none;margin-left:0}.table td.span1,.table th.span1{float:none;width:44px;margin-left:0}.table td.span2,.table th.span2{float:none;width:124px;margin-left:0}.table td.span3,.table th.span3{float:none;width:204px;margin-left:0}.table td.span4,.table th.span4{float:none;width:284px;margin-left:0}.table td.span5,.table th.span5{float:none;width:364px;margin-left:0}.table td.span6,.table th.span6{float:none;width:444px;margin-left:0}.table td.span7,.table th.span7{float:none;width:524px;margin-left:0}.table td.span8,.table th.span8{float:none;width:604px;margin-left:0}.table td.span9,.table th.span9{float:none;width:684px;margin-left:0}.table td.span10,.table th.span10{float:none;width:764px;margin-left:0}.table td.span11,.table th.span11{float:none;width:844px;margin-left:0}.table td.span12,.table th.span12{float:none;width:924px;margin-left:0}.table tbody tr.success>td{background-color:#dff0d8}.table tbody tr.error>td{background-color:#f2dede}.table tbody tr.warning>td{background-color:#fcf8e3}.table tbody tr.info>td{background-color:#d9edf7}.table-hover tbody tr.success:hover>td{background-color:#d0e9c6}.table-hover tbody tr.error:hover>td{background-color:#ebcccc}.table-hover tbody tr.warning:hover>td{background-color:#faf2cc}.table-hover tbody tr.info:hover>td{background-color:#c4e3f3}[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;margin-top:1px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("[[pix:theme|glyphicons-halflings]]");background-position:14px 14px;background-repeat:no-repeat}.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:focus>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>li>a:focus>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:focus>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"],.dropdown-submenu:focus>a>[class*=" icon-"]{background-image:url("[[pix:theme|glyphicons-halflings-white]]")}.icon-glass{background-position:0 0}.icon-music{background-position:-24px 0}.icon-search{background-position:-48px 0}.icon-envelope{background-position:-72px 0}.icon-heart{background-position:-96px 0}.icon-star{background-position:-120px 0}.icon-star-empty{background-position:-144px 0}.icon-user{background-position:-168px 0}.icon-film{background-position:-192px 0}.icon-th-large{background-position:-216px 0}.icon-th{background-position:-240px 0}.icon-th-list{background-position:-264px 0}.icon-ok{background-position:-288px 0}.icon-remove{background-position:-312px 0}.icon-zoom-in{background-position:-336px 0}.icon-zoom-out{background-position:-360px 0}.icon-off{background-position:-384px 0}.icon-signal{background-position:-408px 0}.icon-cog{background-position:-432px 0}.icon-trash{background-position:-456px 0}.icon-home{background-position:0 -24px}.icon-file{background-position:-24px -24px}.icon-time{background-position:-48px -24px}.icon-road{background-position:-72px -24px}.icon-download-alt{background-position:-96px -24px}.icon-download{background-position:-120px -24px}.icon-upload{background-position:-144px -24px}.icon-inbox{background-position:-168px -24px}.icon-play-circle{background-position:-192px -24px}.icon-repeat{background-position:-216px -24px}.icon-refresh{background-position:-240px -24px}.icon-list-alt{background-position:-264px -24px}.icon-lock{background-position:-287px -24px}.icon-flag{background-position:-312px -24px}.icon-headphones{background-position:-336px -24px}.icon-volume-off{background-position:-360px -24px}.icon-volume-down{background-position:-384px -24px}.icon-volume-up{background-position:-408px -24px}.icon-qrcode{background-position:-432px -24px}.icon-barcode{background-position:-456px -24px}.icon-tag{background-position:0 -48px}.icon-tags{background-position:-25px -48px}.icon-book{background-position:-48px -48px}.icon-bookmark{background-position:-72px -48px}.icon-print{background-position:-96px -48px}.icon-camera{background-position:-120px -48px}.icon-font{background-position:-144px -48px}.icon-bold{background-position:-167px -48px}.icon-italic{background-position:-192px -48px}.icon-text-height{background-position:-216px -48px}.icon-text-width{background-position:-240px -48px}.icon-align-left{background-position:-264px -48px}.icon-align-center{background-position:-288px -48px}.icon-align-right{background-position:-312px -48px}.icon-align-justify{background-position:-336px -48px}.icon-list{background-position:-360px -48px}.icon-indent-left{background-position:-384px -48px}.icon-indent-right{background-position:-408px -48px}.icon-facetime-video{background-position:-432px -48px}.icon-picture{background-position:-456px -48px}.icon-pencil{background-position:0 -72px}.icon-map-marker{background-position:-24px -72px}.icon-adjust{background-position:-48px -72px}.icon-tint{background-position:-72px -72px}.icon-edit{background-position:-96px -72px}.icon-share{background-position:-120px -72px}.icon-check{background-position:-144px -72px}.icon-move{background-position:-168px -72px}.icon-step-backward{background-position:-192px -72px}.icon-fast-backward{background-position:-216px -72px}.icon-backward{background-position:-240px -72px}.icon-play{background-position:-264px -72px}.icon-pause{background-position:-288px -72px}.icon-stop{background-position:-312px -72px}.icon-forward{background-position:-336px -72px}.icon-fast-forward{background-position:-360px -72px}.icon-step-forward{background-position:-384px -72px}.icon-eject{background-position:-408px -72px}.icon-chevron-left{background-position:-432px -72px}.icon-chevron-right{background-position:-456px -72px}.icon-plus-sign{background-position:0 -96px}.icon-minus-sign{background-position:-24px -96px}.icon-remove-sign{background-position:-48px -96px}.icon-ok-sign{background-position:-72px -96px}.icon-question-sign{background-position:-96px -96px}.icon-info-sign{background-position:-120px -96px}.icon-screenshot{background-position:-144px -96px}.icon-remove-circle{background-position:-168px -96px}.icon-ok-circle{background-position:-192px -96px}.icon-ban-circle{background-position:-216px -96px}.icon-arrow-left{background-position:-240px -96px}.icon-arrow-right{background-position:-264px -96px}.icon-arrow-up{background-position:-289px -96px}.icon-arrow-down{background-position:-312px -96px}.icon-share-alt{background-position:-336px -96px}.icon-resize-full{background-position:-360px -96px}.icon-resize-small{background-position:-384px -96px}.icon-plus{background-position:-408px -96px}.icon-minus{background-position:-433px -96px}.icon-asterisk{background-position:-456px -96px}.icon-exclamation-sign{background-position:0 -120px}.icon-gift{background-position:-24px -120px}.icon-leaf{background-position:-48px -120px}.icon-fire{background-position:-72px -120px}.icon-eye-open{background-position:-96px -120px}.icon-eye-close{background-position:-120px -120px}.icon-warning-sign{background-position:-144px -120px}.icon-plane{background-position:-168px -120px}.icon-calendar{background-position:-192px -120px}.icon-random{width:16px;background-position:-216px -120px}.icon-comment{background-position:-240px -120px}.icon-magnet{background-position:-264px -120px}.icon-chevron-up{background-position:-288px -120px}.icon-chevron-down{background-position:-313px -119px}.icon-retweet{background-position:-336px -120px}.icon-shopping-cart{background-position:-360px -120px}.icon-folder-close{width:16px;background-position:-384px -120px}.icon-folder-open{width:16px;background-position:-408px -120px}.icon-resize-vertical{background-position:-432px -119px}.icon-resize-horizontal{background-position:-456px -118px}.icon-hdd{background-position:0 -144px}.icon-bullhorn{background-position:-24px -144px}.icon-bell{background-position:-48px -144px}.icon-certificate{background-position:-72px -144px}.icon-thumbs-up{background-position:-96px -144px}.icon-thumbs-down{background-position:-120px -144px}.icon-hand-right{background-position:-144px -144px}.icon-hand-left{background-position:-168px -144px}.icon-hand-up{background-position:-192px -144px}.icon-hand-down{background-position:-216px -144px}.icon-circle-arrow-right{background-position:-240px -144px}.icon-circle-arrow-left{background-position:-264px -144px}.icon-circle-arrow-up{background-position:-288px -144px}.icon-circle-arrow-down{background-position:-312px -144px}.icon-globe{background-position:-336px -144px}.icon-wrench{background-position:-360px -144px}.icon-tasks{background-position:-384px -144px}.icon-filter{background-position:-408px -144px}.icon-briefcase{background-position:-432px -144px}.icon-fullscreen{background-position:-456px -144px}.dropup,.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-submenu:hover>a,.dropdown-submenu:focus>a{color:#fff;text-decoration:none;background-color:#00699e;background-image:-moz-linear-gradient(top,#0070a8,#005f8f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#0070a8),to(#005f8f));background-image:-webkit-linear-gradient(top,#0070a8,#005f8f);background-image:-o-linear-gradient(top,#0070a8,#005f8f);background-image:linear-gradient(to bottom,#0070a8,#005f8f);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0070a8',endColorstr='#ff005f8f',GradientType=0)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#00699e;background-image:-moz-linear-gradient(top,#0070a8,#005f8f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#0070a8),to(#005f8f));background-image:-webkit-linear-gradient(top,#0070a8,#005f8f);background-image:-o-linear-gradient(top,#0070a8,#005f8f);background-image:linear-gradient(to bottom,#0070a8,#005f8f);background-repeat:repeat-x;outline:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0070a8',endColorstr='#ff005f8f',GradientType=0)}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:default;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open{*z-index:1000}.open>.dropdown-menu{display:block}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0}.dropdown-submenu>a:after{display:block;float:right;width:0;height:0;margin-top:5px;margin-right:-10px;border-color:transparent;border-left-color:#ccc;border-style:solid;border-width:5px 0 5px 5px;content:" "}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.dropdown .dropdown-menu .nav-header{padding-right:20px;padding-left:20px}.typeahead{z-index:1051;margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.well{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)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.collapse.in{height:auto}.close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.btn{display:inline-block;*display:inline;padding:4px 12px;margin-bottom:0;*margin-left:.3em;font-size:14px;line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #ccc;*border:0;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);*zoom:1;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333;background-color:#e6e6e6;*background-color:#d9d9d9}.btn:active,.btn.active{background-color:#ccc \9}.btn:first-child{*margin-left:0}.btn:hover,.btn:focus{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-large{padding:11px 19px;font-size:17.5px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.btn-large [class^="icon-"],.btn-large [class*=" icon-"]{margin-top:4px}.btn-small{padding:2px 10px;font-size:11.9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-small [class^="icon-"],.btn-small [class*=" icon-"]{margin-top:0}.btn-mini [class^="icon-"],.btn-mini [class*=" icon-"]{margin-top:-1px}.btn-mini{padding:0 6px;font-size:10.5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255,255,255,0.75)}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#005aa8;*background-color:#0038a8;background-image:-moz-linear-gradient(top,#0070a8,#0038a8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#0070a8),to(#0038a8));background-image:-webkit-linear-gradient(top,#0070a8,#0038a8);background-image:-o-linear-gradient(top,#0070a8,#0038a8);background-image:linear-gradient(to bottom,#0070a8,#0038a8);background-repeat:repeat-x;border-color:#0038a8 #0038a8 #001e5c;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0070a8',endColorstr='#ff0038a8',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#fff;background-color:#0038a8;*background-color:#002f8f}.btn-primary:active,.btn-primary.active{background-color:#002775 \9}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#faa732;*background-color:#f89406;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#fff;background-color:#f89406;*background-color:#df8505}.btn-warning:active,.btn-warning.active{background-color:#c67605 \9}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#da4f49;*background-color:#bd362f;background-image:-moz-linear-gradient(top,#ee5f5b,#bd362f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));background-image:-webkit-linear-gradient(top,#ee5f5b,#bd362f);background-image:-o-linear-gradient(top,#ee5f5b,#bd362f);background-image:linear-gradient(to bottom,#ee5f5b,#bd362f);background-repeat:repeat-x;border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffbd362f',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#fff;background-color:#bd362f;*background-color:#a9302a}.btn-danger:active,.btn-danger.active{background-color:#942a25 \9}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#5bb75b;*background-color:#51a351;background-image:-moz-linear-gradient(top,#62c462,#51a351);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));background-image:-webkit-linear-gradient(top,#62c462,#51a351);background-image:-o-linear-gradient(top,#62c462,#51a351);background-image:linear-gradient(to bottom,#62c462,#51a351);background-repeat:repeat-x;border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff51a351',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#fff;background-color:#51a351;*background-color:#499249}.btn-success:active,.btn-success.active{background-color:#408140 \9}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#49afcd;*background-color:#2f96b4;background-image:-moz-linear-gradient(top,#5bc0de,#2f96b4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f96b4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f96b4);background-image:-o-linear-gradient(top,#5bc0de,#2f96b4);background-image:linear-gradient(to bottom,#5bc0de,#2f96b4);background-repeat:repeat-x;border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff2f96b4',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#fff;background-color:#2f96b4;*background-color:#2a85a0}.btn-info:active,.btn-info.active{background-color:#24748c \9}.btn-inverse{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#363636;*background-color:#222;background-image:-moz-linear-gradient(top,#444,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#444),to(#222));background-image:-webkit-linear-gradient(top,#444,#222);background-image:-o-linear-gradient(top,#444,#222);background-image:linear-gradient(to bottom,#444,#222);background-repeat:repeat-x;border-color:#222 #222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444',endColorstr='#ff222222',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#fff;background-color:#222;*background-color:#151515}.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9}button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0}button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px}button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px}button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px}.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-link{color:#0070a8;cursor:pointer;border-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-link:hover,.btn-link:focus{color:#003d5c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus{color:#333;text-decoration:none}.btn-group{position:relative;display:inline-block;*display:inline;*margin-left:.3em;font-size:0;white-space:nowrap;vertical-align:middle;*zoom:1}.btn-group:first-child{*margin-left:0}.btn-group+.btn-group{margin-left:5px}.btn-toolbar{margin-top:10px;margin-bottom:10px;font-size:0}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group{margin-left:5px}.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group>.btn+.btn{margin-left:-1px}.btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:14px}.btn-group>.btn-mini{font-size:10.5px}.btn-group>.btn-small{font-size:11.9px}.btn-group>.btn-large{font-size:17.5px}.btn-group>.btn:first-child{margin-left:0;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{*padding-top:5px;padding-right:8px;*padding-bottom:5px;padding-left:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn-group>.btn-mini+.dropdown-toggle{*padding-top:2px;padding-right:5px;*padding-bottom:2px;padding-left:5px}.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px}.btn-group>.btn-large+.dropdown-toggle{*padding-top:7px;padding-right:12px;*padding-bottom:7px;padding-left:12px}.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6}.btn-group.open .btn-primary.dropdown-toggle{background-color:#0038a8}.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406}.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f}.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351}.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4}.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222}.btn .caret{margin-top:8px;margin-left:0}.btn-large .caret{margin-top:6px}.btn-large .caret{border-top-width:5px;border-right-width:5px;border-left-width:5px}.btn-mini .caret,.btn-small .caret{margin-top:8px}.dropup .btn-large .caret{border-bottom-width:5px}.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#fff;border-bottom-color:#fff}.btn-group-vertical{display:inline-block;*display:inline;*zoom:1}.btn-group-vertical>.btn{display:block;float:none;max-width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group-vertical>.btn+.btn{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.btn-group-vertical>.btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.btn-group-vertical>.btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0}.btn-group-vertical>.btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.alert{padding:8px 35px 8px 14px;margin-bottom:20px;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}.alert,.alert h4{color:#c09853}.alert h4{margin:0}.alert .close{position:relative;top:-2px;right:-21px;line-height:20px}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-success h4{color:#468847}.alert-danger,.alert-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-danger h4,.alert-error h4{color:#b94a48}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-info h4{color:#3a87ad}.alert-block{padding-top:14px;padding-bottom:14px}.alert-block>p,.alert-block>ul{margin-bottom:0}.alert-block p+p{margin-top:5px}.nav{margin-bottom:20px;margin-left:0;list-style:none}.nav>li>a{display:block}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li>a>img{max-width:none}.nav>.pull-right{float:right}.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-right:15px;padding-left:15px;margin-bottom:0}.nav-list>li>a,.nav-list .nav-header{margin-right:-15px;margin-left:-15px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.nav-list>li>a{padding:3px 15px}.nav-list>.active>a,.nav-list>.active>a:hover,.nav-list>.active>a:focus{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.2);background-color:#0070a8}.nav-list [class^="icon-"],.nav-list [class*=" icon-"]{margin-right:2px}.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.nav-tabs,.nav-pills{*zoom:1}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;line-height:0;content:""}.nav-tabs:after,.nav-pills:after{clear:both}.nav-tabs>li,.nav-pills>li{float:left}.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{margin-bottom:-1px}.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover,.nav-tabs>li>a:focus{border-color:#eee #eee #ddd}.nav-tabs>.active>a{background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs>.active>a:not([href]),.nav-tabs>.active>a:not([href]):hover,.nav-tabs>.active>a:not([href]):focus{color:#555;cursor:default}.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nav-pills>.active>a,.nav-pills>.active>a:hover,.nav-pills>.active>a:focus{color:#fff;background-color:#0070a8}.nav-stacked>li{float:none}.nav-stacked>li>a{margin-right:0}.nav-tabs.nav-stacked{border-bottom:0}.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.nav-tabs.nav-stacked>li:first-child>a{-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}.nav-tabs.nav-stacked>li:last-child>a{-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}.nav-tabs.nav-stacked>li>a:hover,.nav-tabs.nav-stacked>li>a:focus{z-index:2;border-color:#ddd}.nav-pills.nav-stacked>li>a{margin-bottom:3px}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.nav .dropdown-toggle .caret{margin-top:6px;border-top-color:#0070a8;border-bottom-color:#0070a8}.nav .dropdown-toggle:hover .caret,.nav .dropdown-toggle:focus .caret{border-top-color:#003d5c;border-bottom-color:#003d5c}.nav-tabs .dropdown-toggle .caret{margin-top:8px}.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.nav>.dropdown.active>a:hover,.nav>.dropdown.active>a:focus{cursor:pointer}.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover,.nav>li.dropdown.open.active>a:focus{color:#fff;background-color:#999;border-color:#999}.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret,.nav li.dropdown.open a:focus .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:hover,.tabs-stacked .open>a:focus{border-color:#999}.tabbable{*zoom:1}.tabbable:before,.tabbable:after{display:table;line-height:0;content:""}.tabbable:after{clear:both}.tab-content{overflow:auto}.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.tabs-below>.nav-tabs{border-top:1px solid #ddd}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.tabs-below>.nav-tabs>li>a:hover,.tabs-below>.nav-tabs>li>a:focus{border-top-color:#ddd;border-bottom-color:transparent}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover,.tabs-below>.nav-tabs>.active>a:focus{border-color:transparent #ddd #ddd #ddd}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.tabs-left>.nav-tabs>li>a:hover,.tabs-left>.nav-tabs>li>a:focus{border-color:#eee #ddd #eee #eee}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover,.tabs-left>.nav-tabs .active>a:focus{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff}.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.tabs-right>.nav-tabs>li>a:hover,.tabs-right>.nav-tabs>li>a:focus{border-color:#eee #eee #eee #ddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover,.tabs-right>.nav-tabs .active>a:focus{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}.nav>.disabled>a{color:#999}.nav>.disabled>a:hover,.nav>.disabled>a:focus{text-decoration:none;cursor:default;background-color:transparent}.navbar{*position:relative;*z-index:2;margin-bottom:20px;overflow:visible}.navbar-inner{min-height:40px;padding-right:20px;padding-left:20px;background-color:#fafafa;background-image:-moz-linear-gradient(top,#fff,#f2f2f2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f2f2f2));background-image:-webkit-linear-gradient(top,#fff,#f2f2f2);background-image:-o-linear-gradient(top,#fff,#f2f2f2);background-image:linear-gradient(to bottom,#fff,#f2f2f2);background-repeat:repeat-x;border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff2f2f2',GradientType=0);*zoom:1;-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,0.065);box-shadow:0 1px 4px rgba(0,0,0,0.065)}.navbar-inner:before,.navbar-inner:after{display:table;line-height:0;content:""}.navbar-inner:after{clear:both}.navbar .container{width:auto}.nav-collapse.collapse{height:auto;overflow:visible}.navbar .brand{display:block;float:left;padding:10px 20px 10px;margin-left:-20px;font-size:20px;font-weight:200;color:#777;text-shadow:0 1px 0 #fff}.navbar .brand:hover,.navbar .brand:focus{text-decoration:none}.navbar-text{margin-bottom:0;line-height:40px;color:#777}.navbar-link{color:#777}.navbar-link:hover,.navbar-link:focus{color:#333}.navbar .divider-vertical{height:40px;margin:0 9px;border-right:1px solid #fff;border-left:1px solid #f2f2f2}.navbar .btn,.navbar .btn-group{margin-top:5px}.navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn,.navbar .input-prepend .btn-group,.navbar .input-append .btn-group{margin-top:0}.navbar-form{margin-bottom:0;*zoom:1}.navbar-form:before,.navbar-form:after{display:table;line-height:0;content:""}.navbar-form:after{clear:both}.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px}.navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0}.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px}.navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}.navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0}.navbar-search .search-query{padding:4px 14px;margin-bottom:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.navbar-static-top{position:static;margin-bottom:0}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px}.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-right:0;padding-left:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.navbar-fixed-top{top:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:0 1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 10px rgba(0,0,0,0.1);box-shadow:0 1px 10px rgba(0,0,0,0.1)}.navbar-fixed-bottom{bottom:0}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,0.1);box-shadow:0 -1px 10px rgba(0,0,0,0.1)}.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}.navbar .nav.pull-right{float:right;margin-right:0}.navbar .nav>li{float:left}.navbar .nav>li>a{float:none;padding:10px 15px 10px;color:#777;text-decoration:none;text-shadow:0 1px 0 #fff}.navbar .nav .dropdown-toggle .caret{margin-top:8px}.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{color:#333;text-decoration:none;background-color:transparent}.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555;text-decoration:none;background-color:#e5e5e5;-webkit-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);box-shadow:inset 0 3px 8px rgba(0,0,0,0.125)}.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-right:5px;margin-left:5px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#ededed;*background-color:#e5e5e5;background-image:-moz-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#e5e5e5));background-image:-webkit-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-o-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:linear-gradient(to bottom,#f2f2f2,#e5e5e5);background-repeat:repeat-x;border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2',endColorstr='#ffe5e5e5',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075)}.navbar .btn-navbar:hover,.navbar .btn-navbar:focus,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#fff;background-color:#e5e5e5;*background-color:#d9d9d9}.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#ccc \9}.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,0.25);box-shadow:0 1px 0 rgba(0,0,0,0.25)}.btn-navbar .icon-bar+.icon-bar{margin-top:3px}.navbar .nav>li>.dropdown-menu:before{position:absolute;top:-7px;left:9px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.navbar .nav>li>.dropdown-menu:after{position:absolute;top:-6px;left:10px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.navbar-fixed-bottom .nav>li>.dropdown-menu:before{top:auto;bottom:-7px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,0.2)}.navbar-fixed-bottom .nav>li>.dropdown-menu:after{top:auto;bottom:-6px;border-top:6px solid #fff;border-bottom:0}.navbar .nav li.dropdown>a:hover .caret,.navbar .nav li.dropdown>a:focus .caret{border-top-color:#333;border-bottom-color:#333}.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{color:#555;background-color:#e5e5e5}.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777;border-bottom-color:#777}.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{right:12px;left:auto}.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{right:13px;left:auto}.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{right:100%;left:auto;margin-right:-1px;margin-left:0;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top,#222,#111);background-image:-webkit-gradient(linear,0 0,0 100%,from(#222),to(#111));background-image:-webkit-linear-gradient(top,#222,#111);background-image:-o-linear-gradient(top,#222,#111);background-image:linear-gradient(to bottom,#222,#111);background-repeat:repeat-x;border-color:#252525;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222',endColorstr='#ff111111',GradientType=0)}.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover,.navbar-inverse .brand:focus,.navbar-inverse .nav>li>a:focus{color:#fff}.navbar-inverse .brand{color:#999}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#fff;background-color:#111}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover,.navbar-inverse .navbar-link:focus{color:#fff}.navbar-inverse .divider-vertical{border-right-color:#222;border-left-color:#111}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{color:#fff;background-color:#111}.navbar-inverse .nav li.dropdown>a:hover .caret,.navbar-inverse .nav li.dropdown>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-search .search-query{color:#fff;background-color:#515151;border-color:#111;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;outline:0;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.15);-moz-box-shadow:0 0 3px rgba(0,0,0,0.15);box-shadow:0 0 3px rgba(0,0,0,0.15)}.navbar-inverse .btn-navbar{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e0e0e;*background-color:#040404;background-image:-moz-linear-gradient(top,#151515,#040404);background-image:-webkit-gradient(linear,0 0,0 100%,from(#151515),to(#040404));background-image:-webkit-linear-gradient(top,#151515,#040404);background-image:-o-linear-gradient(top,#151515,#040404);background-image:linear-gradient(to bottom,#151515,#040404);background-repeat:repeat-x;border-color:#040404 #040404 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515',endColorstr='#ff040404',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#fff;background-color:#040404;*background-color:#000}.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000 \9}.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.breadcrumb>li{display:inline-block;*display:inline;text-shadow:0 1px 0 #fff;*zoom:1}.breadcrumb>li>.divider{padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{margin:20px 0}.pagination ul{display:inline-block;*display:inline;margin-bottom:0;margin-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*zoom:1;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.pagination ul>li{display:inline}.pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#fff;border:1px solid #ddd;border-left-width:0}.pagination ul>li>a:hover,.pagination ul>li>a:focus,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5}.pagination ul>.active>a,.pagination ul>.active>span{color:#999;cursor:default}.pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover,.pagination ul>.disabled>a:focus{color:#999;cursor:default;background-color:transparent}.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.pagination-centered{text-align:center}.pagination-right{text-align:right}.pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:17.5px}.pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.pagination-mini ul>li:first-child>a,.pagination-small ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>span{-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-moz-border-radius-topleft:3px}.pagination-mini ul>li:last-child>a,.pagination-small ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-topright:3px;-moz-border-radius-bottomright:3px}.pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:11.9px}.pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:10.5px}.pager{margin:20px 0;text-align:center;list-style:none;*zoom:1}.pager:before,.pager:after{display:table;line-height:0;content:""}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#f5f5f5}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;cursor:default;background-color:#fff}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop,.modal-backdrop.fade.in{opacity:.8;filter:alpha(opacity=80)}.modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;outline:0;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.modal.fade{top:-25%;-webkit-transition:opacity .3s linear,top .3s ease-out;-moz-transition:opacity .3s linear,top .3s ease-out;-o-transition:opacity .3s linear,top .3s ease-out;transition:opacity .3s linear,top .3s ease-out}.modal.fade.in{top:10%}.modal-header{padding:9px 15px;border-bottom:1px solid #eee}.modal-header .close{margin-top:2px}.modal-header h3{margin:0;line-height:30px}.modal-body{position:relative;max-height:400px;padding:15px;overflow-y:auto}.modal-form{margin-bottom:0}.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;*zoom:1;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.modal-footer:before,.modal-footer:after{display:table;line-height:0;content:""}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.tooltip{position:absolute;z-index:1030;display:block;font-size:11px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.popover-title:empty{display:none}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0}.thumbnails{margin-left:-20px;list-style:none;*zoom:1}.thumbnails:before,.thumbnails:after{display:table;line-height:0;content:""}.thumbnails:after{clear:both}.row-fluid .thumbnails{margin-left:0}.thumbnails>li{float:left;margin-bottom:20px;margin-left:20px}.thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.055);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.055);box-shadow:0 1px 3px rgba(0,0,0,0.055);-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}a.thumbnail:hover,a.thumbnail:focus{border-color:#0070a8;-webkit-box-shadow:0 1px 4px rgba(0,105,214,0.25);-moz-box-shadow:0 1px 4px rgba(0,105,214,0.25);box-shadow:0 1px 4px rgba(0,105,214,0.25)}.thumbnail>img{display:block;max-width:100%;margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#555}.media,.media-body{overflow:hidden;*overflow:visible;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{margin-left:0;list-style:none}.label,.badge{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}.label{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.badge{padding-right:9px;padding-left:9px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px}.label:empty,.badge:empty{display:none}a.label:hover,a.label:focus,a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.label-important,.badge-important{background-color:#b94a48}.label-important[href],.badge-important[href]{background-color:#953b39}.label-warning,.badge-warning{background-color:#f89406}.label-warning[href],.badge-warning[href]{background-color:#c67605}.label-success,.badge-success{background-color:#468847}.label-success[href],.badge-success[href]{background-color:#356635}.label-info,.badge-info{background-color:#3a87ad}.label-info[href],.badge-info[href]{background-color:#2d6987}.label-inverse,.badge-inverse{background-color:#333}.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a}.btn .label,.btn .badge{position:relative;top:-1px}.btn-mini .label,.btn-mini .badge{top:0}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{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)}.progress .bar{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}.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15)}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffc43c35',GradientType=0)}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff57a957',GradientType=0)}.progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff339bb9',GradientType=0)}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-warning .bar,.progress .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0)}.progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.accordion{margin-bottom:20px}.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.accordion-heading{border-bottom:0}.accordion-heading .accordion-toggle{display:block;padding:8px 15px}.accordion-toggle{cursor:pointer}.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5}.carousel{position:relative;margin-bottom:20px;line-height:1}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-moz-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-align:center;background:#222;border:3px solid #fff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:.5;filter:alpha(opacity=50)}.carousel-control.right{right:15px;left:auto}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-indicators{position:absolute;top:15px;right:15px;z-index:5;margin:0;list-style:none}.carousel-indicators li{display:block;float:left;width:10px;height:10px;margin-left:5px;text-indent:-999px;background-color:#ccc;background-color:rgba(255,255,255,0.25);border-radius:5px}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:0;bottom:0;left:0;padding:15px;background:#333;background:rgba(0,0,0,0.75)}.carousel-caption h4,.carousel-caption p{line-height:20px;color:#fff}.carousel-caption h4{margin:0 0 5px}.carousel-caption p{margin-bottom:0}.hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#eee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;color:inherit}.hero-unit li{line-height:30px}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden}.affix{position:fixed}h1{font-size:32px}h2{font-size:28px}h3{font-size:24px}h4{font-size:20px}h5{font-size:16px}h6{font-size:12px}h1 small{font-size:24px}h2 small{font-size:20px}h3 small{font-size:16px}h4 small{font-size:12px}@media print{a[href]:after{content:""}}legend{color:#333;border-bottom-color:#ddd}.breadcrumb{background-color:#f5f5f5}.well{border-color:#e3e3e3}sup{vertical-align:super}sub{vertical-align:sub}li.activity.label,.file-picker td.label{display:block;padding:8px;font-size:inherit;line-height:inherit;color:inherit;text-shadow:none;white-space:normal;background:inherit;border:inherit}.file-picker td.label{display:table-cell;text-align:right}.choosercontainer #chooseform .option label{font-size:12px}li.section.hidden,.block.hidden,.block.invisible{display:block;visibility:visible}#turnitintool_style .row,.forumpost .row{margin-left:0!important}#turnitintool_style .row:before,#turnitintool_style .row:after,.forumpost .row:before,.forumpost .row:after{content:none}fieldset.hidden{display:inherit;visibility:inherit}div.c1.btn{display:block;padding:0;margin-bottom:0;font-size:inherit;line-height:inherit;color:inherit;text-align:inherit;text-shadow:inherit;vertical-align:inherit;cursor:default;background-color:inherit;background-image:none;background-repeat:none;border:0;border-radius:none;box-shadow:none}#questionbank+.container{width:auto}img.hide{display:inherit}.icon-bar,img.icon-post,img.icon-info,img.icon-warn,img.icon-pre{background-image:none}.loginbox.twocolumns .signuppanel,.loginbox.twocolumns .signuppanel,.loginbox.twocolumns .loginpanel,.loginbox.twocolumns .loginpanel{padding:0;margin:0}.tooltip{display:inline;opacity:1;filter:alpha(opacity=100)}body:not(.jsenabled) .dropdown:hover>.dropdown-menu{display:block;margin-top:-6px}body:not(.jsenabled) .langmenu:hover>.dropdown-menu,.langmenu.open>.dropdown-menu{display:block;max-height:150px;overflow-y:auto}body{padding-top:60px}.block{min-height:20px;padding:19px;padding:8px 0;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-color:#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)}.block blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.block .header h2{display:block;padding:3px 15px;margin:0;font-size:11px;font-size:1.1em;font-weight:bold;line-height:20px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase;word-wrap:break-word}.block .header .block_action{float:right;padding:3px 15px}.block .header .block_action>*{margin-left:3px}.block .header .block_action .block-hider-show,.block .header .block_action .block-hider-hide{cursor:pointer}.block .header .block_action .block-hider-show{display:none}.block .header .commands{display:block;padding:3px 15px;clear:both;text-align:right}.block .header .commands>a{margin:0 3px}.block .header .commands .icon img{width:12px;height:12px}.block .header .commands img.actionmenu{width:auto}.block .content{padding:4px 14px;word-wrap:break-word}.block .content h3{display:block;padding:3px 15px;font-size:11px;font-size:1.1em;font-weight:bold;line-height:20px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase}.block .content hr{margin:5px 0}.block .content .userpicture{width:16px;height:16px;margin-right:6px}.block .content .list li.listentry{clear:both}.block .content .list .c0{display:inline}.block .content .list .c1{display:inline;margin-left:5px}.block .footer{display:block;padding:3px 5px;margin-bottom:4px}.block.beingmoved{border-style:dashed;border-width:2px}.block.invisible{opacity:.5;filter:alpha(opacity=50)}.block.hidden .header .block_action .block-hider-hide{display:none}.block.hidden .header .block_action .block-hider-show{display:inline}.block.list_block .unlist>li>.column{display:inline-block;*display:inline;*zoom:1}.jsenabled .block.hidden .content{display:none}.blockmovetarget{display:block;height:1em;margin-bottom:20px;border-style:dashed;border-width:2px}.blockannotation{position:relative;top:-10px;margin-bottom:10px}.block_blog_menu #blogsearchquery{max-width:92%}.block_settings #adminsearchquery{max-width:92%}.block_search_forums #searchform_search{width:auto;max-width:92%}.block_calendar_upcoming .content .date{padding-left:22px}.block_calendar_upcoming .content .footer{padding-top:10px;padding-left:0;margin-top:.5em}.block_rss_client .content li{padding:5px;margin-bottom:10px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.block_rss_client .content li .link{font-weight:inherit}.block_rss_client .list li:first-child{border-top-width:1px}.block_news_items .content .newlink{padding-bottom:10px}.block_news_items .content ul li{display:table;width:100%;padding:2px;border-top:1px rgba(0,0,0,0.05) solid}.block_news_items .content ul li .info{display:table-header-group}.block_news_items .content ul li .date{display:inline;font-size:11.9px}.block_news_items .content ul li .name{display:inline;padding-left:1ex;font-size:11.9px}.block_news_items .content .footer{padding-top:10px;padding-left:0}.block_login input#login_username,.block_login input#login_password{width:95%}.block_login .content{max-width:280px;margin-right:auto;margin-left:auto}.block_login input[type="submit"]{margin:10px 0}.block_adminblock .content{display:block;padding:3px 5px}.block_adminblock select{max-width:92%}.dir-rtl .block .header{text-align:right}.dir-rtl .block .header h2{text-align:right}.dir-rtl .block .header .commands{text-align:left}.dir-rtl .block .header .commands>*{margin-right:3px;margin-left:0}.dir-rtl .block .header .block_action{float:left}.dir-rtl .block_calendar_upcoming .content .date{padding-right:22px}.dir-rtl .block_calendar_upcoming .content .footer{padding-right:0}.dir-rtl .block_news_items .content ul li .name{padding-right:1ex}.dir-rtl .block_news_items .content .footer{padding-left:0}form{margin:0}.mform fieldset .advancedbutton{text-align:right}.jsenabled .mform .containsadvancedelements .advanced{display:none}.mform .containsadvancedelements .advanced.show{display:block}.mform fieldset.group{margin-bottom:0}.mform fieldset.error{border:1px solid #b94a48}.mform span.error{display:inline-block;padding:4px;margin-bottom:4px;background-color:#f2dede;border:1px solid #eed3d7;border-radius:4px}.mform fieldset.collapsible legend a.fheader{padding:0 5px 0 20px;margin-left:-20px;background:url([[pix:t/expanded]]) 2px center no-repeat}.dir-rtl .mform fieldset.collapsible legend a.fheader{padding:0 20px 0 5px;margin-right:-20px;margin-left:0;background-position:right center}.mform fieldset.collapsed legend a.fheader{background-image:url([[pix:t/collapsed]])}.dir-rtl .mform fieldset.collapsed legend a.fheader{background-image:url([[pix:t/collapsed_rtl]])}.jsenabled .mform .collapsed .fcontainer{display:none}.mform .fitem .fitemtitle div{display:inline}.loginpanel .error,.mform .error{color:#b94a48}.mform .fdescription.required{margin-left:200px}.mform .fpassword .unmask{display:inline-block;margin-left:.5em}.mform .fpassword .unmask>input{margin:0}.mform .fpassword .unmask>label{display:inline-block}.mform label{display:inline-block}.mform .iconhelp{margin-left:4px}.dir-rtl .mform .iconhelp{margin-right:4px}.mform .ftextarea #id_alltext{width:100%}.mform ul.file-list{padding:0;margin:0;list-style:none}.mform label .req,.mform label .adv{cursor:help}.mform .fcheckbox input{margin-top:5px;margin-left:0}.mform .fitem fieldset.fgroup label,.mform fieldset.fdate_selector label{display:inline;float:none;width:auto}.mform .ftags label.accesshide{position:static;display:block}.mform .ftags select{min-width:22em;margin-bottom:.7em}.mform .helplink img{padding:0;margin:0 .45em}.mform legend .helplink img{margin:0 .2em}.singleselect label{margin-right:.3em}.dir-rtl .singleselect label{margin-right:0;margin-left:.3em}input#id_externalurl{direction:ltr}#portfolio-add-button{display:inline}.form-item,.mform .fitem{margin-bottom:20px;margin-bottom:10px;*zoom:1}.form-item:before,.mform .fitem:before,.form-item:after,.mform .fitem:after{display:table;line-height:0;content:""}.form-item:after,.mform .fitem:after{clear:both}.form-item .form-label,.mform .fitem div.fitemtitle{float:left;width:180px;padding-top:5px;text-align:right}.dir-rtl .form-item .form-label,.dir-rtl .mform .fitem div.fitemtitle{float:right;text-align:left}.form-defaultinfo,.form-label .form-shortname{color:#999}.form-label .form-shortname{display:block;font-size:10.5px}.dir-rtl .form-label .form-shortname{text-align:left}.form-item .form-setting,.form-item .form-description,.mform .fitem .felement,#page-mod-forum-search .c1{*display:inline-block;*padding-left:20px;margin-left:200px;*margin-left:0}.form-item .form-setting:first-child,.form-item .form-description:first-child,.mform .fitem .felement:first-child,#page-mod-forum-search .c1:first-child{*padding-left:200px}.formsettingheading{margin-bottom:0}.form-item .form-description,.felement.fstatic{display:block;padding-top:5px;margin-bottom:10px;color:#595959}.form-item .form-description{padding-top:0}table#form td.submit,.form-buttons,.path-admin .buttons,#fitem_id_submitbutton,.fp-content-center form+div,div.backup-section+form,#fgroup_id_buttonar{padding:19px 20px 20px;padding-left:0;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1}table#form td.submit:before,.form-buttons:before,.path-admin .buttons:before,#fitem_id_submitbutton:before,.fp-content-center form+div:before,div.backup-section+form:before,#fgroup_id_buttonar:before,table#form td.submit:after,.form-buttons:after,.path-admin .buttons:after,#fitem_id_submitbutton:after,.fp-content-center form+div:after,div.backup-section+form:after,#fgroup_id_buttonar:after{display:table;line-height:0;content:""}table#form td.submit:after,.form-buttons:after,.path-admin .buttons:after,#fitem_id_submitbutton:after,.fp-content-center form+div:after,div.backup-section+form:after,#fgroup_id_buttonar:after{clear:both}.path-admin .buttons,.form-buttons{padding-left:200px}.dir-rtl table#form td.submit,.dir-rtl .form-buttons,.dir-rtl .path-admin .buttons,.dir-rtl #fitem_id_submitbutton,.dir-rtl .fp-content-center form+div,.dir-rtl div.backup-section+form,.dir-rtl #fgroup_id_buttonar{padding:19px 20px 20px;padding-right:0;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1}.dir-rtl table#form td.submit:before,.dir-rtl .form-buttons:before,.dir-rtl .path-admin .buttons:before,.dir-rtl #fitem_id_submitbutton:before,.dir-rtl .fp-content-center form+div:before,.dir-rtl div.backup-section+form:before,.dir-rtl #fgroup_id_buttonar:before,.dir-rtl table#form td.submit:after,.dir-rtl .form-buttons:after,.dir-rtl .path-admin .buttons:after,.dir-rtl #fitem_id_submitbutton:after,.dir-rtl .fp-content-center form+div:after,.dir-rtl div.backup-section+form:after,.dir-rtl #fgroup_id_buttonar:after{display:table;line-height:0;content:""}.dir-rtl table#form td.submit:after,.dir-rtl .form-buttons:after,.dir-rtl .path-admin .buttons:after,.dir-rtl #fitem_id_submitbutton:after,.dir-rtl .fp-content-center form+div:after,.dir-rtl div.backup-section+form:after,.dir-rtl #fgroup_id_buttonar:after{clear:both}.dir-rtl .path-admin .buttons,.dir-rtl .form-buttons{padding-right:200px}.form-item .form-setting .form-checkbox.defaultsnext{display:inline-block;margin-top:5px}#adminsettings h3{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333;border:0;border-bottom:1px solid #e5e5e5}.mform legend a,.mform legend a:hover{color:#333;text-decoration:none}.dir-rtl .mform .fitem .felement{margin-right:30%;margin-left:auto;text-align:right}.dir-rtl .mform .fitem .felement input[name=email],.dir-rtl .mform .fitem .felement input[name=email2],.dir-rtl .mform .fitem .felement input[name=url],.dir-rtl .mform .fitem .felement input[name=idnumber],.dir-rtl .mform .fitem .felement input[name=phone1],.dir-rtl .mform .fitem .felement input[name=phone2]{text-align:left;direction:ltr}.dir-rtl #id_s__pathtodu,.dir-rtl #id_s__aspellpath,.dir-rtl #id_s__pathtodot,.dir-rtl #id_s__supportemail,.dir-rtl #id_s__supportpage,.dir-rtl #id_s__sessioncookie,.dir-rtl #id_s__sessioncookiepath,.dir-rtl #id_s__sessioncookiedomain,.dir-rtl #id_s__proxyhost,.dir-rtl #id_s__proxyuser,.dir-rtl #id_s__proxypassword,.dir-rtl #id_s__proxybypass,.dir-rtl #id_s__jabberhost,.dir-rtl #id_s__jabberserver,.dir-rtl #id_s__jabberusername,.dir-rtl #id_s__jabberpassword,.dir-rtl #id_s__additionalhtmlhead,.dir-rtl #id_s__additionalhtmltopofbody,.dir-rtl #id_s__additionalhtmlfooter,.dir-rtl #id_s__docroot,.dir-rtl #id_s__filter_tex_latexpreamble,.dir-rtl #id_s__filter_tex_latexbackground,.dir-rtl #id_s__filter_tex_pathlatex,.dir-rtl #id_s__filter_tex_pathdvips,.dir-rtl #id_s__filter_tex_pathconvert,.dir-rtl #id_s__blockedip,.dir-rtl #id_s__pathtoclam,.dir-rtl #id_s__quarantinedir,.dir-rtl #id_s__sitepolicy,.dir-rtl #id_s__sitepolicyguest,.dir-rtl #id_s__cronremotepassword,.dir-rtl #id_s__allowedip,.dir-rtl #id_s__blockedip,.dir-rtl #id_s_enrol_meta_nosyncroleids,.dir-rtl #id_s_enrol_ldap_host_url,.dir-rtl #id_s_enrol_ldap_ldapencoding,.dir-rtl #id_s_enrol_ldap_bind_dn,.dir-rtl #id_s_enrol_ldap_bind_pw,.dir-rtl #admin-emoticons .form-text,.dir-rtl #admin-role_mapping input[type=text],.dir-rtl #id_s_enrol_paypal_paypalbusiness,.dir-rtl #id_s_enrol_flatfile_location,#page-admin-setting-enrolsettingsflatfile.dir-rtl input[type=text],#page-admin-setting-enrolsettingsdatabase.dir-rtl input[type=text],#page-admin-auth-db.dir-rtl input[type=text]{direction:ltr}#page-admin-setting-enrolsettingsflatfile.dir-rtl .informationbox{text-align:left;direction:ltr}#page-admin-grade-edit-scale-edit.dir-rtl .error input#id_name{margin-right:170px}#page-grade-edit-outcome-course .courseoutcomes{width:100%;margin-right:auto;margin-left:auto}#page-grade-edit-outcome-course .courseoutcomes td{text-align:center}#installform #id_wwwroot,#installform #id_dirroot,#installform #id_dataroot,#installform #id_dbhost,#installform #id_dbname,#installform #id_dbuser,#installform #id_dbpass,#installform #id_prefix{direction:ltr}.mdl-right>label{display:inline-block}input[type="radio"]+label,input[type="checkbox"]+label{display:inline;padding-left:.2em}input[type="radio"],input[type="checkbox"]{margin-top:-4px;margin-right:7px}.dir-rtl input[type="radio"],.dir-rtl input[type="checkbox"]{margin-right:auto;margin-left:7px}.singleselect{display:inline-block}.singleselect form,.singleselect select{margin:0}.form-item .form-label label{margin-bottom:0}.dir-rtl .form-item .form-label label{text-align:left}.felement.ffilepicker{margin-top:5px}div#dateselector-calendar-panel{z-index:3100}fieldset.coursesearchbox label{display:inline}#region-main .mform:not(.unresponsive) .fitem .fitemtitle label{font-weight:bold}@media(max-width:1199px){body #region-main .mform:not(.unresponsive) .fitem .fitemtitle{display:block;width:100%;margin-top:4px;margin-bottom:4px;text-align:left}body #region-main .mform:not(.unresponsive) .fitem .felement{float:left;width:100%;padding-right:0;padding-left:0;margin-left:0}body #region-main .mform:not(.unresponsive) .fitem .fstatic:empty{display:none}body #region-main .mform:not(.unresponsive) .femptylabel .fitemtitle{display:inline-block;width:auto;margin-right:8px}body #region-main .mform:not(.unresponsive) .femptylabel .felement{display:inline-block;width:auto;padding-top:5px;margin-top:4px}body #region-main .mform:not(.unresponsive) .fitem_fcheckbox .fitemtitle,body #region-main .mform:not(.unresponsive) .fitem_fcheckbox .felement{display:inline-block;width:auto}body #region-main .mform:not(.unresponsive) .fitem_fcheckbox .felement{padding:6px}body.dir-rtl #region-main .mform:not(.unresponsive) .femptylabel .fitemtitle{margin-right:0;margin-left:8px}body.dir-rtl #region-main .mform:not(.unresponsive) .fitem .fitemtitle{text-align:right}body.dir-rtl #region-main .mform:not(.unresponsive) .fitem .felement{float:right;padding-right:0;padding-left:0;margin-right:0}body.dir-rtl #region-main .mform:not(.unresponsive) .fitem_fcheckbox .felement{float:right}}@media(max-width:1474px){.used-region-side-pre.used-region-side-post #region-main .mform:not(.unresponsive) .fitem .fitemtitle{display:block;width:100%;margin-top:4px;margin-bottom:4px;text-align:left}.used-region-side-pre.used-region-side-post #region-main .mform:not(.unresponsive) .fitem .felement{float:left;width:100%;padding-right:0;padding-left:0;margin-left:0}.used-region-side-pre.used-region-side-post #region-main .mform:not(.unresponsive) .fitem .fstatic:empty{display:none}.used-region-side-pre.used-region-side-post #region-main .mform:not(.unresponsive) .femptylabel .fitemtitle{display:inline-block;width:auto;margin-right:8px}.used-region-side-pre.used-region-side-post #region-main .mform:not(.unresponsive) .femptylabel .felement{display:inline-block;width:auto;padding-top:5px;margin-top:4px}.used-region-side-pre.used-region-side-post #region-main .mform:not(.unresponsive) .fitem_fcheckbox .fitemtitle,.used-region-side-pre.used-region-side-post #region-main .mform:not(.unresponsive) .fitem_fcheckbox .felement{display:inline-block;width:auto}.used-region-side-pre.used-region-side-post #region-main .mform:not(.unresponsive) .fitem_fcheckbox .felement{padding:6px}.used-region-side-pre.used-region-side-post.dir-rtl #region-main .mform:not(.unresponsive) .femptylabel .fitemtitle{margin-right:0;margin-left:8px}.used-region-side-pre.used-region-side-post.dir-rtl #region-main .mform:not(.unresponsive) .fitem .fitemtitle{text-align:right}.used-region-side-pre.used-region-side-post.dir-rtl #region-main .mform:not(.unresponsive) .fitem .felement{float:right;padding-right:0;padding-left:0;margin-right:0}.used-region-side-pre.used-region-side-post.dir-rtl #region-main .mform:not(.unresponsive) .fitem_fcheckbox .felement{float:right}}#fitem_id_availabilityconditionsjson *[aria-hidden=true]{display:none}#fitem_id_availabilityconditionsjson select,#fitem_id_availabilityconditionsjson input[type=text]{position:relative;top:4px}#fitem_id_availabilityconditionsjson label{display:inline}#fitem_id_availabilityconditionsjson .availability-group{margin-right:8px}#fitem_id_availabilityconditionsjson .availability-item{margin-bottom:6px}#fitem_id_availabilityconditionsjson .availability-none{margin-bottom:4px;margin-left:20px}#fitem_id_availabilityconditionsjson .availability-plugincontrols{display:inline-block;padding:2px 0 0 4px;margin-right:8px;background:none repeat scroll 0 0 #f5f5f5;border:1px solid #eee;border-radius:4px}#fitem_id_availabilityconditionsjson .availability-eye,#fitem_id_availabilityconditionsjson .availability-delete{margin-right:8px}#fitem_id_availabilityconditionsjson .availability-eye[aria-hidden=true]{display:inline;visibility:hidden}#fitem_id_availabilityconditionsjson .availability-list>.availability-eye img{margin-top:12px;vertical-align:top}#fitem_id_availabilityconditionsjson .availability-button{margin-left:15px}#fitem_id_availabilityconditionsjson .availability-childlist>.availability-inner{display:inline-block;padding:6px;margin-bottom:6px;background:#f5f5f5;border:1px solid #eee;border-radius:4px}#fitem_id_availabilityconditionsjson .availability-childlist .availability-childlist>.availability-inner{background:white}#fitem_id_availabilityconditionsjson .availability-connector{margin-bottom:6px;margin-left:20px}.dir-rtl #fitem_id_availabilityconditionsjson .availability-group{margin-right:0;margin-left:8px}.dir-rtl #fitem_id_availabilityconditionsjson .availability-none{margin-right:20px;margin-left:0}.dir-rtl #fitem_id_availabilityconditionsjson .availability-plugincontrols{padding-right:4px;padding-left:0;margin-right:0;margin-left:8px}.dir-rtl #fitem_id_availabilityconditionsjson .availability-eye,.dir-rtl #fitem_id_availabilityconditionsjson .availability-delete{margin-right:0;margin-left:8px}.dir-rtl #fitem_id_availabilityconditionsjson .availability-button{margin-right:15px;margin-left:0}.dir-rtl #fitem_id_availabilityconditionsjson .availability-connector{margin-right:20px;margin-left:0}.mform .error .availability-field{color:#333}.availability-dialogue .moodle-dialogue .moodle-dialogue-bd{padding-right:0;padding-bottom:2px;padding-left:0}.availability-dialogue ul{display:block;margin:0}.availability-dialogue li{display:block;padding:0 0 4px;margin-bottom:4px;clear:both;list-style-type:none;border-bottom:1px solid #eee}.availability-dialogue ul button{float:left;min-width:140px;margin-top:4px;margin-left:1em}.availability-dialogue label{margin-right:1em;margin-bottom:0;margin-left:170px}.availability-dialogue .availability-buttons button{margin-top:4px;margin-right:1em;margin-left:1em}.dir-rtl .availability-dialogue ul button{float:right;margin-right:1em;margin-left:0}.dir-rtl .availability-dialogue label{margin-right:170px;margin-left:1em}textarea[cols],input[size]{width:auto}select{width:auto}.path-mod-forum .forumsearch input,.path-mod-forum .forumsearch .helptooltip{margin:0 3px}.path-mod-forum .forumheaderlist,.path-mod-forum .forumheaderlist td{border:0}.path-mod-forum .forumheaderlist thead .header,.path-mod-forum .forumheaderlist tbody .discussion td{padding-right:.5em;padding-left:.5em;white-space:normal;vertical-align:top}.path-mod-forum .forumheaderlist thead .header{white-space:normal;vertical-align:top}.path-mod-forum .forumheaderlist thead .header.replies{text-align:center}.path-mod-forum .forumheaderlist thead .header.lastpost{text-align:right}.path-mod-forum .forumheaderlist thead .header th.discussionsubscription,.path-mod-forum .forumheaderlist tbody .discussion td.discussionsubscription{width:16px;padding-right:.5em;padding-left:.5em}.path-mod-forum .forumheaderlist .discussion .author,.path-mod-forum .forumheaderlist .discussion .replies,.path-mod-forum .forumheaderlist .discussion .lastpost{white-space:normal}.path-mod-forum .forumheaderlist .discussion .discussionsubscription,.path-mod-forum .forumheaderlist .discussion .replies{text-align:center}.path-mod-forum .forumheaderlist .discussion .topic,.path-mod-forum .forumheaderlist .discussion .discussionsubscription,.path-mod-forum .forumheaderlist .discussion .topic.starter,.path-mod-forum .forumheaderlist .discussion .picture,.path-mod-forum .forumheaderlist .discussion .author,.path-mod-forum .forumheaderlist .discussion .replies,.path-mod-forum .forumheaderlist .discussion .lastpost{vertical-align:top}.path-mod-feedback .feedback_bar_image{height:5px}.forumpost{min-height:20px;padding:19px;padding:6px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-color:#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)}.forumpost blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.forumpost .header{margin-bottom:3px}.forumpost .picture img{margin:3px}.forumpost .picture img.userpicture{margin-right:10px;margin-left:3px}.forumpost .content .posting.fullpost{margin-top:8px}.forumpost .row .topic,.forumpost .row .content-mask,.forumpost .row .options{margin-left:48px}.forumpost .row.side{clear:both}.dir-rtl .forumpost .picture img.userpicture{margin-right:3px;margin-left:10px}.dir-rtl .forumpost .row .topic,.dir-rtl .forumpost .row .content-mask,.dir-rtl .forumpost .row .options{margin-right:48px;margin-left:0}.forumpost .row .left{width:48px}.forumpost .options .commands{margin-left:0}.forumpost .subject{font-weight:bold}.forumsearch input[type=text]{margin-bottom:0!important}#page-mod-forum-discuss .discussioncontrols{width:auto;margin:0}#page-footer{padding:1em 0;margin-top:1em;border-top:2px solid #ddd}.maincalendar .calendarmonth td,.maincalendar .calendarmonth th{border:1px dotted #ddd}.path-grade-report-grader h1{text-align:inherit}#page-mod-chat-gui_basic input#message{max-width:100%}#page-mod-data-view #singleimage{width:auto}.path-mod-data form{margin-top:10px}.template_heading{margin-top:10px}.breadcrumb-button{float:right;margin-top:4px}.breadcrumb-button .singlebutton{float:left;margin-left:4px}.dir-rtl .nav-tabs>li,.dir-rtl .nav-pills>li{float:right}.dir-rtl .navbar .brand{float:right}.navbar-inverse .logininfo a{color:#999}.navbar-inverse .logininfo a:hover{color:#fff;background-color:transparent}.navbar-fixed-top,.navbar-fixed-bottom{z-index:4030}.dir-rtl .breadcrumb-button,.dir-rtl .navbar .btn-navbar{float:left}.dir-rtl .breadcrumb-button .singlebutton{float:right;margin-right:4px}.ie .row-fluid .desktop-first-column{margin-left:0}.langmenu form{margin:0}.container-fluid{max-width:1680px;margin:0 auto}canvas{-ms-touch-action:auto}div#dock{display:none}.path-mod-choice .horizontal .choices{margin:0}.path-mod-choice .horizontal .choices .option{display:inline-block;padding:10px}.path-mod-choice .results .data{white-space:normal}.path-mod-lesson .firstpageoptions{width:60%;min-width:280px;margin:auto}.path-mod-lesson .centerpadded{padding:5px;text-align:center}.path-mod-wiki .wiki_headingtitle,.path-mod-wiki .midpad,.path-mod-wiki .wiki_headingtime{text-align:inherit}.path-mod-wiki .wiki_contentbox{width:100%}.dropdown-menu>li>a{padding:3px 20px 3px 8px}.dir-rtl .dropdown-menu>li>a{padding:3px 8px 3px 20px}.dir-rtl .dropdown-submenu>.dropdown-menu{-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.path-mod-survey .surveytable>tbody>tr:nth-of-type(odd){background-color:transparent}.path-mod-survey .surveytable>tbody>tr:nth-of-type(even){background-color:#f9f9f9}.path-mod-survey .surveytable .rblock label{text-align:center}.path-mod-survey .resultgraph,.path-mod-survey .reportsummary,.path-mod-survey .studentreport,.path-mod-survey .reportbuttons,.path-mod-survey .centerpara{text-align:center}.dir-rtl.path-mod-forum .forumheaderlist thead .header.lastpost{text-align:left}.dir-rtl.path-mod-forum .forumheaderlist .discussion .lastpost{text-align:left}.nav .caret{margin-left:4px}.dir-rtl .nav .caret{margin-right:4px}.nav .divider{width:0;height:40px;overflow:hidden;border-right:1px solid #fff;border-left:1px solid #e5e5e5}.dropdown-menu .divider{width:auto;height:1px;border-right:0 none;border-left:0 none}.usermenu .login{line-height:40px;color:#777}.usermenu .login a{color:#0070a8}.usermenu .login a:hover,.usermenu .login a:focus{color:#003d5c;text-decoration:underline}.usermenu .moodle-actionmenu .toggle-display{display:block;height:40px;line-height:40px;color:#777;opacity:1}.usermenu .moodle-actionmenu .toggle-display:hover{color:#333}.usermenu .moodle-actionmenu .toggle-display .userbutton{height:40px;line-height:40px}.usermenu .moodle-actionmenu .toggle-display .userbutton .avatars{display:inline-block;width:36px;height:36px;margin-right:6px;margin-left:6px;vertical-align:middle}.usermenu .moodle-actionmenu .toggle-display .userbutton .avatars .avatar,.usermenu .moodle-actionmenu .toggle-display .userbutton .avatars img{display:block}.usermenu .moodle-actionmenu .toggle-display .userbutton .usertext{display:inline-block;line-height:1em;color:inherit;vertical-align:middle}.usermenu .moodle-actionmenu .toggle-display .userbutton .usertext .meta,.usermenu .moodle-actionmenu .toggle-display .userbutton .usertext .role{display:block;font-size:12px}.usermenu .moodle-actionmenu .toggle-display .userbutton .usertext .meta .value,.usermenu .moodle-actionmenu .toggle-display .userbutton .usertext .role .value{font-weight:bold}.usermenu .moodle-actionmenu .toggle-display .userbutton .usertext .role{font-weight:bold}.usermenu .moodle-actionmenu .toggle-display .caret{display:none}.usermenu .moodle-actionmenu .menu .menu-action.icon img{background:transparent;border-radius:0;box-shadow:none}.usermenu .moodle-actionmenu .menu .menu-action.icon:hover img{background:#fff;border-radius:4px;box-shadow:0 0 16px rgba(0,0,0,0.125)}.usermenu .moodle-actionmenu[data-enhanced] .menu .menu-action.icon img,.usermenu .moodle-actionmenu[data-enhanced] .menu .menu-action.icon:hover img{background:transparent;border-radius:0;box-shadow:none}.navbar-inverse .usermenu .login{color:#999}.navbar-inverse .usermenu .login a{color:#999}.navbar-inverse .usermenu .login a:hover{color:#fff}.navbar-inverse .usermenu .moodle-actionmenu .toggle-display{color:#999}.navbar-inverse .usermenu .moodle-actionmenu .userbutton .usertext{color:#999}.navbar-inverse .usermenu .moodle-actionmenu .userbutton .usertext .meta{color:#999}.navbar-inverse .usermenu .moodle-actionmenu .userbutton .usertext .meta .value{color:#999}.navbar-inverse .usermenu .moodle-actionmenu:hover .usertext{color:#fff}.navbar-inverse .usermenu .moodle-actionmenu:hover .usertext .meta{color:#999}.navbar-inverse .usermenu .moodle-actionmenu:hover .usertext .meta .value{color:#fff}.navbar-inverse .usermenu .moodle-actionmenu[data-enhanced] .toggle-display.textmenu .caret{border-top-color:#fff}.navbar-inverse .usermenu .moodle-actionmenu .menu .menu-action.icon img{background:transparent;border-radius:0;box-shadow:none}.navbar-inverse .usermenu .moodle-actionmenu .menu .menu-action.icon:hover img{background:#333;border-radius:4px;box-shadow:0 0 16px #fff}.navbar-inverse .usermenu .moodle-actionmenu[data-enhanced] .menu .menu-action.icon img,.navbar-inverse .usermenu .moodle-actionmenu[data-enhanced] .menu .menu-action.icon:hover img{background:transparent;border-radius:0;box-shadow:none}.jsenabled .usermenu .moodle-actionmenu .toggle-display{display:block}.jsenabled .usermenu .moodle-actionmenu .toggle-display.textmenu{padding-right:8px;padding-left:8px}.jsenabled .usermenu .moodle-actionmenu .toggle-display .caret{position:relative;top:9px;display:inline-block}.jsenabled .usermenu .moodle-actionmenu>.menubar{display:block;margin:0 0 2px 0}.jsenabled .usermenu .moodle-actionmenu>.menu{min-width:160px}.jsenabled .usermenu .moodle-actionmenu>.menu .filler{display:block;*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.jsenabled .usermenu .moodle-actionmenu.show{background-color:#e5e5e5}.jsenabled .usermenu .moodle-actionmenu.show .menu{padding:5px 0;margin:2px 0 0;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);background-clip:padding-box}.jsenabled .usermenu .moodle-actionmenu.show .menu:before{position:absolute;top:-7px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.jsenabled .usermenu .moodle-actionmenu.show .menu:after{position:absolute;top:-6px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.jsenabled .usermenu .moodle-actionmenu.show .menu a{white-space:nowrap;border-radius:0}.jsenabled .usermenu .moodle-actionmenu.show .menu a:focus{text-decoration:none}.jsenabled .usermenu .moodle-actionmenu.show .menu a:hover{text-decoration:none;background-color:#00699e;background-image:-moz-linear-gradient(top,#0070a8,#005f8f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#0070a8),to(#005f8f));background-image:-webkit-linear-gradient(top,#0070a8,#005f8f);background-image:-o-linear-gradient(top,#0070a8,#005f8f);background-image:linear-gradient(to bottom,#0070a8,#005f8f);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0070a8',endColorstr='#ff005f8f',GradientType=0)}.jsenabled .usermenu .moodle-actionmenu.show .menu.align-tr-br{margin-top:2px}.jsenabled .navbar-inverse .usermenu .moodle-actionmenu.show{background-color:#111}.dir-ltr .usermenu{float:right}.dir-ltr .usermenu>.moodle-actionmenu>.menu:before{right:9px}.dir-ltr .usermenu>.moodle-actionmenu>.menu:after{right:10px}.dir-ltr .usermenu>.moodle-actionmenu>.menubar li a{text-align:right}.dir-ltr.userloggedinas .usermenu .userbutton .avatars .avatar.current{left:16px}.dir-rtl .usermenu{float:left}.dir-rtl .usermenu>.moodle-actionmenu>.menu{margin-right:0}.dir-rtl .usermenu>.moodle-actionmenu>.menu:before{left:9px}.dir-rtl .usermenu>.moodle-actionmenu>.menu:after{left:10px}.dir-rtl .usermenu>.moodle-actionmenu>.menubar li a{text-align:left}.dir-rtl.userloggedinas .usermenu .userbutton .avatars .avatar.current{left:-14px}.userloggedinas .usermenu .userbutton .avatars .avatar{overflow:hidden}.userloggedinas .usermenu .userbutton .avatars .avatar.current{position:relative;top:4px;left:4px;width:20px;height:20px;margin-top:11px;margin-bottom:-34px;border:1px solid #fff;border-radius:50%;box-shadow:-2px -2px 16px rgba(0,0,0,0.25)}.userloggedinas .usermenu .userbutton .avatars .avatar img{width:inherit;height:inherit}.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax{background-color:#fff}.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax .yui-layout-unit div.yui-layout-bd-nohd,.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax .yui-layout-unit div.yui-layout-bd-noft,.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax .yui-layout-unit div.yui-layout-bd,.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax .yui-layout-unit-right,.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax .yui-layout-unit-bottom{border:0}.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax .yui-layout-unit-right,.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax .yui-layout-unit-bottom{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-color:#e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border-radius:0;-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)}.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax .yui-layout-unit-right blockquote,.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax .yui-layout-unit-bottom blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax .yui-layout-unit div.yui-layout-bd{background-color:transparent}.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax #chat-input-area table.generaltable,.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax #chat-input-area table.generaltable td.cell{padding:3px 15px;white-space:nowrap;border:0}.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax #chat-input-area table.generaltable input,.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax #chat-input-area table.generaltable td.cell input{margin:0 10px}.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax #chat-input-area table.generaltable input#input-message,.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax #chat-input-area table.generaltable td.cell input#input-message{width:45%;margin:auto}.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax #chat-input-area table.generaltable a,.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax #chat-input-area table.generaltable td.cell a{margin:0 5px}.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax #chat-userlist{padding:10px 5px}.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax #chat-userlist #users-list{border-top:1px solid #ddd;border-bottom:1px solid #fff}.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax #chat-userlist #users-list li{padding:5px 10px;border-top:1px solid #fff;border-bottom:1px solid #ddd}.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax #chat-userlist #users-list img{max-width:none;margin-right:8px;border:1px solid #ccc;border-radius:4px}.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax #chat-messages{margin:20px 25px}.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax #chat-messages .chat-event.course-theme{margin:10px 0;font-size:11.9px;color:#777;text-align:center}.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax #chat-messages .chat-message.course-theme{padding:4px 10px;margin:10px 0;background-color:#fff;border:1px dotted #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax #chat-messages .chat-message.course-theme .time{float:right;font-size:11px;color:#777}.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax #chat-messages .mdl-chat-my-entry .chat-message.course-theme{background-color:#f6f6f6}.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax #chat-messages .mdl-chat-my-entry .chat-message.course-theme .user{font-weight:bold}.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax.dir-rtl .yui-layout-unit-right{padding:0}.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax.dir-rtl .yui-layout-unit div.yui-layout-bd{text-align:right}.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax.dir-rtl #chat-userlist #users-list img{margin-left:8px}.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax.dir-rtl #chat-messages .chat-message.course-theme .time{float:left}.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax.dir-rtl #chat-messages .chat-message.course-theme .user{float:right}.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax.dir-rtl #chat-messages .chat-message.course-theme .chat-message-meta{height:20px}.yui-skin-sam .yui-layout.path-mod-chat-gui_ajax.dir-rtl #chat-messages .chat-message.course-theme .text{text-align:right}#page-report-participation-index .participationselectform div label{display:inline;margin:0 5px}#page-report-participation-index.dir-ltr .participationselectform div label[for=menuinstanceid]{margin-left:0}#page-report-participation-index.dir-rtl .participationselectform div label[for=menuinstanceid]{margin-right:0}.path-backup .mform .grouped_settings.section_level{min-height:20px;padding:19px;padding:10px 0 0 0;margin-bottom:20px;clear:both;background-color:#f5f5f5;border:1px solid #e3e3e3;border-color:#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)}.path-backup .mform .grouped_settings.section_level blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.path-backup .mform .grouped_settings{overflow:hidden;clear:both}.path-backup .include_setting,.path-backup .grouped_settings .normal_setting{display:inline-block}.path-backup .include_setting.section_level label{font-weight:bold}.path-backup .mform .fitem .fitemtitle{width:260px}.path-backup .mform .fitem .felement{margin-left:280px}.path-backup .notification.dependencies_enforced{font-weight:bold;color:#b94a48;text-align:center}.path-backup .backup_progress{text-align:center}.path-backup .backup_progress .backup_stage{color:#999}.path-backup .backup_progress .backup_stage.backup_stage_current{font-weight:bold;color:inherit}.path-backup .backup_progress span.backup_stage.backup_stage_complete{color:inherit}#page-backup-restore .filealiasesfailures{background-color:#f2dede}#page-backup-restore .filealiasesfailures .aliaseslist{width:90%;margin:.8em auto;background-color:#fff;border:1px dotted #666}.path-backup .fitem .smallicon{vertical-align:text-bottom}.backup-restore .backup-section>h2.header,.backup-restore .backup-section .backup-sub-section h3{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333;border:0;border-bottom:1px solid #e5e5e5}.backup-restore .backup-section .noticebox{width:60%;margin:1em auto;text-align:center}.backup-restore .backup-section.settings-section .detail-pair{display:inline-block;*display:inline;width:50%;*zoom:1}.backup-restore .backup-section.settings-section .detail-pair-label{width:65%}.backup-restore .backup-section.settings-section .detail-pair-value{width:25%}.backup-restore .activitytable{min-width:500px}.backup-restore .activitytable .modulename{width:100px}.backup-restore .activitytable .moduleincluded{width:50px}.backup-restore .activitytable .userinfoincluded{width:50px}.backup-restore .detail-pair-label{display:inline-block;*display:inline;width:25%;padding:8px;margin:0;font-weight:bold;text-align:right;vertical-align:top;*zoom:1}.backup-restore .detail-pair-value{display:inline-block;*display:inline;width:65%;padding:8px;margin:0;*zoom:1}.backup-restore .detail-pair-value>.sub-detail{display:block;font-size:11.9px;color:#999}.backup-restore>.singlebutton{text-align:right}.path-backup .mform .fgroup .proceedbutton{float:right;margin-right:5%}.path-backup .mform .fgroup .oneclickbackup{float:right}.restore-course-search .rcs-results{width:70%;min-width:400px}.restore-course-search .rcs-results table{width:100%;margin:0;border-width:0}.restore-course-search .rcs-results table .no-overflow{max-width:600px}.restore-course-search .rcs-results .paging{padding:3px;margin:0;text-align:left;background-color:#eee}.restore-course-category .rcs-results{width:70%;min-width:400px;margin:5px 0;border:1px solid #ddd}.restore-course-category .rcs-results table{width:100%;margin:0;border-width:0}.restore-course-category .rcs-results table .no-overflow{max-width:600px}.restore-course-category .rcs-results .paging{padding:3px;margin:0;text-align:left;background-color:#eee}.path-backup .wibbler{position:relative;width:500px;min-height:4px;margin:0 auto 10px;border-right:1px solid black;border-bottom:1px solid black;border-left:1px solid black}.path-backup .wibbler .wibble{position:absolute;top:0;right:0;left:0;height:4px}.path-backup .wibbler .state0{background:#eee}.path-backup .wibbler .state1{background:#ddd}.path-backup .wibbler .state2{background:#ccc}.path-backup .wibbler .state3{background:#bbb}.path-backup .wibbler .state4{background:#aaa}.path-backup .wibbler .state5{background:#999}.path-backup .wibbler .state6{background:#888}.path-backup .wibbler .state7{background:#777}.path-backup .wibbler .state8{background:#666}.path-backup .wibbler .state9{background:#555}.path-backup .wibbler .state10{background:#444}.path-backup .wibbler .state11{background:#333}.path-backup .wibbler .state12{background:#222}.path-backup .backup_log{margin-top:2em}.path-backup .backup_log h2{font-size:1em}.path-backup .backup_log_contents{height:300px;padding:10px;overflow-y:scroll;border:1px solid #ddd}.dir-rtl.path-backup .mform .fgroup .proceedbutton{float:left;margin-right:0;margin-left:5%}.dir-rtl.path-backup .mform .fgroup .oneclickbackup{float:left}table.flexible,.generaltable{width:100%;margin-bottom:20px}table.flexible th,.generaltable th,table.flexible td,.generaltable td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #ddd}table.flexible th,.generaltable th{font-weight:bold}table.flexible thead th,.generaltable thead th{vertical-align:bottom}table.flexible caption+thead tr:first-child th,.generaltable caption+thead tr:first-child th,table.flexible caption+thead tr:first-child td,.generaltable caption+thead tr:first-child td,table.flexible colgroup+thead tr:first-child th,.generaltable colgroup+thead tr:first-child th,table.flexible colgroup+thead tr:first-child td,.generaltable colgroup+thead tr:first-child td,table.flexible thead:first-child tr:first-child th,.generaltable thead:first-child tr:first-child th,table.flexible thead:first-child tr:first-child td,.generaltable thead:first-child tr:first-child td{border-top:0}table.flexible tbody+tbody,.generaltable tbody+tbody{border-top:2px solid #ddd}table.flexible .table,.generaltable .table{background-color:#fff}.singlebutton div{display:inline-block;margin-right:5px;margin-bottom:5px;margin-left:5px}#notice .buttons .singlebutton{display:inline-block}.continuebutton{text-align:center}.btn-lineup{margin:0 0 10px 5px}input[name="searchwikicontent"]+input[type="submit"],select+input[type="submit"],input[type="text"]+input[type="button"],input[type="password"]+input[type="submit"],input[type="text"]+button,input[type="text"]+input[type="submit"]{margin:0 0 10px 5px}p.arrow_button{margin-top:5em;text-align:center}p.arrow_button #remove{margin:3em auto 5em}p.arrow_button input{display:block;width:100%;padding-right:0;padding-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#addcontrols{margin-top:30px;margin-bottom:3em;text-align:center}#addcontrols label{display:inline}#addcontrols input,#removecontrols input{display:block;width:100%;padding-right:0;padding-left:0;margin-right:auto;margin-left:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}button,input.form-submit,input[type="button"],input[type="submit"],input[type="reset"]{display:inline-block;*display:inline;padding:4px 12px;margin-bottom:0;*margin-left:.3em;font-size:14px;line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #ccc;*border:0;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);*zoom:1;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}button:hover,input.form-submit:hover,input[type="button"]:hover,input[type="submit"]:hover,input[type="reset"]:hover,button:focus,input.form-submit:focus,input[type="button"]:focus,input[type="submit"]:focus,input[type="reset"]:focus,button:active,input.form-submit:active,input[type="button"]:active,input[type="submit"]:active,input[type="reset"]:active,button.active,input.form-submit.active,input[type="button"].active,input[type="submit"].active,input[type="reset"].active,button.disabled,input.form-submit.disabled,input[type="button"].disabled,input[type="submit"].disabled,input[type="reset"].disabled,button[disabled],input.form-submit[disabled],input[type="button"][disabled],input[type="submit"][disabled],input[type="reset"][disabled]{color:#333;background-color:#e6e6e6;*background-color:#d9d9d9}button:active,input.form-submit:active,input[type="button"]:active,input[type="submit"]:active,input[type="reset"]:active,button.active,input.form-submit.active,input[type="button"].active,input[type="submit"].active,input[type="reset"].active{background-color:#ccc \9}button:first-child,input.form-submit:first-child,input[type="button"]:first-child,input[type="submit"]:first-child,input[type="reset"]:first-child{*margin-left:0}button:hover,input.form-submit:hover,input[type="button"]:hover,input[type="submit"]:hover,input[type="reset"]:hover,button:focus,input.form-submit:focus,input[type="button"]:focus,input[type="submit"]:focus,input[type="reset"]:focus{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}button:focus,input.form-submit:focus,input[type="button"]:focus,input[type="submit"]:focus,input[type="reset"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}button.active,input.form-submit.active,input[type="button"].active,input[type="submit"].active,input[type="reset"].active,button:active,input.form-submit:active,input[type="button"]:active,input[type="submit"]:active,input[type="reset"]:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}button.disabled,input.form-submit.disabled,input[type="button"].disabled,input[type="submit"].disabled,input[type="reset"].disabled,button[disabled],input.form-submit[disabled],input[type="button"][disabled],input[type="submit"][disabled],input[type="reset"][disabled]{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}button .label,input.form-submit .label,input[type="button"] .label,input[type="submit"] .label,input[type="reset"] .label,button .badge,input.form-submit .badge,input[type="button"] .badge,input[type="submit"] .badge,input[type="reset"] .badge{position:relative;top:-1px}button,input.form-submit,input[type="button"],input[type="submit"],input[type="reset"]{margin:0 0 10px 5px}button.yui3-button.closebutton,button.yui3-button.closebutton:hover{background-position:0 0}input.fp-btn-choose{padding:2px 10px;font-size:11.9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.user-enroller-panel .uep-search-results .user .options .enrol{padding:0 6px;font-size:10.5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.user-enroller-panel .uep-search-results .user .options .enrol .label,.user-enroller-panel .uep-search-results .user .options .enrol .badge{top:0}.user-enroller-panel .uep-search-results .cohort .options .enrol{padding:0 6px;font-size:10.5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.user-enroller-panel .uep-search-results .cohort .options .enrol .label,.user-enroller-panel .uep-search-results .cohort .options .enrol .badge{top:0}.gradetreebox h4{font-size:14px}.gradetreebox th.cell,.gradetreebox input[type=text]{width:auto}.gradetreebox input[type=text],.gradetreebox select{margin-bottom:0}#page-grade-grading-manage #activemethodselector label{display:inline-block}#page-grade-grading-manage #activemethodselector .helptooltip{margin-right:.5em}#page-grade-grading-manage .actions{display:block;margin-bottom:1em;text-align:center}#page-grade-grading-manage .actions .action{position:relative;display:inline-block;*display:inline;width:150px;padding:4px 12px;padding:11px 19px;padding:1em;margin:.5em;margin-bottom:0;*margin-left:.3em;overflow:hidden;font-size:14px;font-size:17.5px;line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;vertical-align:top;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #ccc;border:1px solid #aaa;*border:0;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-webkit-border-radius:6px;-moz-border-radius:4px;-moz-border-radius:6px;border-radius:4px;border-radius:6px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);*zoom:1;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}#page-grade-grading-manage .actions .action:hover,#page-grade-grading-manage .actions .action:focus,#page-grade-grading-manage .actions .action:active,#page-grade-grading-manage .actions .action.active,#page-grade-grading-manage .actions .action.disabled,#page-grade-grading-manage .actions .action[disabled]{color:#333;background-color:#e6e6e6;*background-color:#d9d9d9}#page-grade-grading-manage .actions .action:active,#page-grade-grading-manage .actions .action.active{background-color:#ccc \9}#page-grade-grading-manage .actions .action:first-child{*margin-left:0}#page-grade-grading-manage .actions .action:hover,#page-grade-grading-manage .actions .action:focus{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}#page-grade-grading-manage .actions .action:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#page-grade-grading-manage .actions .action.active,#page-grade-grading-manage .actions .action:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}#page-grade-grading-manage .actions .action.disabled,#page-grade-grading-manage .actions .action[disabled]{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}#page-grade-grading-manage .actions .action .label,#page-grade-grading-manage .actions .action .badge{position:relative;top:-1px}#page-grade-grading-manage .actions .action .action-icon{position:relative;display:inline-block;width:64px;height:64px}#page-grade-grading-manage .actions .action .action-text{position:relative;top:.4em;font-size:14px}#page-grade-grading-form-rubric-edit .gradingform_rubric_editform .status{font-size:70%}.gradingform_rubric.editor .addlevel input,.gradingform_rubric.editor .addcriterion input{background:#fff none no-repeat top left}.dir-rtl #rubric-rubric.gradingform_rubric #rubric-criteria .criterion .level .score{float:right;margin-right:0;margin-left:28px;text-align:right}.dir-rtl #rubric-rubric.gradingform_rubric #rubric-criteria .criterion .level .delete{float:left}.dir-rtl #rubric-rubric.gradingform_rubric #rubric-criteria .criterion .level .delete input{right:auto;left:0}.dir-rtl #rubric-rubric.gradingform_rubric .addcriterion{margin-right:5px;margin-left:0}.dir-rtl #rubric-rubric.gradingform_rubric .addcriterion input{padding-right:26px;padding-left:10px;background-position:right 8px top 8px}.dir-rtl #rubric-rubric.gradingform_rubric .options .option .value{margin-right:5px;margin-left:0}.dir-rtl #rubric-rubric.gradingform_rubric .options .option input{margin-right:5px;margin-left:12px}#rubric-rubric.gradingform_rubric #rubric-criteria{margin-bottom:1em}#rubric-rubric.gradingform_rubric #rubric-criteria .criterion .description{padding:6px;vertical-align:top}#rubric-rubric.gradingform_rubric #rubric-criteria .criterion .description textarea{height:115px;margin-bottom:0}#rubric-rubric.gradingform_rubric #rubric-criteria .criterion .definition textarea{width:80%;margin-bottom:0}#rubric-rubric.gradingform_rubric #rubric-criteria .criterion .score{position:relative;float:left;margin-right:28px}#rubric-rubric.gradingform_rubric #rubric-criteria .criterion .score input{margin-bottom:0}#rubric-rubric.gradingform_rubric #rubric-criteria .criterion .level{padding:6px;vertical-align:top}#rubric-rubric.gradingform_rubric #rubric-criteria .criterion .level .delete{position:relative;float:right;width:32px;height:32px;margin-top:-32px;clear:both}#rubric-rubric.gradingform_rubric #rubric-criteria .criterion .level .delete input{position:absolute;right:0;bottom:0;display:block;width:24px;height:24px;margin:0}#rubric-rubric.gradingform_rubric #rubric-criteria .criterion .level .delete input:hover{background-color:#ddd}#rubric-rubric.gradingform_rubric #rubric-criteria .criterion .scorevalue input{float:none;width:2em}#rubric-rubric.gradingform_rubric #rubric-criteria .criterion .scorevalue input.hiddenelement,#rubric-rubric.gradingform_rubric #rubric-criteria .criterion .scorevalue input.pseudotablink{width:0}#rubric-rubric.gradingform_rubric #rubric-criteria .criterion .addlevel{vertical-align:middle}#rubric-rubric.gradingform_rubric #rubric-criteria .criterion .addlevel input{display:inline-block;*display:inline;height:30px;padding:4px 12px;margin-right:5px;margin-bottom:0;*margin-left:.3em;font-size:14px;line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-position:0 0;background-repeat:repeat-x;border:1px solid #ccc;*border:0;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);*zoom:1;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}#rubric-rubric.gradingform_rubric #rubric-criteria .criterion .addlevel input:hover,#rubric-rubric.gradingform_rubric #rubric-criteria .criterion .addlevel input:focus,#rubric-rubric.gradingform_rubric #rubric-criteria .criterion .addlevel input:active,#rubric-rubric.gradingform_rubric #rubric-criteria .criterion .addlevel input.active,#rubric-rubric.gradingform_rubric #rubric-criteria .criterion .addlevel input.disabled,#rubric-rubric.gradingform_rubric #rubric-criteria .criterion .addlevel input[disabled]{color:#333;background-color:#e6e6e6;*background-color:#d9d9d9}#rubric-rubric.gradingform_rubric #rubric-criteria .criterion .addlevel input:active,#rubric-rubric.gradingform_rubric #rubric-criteria .criterion .addlevel input.active{background-color:#ccc \9}#rubric-rubric.gradingform_rubric #rubric-criteria .criterion .addlevel input:first-child{*margin-left:0}#rubric-rubric.gradingform_rubric #rubric-criteria .criterion .addlevel input:hover,#rubric-rubric.gradingform_rubric #rubric-criteria .criterion .addlevel input:focus{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}#rubric-rubric.gradingform_rubric #rubric-criteria .criterion .addlevel input:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#rubric-rubric.gradingform_rubric #rubric-criteria .criterion .addlevel input.active,#rubric-rubric.gradingform_rubric #rubric-criteria .criterion .addlevel input:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}#rubric-rubric.gradingform_rubric #rubric-criteria .criterion .addlevel input.disabled,#rubric-rubric.gradingform_rubric #rubric-criteria .criterion .addlevel input[disabled]{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}#rubric-rubric.gradingform_rubric #rubric-criteria .criterion .addlevel input .label,#rubric-rubric.gradingform_rubric #rubric-criteria .criterion .addlevel input .badge{position:relative;top:-1px}#rubric-rubric.gradingform_rubric .addcriterion{display:inline-block;*display:inline;padding:4px 12px;padding:0;margin-bottom:0;margin-bottom:1em;margin-left:5px;*margin-left:.3em;font-size:14px;line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #ccc;*border:0;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);*zoom:1;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}#rubric-rubric.gradingform_rubric .addcriterion:hover,#rubric-rubric.gradingform_rubric .addcriterion:focus,#rubric-rubric.gradingform_rubric .addcriterion:active,#rubric-rubric.gradingform_rubric .addcriterion.active,#rubric-rubric.gradingform_rubric .addcriterion.disabled,#rubric-rubric.gradingform_rubric .addcriterion[disabled]{color:#333;background-color:#e6e6e6;*background-color:#d9d9d9}#rubric-rubric.gradingform_rubric .addcriterion:active,#rubric-rubric.gradingform_rubric .addcriterion.active{background-color:#ccc \9}#rubric-rubric.gradingform_rubric .addcriterion:first-child{*margin-left:0}#rubric-rubric.gradingform_rubric .addcriterion:hover,#rubric-rubric.gradingform_rubric .addcriterion:focus{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}#rubric-rubric.gradingform_rubric .addcriterion:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#rubric-rubric.gradingform_rubric .addcriterion.active,#rubric-rubric.gradingform_rubric .addcriterion:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}#rubric-rubric.gradingform_rubric .addcriterion.disabled,#rubric-rubric.gradingform_rubric .addcriterion[disabled]{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}#rubric-rubric.gradingform_rubric .addcriterion .label,#rubric-rubric.gradingform_rubric .addcriterion .badge{position:relative;top:-1px}#rubric-rubric.gradingform_rubric .addcriterion input{padding-left:26px;margin:0;line-height:inherit;color:inherit;text-shadow:inherit;background:transparent url([[pix:t/add]]) no-repeat 7px 8px;border:0 none}#rubric-rubric.gradingform_rubric .options{clear:both}#rubric-rubric.gradingform_rubric .options .option label{padding:0;margin:0;font-size:inherit;font-weight:normal;line-height:2em;color:inherit;text-shadow:none;background-color:transparent}#rubric-rubric.gradingform_rubric .options .option input{margin-right:12px;margin-left:5px}.path-grade-edit-tree .setup-grades .column-rowspan{width:24px;max-width:24px;min-width:24px;padding:0}.path-grade-edit-tree .setup-grades .category td.column-name{padding-left:0}.path-grade-edit-tree .setup-grades td.column-name{padding-left:24px}.path-grade-edit-tree .setup-grades .column-name h4 img.icon{padding-left:0}.path-grade-edit-tree .setup-grades .category input[type="text"],.path-grade-edit-tree .setup-grades .category .column-range,.path-grade-edit-tree .setup-grades .categoryitem,.path-grade-edit-tree .setup-grades .courseitem{font-weight:bold}.path-grade-edit-tree .setup-grades .emptyrow{display:none}.path-grade-edit-tree .setup-grades .column-weight.level3{padding-left:37px}.path-grade-edit-tree .setup-grades .column-weight.level4{padding-left:66px}.path-grade-edit-tree .setup-grades .column-weight.level5{padding-left:95px}.path-grade-edit-tree .setup-grades .column-weight.level6{padding-left:124px}.path-grade-edit-tree .setup-grades .column-weight.level7{padding-left:153px}.path-grade-edit-tree .setup-grades .column-weight.level8{padding-left:182px}.path-grade-edit-tree .setup-grades .column-weight.level9{padding-left:211px}.path-grade-edit-tree .setup-grades .column-weight.level10{padding-left:240px}.path-grade-edit-tree .setup-grades .column-range.level2{padding-left:37px}.path-grade-edit-tree .setup-grades .column-range.level3{padding-left:66px}.path-grade-edit-tree .setup-grades .column-range.level4{padding-left:95px}.path-grade-edit-tree .setup-grades .column-range.level5{padding-left:124px}.path-grade-edit-tree .setup-grades .column-range.level6{padding-left:153px}.path-grade-edit-tree .setup-grades .column-range.level7{padding-left:182px}.path-grade-edit-tree .setup-grades .column-range.level8{padding-left:211px}.path-grade-edit-tree .setup-grades .column-range.level9{padding-left:240px}.path-grade-edit-tree .setup-grades .column-range.level10{padding-left:269px}.path-grade-edit-tree .setup-grades.generaltable .levelodd{background-color:#f9f9f9}.path-grade-edit-tree .setup-grades.generaltable .leveleven{background-color:transparent}.path-grade-edit-tree .setup-grades.generaltable tbody tr:hover>td,.path-grade-edit-tree .setup-grades.generaltable tbody tr:hover>th{background-color:#f5f5f5}.dir-rtl.path-grade-edit-tree .setup-grades .category td.column-name{padding-right:0}.dir-rtl.path-grade-edit-tree .setup-grades td.column-name{padding-right:24px}.dir-rtl.path-grade-edit-tree .setup-grades .column-name h4 img.icon{padding-left:4px}.dir-rtl.path-grade-edit-tree .setup-grades .column-weight.level3{padding-right:37px;padding-left:0}.dir-rtl.path-grade-edit-tree .setup-grades .column-weight.level4{padding-right:66px;padding-left:0}.dir-rtl.path-grade-edit-tree .setup-grades .column-weight.level5{padding-right:95px;padding-left:0}.dir-rtl.path-grade-edit-tree .setup-grades .column-weight.level6{padding-right:124px;padding-left:0}.dir-rtl.path-grade-edit-tree .setup-grades .column-weight.level7{padding-right:153px;padding-left:0}.dir-rtl.path-grade-edit-tree .setup-grades .column-weight.level8{padding-right:182px;padding-left:0}.dir-rtl.path-grade-edit-tree .setup-grades .column-weight.level9{padding-right:211px;padding-left:0}.dir-rtl.path-grade-edit-tree .setup-grades .column-weight.level10{padding-right:240px;padding-left:0}.dir-rtl.path-grade-edit-tree .setup-grades .column-range.level2{padding-right:37px;padding-left:0}.dir-rtl.path-grade-edit-tree .setup-grades .column-range.level3{padding-right:66px;padding-left:0}.dir-rtl.path-grade-edit-tree .setup-grades .column-range.level4{padding-right:95px;padding-left:0}.dir-rtl.path-grade-edit-tree .setup-grades .column-range.level5{padding-right:124px;padding-left:0}.dir-rtl.path-grade-edit-tree .setup-grades .column-range.level6{padding-right:153px;padding-left:0}.dir-rtl.path-grade-edit-tree .setup-grades .column-range.level7{padding-right:182px;padding-left:0}.dir-rtl.path-grade-edit-tree .setup-grades .column-range.level8{padding-right:211px;padding-left:0}.dir-rtl.path-grade-edit-tree .setup-grades .column-range.level9{padding-right:240px;padding-left:0}.dir-rtl.path-grade-edit-tree .setup-grades .column-range.level10{padding-right:269px;padding-left:0}.path-grade-edit-tree table.setup-grades .column-weight{white-space:nowrap}.path-grade-edit-tree table.setup-grades .gradeitemdescription{font-style:italic;font-weight:normal}.path-grade-report .gradeparent tr .cell{background-color:#fff;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.path-grade-report .gradeparent table,.path-grade-report .gradeparent .cell{border-color:#ddd}.path-grade-report .gradeparent tr:nth-of-type(even) .cell,.path-grade-report .gradeparent .floater .cell,.path-grade-report .gradeparent .avg{background-color:#f9f9f9}.path-grade-report-user .user-grade{border:0}.path-grade-report-user .user-grade.generaltable .levelodd{background-color:#f9f9f9}.path-grade-report-user .user-grade.generaltable .leveleven{background-color:transparent}.path-grade-report-user .user-grade.generaltable tbody tr:hover>td,.path-grade-report-user .user-grade.generaltable tbody tr:hover>th{background-color:#f5f5f5}.has_dock.path-grade-report-grader .gradeparent .sideonly.floating>.cell,.has_dock.path-grade-report-grader .gradeparent .sideonly.floating>.cell,.has_dock.path-grade-report-grader .gradeparent .sideonly.floating>.cell{padding-left:47px}.has_dock.path-grade-report-grader.dir-rtl .gradeparent .sideonly.floating>.cell,.has_dock.path-grade-report-grader.dir-rtl .gradeparent .sideonly.floating>.cell,.has_dock.path-grade-report-grader.dir-rtl .gradeparent .sideonly.floating>.cell{padding-right:47px;padding-left:5px}.content-only.path-grade-report-grader .gradeparent table{margin-left:42px}.content-only.path-grade-report-grader.dir-rtl .gradeparent table{margin-right:42px;margin-left:0}.transform-test-heading{padding:0;margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:11px;font-weight:bold;line-height:36px;text-align:center}body.has_dock #page{padding-left:45px}body.has_dock div#dock{display:inline}#dock{position:fixed;top:0;left:0;width:42px;height:100%;background-color:transparent;border-right:0 none}#dock .nothingdocked{display:none;visibility:hidden}#dock .dockeditem_container{margin-top:68px}#dock .dockeditem .firstdockitem{margin-top:1em}#dock .dockedtitle{display:inline-block;display:block;*display:inline;width:36px;padding:4px 12px;padding:0;margin:3px;margin-bottom:0;*margin-left:.3em;font-size:14px;line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #ccc;*border:0;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);*zoom:1;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}#dock .dockedtitle:hover,#dock .dockedtitle:focus,#dock .dockedtitle:active,#dock .dockedtitle.active,#dock .dockedtitle.disabled,#dock .dockedtitle[disabled]{color:#333;background-color:#e6e6e6;*background-color:#d9d9d9}#dock .dockedtitle:active,#dock .dockedtitle.active{background-color:#ccc \9}#dock .dockedtitle:first-child{*margin-left:0}#dock .dockedtitle:hover,#dock .dockedtitle:focus{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}#dock .dockedtitle:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#dock .dockedtitle.active,#dock .dockedtitle:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}#dock .dockedtitle.disabled,#dock .dockedtitle[disabled]{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}#dock .dockedtitle .label,#dock .dockedtitle .badge{position:relative;top:-1px}#dock .dockedtitle h2{padding:0;margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:11px;font-weight:bold;line-height:36px;text-align:center}#dock .dockedtitle .filterrotate{margin-left:8px}#dock .controls{position:absolute;bottom:1em;width:100%;text-align:center}#dock .controls img{cursor:pointer}#dock .editing_move,#dock .moodle-