$showroles = 1;
break;
case CONTEXT_COURSECAT:
- $PAGE->set_heading("$SITE->fullname: ".get_string("categories"));
+ $PAGE->set_heading($SITE->fullname);
break;
case CONTEXT_COURSE:
if ($isfrontpage) {
- require_once($CFG->libdir.'/adminlib.php');
- admin_externalpage_setup('frontpageroles', '', array('contextid' => $contextid, 'roleid' => $roleid));
+ $PAGE->set_heading(get_string('frontpage', 'admin'));
} else {
$PAGE->set_heading($course->fullname);
}
print_error('nopermissions', 'error', '', get_string('checkpermissions', 'core_role'));
}
$PAGE->set_url($url);
+
+if ($context->contextlevel == CONTEXT_USER and $USER->id != $context->instanceid) {
+ $PAGE->navigation->extend_for_user($user);
+ $PAGE->set_context(context_course::instance($course->id));
+} else {
+ $PAGE->set_context($context);
+}
+
$PAGE->set_context($context);
$courseid = $course->id;
$showroles = 1;
break;
case CONTEXT_COURSECAT:
- $PAGE->set_heading("$SITE->fullname: ".get_string("categories"));
+ $PAGE->set_heading($SITE->fullname);
break;
case CONTEXT_COURSE:
if ($isfrontpage) {
- require_once($CFG->libdir.'/adminlib.php');
- admin_externalpage_setup('frontpageroles', '', array('contextid' => $contextid), $CFG->wwwroot . '/' . $CFG->admin . '/roles/check.php');
+ $PAGE->set_heading(get_string('frontpage', 'admin'));
} else {
$PAGE->set_heading($course->fullname);
}
$event = \core\event\role_capabilities_updated::create(
array(
'context' => $systemcontext,
- 'objectid' => $roleid,
- 'other' => array('name' => $definitiontable->get_role_name())
+ 'objectid' => $roleid
)
);
$event->set_legacy_logdata(array(SITEID, 'role', $action, 'admin/roles/define.php?action=view&roleid=' . $tableroleid,
$safeoverridesonly = true;
}
$PAGE->set_url($url);
-$PAGE->set_context($context);
$PAGE->set_pagelayout('admin');
+if ($context->contextlevel == CONTEXT_USER and $USER->id != $context->instanceid) {
+ $PAGE->navigation->extend_for_user($user);
+ $PAGE->set_context(context_course::instance($course->id));
+ navigation_node::override_active_url(new moodle_url('/admin/roles/permissions.php',
+ array('contextid'=>$context->id, 'userid'=>$context->instanceid, 'courseid'=>$course->id)));
+
+} else {
+ $PAGE->set_context($context);
+ navigation_node::override_active_url(new moodle_url('/admin/roles/permissions.php', array('contextid'=>$context->id)));
+}
+
$courseid = $course->id;
$returnurl = new moodle_url('/admin/roles/permissions.php', array('contextid' => $context->id));
$showroles = 1;
break;
case CONTEXT_COURSECAT:
- $PAGE->set_heading("$SITE->fullname: ".get_string("categories"));
+ $PAGE->set_heading($SITE->fullname);
break;
case CONTEXT_COURSE:
if ($isfrontpage) {
- require_once($CFG->libdir.'/adminlib.php');
- admin_externalpage_setup('frontpageroles', '', array(), $PAGE->url);
+ $PAGE->set_heading(get_string('frontpage', 'admin'));
} else {
$PAGE->set_heading($course->fullname);
}
array(
'context' => $context,
'objectid' => $roleid,
- 'courseid' => $courseid,
- 'other' => array('name' => $rolename)
+ 'courseid' => $courseid
)
);
require_login($course, false, $cm);
require_capability('moodle/role:review', $context);
$PAGE->set_url($url);
-$PAGE->set_context($context);
+
+if ($context->contextlevel == CONTEXT_USER and $USER->id != $context->instanceid) {
+ $PAGE->navigation->extend_for_user($user);
+ $PAGE->set_context(context_course::instance($course->id));
+} else {
+ $PAGE->set_context($context);
+}
+
$courseid = $course->id;
$showroles = 1;
break;
case CONTEXT_COURSECAT:
- $PAGE->set_heading("$SITE->fullname: ".get_string("categories"));
+ $PAGE->set_heading($SITE->fullname);
break;
case CONTEXT_COURSE:
if ($isfrontpage) {
- require_once($CFG->libdir.'/adminlib.php');
- admin_externalpage_setup('frontpageroles', '', array(), $PAGE->url);
+ $PAGE->set_heading(get_string('frontpage', 'admin'));
} else {
$PAGE->set_heading($course->fullname);
}
$baseurl = new moodle_url('/admin/roles/usersroles.php', array('userid'=>$userid, 'courseid'=>$courseid));
$PAGE->set_url($baseurl);
-$PAGE->set_context($coursecontext);
$PAGE->set_pagelayout('admin');
// Check login and permissions.
-require_login($course);
+if ($course->id == SITEID) {
+ require_login();
+ $PAGE->set_context($usercontext);
+} else {
+ require_login($course);
+ $PAGE->set_context($coursecontext);
+}
+
$canview = has_any_capability(array('moodle/role:assign', 'moodle/role:safeoverride',
'moodle/role:override', 'moodle/role:manage'), $usercontext);
if (!$canview) {
// Course header.
$PAGE->set_title($title);
-if ($courseid != SITEID) {
+if ($courseid == SITEID) {
$PAGE->set_heading($fullname);
} else {
- $PAGE->set_heading($course->fullname);
+ $PAGE->set_heading($course->fullname.': '.$fullname);
}
echo $OUTPUT->header();
echo $OUTPUT->heading($title, 3);
$PAGE->set_pagetype('admin-setting-' . $section);
$PAGE->set_pagelayout('admin');
$PAGE->navigation->clear_cache();
+navigation_node::require_admin_tree();
$adminroot = admin_get_root(); // need all settings
$settingspage = $adminroot->locate($section, true);
}
$temp->add(new admin_setting_configselect('defaultfrontpageroleid', new lang_string('frontpagedefaultrole', 'admin'), '', $defaultfrontpageroleid, $options));
-
$ADMIN->add('frontpage', $temp);
-
- $ADMIN->add('frontpage', new admin_externalpage('frontpageroles', new lang_string('frontpageroles', 'admin'), "$CFG->wwwroot/$CFG->admin/roles/assign.php?contextid=" . $frontpagecontext->id, 'moodle/role:assign', false, $frontpagecontext));
-
- $ADMIN->add('frontpage', new admin_externalpage('frontpagefilters', new lang_string('frontpagefilters', 'admin'), "$CFG->wwwroot/filter/manage.php?contextid=" . $frontpagecontext->id, 'moodle/filter:manage', false, $frontpagecontext));
-
- $ADMIN->add('frontpage', new admin_externalpage('frontpagebackup', new lang_string('frontpagebackup', 'admin'), $CFG->wwwroot.'/backup/backup.php?id='.SITEID, 'moodle/backup:backupcourse', false, $frontpagecontext));
-
- $ADMIN->add('frontpage', new admin_externalpage('frontpagerestore', new lang_string('frontpagerestore', 'admin'), $CFG->wwwroot.'/backup/restorefile.php?contextid='.$frontpagecontext->id, 'moodle/restore:restorecourse', false, $frontpagecontext));
-
- $questioncapabilities = array(
- 'moodle/question:add',
- 'moodle/question:editmine',
- 'moodle/question:editall',
- 'moodle/question:viewmine',
- 'moodle/question:viewall',
- 'moodle/question:movemine',
- 'moodle/question:moveall');
- $ADMIN->add('frontpage', new admin_externalpage('frontpagequestions', new lang_string('frontpagequestions', 'admin'), $CFG->wwwroot.'/question/edit.php?courseid='.SITEID, $questioncapabilities, false, $frontpagecontext));
-
- if (!empty($SITE->legacyfiles) and $SITE->legacyfiles === 2) {
- $ADMIN->add('frontpage', new admin_externalpage('sitefiles', new lang_string('sitelegacyfiles'), $CFG->wwwroot . '/files/index.php?id=' . SITEID, 'moodle/course:managefiles', false, $frontpagecontext));
- }
}
}
require_once(__DIR__ . '/../../../lib/behat/behat_base.php');
require_once(__DIR__ . '/../../../lib/behat/behat_field_manager.php');
-use Behat\Gherkin\Node\TableNode as TableNode,
+use Behat\Behat\Context\Step\Given as Given,
+ Behat\Gherkin\Node\TableNode as TableNode,
Behat\Mink\Exception\ElementNotFoundException as ElementNotFoundException;
/**
$this->getSession()->wait($timeout, $javascript);
}
}
+
+ /**
+ * Goes to notification page ensuring site admin navigation is loaded.
+ *
+ * @Given /^I go to notifications page$/
+ * @return Given[]
+ */
+ public function i_go_to_notifications_page() {
+ if ($this->running_javascript()) {
+ return array(
+ new Given('I expand "' . get_string('administrationsite') . '" node'),
+ new Given('I follow "' . get_string('notifications') . '"')
+ );
+ } else {
+ return array(
+ new Given('I follow "' . get_string('administrationsite') . '"')
+ );
+ }
+ }
}
And I should not see "C_shortname Course fullname"
Scenario: Courses list with extended course names
- Given I click on "Courses" "link" in the "//div[@id='settingsnav']/descendant::li[contains(concat(' ', normalize-space(@class), ' '), ' type_setting ')][not(contains(., 'Site administration'))][contains(., 'Appearance')]" "xpath_element"
+ Given I go to notifications page
+ And I click on "Courses" "link" in the "//div[@id='settingsnav']/descendant::li[contains(concat(' ', normalize-space(@class), ' '), ' type_setting ')][contains(., 'Appearance')]" "xpath_element"
And I check "Display extended course names"
When I press "Save changes"
And I am on homepage
And I wait "2" seconds
And I hover ".region-content .generaltable td span" "css_element"
Then I should see "I'm the description"
+ And "Grouping" "select" in the "region-main" "region" should be visible
+ And "Group" "select" should be visible
+ And "Messaging" "link" in the "Administration" "block" should not be visible
+ And "Change password" "link" should not be visible
And I should see "Filter groups by"
And I should not see "Filter groupssss by"
And I should see "Group members" in the ".region-content table th.c1" "css_element"
require(dirname(dirname(dirname(dirname(__FILE__)))) . '/config.php');
require_once($CFG->dirroot.'/'.$CFG->admin.'/tool/customlang/locallib.php');
require_once($CFG->dirroot.'/'.$CFG->admin.'/tool/customlang/filter_form.php');
+require_once($CFG->libdir.'/adminlib.php');
require_login(SITEID, false);
require_capability('tool/customlang:edit', context_system::instance());
$currentpage = optional_param('p', 0, PARAM_INT);
$translatorsubmitted = optional_param('translatorsubmitted', 0, PARAM_BOOL);
-$PAGE->set_pagelayout('report'); // Allows for wide page contents.
-$PAGE->set_url('/admin/tool/customlang/edit.php', array('lng' => $lng));
-navigation_node::override_active_url(new moodle_url('/admin/tool/customlang/index.php'));
-$PAGE->set_title(get_string('pluginname', 'tool_customlang'));
-$PAGE->set_heading(get_string('pluginname', 'tool_customlang'));
+admin_externalpage_setup('toolcustomlang', '', null,
+ new moodle_url('/admin/tool/customlang/edit.php', array('lng' => $lng)),
+ array('pagelayout' => 'report')); // Hack: allows for wide page contents.
+
$PAGE->requires->js_init_call('M.tool_customlang.init_editor', array(), true);
if (empty($lng)) {
require_once($CFG->dirroot.'/'.$CFG->admin.'/tool/customlang/locallib.php');
require_once($CFG->libdir.'/adminlib.php');
-require_login(SITEID, false);
+require_login(null, false);
require_capability('tool/customlang:view', context_system::instance());
$action = optional_param('action', '', PARAM_ALPHA);
// Checks that the selected course has enough users.
$coursesizes = tool_generator_course_backend::get_users_per_size();
- if (count($users) < $coursesizes[$size]) {
+ if (count($users) < self::$users[$size]) {
$errors['size'] = get_string('notenoughusers', 'tool_generator');
}
*
* @param string $source full path to the existing directory
* @param string $target full path to the new location of the directory
+ * @param int $dirpermissions
+ * @param int $filepermissions
*/
- public function move_directory($source, $target) {
+ public function move_directory($source, $target, $dirpermissions, $filepermissions) {
if (file_exists($target)) {
throw new tool_installaddon_installer_exception('err_folder_already_exists', array('path' => $target));
throw new tool_installaddon_installer_exception('err_no_such_folder', array('path' => $source));
}
- make_writable_directory($target);
+ if (!file_exists($target)) {
+ // Do not use make_writable_directory() here - it is intended for dataroot only.
+ mkdir($target, true);
+ @chmod($target, $dirpermissions);
+ }
+
+ if (!is_writable($target)) {
+ closedir($handle);
+ throw new tool_installaddon_installer_exception('err_folder_not_writable', array('path' => $target));
+ }
while ($filename = readdir($handle)) {
$sourcepath = $source.'/'.$filename;
}
if (is_dir($sourcepath)) {
- $this->move_directory($sourcepath, $targetpath);
+ $this->move_directory($sourcepath, $targetpath, $dirpermissions, $filepermissions);
} else {
rename($sourcepath, $targetpath);
+ @chmod($targetpath, $filepermissions);
}
}
get_string('invaliddata', 'core_error'));
}
-$installer->move_directory($zipcontentpath.'/'.$pluginname, $plugintypepath.'/'.$pluginname);
+// Copy permissions form the plugin type directory.
+$dirpermissions = fileperms($plugintypepath);
+$filepermissions = ($dirpermissions & 0666); // Strip execute flags.
+
+$installer->move_directory($zipcontentpath.'/'.$pluginname, $plugintypepath.'/'.$pluginname, $dirpermissions, $filepermissions);
fulldelete($CFG->tempdir.'/tool_installaddon/'.$jobid);
redirect(new moodle_url('/admin'));
* @copyright 2013 David Mudrak <david@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
-class tool_installaddon_installer_test extends advanced_testcase {
+class tool_installaddon_installer_testcase extends advanced_testcase {
public function test_get_addons_repository_url() {
$installer = testable_tool_installaddon_installer::instance();
file_put_contents($contentsdir.'/readme.txt', 'Hello world!');
$installer = tool_installaddon_installer::instance();
- $installer->move_directory($jobroot.'/contents', $jobroot.'/moved');
+ $installer->move_directory($jobroot.'/contents', $jobroot.'/moved', 0777, 0666);
$this->assertFalse(is_dir($jobroot.'/contents'));
$this->assertTrue(is_file($jobroot.'/moved/sub/folder/readme.txt'));
$today = make_timestamp(date('Y', $today), date('m', $today), date('d', $today), 0, 0, 0);
// array of all valid fields for validation
-$STD_FIELDS = array('id', 'firstname', 'lastname', 'username', 'email',
+$STD_FIELDS = array('id', 'username', 'email',
'city', 'country', 'lang', 'timezone', 'mailformat',
'maildisplay', 'maildigest', 'htmleditor', 'autosubscribe',
'institution', 'department', 'idnumber', 'skype',
'deleted', // 1 means delete user
'mnethostid', // Can not be used for adding, updating or deleting of users - only for enrolments, groups, cohorts and suspending.
);
+// Include all name fields.
+$STD_FIELDS = array_merge($STD_FIELDS, get_all_user_name_fields());
$PRF_FIELDS = array();
defined('MOODLE_INTERNAL') || die();
require_once $CFG->libdir.'/formslib.php';
-
+require_once($CFG->dirroot . '/user/editlib.php');
/**
* Upload a file CVS file with user information.
// look for other required data
if ($optype != UU_USER_UPDATE) {
- if (!in_array('firstname', $columns)) {
- $errors['uutype'] = get_string('missingfield', 'error', 'firstname');
- }
-
- if (!in_array('lastname', $columns)) {
- if (isset($errors['uutype'])) {
- $errors['uutype'] = '';
- } else {
- $errors['uutype'] = ' ';
+ $requiredusernames = useredit_get_required_name_fields();
+ $missing = array();
+ foreach ($requiredusernames as $requiredusername) {
+ if (!in_array($requiredusername, $columns)) {
+ $missing[] = get_string('missingfield', 'error', $requiredusername);;
}
- $errors['uutype'] .= get_string('missingfield', 'error', 'lastname');
}
-
+ if ($missing) {
+ $errors['uutype'] = implode('<br />', $missing);
+ }
if (!in_array('email', $columns) and empty($data['email'])) {
$errors['email'] = get_string('requiredtemplate', 'tool_uploaduser');
}
}
-
return $errors;
}
backup_helper::check_and_create_backup_dir($this->get_backupid());// Create backup temp dir
backup_helper::clear_backup_dir($this->get_backupid(), $progress); // Empty temp dir, just in case
backup_helper::delete_old_backup_dirs(time() - (4 * 60 * 60), $progress); // Delete > 4 hours temp dirs
+ backup_controller_dbops::drop_backup_ids_temp_table($this->get_backupid()); // Drop ids temp table
backup_controller_dbops::create_backup_ids_temp_table($this->get_backupid()); // Create ids temp table
$progress->end_progress();
}
$section_included = new restore_section_included_setting($settingname, base_setting::IS_BOOLEAN, true);
if (is_number($this->info->title)) {
$label = get_string('includesection', 'backup', $this->info->title);
+ } elseif (empty($this->info->title)) { // Don't throw error if title is empty, gracefully continue restore.
+ $this->log('Section title missing in backup for section id '.$this->info->sectionid, backup::LOG_WARNING, $this->name);
+ $label = get_string('unnamedsection', 'backup');
} else {
$label = $this->info->title;
}
$dbman = $DB->get_manager(); // We are going to use database_manager services
$targettablename = 'backup_ids_temp';
- $table = new xmldb_table($targettablename);
- $dbman->drop_table($table); // And drop it
+ if ($dbman->table_exists($targettablename)) {
+ $table = new xmldb_table($targettablename);
+ $dbman->drop_table($table); // And drop it
+ }
}
/**
);
if (empty($file->repositoryid)) {
+ // If contenthash is empty then gracefully skip adding file.
+ if (empty($file->contenthash)) {
+ $result = new stdClass();
+ $result->code = 'file_missing_in_backup';
+ $result->message = sprintf('missing file (%s) contenthash in backup for component %s', $file->filename, $component);
+ $result->level = backup::LOG_WARNING;
+ $results[] = $result;
+ continue;
+ }
// this is a regular file, it must be present in the backup pool
$backuppath = $basepath . backup_file_manager::get_backup_content_file_location($file->contenthash);
if ($badge->type == BADGE_TYPE_COURSE) {
require_login($badge->courseid);
$navurl = new moodle_url('/badges/index.php', array('type' => $badge->type, 'id' => $badge->courseid));
+ $PAGE->set_pagelayout('standard');
+ navigation_node::override_active_url($navurl);
+} else {
+ $PAGE->set_pagelayout('admin');
+ navigation_node::override_active_url($navurl, true);
}
$PAGE->set_context($context);
$PAGE->set_url('/badges/action.php', array('id' => $badge->id));
-$PAGE->set_pagelayout('standard');
-navigation_node::override_active_url($navurl);
if ($return !== 0) {
$returnurl = new moodle_url($return);
}
require_login($badge->courseid);
$navurl = new moodle_url('/badges/index.php', array('type' => $badge->type, 'id' => $badge->courseid));
+ $PAGE->set_pagelayout('standard');
+ navigation_node::override_active_url($navurl);
+} else {
+ $PAGE->set_pagelayout('admin');
+ navigation_node::override_active_url($navurl, true);
}
require_capability('moodle/badges:awardbadge', $context);
// Set up navigation and breadcrumbs.
$strrecipients = get_string('recipients', 'badges');
-navigation_node::override_active_url($navurl);
$PAGE->navbar->add($badge->name, new moodle_url('overview.php', array('id' => $badge->id)))->add($strrecipients);
$PAGE->set_title($strrecipients);
$PAGE->set_heading($badge->name);
-$PAGE->set_pagelayout('standard');
if (!$badge->is_active()) {
echo $OUTPUT->header();
}
require_login($badge->courseid);
$navurl = new moodle_url('/badges/index.php', array('type' => $badge->type, 'id' => $badge->courseid));
+ $PAGE->set_pagelayout('standard');
+ navigation_node::override_active_url($navurl);
+} else {
+ $PAGE->set_pagelayout('admin');
+ navigation_node::override_active_url($navurl, true);
}
$currenturl = new moodle_url('/badges/criteria.php', array('id' => $badge->id));
$PAGE->set_context($context);
$PAGE->set_url($currenturl);
-$PAGE->set_pagelayout('standard');
$PAGE->set_heading($badge->name);
$PAGE->set_title($badge->name);
-
-// Set up navigation and breadcrumbs.
-navigation_node::override_active_url($navurl);
$PAGE->navbar->add($badge->name);
$output = $PAGE->get_renderer('core', 'badges');
if ($badge->type == BADGE_TYPE_COURSE) {
require_login($badge->courseid);
$navurl = new moodle_url('/badges/index.php', array('type' => $badge->type, 'id' => $badge->courseid));
+ $PAGE->set_pagelayout('standard');
+ navigation_node::override_active_url($navurl);
+} else {
+ $PAGE->set_pagelayout('admin');
+ navigation_node::override_active_url($navurl, true);
}
$PAGE->set_context($context);
$PAGE->set_url('/badges/criteria_action.php');
-$PAGE->set_pagelayout('standard');
$PAGE->set_heading($badge->name);
$PAGE->set_title($badge->name);
-navigation_node::override_active_url($navurl);
if ($delete && has_capability('moodle/badges:configurecriteria', $context)) {
if (!$confirm) {
if ($badge->type == BADGE_TYPE_COURSE) {
require_login($badge->courseid);
$navurl = new moodle_url('/badges/index.php', array('type' => $badge->type, 'id' => $badge->courseid));
+ $PAGE->set_pagelayout('standard');
+ navigation_node::override_active_url($navurl);
+} else {
+ $PAGE->set_pagelayout('admin');
+ navigation_node::override_active_url($navurl, true);
}
$PAGE->set_context($context);
$PAGE->set_url('/badges/criteria_settings.php');
-$PAGE->set_pagelayout('standard');
$PAGE->set_heading($badge->name);
$PAGE->set_title($badge->name);
-navigation_node::override_active_url($navurl);
$PAGE->navbar->add($badge->name, new moodle_url('overview.php', array('id' => $badge->id)))->add(get_string('criteria_' . $type, 'badges'));
$cparams = array('criteriatype' => $type, 'badgeid' => $badge->id);
}
require_login($badge->courseid);
$navurl = new moodle_url('/badges/index.php', array('type' => $badge->type, 'id' => $badge->courseid));
+ $PAGE->set_pagelayout('standard');
+ navigation_node::override_active_url($navurl);
+} else {
+ $PAGE->set_pagelayout('admin');
+ navigation_node::override_active_url($navurl, true);
}
$currenturl = new moodle_url('/badges/edit.php', array('id' => $badge->id, 'action' => $action));
$PAGE->set_context($context);
$PAGE->set_url($currenturl);
-$PAGE->set_pagelayout('standard');
$PAGE->set_heading($badge->name);
$PAGE->set_title($badge->name);
-
-// Set up navigation and breadcrumbs.
-navigation_node::override_active_url($navurl);
$PAGE->navbar->add($badge->name);
$output = $PAGE->get_renderer('core', 'badges');
$PAGE->set_context(context_system::instance());
$PAGE->set_pagelayout('admin');
$PAGE->set_heading($title . ': ' . $hdr);
- navigation_node::override_active_url(new moodle_url('/badges/index.php', array('type' => BADGE_TYPE_SITE)));
+ navigation_node::override_active_url(new moodle_url('/badges/index.php', array('type' => BADGE_TYPE_SITE)), true);
} else {
require_login($course);
$coursecontext = context_course::instance($course->id);
}
require_login($badge->courseid);
$navurl = new moodle_url('/badges/index.php', array('type' => $badge->type, 'id' => $badge->courseid));
+ $PAGE->set_pagelayout('standard');
+ navigation_node::override_active_url($navurl);
+} else {
+ $PAGE->set_pagelayout('admin');
+ navigation_node::override_active_url($navurl, true);
}
$currenturl = new moodle_url('/badges/overview.php', array('id' => $badge->id));
$PAGE->set_context($context);
$PAGE->set_url($currenturl);
-$PAGE->set_pagelayout('standard');
$PAGE->set_heading($badge->name);
$PAGE->set_title($badge->name);
-
-// Set up navigation and breadcrumbs.
-navigation_node::override_active_url($navurl);
$PAGE->navbar->add($badge->name);
echo $OUTPUT->header();
}
require_login($badge->courseid);
$navurl = new moodle_url('/badges/index.php', array('type' => $badge->type, 'id' => $badge->courseid));
+ $PAGE->set_pagelayout('standard');
+ navigation_node::override_active_url($navurl);
+} else {
+ $PAGE->set_pagelayout('admin');
+ navigation_node::override_active_url($navurl, true);
}
$PAGE->set_context($context);
$PAGE->set_url('/badges/recipients.php', array('id' => $badgeid, 'sort' => $sortby, 'dir' => $sorthow));
-$PAGE->set_pagelayout('standard');
$PAGE->set_heading($badge->name);
$PAGE->set_title($badge->name);
$PAGE->navbar->add($badge->name);
-navigation_node::override_active_url($navurl);
$output = $PAGE->get_renderer('core', 'badges');
$community = $this->block_community_get_course($course->url, $userid);
if (empty($community)) {
+ $community = new stdClass();
$community->userid = $userid;
$community->coursename = $course->name;
$community->coursedescription = $course->description;
CUSTOM : 60,
// @type int Setting = 70
SETTING : 70,
+ // @type int site administration = 71
+ SITEADMIN : 71,
// @type int User context = 80
USER : 80,
// @type int Container = 90
M.block_navigation.expandablebranchcount++;
this.branches[branch.get('id')] = branch;
}
+ // Create siteadmin branch.
+ if (window.siteadminexpansion) {
+ var siteadminbranch = new BRANCH({
+ tree: this,
+ branchobj: window.siteadminexpansion,
+ overrides : {
+ expandable : true,
+ children : [],
+ haschildren : true
+ }
+ }).wire();
+ M.block_navigation.expandablebranchcount++;
+ this.branches[siteadminbranch.get('id')] = siteadminbranch;
+ // Remove link on site admin with JS to keep old UI.
+ var siteadminlinknode = siteadminbranch.node.get('childNodes').item(0);
+ if (siteadminlinknode) {
+ var siteadminnode = Y.Node.create('<span tabindex="0">'+siteadminlinknode.get('innerHTML')+'</span>');
+ siteadminbranch.node.replaceChild(siteadminnode, siteadminlinknode);
+ }
+ }
if (M.block_navigation.expandablebranchcount > 0) {
// Delegate some events to handle AJAX loading.
Y.delegate('click', this.fire_branch_action, node.one('.block_tree'), '.tree_item.branch[data-expandable]', this);
instance : this.get('tree').get('instance')
};
- Y.io(M.cfg.wwwroot+'/lib/ajax/getnavbranch.php', {
+ var ajaxfile = '/lib/ajax/getnavbranch.php';
+ // For siteadmin navigation get tree from getsiteadminbranch.php.
+ if (this.get('type') === NODETYPE.SITEADMIN) {
+ ajaxfile = '/lib/ajax/getsiteadminbranch.php';
+ }
+
+ Y.io(M.cfg.wwwroot + ajaxfile, {
method:'POST',
data: build_querystring(params),
on: {
$PAGE->set_context($context);
$PAGE->set_url('/cohort/assign.php', array('id'=>$id));
+$PAGE->set_pagelayout('admin');
$returnurl = new moodle_url('/cohort/index.php', array('contextid'=>$cohort->contextid));
if ($context->contextlevel == CONTEXT_COURSECAT) {
$category = $DB->get_record('course_categories', array('id'=>$context->instanceid), '*', MUST_EXIST);
navigation_node::override_active_url(new moodle_url('/cohort/index.php', array('contextid'=>$cohort->contextid)));
- $PAGE->set_pagelayout('report');
-
} else {
navigation_node::override_active_url(new moodle_url('/cohort/index.php', array()));
- $PAGE->set_pagelayout('admin');
}
$PAGE->navbar->add(get_string('assign', 'cohort'));
$PAGE->set_context($context);
$PAGE->set_url('/cohort/edit.php', array('contextid'=>$context->id, 'id'=>$cohort->id));
$PAGE->set_context($context);
+$PAGE->set_pagelayout('admin');
if ($context->contextlevel == CONTEXT_COURSECAT) {
$category = $DB->get_record('course_categories', array('id'=>$context->instanceid), '*', MUST_EXIST);
navigation_node::override_active_url(new moodle_url('/cohort/index.php', array('contextid'=>$cohort->contextid)));
- $PAGE->set_pagelayout('report');
} else {
navigation_node::override_active_url(new moodle_url('/cohort/index.php', array()));
- $PAGE->set_pagelayout('admin');
}
if ($delete and $cohort->id) {
$strcohorts = get_string('cohorts', 'cohort');
if ($category) {
- $PAGE->set_pagelayout('report');
+ $PAGE->set_pagelayout('admin');
$PAGE->set_context($context);
$PAGE->set_url('/cohort/index.php', array('contextid'=>$context->id));
$PAGE->set_title($strcohorts);
--- /dev/null
+@core @core_completion
+Feature: Restrict activity availability through date conditions
+ In order to control activity access through date condition
+ As a teacher
+ I need to set allow access dates to restrict activity access
+
+ Background:
+ Given the following "courses" exists:
+ | fullname | shortname | category |
+ | Course 1 | C1 | 0 |
+ And the following "users" exists:
+ | username | firstname | lastname | email |
+ | teacher1 | Teacher | Frist | teacher1@asd.com |
+ | student1 | Student | First | student1@asd.com |
+ And the following "course enrolments" exists:
+ | user | course | role |
+ | teacher1 | C1 | editingteacher |
+ | student1 | C1 | student |
+ And I log in as "admin"
+ And I set the following administration settings values:
+ | Enable conditional access | 1 |
+ And I log out
+
+ @javascript
+ Scenario: Show activity greyed-out to students when available from date is in future
+ Given I log in as "teacher1"
+ And I follow "Course 1"
+ And I turn editing mode on
+ And I add a "Assignment" to section "1"
+ And I fill the moodle form with:
+ | Assignment name | Test assignment 1 |
+ | Description | This assignment is restricted by date |
+ | assignsubmission_onlinetext_enabled | 1 |
+ | assignsubmission_file_enabled | 0 |
+ | id_availablefrom_day | 31 |
+ | id_availablefrom_month | 12 |
+ | id_availablefrom_year | 2050 |
+ | id_showavailability | 1 |
+ And I click on "id_availablefrom_enabled" "checkbox"
+ And I press "Save and return to course"
+ And I log out
+ When I log in as "student1"
+ And I follow "Course 1"
+ Then I should see "Available from 31 December 2050."
+ And "Test assignment 1" activity should be hidden
+ And I log out
+
+ @javascript
+ Scenario: Show activity hidden to students when available until date is in past
+ Given I log in as "teacher1"
+ And I follow "Course 1"
+ And I turn editing mode on
+ And I add a "Assignment" to section "2"
+ And I fill the moodle form with:
+ | Assignment name | Test assignment 2 |
+ | Description | This assignment is restricted by date |
+ | assignsubmission_onlinetext_enabled | 1 |
+ | assignsubmission_file_enabled | 0 |
+ | id_availableuntil_day | 1 |
+ | id_availableuntil_month | 2 |
+ | id_availableuntil_year | 2013 |
+ | id_showavailability | 0 |
+ And I click on "id_availableuntil_enabled" "checkbox"
+ And I press "Save and return to course"
+ And I log out
+ When I log in as "student1"
+ And I follow "Course 1"
+ Then I should not see "Test assignment 2"
--- /dev/null
+@core @core_completion
+Feature: Restrict activity availability through grade conditions
+ In order to control activity access through grade condition
+ As a teacher
+ I need to set grade condition to restrict activity access
+
+ @javascript
+ Scenario: Show activity greyed-out to students when grade condition is not satisfied
+ Given the following "courses" exists:
+ | fullname | shortname | category |
+ | Course 1 | C1 | 0 |
+ And the following "users" exists:
+ | username | firstname | lastname | email |
+ | teacher1 | Teacher | Frist | teacher1@asd.com |
+ | student1 | Student | First | student1@asd.com |
+ And the following "course enrolments" exists:
+ | user | course | role |
+ | teacher1 | C1 | editingteacher |
+ | student1 | C1 | student |
+ And I log in as "admin"
+ And I set the following administration settings values:
+ | Enable conditional access | 1 |
+ And I log out
+ And I log in as "teacher1"
+ And I follow "Course 1"
+ And I turn editing mode on
+ And I add a "Assignment" to section "1" and I fill the form with:
+ | Assignment name | Grade assignment |
+ | Description | Grade this assignment to revoke restriction on restricted assignment |
+ | assignsubmission_onlinetext_enabled | 1 |
+ | assignsubmission_file_enabled | 0 |
+ And I add a "Page" to section "2" and I fill the form with:
+ | Name | Test page name |
+ | Description | Restricted page, till grades in Grade assignment is at least 20% |
+ | Page content | Test page contents |
+ | id_conditiongradegroup_0_conditiongradeitemid | 2 |
+ | id_conditiongradegroup_0_conditiongrademin | 20 |
+ | id_showavailability | 1 |
+ And I log out
+ When I log in as "student1"
+ And I follow "Course 1"
+ Then I should see "Not available until you achieve a required score in Grade assignment"
+ And "Test page name" activity should be hidden
+ And I follow "Grade assignment"
+ And I press "Add submission"
+ And I fill the moodle form with:
+ | Online text | I'm the student submission |
+ And I press "Save changes"
+ And I should see "Submitted for grading"
+ And I log out
+ And I log in as "teacher1"
+ And I follow "Course 1"
+ And I follow "Grade assignment"
+ And I follow "View/grade all submissions"
+ And I click on "Grade Student First" "link" in the "Student First" "table_row"
+ And I fill the moodle form with:
+ | Grade | 21 |
+ And I press "Save changes"
+ And I log out
+ And I log in as "student1"
+ And I follow "Course 1"
+ And "Test page name" activity should be visible
+ And I should not see "Not available until you achieve a required score in Grade assignment"
@core @core_completion
-Feature: Restrict sections availability through completion conditions
- In order to control section's contents access through activities completion
+Feature: Restrict sections availability through completion or grade conditions
+ In order to control section's contents access through activities completion or grade condition
As a teacher
I need to restrict sections availability using different conditions
- @javascript
- Scenario: Show section greyed-out to students when completion conditions are not satisfied
+ Background:
Given the following "courses" exists:
| fullname | shortname | category |
| Course 1 | C1 | 0 |
| Enable completion tracking | 1 |
| Enable conditional access | 1 |
And I log out
- And I log in as "teacher1"
+
+ @javascript
+ Scenario: Show section greyed-out to student when completion condition is not satisfied
+ Given I log in as "teacher1"
And I follow "Course 1"
And I turn editing mode on
And I follow "Edit settings"
| Name | Test page name |
| Description | Test page description |
| Page content | Test page contents |
- When I click on "Edit summary" "link" in the "#section-2" "css_element"
- And I fill the moodle form with:
+ When I edit the section "2" and I fill the form with:
| id_conditioncompletiongroup_0_conditionsourcecmid | Test label |
| id_conditioncompletiongroup_0_conditionrequiredcompletion | must be marked complete |
| Before section can be accessed | Show section greyed-out, with restriction information |
- And I press "Save changes"
And I log out
And I log in as "student1"
And I follow "Course 1"
And I press "Not completed: Test label. Select to mark as complete."
And I should see "Test page name"
And I should not see "Not available until the activity Test label is marked complete."
+
+ @javascript
+ Scenario: Show section greyed-out to student when grade condition is not satisfied
+ Given I log in as "teacher1"
+ And I follow "Course 1"
+ And I turn editing mode on
+ And I add a "Assignment" to section "1" and I fill the form with:
+ | Assignment name | Grade assignment |
+ | Description | Grade this assignment to revoke restriction on restricted assignment |
+ | assignsubmission_onlinetext_enabled | 1 |
+ | assignsubmission_file_enabled | 0 |
+ And I add a "Page" to section "2" and I fill the form with:
+ | Name | Test page name |
+ | Description | Restricted section page resource, till grades in Grade assignment is at least 20% |
+ | Page content | Test page contents |
+ And I edit the section "2" and I fill the form with:
+ | id_conditiongradegroup_0_conditiongradeitemid | 2 |
+ | id_conditiongradegroup_0_conditiongrademin | 20 |
+ | Before section can be accessed | 1 |
+ And I log out
+ When I log in as "student1"
+ And I follow "Course 1"
+ Then I should see "Not available until you achieve a required score in Grade assignment"
+ And "Test page name" activity should be hidden
+ And I follow "Grade assignment"
+ And I press "Add submission"
+ And I fill the moodle form with:
+ | Online text | I'm the student submission |
+ And I press "Save changes"
+ And I should see "Submitted for grading"
+ And I log out
+ And I log in as "teacher1"
+ And I follow "Course 1"
+ And I follow "Grade assignment"
+ And I follow "View/grade all submissions"
+ And I click on "Grade Student First" "link" in the "Student First" "table_row"
+ And I fill the moodle form with:
+ | Grade | 21 |
+ And I press "Save changes"
+ And I log out
+ And I log in as "student1"
+ And I follow "Course 1"
+ And "Test page name" activity should be visible
+ And I should not see "Not available until you achieve a required score in Grade assignment"
\ No newline at end of file
// $CFG->session_handler_class = '\core\session\memcached';
// $CFG->session_memcached_save_path = '127.0.0.1:11211';
// $CFG->session_memcached_prefix = 'memc.sess.key.';
+// $CFG->session_memcached_acquire_lock_timeout = 120;
+// $CFG->session_memcached_lock_expire = 7200; // Ignored if memcached extension <= 2.1.0
//
// Following setting allows you to alter how frequently is timemodified updated in sessions table.
// $CFG->session_update_timemodified_frequency = 20; // In seconds.
$id = required_param('id', PARAM_INT); // Course ID.
$delete = optional_param('delete', '', PARAM_ALPHANUM); // Confirmation hash.
-$PAGE->set_url('/course/delete.php', array('id' => $id));
-$PAGE->set_context(context_system::instance());
-require_login();
-
$course = $DB->get_record('course', array('id' => $id), '*', MUST_EXIST);
$coursecontext = context_course::instance($course->id);
-if ((int)$SITE->id === (int)$course->id || !can_delete_course($id)) {
+require_login();
+
+if ($SITE->id == $course->id || !can_delete_course($id)) {
// Can not delete frontpage or don't have permission to delete the course.
print_error('cannotdeletecourse');
}
+$categorycontext = context_coursecat::instance($course->category);
+$PAGE->set_url('/course/delete.php', array('id' => $id));
+$PAGE->set_context($categorycontext);
+$PAGE->set_pagelayout('admin');
+navigation_node::override_active_url(new moodle_url('/course/management.php', array('categoryid'=>$course->category)));
+
$courseshortname = format_string($course->shortname, true, array('context' => $coursecontext));
$coursefullname = format_string($course->fullname, true, array('context' => $coursecontext));
$categoryurl = new moodle_url('/course/management.php', array('categoryid' => $course->category));
-navigation_node::override_active_url(new moodle_url('/course/management.php'));
-
// Check if we've got confirmation.
if ($delete === md5($course->timemodified)) {
// We do - time to delete the course.
* Create the coursemodule to hold the file/content that has been uploaded
*/
protected function create_course_module() {
+ global $CFG;
+
if (!course_allowed_module($this->course, $this->module->name)) {
throw new coding_exception("The module {$this->module->name} is not allowed to be added to this course");
}
// Set the correct default for completion tracking.
$this->cm->completion = COMPLETION_TRACKING_NONE;
$completion = new completion_info($this->course);
- if ($completion->is_enabled()) {
+ if ($completion->is_enabled() && $CFG->completiondefault) {
if (plugin_supports('mod', $this->cm->modulename, FEATURE_MODEDIT_DEFAULT_COMPLETION, true)) {
$this->cm->completion = COMPLETION_TRACKING_MANUAL;
}
if (!$this->cm->id = add_course_module($this->cm)) {
throw new coding_exception("Unable to create the course module");
}
- // The following are used inside some few core functions, so may as well set them here.
$this->cm->coursemodule = $this->cm->id;
- $groupbuttons = ($this->course->groupmode or (!$this->course->groupmodeforce));
- if ($groupbuttons and plugin_supports('mod', $this->module->name, FEATURE_GROUPS, 0)) {
- $this->cm->groupmodelink = (!$this->course->groupmodeforce);
- } else {
- $this->cm->groupmodelink = false;
- $this->cm->groupmode = false;
- }
}
/**
throw new moodle_exception('errorcreatingactivity', 'moodle', '', $this->module->name);
}
$mod = $info->get_cm($this->cm->id);
- $mod->groupmodelink = $this->cm->groupmodelink;
- $mod->groupmode = $this->cm->groupmode;
// Trigger course module created event.
$event = \core\event\course_module_created::create(array(
$itemid = 0; // Initialise itemid, as all files in category description has item id 0.
$title = $strtitle;
$fullname = $coursecat->get_formatted_name();
+
} else {
$parent = required_param('parent', PARAM_INT);
$url->param('parent', $parent);
} else {
$context = context_system::instance();
}
+ navigation_node::override_active_url(new moodle_url('/course/editcategory.php', array('parent' => $parent)));
$category = new stdClass();
$category->id = 0;
require_capability('moodle/category:manage', $context);
-// Page "Add new category" (with "Top" as a parent) does not exist in navigation.
-// We pretend we are on course management page.
-if ($id !== 0) {
- navigation_node::override_active_url(new moodle_url('/course/management.php'));
-}
-
$PAGE->set_context($context);
$PAGE->set_url($url);
$PAGE->set_pagelayout('admin');
$o.= html_writer::tag('div', '', array('class' => 'left side'));
$o.= html_writer::tag('div', '', array('class' => 'right side'));
$o.= html_writer::start_tag('div', array('class' => 'content'));
- $o.= $this->output->heading(get_string('orphanedactivities'), 3, 'sectionname');
+ $o.= $this->output->heading(get_string('orphanedactivitiesinsectionno', '', $sectionno), 3, 'sectionname');
return $o;
}
}
$url = new moodle_url('/course/management.php');
-navigation_node::override_active_url($url);
$systemcontext = $context = context_system::instance();
if ($courseid) {
$record = get_course($courseid);
$category = coursecat::get($course->category);
$categoryid = $category->id;
$context = context_coursecat::instance($category->id);
+ $url->param('categoryid', $categoryid);
+ navigation_node::override_active_url($url);
$url->param('courseid', $course->id);
+
} else if ($categoryid) {
$courseid = null;
$course = null;
$category = coursecat::get($categoryid);
$context = context_coursecat::instance($category->id);
$url->param('categoryid', $category->id);
+ navigation_node::override_active_url($url);
+
} else {
$course = null;
$courseid = null;
$viewmode = 'categories';
}
$context = $systemcontext;
+ navigation_node::override_active_url($url);
}
if ($page !== 0) {
$url->param('update', $update);
$PAGE->set_url($url);
+ // Select the "Edit settings" from navigation.
+ navigation_node::override_active_url(new moodle_url('/course/modedit.php', array('update'=>$update, 'return'=>1)));
+
// Check the course module exists.
$cm = get_coursemodule_from_id('', $update, 0, false, MUST_EXIST);
}
$PAGE->set_url('/course/reset.php', array('id'=>$id));
+$PAGE->set_pagelayout('admin');
require_login($course);
require_capability('moodle/course:reset', context_course::instance($course->id));
* @return Given[]
*/
public function i_go_to_the_courses_management_page() {
-
- return array(
- new Given('I am on homepage'),
- new Given('I expand "' . get_string('administrationsite') . '" node'),
- new Given('I expand "' . get_string('courses', 'admin') . '" node'),
- new Given('I follow "' . get_string('coursemgmt', 'admin') . '"'),
- );
+ if ($this->running_javascript()) {
+ $scenario = array(new Given('I expand "' . get_string('administrationsite') . '" node'));
+ } else {
+ $scenario = array(new Given('I follow "' . get_string('administrationsite') . '"'));
+ }
+ $scenario[] = new Given('I expand "' . get_string('courses', 'admin') . '" node');
+ $scenario[] = new Given('I follow "' . get_string('coursemgmt', 'admin') . '"');
+ return $scenario;
}
/**
}
}
+ /**
+ * Go to editing section page for specified section number. You need to be in the course page and on editing mode.
+ *
+ * @Given /^I edit the section "(?P<section_number>\d+)"$/
+ * @param int $sectionnumber
+ */
+ public function i_edit_the_section($sectionnumber) {
+ return new Given('I click on "' . get_string('editsummary') . '" "link" in the "#section-' . $sectionnumber . '" "css_element"');
+ }
+
+ /**
+ * Edit specified section and fill the form data with the specified field/value pairs.
+ *
+ * @When /^I edit the section "(?P<section_number>\d+)" and I fill the form with:$/
+ * @param int $sectionnumber The section number
+ * @param TableNode $data The activity field/value data
+ * @return Given[]
+ */
+ public function i_edit_the_section_and_i_fill_the_form_with($sectionnumber, TableNode $data) {
+
+ return array(
+ new Given('I edit the section "' . $sectionnumber . '"'),
+ new Given('I fill the moodle form with:', $data),
+ new Given('I press "' . get_string('savechanges') . '"')
+ );
+ }
+
/**
* Checks if the specified course section hightlighting is turned on. You need to be in the course page on editing mode.
*
$this->assertEquals($coursecontext->id, $event->contextid);
$this->assertEquals($course, $event->get_record_snapshot('course', $course->id));
$this->assertEquals('course_deleted', $event->get_legacy_eventname());
+ $eventdata = $event->get_data();
+ $this->assertSame($course->idnumber, $eventdata['other']['idnumber']);
+ $this->assertSame($course->fullname, $eventdata['other']['fullname']);
+ $this->assertSame($course->shortname, $eventdata['other']['shortname']);
// The legacy data also passed the context in the course object.
$course->context = $coursecontext;
$this->assertEventLegacyData($course, $event);
$PAGE->set_url('/course/user.php', array('id'=>$id, 'user'=>$user->id, 'mode'=>$mode));
require_login();
-$PAGE->set_pagelayout('admin');
+$PAGE->set_pagelayout('report');
if (has_capability('moodle/user:viewuseractivitiesreport', $personalcontext) and !is_enrolled($coursecontext)) {
// do not require parents to be enrolled in courses ;-)
$PAGE->set_course($course);
require('../config.php');
-$contextid = optional_param('contextid', SYSCONTEXTID, PARAM_INT);
+$contextid = optional_param('contextid', 0, PARAM_INT);
$filepath = optional_param('filepath', '', PARAM_PATH);
$filename = optional_param('filename', '', PARAM_FILE);
// hard-coded to course legacy area
$filearea = 'legacy';
$itemid = 0;
+if (empty($contextid)) {
+ $contextid = context_course::instance(SITEID)->id;
+}
+
$PAGE->set_url('/files/index.php', array('contextid'=>$contextid, 'filepath'=>$filepath, 'filename'=>$filename));
+navigation_node::override_active_url(new moodle_url('/files/index.php', array('contextid'=>$contextid)));
if ($filepath === '') {
$filepath = null;
<div class="fp-navbar">
<div class="filemanager-toolbar">
<div class="fp-toolbar">
- <div class="{!}fp-btn-add"><a role="button" href="#"><img src="'.$this->pix_url('a/add_file').'" /> '.$straddfile.'</a></div>
- <div class="{!}fp-btn-mkdir"><a role="button" href="#"><img src="'.$this->pix_url('a/create_folder').'" /> '.$strmakedir.'</a></div>
- <div class="{!}fp-btn-download"><a role="button" href="#"><img src="'.$this->pix_url('a/download_all').'" /> '.$strdownload.'</a></div>
+ <div class="{!}fp-btn-add"><a role="button" href="#"><img src="'.$this->pix_url('a/add_file').'" alt="'.$straddfile.'" /></a></div>
+ <div class="{!}fp-btn-mkdir"><a role="button" href="#"><img src="'.$this->pix_url('a/create_folder').'" alt="'.$strmakedir.'" /></a></div>
+ <div class="{!}fp-btn-download"><a role="button" href="#"><img src="'.$this->pix_url('a/download_all').'" alt="'.$strdownload.'" /></a></div>
</div>
<div class="{!}fp-viewbar">
- <a title="'. get_string('displayicons', 'repository') .'" class="{!}fp-vb-icons" href="#"></a>
- <a title="'. get_string('displaydetails', 'repository') .'" class="{!}fp-vb-details" href="#"></a>
- <a title="'. get_string('displaytree', 'repository') .'" class="{!}fp-vb-tree" href="#"></a>
+ <a title="'. get_string('displayicons', 'repository') .'" class="{!}fp-vb-icons" href="#"><img alt="" src="'. $this->pix_url('fp/view_icon_active', 'theme') .'" /></a>
+ <a title="'. get_string('displaydetails', 'repository') .'" class="{!}fp-vb-details" href="#"><img alt="" src="'. $this->pix_url('fp/view_list_active', 'theme') .'" /></a>
+ <a title="'. get_string('displaytree', 'repository') .'" class="{!}fp-vb-tree" href="#"><img alt="" src="'. $this->pix_url('fp/view_tree_active', 'theme') .'" /></a>
</div>
</div>
<div class="fp-pathbar">
<div class="{!}fp-tb-back"><a href="#">'.get_string('back', 'repository').'</a></div>
<div class="{!}fp-tb-search"><form></form></div>
<div class="{!}fp-tb-refresh"><a href="#"><img alt="'. get_string('refresh', 'repository') .'" src="'.$this->pix_url('a/refresh').'" /></a></div>
- <div class="{!}fp-tb-logout"><img alt="'. get_string('logout', 'repository') .'" src="'.$this->pix_url('a/logout').'" /><a href="#"></a></div>
- <div class="{!}fp-tb-manage"><a href="#"><img alt="'. get_string('settings', 'repository') .'" src="'.$this->pix_url('a/setting').'" /> '.get_string('manageurl', 'repository').'</a></div>
- <div class="{!}fp-tb-help"><a href="#"><img alt="'. get_string('help', 'repository') .'" src="'.$this->pix_url('a/help').'" /> '.get_string('help').'</a></div>
+ <div class="{!}fp-tb-logout"><a href="#"><img alt="'. get_string('logout', 'repository') .'" src="'.$this->pix_url('a/logout').'" /></a></div>
+ <div class="{!}fp-tb-manage"><a href="#"><img alt="'. get_string('settings', 'repository') .'" src="'.$this->pix_url('a/setting').'" /></a></div>
+ <div class="{!}fp-tb-help"><a href="#"><img alt="'. get_string('help', 'repository') .'" src="'.$this->pix_url('a/help').'" /></a></div>
<div class="{!}fp-tb-message"></div>
</div>
<div class="{!}fp-viewbar">
- <a title="'. get_string('displayicons', 'repository') .'" class="{!}fp-vb-icons" href="#"></a>
- <a title="'. get_string('displaydetails', 'repository') .'" class="{!}fp-vb-details" href="#"></a>
- <a title="'. get_string('displaytree', 'repository') .'" class="{!}fp-vb-tree" href="#"></a>
+ <a title="'. get_string('displayicons', 'repository') .'" class="{!}fp-vb-icons" href="#"><img alt="" src="'. $this->pix_url('fp/view_icon_active', 'theme') .'" /></a>
+ <a title="'. get_string('displaydetails', 'repository') .'" class="{!}fp-vb-details" href="#"><img alt="" src="'. $this->pix_url('fp/view_list_active', 'theme') .'" /></a>
+ <a title="'. get_string('displaytree', 'repository') .'" class="{!}fp-vb-tree" href="#"><img alt="" src="'. $this->pix_url('fp/view_tree_active', 'theme') .'" /></a>
</div>
<div class="fp-clear-left"></div>
</div>
Then I should see "Legacy course files"
And I follow "Legacy course files"
And I press "Edit legacy course files"
- And I should see "Add..."
- And I should see "Create folder"
+ And "Add..." "link" should be visible
+ And "Create folder" "link" should be visible
@javascript
Scenario: Add legacy file disabled
Then I should see "Legacy course files"
And I follow "Legacy course files"
And I press "Edit legacy course files"
- And I should not see "Add..."
- And I should not see "Create folder"
+ And "Add..." "link" should not be visible
+ And "Create folder" "link" should not be visible
$contextname = $context->get_context_name();
if ($context->contextlevel == CONTEXT_COURSECAT) {
- $heading = "$SITE->fullname: ".get_string("categories");
+ $heading = $SITE->fullname;
} else if ($context->contextlevel == CONTEXT_COURSE) {
$heading = $course->fullname;
} else if ($context->contextlevel == CONTEXT_MODULE) {
}
$straction = get_string('filters', 'admin'); // Used by tabs.php
-/// Print the header and tabs
-if ($isfrontpage) {
- admin_externalpage_setup('frontpagefilters');
- echo $OUTPUT->header();
-} else {
- $PAGE->set_cacheable(false);
- $PAGE->set_title($title);
- $PAGE->set_pagelayout('admin');
- echo $OUTPUT->header();
-}
+// Print the header and tabs.
+$PAGE->set_cacheable(false);
+$PAGE->set_title($title);
+$PAGE->set_pagelayout('admin');
+echo $OUTPUT->header();
/// Print heading.
echo $OUTPUT->heading_with_help($title, 'filtersettings', 'filters');
$string['title'] = 'Title';
$string['totalcategorysearchresults'] = 'Total categories: {$a}';
$string['totalcoursesearchresults'] = 'Total courses: {$a}';
+$string['unnamedsection'] = 'Unnamed section';
$string['userinfo'] = 'Userinfo';
$string['module'] = 'Module';
$string['morecoursesearchresults'] = 'More than {$a} courses found, showing first {$a} results';
$string['options'] = 'options';
$string['order'] = 'Order';
$string['originalpath'] = 'Original path';
-$string['orphanedactivities'] = 'Orphaned activities';
+$string['orphanedactivitiesinsectionno'] = 'Orphaned activities (section {$a})';
$string['other'] = 'Other';
$string['outline'] = 'Outline';
$string['outlinereport'] = 'Outline report';
'objectid' => $roleid,
'other' =>
array(
- 'name' => $role->name,
'shortname' => $role->shortname,
'description' => $role->description,
'archetype' => $role->archetype
die;
}
+ navigation_node::require_admin_tree();
+
// $PAGE->set_extra_button($extrabutton); TODO
if (!$actualurl) {
--- /dev/null
+<?php
+
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * This file is used to deliver a branch from the site administration
+ * in XML format back to a page from an AJAX call
+ *
+ * @since 2.6
+ * @package core
+ * @copyright 2013 Rajesh Taneja <rajesh@moodle.com>
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+define('AJAX_SCRIPT', true);
+require_once(dirname(__FILE__) . '/../../config.php');
+
+// This should be accessed by only valid logged in user.
+if (!isloggedin() or isguestuser()) {
+ die('Invalid access.');
+}
+
+// This identifies the type of the branch we want to get. Make sure it's SITE_ADMIN.
+$branchtype = required_param('type', PARAM_INT);
+if ($branchtype !== navigation_node::TYPE_SITE_ADMIN) {
+ die('Wrong node type passed.');
+}
+
+$PAGE->set_context(context_system::instance());
+$PAGE->set_url('/lib/ajax/getsiteadminbranch.php', array('type'=>$branchtype));
+
+$sitenavigation = new settings_navigation_ajax($PAGE);
+
+// Set XML headers.
+header('Content-type: text/plain; charset=utf-8');
+// Convert and output the branch as XML.
+$converter = new navigation_json();
+$branch = $sitenavigation->get('root');
+echo $converter->convert($branch);
* @return \moodle_url
*/
public function get_url() {
- return new moodle_url('/report/completion/index.php', array('course' => $this->courseid));
+ return new \moodle_url('/report/completion/index.php', array('course' => $this->courseid));
}
/**
* @return \moodle_url
*/
public function get_url() {
- return new moodle_url('/course/completion.php', array('id' => $this->courseid));
+ return new \moodle_url('/course/completion.php', array('id' => $this->courseid));
}
/**
protected function get_legacy_eventdata() {
$course = $this->get_record_snapshot('course', $this->objectid);
$course->context = $this->context;
-
+ $course->timemodified = $this->data['timecreated'];
return $course;
}
* @return \moodle_url
*/
public function get_url() {
- return new moodle_url('/report/completion/index.php', array('course' => $this->courseid));
+ return new \moodle_url('/report/completion/index.php', array('course' => $this->courseid));
}
/**
* @return \moodle_url
*/
public function get_url() {
- return new moodle_url('/admin/roles/assign.php', array('contextid' => $this->contextid, 'roleid' => $this->objectid));
+ return new \moodle_url('/admin/roles/assign.php', array('contextid' => $this->contextid, 'roleid' => $this->objectid));
}
/**
* @return \moodle_url
*/
public function get_url() {
- return new moodle_url('/admin/roles/assign.php', array('contextid' => $this->contextid, 'roleid' => $this->objectid));
+ return new \moodle_url('/admin/roles/assign.php', array('contextid' => $this->contextid, 'roleid' => $this->objectid));
}
/**
* @return string
*/
public function get_description() {
- $user = (object)$this->other['user'];
+ $user = $this->get_record_snapshot('user', $this->data['objectid']);
return 'User profile deleted for user '.$user->firstname.' '.$user->lastname.' id ('.$user->id.')';
}
* @return \stdClass user data.
*/
protected function get_legacy_eventdata() {
- return (object)$this->other['user'];
+ $user = $this->get_record_snapshot('user', $this->data['objectid']);
+ $user->deleted = 0;
+ $user->username = $this->data['other']['username'];
+ $user->email = $this->data['other']['email'];
+ $user->idnumber = $this->data['other']['idnumber'];
+ $user->picture = $this->data['other']['picture'];
+ return $user;
}
/**
* @return array
*/
protected function get_legacy_logdata() {
- $user = (object)$this->other['user'];
- return array(SITEID, 'user', 'delete', "view.php?id=$user->id", $user->firstname.' '.$user->lastname);
+ $user = $this->get_record_snapshot('user', $this->data['objectid']);
+ return array(SITEID, 'user', 'delete', "view.php?id=".$user->id, $user->firstname.' '.$user->lastname);
}
/**
* @return void
*/
protected function validate_data() {
- parent::validate_data();
- if (!isset($this->other['user'])) {
- throw new \coding_exception('user must be set in $other.');
+ global $CFG;
+
+ if ($CFG->debugdeveloper) {
+ parent::validate_data();
+ if (!isset($this->other['username'])) {
+ throw new \coding_exception('username must be set in $other.');
+ }
+
+ if (!isset($this->other['email'])) {
+ throw new \coding_exception('email must be set in $other.');
+ }
+
+ if (!isset($this->other['idnumber'])) {
+ throw new \coding_exception('idnumber must be set in $other.');
+ }
+
+ if (!isset($this->other['picture'])) {
+ throw new \coding_exception('picture must be set in $other.');
+ }
+
+ if (!isset($this->other['mnethostid'])) {
+ throw new \coding_exception('mnethostid must be set in $other.');
+ }
}
}
}
protected function init() {
$this->data['objecttable'] = 'user_enrolments';
$this->data['crud'] = 'c';
- $this->data['level'] = self::LEVEL_TEACHING;
+ $this->data['level'] = self::LEVEL_OTHER;
}
/**
protected function init() {
$this->data['objecttable'] = 'user_enrolments';
$this->data['crud'] = 'd';
- $this->data['level'] = self::LEVEL_TEACHING;
+ $this->data['level'] = self::LEVEL_OTHER;
}
/**
protected function init() {
$this->data['objecttable'] = 'user_enrolments';
$this->data['crud'] = 'u';
- $this->data['level'] = self::LEVEL_TEACHING;
+ $this->data['level'] = self::LEVEL_OTHER;
}
/**
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
abstract class handler {
+ /**
+ * Start the session.
+ * @return bool success
+ */
+ public function start() {
+ return session_start();
+ }
+
/**
* Init session handler.
*/
self::prepare_cookies();
$newsid = empty($_COOKIE[session_name()]);
- session_start();
+ self::$handler->start();
self::initialise_user_session($newsid);
self::check_security();
protected $servers;
/** @var string $prefix session key prefix */
protected $prefix;
+ /** @var int $acquiretimeout how long to wait for session lock */
+ protected $acquiretimeout = 120;
+ /**
+ * @var int $lockexpire how long to wait before expiring the lock so that other requests
+ * may continue execution, ignored if memcached <= 2.1.0.
+ */
+ protected $lockexpire = 7200;
/**
* Create new instance of handler.
} else {
$this->prefix = $CFG->session_memcached_prefix;
}
+
+ if (!empty($CFG->session_memcached_acquire_lock_timeout)) {
+ $this->acquiretimeout = (int)$CFG->session_memcached_acquire_lock_timeout;
+ }
+
+ if (!empty($CFG->session_memcached_lock_expire)) {
+ $this->lockexpire = (int)$CFG->session_memcached_lock_expire;
+ }
+ }
+
+ /**
+ * Start the session.
+ * @return bool success
+ */
+ public function start() {
+ // NOTE: memcached <= 2.1.0 expires session locks automatically after max_execution_time,
+ // this leads to major difference compared to other session drivers that timeout
+ // and stop the second request execution instead.
+
+ $default = ini_get('max_execution_time');
+ set_time_limit($this->acquiretimeout);
+
+ $result = parent::start();
+
+ set_time_limit($default);
+ return $result;
}
/**
throw new exception('sessionhandlerproblem', 'error', '', null, '$CFG->session_memcached_save_path must be specified in config.php');
}
- // NOTE: we cannot set any lock acquiring timeout here - bad luck.
ini_set('session.save_handler', 'memcached');
ini_set('session.save_path', $this->savepath);
ini_set('memcached.sess_prefix', $this->prefix);
ini_set('memcached.sess_locking', '1'); // Locking is required!
+
+ // Try to configure lock and expire timeouts - ignored if memcached <=2.1.0.
+ ini_set('memcached.sess_lock_max_wait', $this->acquiretimeout);
+ ini_set('memcached.sess_lock_expire', $this->lockexpire);
}
/**
}
/**
- * Checks the user agent is IE and that the version is equal to or greater than that specified.
+ * Checks the user agent is IE and returns its main properties:
+ * - browser version;
+ * - whether running in compatibility view.
*
- * @param string|int $version A version to check for, returns true if its equal to or greater than that specified.
- * @return bool
+ * @return bool|array False if not IE, otherwise an associative array of properties.
*/
- public static function check_ie_version($version = null) {
+ public static function check_ie_properties() {
// Internet Explorer.
$useragent = self::get_user_agent_string();
if ($useragent === false) {
// Reject Opera.
return false;
}
- // In case of IE we have to deal with BC of the version parameter.
- if (is_null($version)) {
- $version = 5.5; // Anything older is not considered a browser at all!
- }
- // IE uses simple versions, let's cast it to float to simplify the logic here.
- $version = round($version, 1);
// See: http://www.useragentstring.com/pages/Internet%20Explorer/.
if (preg_match("/MSIE ([0-9\.]+)/", $useragent, $match)) {
$browser = $match[1];
+ // See: http://msdn.microsoft.com/en-us/library/ie/bg182625%28v=vs.85%29.aspx for IE11+ useragent details.
+ } else if (preg_match("/Trident\/[0-9\.]+/", $useragent) && preg_match("/rv:([0-9\.]+)/", $useragent, $match)) {
+ $browser = $match[1];
} else {
return false;
}
+ $compat_view = false;
// IE8 and later versions may pretend to be IE7 for intranet sites, use Trident version instead,
// the Trident should always describe the capabilities of IE in any emulation mode.
if ($browser === '7.0' and preg_match("/Trident\/([0-9\.]+)/", $useragent, $match)) {
+ $compat_view = true;
$browser = $match[1] + 4; // NOTE: Hopefully this will work also for future IE versions.
}
$browser = round($browser, 1);
- return ($browser >= $version);
+ return array(
+ 'version' => $browser,
+ 'compatview' => $compat_view
+ );
+ }
+
+ /**
+ * Checks the user agent is IE and that the version is equal to or greater than that specified.
+ *
+ * @param string|int $version A version to check for, returns true if its equal to or greater than that specified.
+ * @return bool
+ */
+ public static function check_ie_version($version = null) {
+ // Internet Explorer.
+ $properties = self::check_ie_properties();
+ if (!is_array($properties)) {
+ return false;
+ }
+ // In case of IE we have to deal with BC of the version parameter.
+ if (is_null($version)) {
+ $version = 5.5; // Anything older is not considered a browser at all!
+ }
+ // IE uses simple versions, let's cast it to float to simplify the logic here.
+ $version = round($version, 1);
+ return ($properties['version'] >= $version);
+ }
+
+ /**
+ * Checks the user agent is IE and that IE is running under Compatibility View setting.
+ *
+ * @return bool true if internet explorer runs in Compatibility View mode.
+ */
+ public static function check_ie_compatibility_view() {
+ // IE User Agent string when in Compatibility View:
+ // - IE 8: "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; ...)".
+ // - IE 9: "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; ...)".
+ // - IE 10: "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/6.0; ...)".
+ // - IE 11: "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.3; Trident/7.0; ...)".
+ // Refs:
+ // - http://blogs.msdn.com/b/ie/archive/2009/01/09/the-internet-explorer-8-user-agent-string-updated-edition.aspx.
+ // - http://blogs.msdn.com/b/ie/archive/2010/03/23/introducing-ie9-s-user-agent-string.aspx.
+ // - http://blogs.msdn.com/b/ie/archive/2011/04/15/the-ie10-user-agent-string.aspx.
+ // - http://msdn.microsoft.com/en-us/library/ie/hh869301%28v=vs.85%29.aspx.
+ $properties = self::check_ie_properties();
+ if (!is_array($properties)) {
+ return false;
+ }
+ return $properties['compatview'];
}
/**
}
return $instance->supportssvg;
}
+
+ /**
+ * Returns true if the user agent supports the MIME media type for JSON text, as defined in RFC 4627.
+ *
+ * @return bool
+ */
+ public static function supports_json_contenttype() {
+ // Modern browsers other than IE correctly supports 'application/json' media type.
+ if (!self::is_ie()) {
+ return true;
+ }
+
+ // IE8+ supports 'application/json' media type, when NOT in Compatibility View mode.
+ // Refs:
+ // - http://blogs.msdn.com/b/ie/archive/2008/09/10/native-json-in-ie8.aspx;
+ // - MDL-39810: issues when using 'text/plain' in Compatibility View for the body of an HTTP POST response.
+ if (self::check_ie_version(8) && !self::check_ie_compatibility_view()) {
+ return true;
+ }
+
+ // This browser does not support json.
+ return false;
+ }
}
* (it is just abusing cron to do very time consuming things which is wrong any way)
*
* TODO: this has to be moved into separate queueing framework....
+ * TODO: MDL-25508, MDL-41541
*/
'portfolio_send' => array (
- 'handlerfile' => '/lib/portfolio.php',
+ 'handlerfile' => '/lib/portfoliolib.php',
'handlerfunction' => 'portfolio_handle_event', // argument to call_user_func(), could be an array
'schedule' => 'cron',
'internal' => 0,
upgrade_main_savepoint(true, 2013102201.00);
}
+ if ($oldversion < 2013102500.01) {
+ // Find all fileareas that have missing root folder entry and add the root folder entry.
+ if (empty($CFG->filesrootrecordsfixed)) {
+ $sql = "SELECT distinct f1.contextid, f1.component, f1.filearea, f1.itemid
+ FROM {files} f1 left JOIN {files} f2
+ ON f1.contextid = f2.contextid
+ AND f1.component = f2.component
+ AND f1.filearea = f2.filearea
+ AND f1.itemid = f2.itemid
+ AND f2.filename = '.'
+ AND f2.filepath = '/'
+ WHERE (f1.component <> 'user' or f1.filearea <> 'draft')
+ and f2.id is null";
+ $rs = $DB->get_recordset_sql($sql);
+ $defaults = array('filepath' => '/',
+ 'filename' => '.',
+ 'userid' => $USER->id,
+ 'filesize' => 0,
+ 'timecreated' => time(),
+ 'timemodified' => time(),
+ 'contenthash' => sha1(''));
+ foreach ($rs as $r) {
+ $pathhash = sha1("/$r->contextid/$r->component/$r->filearea/$r->itemid".'/.');
+ $DB->insert_record('files', (array)$r + $defaults +
+ array('pathnamehash' => $pathhash));
+ }
+ $rs->close();
+ // To skip running the same script on the upgrade to the next major release.
+ set_config('filesrootrecordsfixed', 1);
+ }
+
+ // Main savepoint reached.
+ upgrade_main_savepoint(true, 2013102500.01);
+ }
+
return true;
}
$this->database_manager = null;
}
$this->tables = null;
- $this->metacache = null;
}
/**
*/
public function reset_caches() {
$this->tables = null;
- $this->metacache = null;
// Purge MUC as well
$identifiers = array('dbfamily' => $this->get_dbfamily(), 'settings' => $this->get_settings_hash());
cache_helper::purge_by_definition('core', 'databasemeta', $identifiers);
}
- /**
- * Call before using $this->metacache.
- *
- * Note: this is necessary because we want to write to database in shutdown handler
- * and it needs to use the caches, but MUC would be already disposed.
- */
- protected function init_caches() {
- if ($this->metacache) {
- return;
- }
- $properties = array('dbfamily' => $this->get_dbfamily(), 'settings' => $this->get_settings_hash());
- $this->metacache = cache::make('core', 'databasemeta', $properties);
- }
-
/**
* Returns the sql generator used for db manipulation.
* Used mostly in upgrade.php scripts.
public function get_columns($table, $usecache=true) {
if ($usecache) {
- $this->init_caches();
- if ($data = $this->metacache->get($table)) {
+ $properties = array('dbfamily' => $this->get_dbfamily(), 'settings' => $this->get_settings_hash());
+ $cache = cache::make('core', 'databasemeta', $properties);
+ if ($data = $cache->get($table)) {
return $data;
}
}
$this->free_result($result);
if ($usecache) {
- $result = $this->metacache->set($table, $structure);
+ $cache->set($table, $structure);
}
return $structure;
public function get_columns($table, $usecache=true) {
if ($usecache) {
- $this->init_caches();
- if ($data = $this->metacache->get($table)) {
+ $properties = array('dbfamily' => $this->get_dbfamily(), 'settings' => $this->get_settings_hash());
+ $cache = cache::make('core', 'databasemeta', $properties);
+ if ($data = $cache->get($table)) {
return $data;
}
}
}
if ($usecache) {
- $result = $this->metacache->set($table, $structure);
+ $cache->set($table, $structure);
}
return $structure;
public function get_columns($table, $usecache=true) {
if ($usecache) {
- $this->init_caches();
- if ($data = $this->metacache->get($table)) {
+ $properties = array('dbfamily' => $this->get_dbfamily(), 'settings' => $this->get_settings_hash());
+ $cache = cache::make('core', 'databasemeta', $properties);
+ if ($data = $cache->get($table)) {
return $data;
}
}
}
if ($usecache) {
- $result = $this->metacache->set($table, $structure);
+ $cache->set($table, $structure);
}
return $structure;
*/
public function get_columns($table, $usecache=true) {
if ($usecache) {
- $this->init_caches();
- if ($data = $this->metacache->get($table)) {
+ $properties = array('dbfamily' => $this->get_dbfamily(), 'settings' => $this->get_settings_hash());
+ $cache = cache::make('core', 'databasemeta', $properties);
+ if ($data = $cache->get($table)) {
return $data;
}
}
pg_free_result($result);
if ($usecache) {
- $result = $this->metacache->set($table, $structure);
+ $cache->set($table, $structure);
}
return $structure;
public function get_columns($table, $usecache=true) {
if ($usecache) {
- $this->init_caches();
- if ($data = $this->metacache->get($table)) {
+ $properties = array('dbfamily' => $this->get_dbfamily(), 'settings' => $this->get_settings_hash());
+ $cache = cache::make('core', 'databasemeta', $properties);
+ if ($data = $cache->get($table)) {
return $data;
}
}
}
if ($usecache) {
- $result = $this->metacache->set($table, $structure);
+ $cache->set($table, $structure);
}
return $structure;
*/
public function get_columns($table, $usecache = true) {
if ($usecache) {
- $this->init_caches();
- if ($data = $this->metacache->get($table)) {
+ $properties = array('dbfamily' => $this->get_dbfamily(), 'settings' => $this->get_settings_hash());
+ $cache = cache::make('core', 'databasemeta', $properties);
+ if ($data = $cache->get($table)) {
return $data;
}
}
$this->free_result($result);
if ($usecache) {
- $result = $this->metacache->set($table, $structure);
+ $cache->set($table, $structure);
}
return $structure;
upgrade_plugin_savepoint(true, 2013070500, 'editor', 'tinymce');
}
+ if ($oldversion < 2013102900) {
+ // Reset redesigned editor toolbar setting.
+ $currentorder = get_config('editor_tinymce', 'customtoolbar');
+ // Start with a wrap.
+ $neworder = "wrap,". $currentorder;
+ // Replace all separators with wraps to allow for proper display of groups.
+ $neworder = preg_replace('/\|\|*/', "wrap", $neworder);
+ // Insert a wrap between the format selector and the bold button.
+ $neworder = str_replace("formatselect,bold", "formatselect,wrap,bold", $neworder);
+ set_config('customtoolbar', $neworder, 'editor_tinymce');
+ upgrade_plugin_savepoint(true, 2013102900, 'editor', 'tinymce');
+ }
+
return true;
}
$string['customconfig'] = 'Custom configuration';
$string['customconfig_desc'] = 'Custom advanced TinyMCE configuration in JSON format, for example: {"option1" : "value2", "option2" : "value2"}. Any options specified here override standard and plugin settings.';
$string['customtoolbar'] = 'Editor toolbar';
-$string['customtoolbar_desc'] = 'Each line contains a list of comma separated button names, use "|" as a group separator, empty lines are ignored. See <a href="{$a}" target="_blank">{$a}</a> for the list of default TinyMCE buttons.<br />The first row will always be shown, where as the visibility of second and third toolbars can be toggled';
+$string['customtoolbar_desc'] = 'Each line contains a list of comma separated button names, use "wrap" as a group separator, empty lines are ignored. See <a href="{$a}" target="_blank">{$a}</a> for the list of default TinyMCE buttons.<br />The first row will always be shown, where as the visibility of second and third toolbars can be toggled.';
$string['fontselectlist'] = 'Available fonts list';
$string['pluginname'] = 'TinyMCE HTML editor';
$string['settings'] = 'General settings';
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In -->\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [\r
+ <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">\r
+]>\r
+<svg version="1.1"\r
+ xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"\r
+ x="0px" y="0px" width="16px" height="16px" viewBox="0 0 16 16" style="overflow:visible;enable-background:new 0 0 16 16;"\r
+ xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
+<defs>\r
+</defs>\r
+<path style="fill:#999999;" d="M0,0v16h16V0H0z M3,15H1v-2h2V15z M3,11H1V9h2V11z M3,7H1V5h2V7z M3,3H1V1h2V3z M12,15H4V1h8V15z\r
+ M15,15h-2v-2h2V15z M15,11h-2V9h2V11z M15,7h-2V5h2V7z M15,3h-2V1h2V3z M10,8l-4,3V5L10,8z"/>\r
+</svg>\r
$rowsnumber = $this->count_button_rows($params);
if ($rowsnumber > 1) {
- // Add button before 'undo' in advancedbuttons1.
- $this->add_button_before($params, 1, '|', '');
$this->add_button_before($params, 1, 'pdw_toggle', '');
$params['pdw_toggle_on'] = 1;
$params['pdw_toggle_toolbars'] = join(',', range(2, $rowsnumber));
5/ reimplement patch in MDL-40668
6/ add in "DOM.setStyle(ifr, 'width',DOM.getSize(ifrcon).w); // Resize iframe" (without quotes)
after "DOM.setStyle(ifr, 'height',DOM.getSize(ifr).h + dy); // Resize iframe"
+7/ reimplement patch in MDL-42481
\r
// For very small text areas - allow the editable region to be smaller than the size of the toolbars.\r
if (rows >= 3) {\r
+ // This set of changes addresses MDL-42481.\r
+ // Moodle collapses form sections by setting display to none on the fcontainer element.\r
+ // In order to calculate the offsetWidth, the iframe must be visible within the DOM, otherwise it's offsetWidth is\r
+ // calculate as 0px.\r
+ // We attempt to find any collapsed element, uncollapse them, then calculate the width and height, and finally\r
+ // collapse them again.\r
+ var collapsedContainer = DOM.getParent(ifr, 'fieldset.collapsed');\r
+ if (collapsedContainer) {\r
+ DOM.removeClass(collapsedContainer, 'collapsed');\r
+ }\r
+\r
DOM.setStyle(ifr, 'height',DOM.getSize(ifr).h + dy); // Resize iframe\r
DOM.setStyle(ifr, 'width',DOM.getSize(ifrcon).w); // Resize iframe\r
ed.theme.deltaHeight += dy; // For resize cookie\r
+\r
+ if (collapsedContainer) {\r
+ // We have a collapsedContainer, so collapse it again.\r
+ DOM.addClass(collapsedContainer, 'collapsed');\r
+ }\r
}\r
+\r
},\r
\r
/**\r
defined('MOODLE_INTERNAL') || die();
// The current plugin version (Date: YYYYMMDDXX).
-$plugin->version = 2013070500;
+$plugin->version = 2013100700;
// Required Moodle version.
$plugin->requires = 2013050100;
// Full name of the plugin (used for diagnostics).
*/
Wrap : function(id, s) {
this.parent(id, s);
- this.groupEndClass = 'mceToolbarEnd';
- this.groupStartClass = 'mceToolbarStart';
+ this.groupEndClass = 'mceGroupEnd';
+ this.toolbarEndClass = 'mceLast';
+ this.groupEndPlaceholder = 'mceToolbarEndPlaceholder';
+ this.groupStartClass = 'mceGroupStart';
this.wrapClass = 'mceWrap';
this.setDisabled(true);
},
'aria-orientation' : 'vertical',
tabindex : '-1'});
return '</td>' +
- '<td style="position: relative" class="' + this.groupEndClass + '">' + separator + '</td>' +
+ '<td style="position: relative" class="' + this.groupEndPlaceholder + '">' + separator + '</td>' +
'<td style="position: relative" class="' + this.groupStartClass + ' ' + this.wrapClass + '">' + separator + '</td>';
- }
-
+ },
+ postRender : function() {
+ var self = this;
+ // Add a class to the item prior to the wrap.
+ YUI().use('node', function(Y) {
+ var endGroupElements = tinymce.DOM.select('td.' + self.groupEndPlaceholder),
+ index = 0, curElement, endOfLast;
+ endBarElements = tinymce.DOM.select('td.' + self.toolbarEndClass)
+ for (index = 0; index < endGroupElements.length; index++) {
+ if (!endGroupElements.hasOwnProperty(index)) {
+ continue;
+ }
+ curElement = Y.one(endGroupElements[index]);
+ endOfLast = curElement.previous('td').previous('td');
+ if (endOfLast) {
+ endOfLast.addClass(self.groupEndClass);
+ }
+ }
+ for (index = 0; index < endBarElements.length; index++) {
+ if (!endBarElements.hasOwnProperty(index)) {
+ continue;
+ }
+ curElement = Y.one(endBarElements[index]);
+ endOfLast = curElement.previous('td');
+ if (endOfLast) {
+ endOfLast.addClass(self.groupEndClass);
+ }
+ }
+ });
+ }
});
tinymce.create('tinymce.plugins.wrapPlugin', {
4/ update ./thirdpartylibs.xml
5/ execute cli/update_lang_files.php and review changes in lang/en/editor_tinymce.php
6/ use search/replace to fix oversized zIndexes
+7/ add moodle-has-zindex to the class definition in createColorSplitButton() in tiny_mce_src.js and tiny_mce.js
Changes:
require_once(__DIR__.'/adminlib.php');
$settings->add(new tiynce_subplugins_settings());
$settings->add(new admin_setting_heading('tinymcegeneralheader', new lang_string('settings'), ''));
- $default = "formatselect,bold,italic,wrap,bullist,numlist,|,link,unlink,|,image
+ $default = "wrap,formatselect,wrap,bold,italic,wrap,bullist,numlist,wrap,link,unlink,wrap,image
-undo,redo,|,underline,strikethrough,sub,sup,|,justifyleft,justifycenter,justifyright,wrap,outdent,indent,|,forecolor,backcolor,|,ltr,rtl,|,nonbreaking,charmap,table
+undo,redo,wrap,underline,strikethrough,sub,sup,wrap,justifyleft,justifycenter,justifyright,wrap,outdent,indent,wrap,forecolor,backcolor,wrap,ltr,rtl,wrap,nonbreaking,charmap,table
-fontselect,fontsizeselect,wrap,code,search,replace,|,cleanup,removeformat,pastetext,pasteword,|,fullscreen";
+fontselect,fontsizeselect,wrap,code,search,replace,wrap,cleanup,removeformat,pastetext,pasteword,wrap,fullscreen";
$settings->add(new admin_setting_configtextarea('editor_tinymce/customtoolbar',
get_string('customtoolbar', 'editor_tinymce'), get_string('customtoolbar_desc', 'editor_tinymce', 'http://www.tinymce.com/wiki.php/TinyMCE3x:Buttons/controls'), $default, PARAM_RAW, 100, 8));
$settings->add(new admin_setting_configtextarea('editor_tinymce/fontselectlist',
]>\r
<svg version="1.1"\r
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"\r
- x="0px" y="0px" width="16px" height="16px" viewBox="-0.3 -3.6 16 16"\r
- style="overflow:visible;enable-background:new -0.3 -3.6 16 16;" xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
+ x="0px" y="0px" width="16px" height="16px" viewBox="0 -3.9 16 16" style="overflow:visible;enable-background:new 0 -3.9 16 16;"\r
+ xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M0,8c0.3,0,0.5-0.2,0.7-0.4c0.1-0.2,0.3-0.5,0.5-1L3.8,0h0.3l2.7,6.3C7.2,7,7.4,7.5,7.5,7.7\r
- S7.9,8,8.2,8v0.3H4.3V8c0.4,0,0.6,0,0.8-0.1s0.2-0.2,0.2-0.4c0-0.1,0-0.2-0.1-0.4c0-0.1-0.1-0.2-0.2-0.4L4.7,5.9H2\r
- C1.8,6.4,1.7,6.7,1.6,6.8C1.5,7.2,1.5,7.4,1.5,7.5c0,0.2,0.1,0.3,0.3,0.4C2,7.9,2.2,8,2.4,8v0.3H0V8z M4.5,5.4L3.4,2.7H3.2L2.2,5.4\r
- H4.5z M9.8,0.2v3.1C10,3.1,10.1,3,10.3,2.9c0.3-0.2,0.6-0.2,0.9-0.2c0.7,0,1.2,0.3,1.6,0.8s0.6,1.2,0.6,1.9c0,1-0.3,1.8-0.8,2.3\r
- s-1.2,0.8-2,0.8c-0.3,0-0.6-0.1-0.8-0.2S9.4,8,9.2,7.8L8.3,8.4H8.1V1.1c0-0.3,0-0.4-0.1-0.5C7.9,0.5,7.7,0.5,7.5,0.5V0.2H9.8z\r
- M9.9,7.6c0.1,0.3,0.4,0.4,0.7,0.4c0.4,0,0.7-0.2,0.9-0.7c0.2-0.4,0.3-1,0.3-1.8c0-0.6-0.1-1.2-0.2-1.6s-0.4-0.7-0.9-0.7\r
- c-0.3,0-0.5,0.1-0.6,0.3C9.9,3.7,9.8,3.9,9.8,4v3.2C9.8,7.3,9.8,7.5,9.9,7.6z M14,6.7c0.2-0.2,0.4-0.3,0.7-0.3s0.5,0.1,0.7,0.3\r
- s0.3,0.4,0.3,0.7S15.6,8,15.4,8.1S15,8.4,14.7,8.4S14.2,8.3,14,8.1s-0.3-0.4-0.3-0.7S13.8,6.9,14,6.7z"/>\r
+<path style="fill:#999999;" d="M15,6.2c0.3,0,0.5,0.1,0.7,0.3S16,6.9,16,7.1s-0.1,0.5-0.3,0.7S15.3,8.1,15,8.1S14.5,8,14.3,7.8\r
+ S14,7.4,14,7.1s0.1-0.5,0.3-0.7S14.8,6.2,15,6.2z M10.3,0v3c0.5-0.5,1-0.7,1.5-0.7c0.4,0,0.7,0.1,1.1,0.3s0.6,0.5,0.8,0.9\r
+ s0.3,0.9,0.3,1.4c0,0.6-0.1,1.1-0.4,1.6s-0.6,0.9-1,1.1s-0.9,0.4-1.4,0.4c-0.3,0-0.6,0-0.8-0.1S10,7.7,9.8,7.5L8.8,8.1H8.7v-7\r
+ c0-0.3,0-0.5,0-0.6c0-0.1-0.1-0.2-0.2-0.2S8.2,0.2,8,0.2V0H10.3z M10.3,3.5V6c0,0.5,0,0.8,0,0.9c0,0.2,0.1,0.4,0.3,0.6\r
+ s0.3,0.2,0.6,0.2c0.2,0,0.4-0.1,0.5-0.2s0.3-0.3,0.4-0.7s0.1-0.9,0.1-1.8c0-0.8-0.1-1.4-0.3-1.7C11.7,3.1,11.5,3,11.2,3\r
+ C10.9,3,10.6,3.2,10.3,3.5z M4.9,5.8H2.1L1.8,6.6C1.6,6.9,1.6,7.1,1.6,7.3c0,0.2,0.1,0.4,0.3,0.5C2,7.8,2.2,7.9,2.6,7.9v0.2H0V7.9\r
+ c0.3,0,0.5-0.2,0.7-0.4s0.4-0.6,0.7-1.2L4.2,0h0.1l2.9,6.5c0.3,0.6,0.5,1,0.7,1.2C8,7.8,8.2,7.9,8.4,7.9v0.2H4.6V7.9h0.2\r
+ c0.3,0,0.5,0,0.7-0.1c0.1-0.1,0.1-0.2,0.1-0.3c0-0.1,0-0.1,0-0.2c0,0-0.1-0.2-0.2-0.4L4.9,5.8z M4.7,5.4L3.5,2.7L2.3,5.4H4.7z"/>\r
</svg>\r
]>\r
<svg version="1.1"\r
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"\r
- x="0px" y="0px" width="16px" height="16px" viewBox="0 -4.6 16 16" style="overflow:visible;enable-background:new 0 -4.6 16 16;"\r
+ x="0px" y="0px" width="16px" height="16px" viewBox="0 -3.9 16 16" style="overflow:visible;enable-background:new 0 -3.9 16 16;"\r
xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M0,6c0.2,0,0.4-0.1,0.5-0.3c0.1-0.1,0.2-0.4,0.4-0.8l2-4.9h0.3l2,4.7c0.2,0.5,0.4,0.9,0.5,1\r
- C5.8,5.9,5.9,6,6.1,6v0.2H3.2V6c0.3,0,0.5,0,0.6-0.1c0.1,0,0.1-0.1,0.1-0.3c0-0.1,0-0.2-0.1-0.3c0-0.1-0.1-0.2-0.1-0.3L3.5,4.4h-2\r
- C1.4,4.8,1.3,5,1.2,5.1C1.2,5.4,1.1,5.5,1.1,5.6c0,0.1,0.1,0.2,0.3,0.3C1.5,6,1.6,6,1.8,6v0.2H0V6z M3.4,4.1L2.5,2H2.4L1.6,4.1H3.4z\r
- M5.6,6c0.2,0,0.4,0,0.5-0.1c0.2-0.1,0.3-0.3,0.3-0.5V1c0-0.3-0.1-0.4-0.3-0.5C6,0.4,5.8,0.4,5.6,0.4V0.1h2.8c0.5,0,1,0.1,1.3,0.2\r
- c0.7,0.2,1,0.7,1,1.3c0,0.4-0.1,0.7-0.4,0.9C10,2.7,9.7,2.8,9.4,2.9V3C9.7,3,10,3.1,10.3,3.3C10.8,3.6,11,4,11,4.5\r
- c0,0.5-0.2,0.9-0.7,1.2C9.9,6.1,9.2,6.2,8.5,6.2H5.6V6z M8.9,2.6c0.2-0.2,0.3-0.5,0.3-1C9.2,1.3,9.2,1,9,0.7\r
- C8.9,0.5,8.7,0.4,8.3,0.4c-0.2,0-0.3,0-0.4,0.1S7.8,0.7,7.8,0.8v2C8.4,2.9,8.7,2.8,8.9,2.6z M7.9,5.7C8,5.9,8.1,5.9,8.3,5.9\r
- c0.4,0,0.7-0.1,0.9-0.3c0.2-0.2,0.3-0.6,0.3-1c0-0.6-0.2-1.1-0.6-1.3C8.7,3.2,8.3,3.1,7.8,3.1v2.2C7.8,5.5,7.8,5.6,7.9,5.7z\r
- M15.2,0.2c0.4,0.1,0.6,0.2,0.6,0.2c0.1,0,0.2,0,0.3-0.1c0.1-0.1,0.1-0.2,0.1-0.3h0.3v2.1h-0.2C16,1.7,15.8,1.3,15.6,1\r
- c-0.4-0.5-0.9-0.7-1.4-0.7c-0.6,0-1,0.3-1.3,0.8c-0.3,0.5-0.4,1.2-0.4,2.1c0,0.6,0.1,1.2,0.2,1.6c0.3,0.8,0.8,1.2,1.5,1.2\r
- c0.5,0,0.9-0.1,1.3-0.4c0.2-0.1,0.5-0.4,0.8-0.7l0.3,0.2c-0.4,0.4-0.7,0.7-0.9,0.9c-0.5,0.3-1,0.5-1.6,0.5c-0.9,0-1.6-0.3-2.2-0.8\r
- c-0.7-0.6-1-1.4-1-2.4c0-1,0.3-1.8,1-2.4C12.4,0.3,13.2,0,14,0C14.4,0,14.8,0.1,15.2,0.2z"/>\r
+<path style="fill:#999999;" d="M13.8,3.8C14.5,4,15,4.2,15.3,4.5C15.8,4.8,16,5.3,16,5.9c0,0.6-0.2,1.1-0.7,1.5\r
+ c-0.6,0.5-1.4,0.7-2.6,0.7h-4V7.8c0.4,0,0.6,0,0.7-0.1s0.2-0.2,0.3-0.3s0.1-0.4,0.1-0.8V1.5c0-0.4,0-0.7-0.1-0.8S9.5,0.5,9.4,0.4\r
+ S9,0.3,8.7,0.3V0.1h3.8c0.9,0,1.6,0.1,1.9,0.2s0.7,0.4,0.9,0.7s0.3,0.7,0.3,1c0,0.4-0.1,0.7-0.4,1S14.5,3.7,13.8,3.8z M11.6,4.1v2.5\r
+ l0,0.3c0,0.2,0.1,0.4,0.2,0.5s0.3,0.2,0.5,0.2c0.3,0,0.6-0.1,0.9-0.2s0.5-0.3,0.6-0.6s0.2-0.6,0.2-0.9c0-0.4-0.1-0.7-0.3-1\r
+ S13.3,4.4,13,4.3S12.2,4.1,11.6,4.1z M11.6,3.7c0.6,0,1-0.1,1.2-0.2s0.5-0.3,0.6-0.5s0.2-0.5,0.2-0.9s-0.1-0.6-0.2-0.9\r
+ s-0.3-0.4-0.6-0.5s-0.7-0.2-1.2-0.2V3.7z M4.9,5.8H2.1L1.8,6.6C1.6,6.9,1.6,7.1,1.6,7.3c0,0.2,0.1,0.4,0.3,0.5\r
+ C2,7.8,2.2,7.9,2.6,7.9v0.2H0V7.9c0.3,0,0.5-0.2,0.7-0.4s0.4-0.6,0.7-1.2L4.2,0h0.1l2.9,6.5c0.3,0.6,0.5,1,0.7,1.2\r
+ C8,7.8,8.2,7.9,8.4,7.9v0.2H4.6V7.9h0.2c0.3,0,0.5,0,0.7-0.1c0.1-0.1,0.1-0.2,0.1-0.3c0-0.1,0-0.1,0-0.2c0,0-0.1-0.2-0.2-0.4\r
+ L4.9,5.8z M4.7,5.4L3.5,2.7L2.3,5.4H4.7z"/>\r
</svg>\r
xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M0,0h16v2H0V0z M0,6h16v2H0V6z M0,12h16v2H0V12z M3,3h10v2H3V3z M3,9h10v2H3V9z"/>\r
+<path style="fill:#999999;" d="M0,12h16v2H0V12z M13,9H3v2h10V9z M0,8h16V6H0V8z M13,3H3v2h10V3z M16,0H0v2h16V0z"/>\r
</svg>\r
xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M0,0h16v2H0V0z M0,3h10v2H0V3z M0,6h16v2H0V6z M0,9h10v2H0V9z M0,12h16v2H0V12z"/>\r
+<path style="fill:#999999;" d="M0,12h16v2H0V12z M10,9H0v2h10V9z M0,8h16V6H0V8z M10,3H0v2h10V3z M16,2V0H0v2H16z"/>\r
</svg>\r
xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M0,0h16v2H0V0z M0,6h16v2H0V6z M0,12h16v2H0V12z M6,3h10v2H6V3z M6,9h10v2H6V9z"/>\r
+<path style="fill:#999999;" d="M0,12h16v2H0V12z M0,0v2h16V0H0z M6,11h10V9H6V11z M0,8h16V6H0V8z M6,5h10V3H6V5z"/>\r
</svg>\r
]>\r
<svg version="1.1"\r
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"\r
- x="0px" y="0px" width="16px" height="16px" viewBox="-2.3 0 16 16" style="overflow:visible;enable-background:new -2.3 0 16 16;"\r
+ x="0px" y="0px" width="16px" height="16px" viewBox="-1 -1 16 16" style="overflow:visible;enable-background:new -1 -1 16 16;"\r
xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M10.8,9.2c0.4,0.7,0.6,1.5,0.6,2.3c0,1.3-0.4,2.3-1.3,3.2S8.1,16,6.9,16H3.4H1.1H0V0h1.1h2.3h2.3\r
- C7,0,8.1,0.4,8.9,1.3c0.9,0.9,1.3,2,1.3,3.2c0,1.1-0.4,2.1-1.1,2.9C9.9,7.9,10.4,8.5,10.8,9.2z M3.4,6.9h1.8c0.5,0,0.9-0.2,1.3-0.7\r
- c0.4-0.5,0.5-1,0.5-1.6C7.1,4,6.9,3.4,6.5,3C6.2,2.5,5.7,2.3,5.2,2.3H3.4V6.9z M7.6,13c0.4-0.5,0.6-1,0.6-1.6c0-0.6-0.2-1.2-0.6-1.6\r
- C7.2,9.4,6.8,9.1,6.3,9.1H3.4v4.6h2.9C6.8,13.7,7.2,13.5,7.6,13z"/>\r
+<path style="fill:#999999;" d="M0,14.6c0.9-0.1,1.5-0.2,1.8-0.4s0.4-0.8,0.4-1.6V2.5c0-0.8-0.1-1.4-0.4-1.6C1.5,0.6,0.9,0.5,0,0.4V0\r
+ h6.3c1.8,0,3.3,0.3,4.3,0.9c1.1,0.6,1.6,1.6,1.6,3c0,1.1-0.4,1.9-1.1,2.4c-0.4,0.3-1.1,0.6-1.9,0.8c1,0.3,1.9,0.7,2.7,1.3\r
+ C12.7,9,13,9.8,13,10.8c0,1.8-0.8,3-2.5,3.7C9.7,14.8,8.6,15,7.4,15H0V14.6z M8.5,6.4C9.5,5.9,10,5.1,10,4c0-1.4-0.6-2.3-1.7-2.7\r
+ C7.7,1,6.8,0.8,5.5,0.8C5,0.8,4.7,0.9,4.6,1C4.5,1,4.5,1.3,4.5,1.6v5.1l2.2,0C7.4,6.7,8,6.6,8.5,6.4z M9.3,13.5\r
+ c0.8-0.5,1.2-1.3,1.2-2.6c0-1.3-0.5-2.1-1.4-2.6C8.1,7.8,7,7.6,5.6,7.6c-0.3,0-0.6,0-0.7,0s-0.2,0-0.4,0v5.6c0,0.4,0.1,0.6,0.3,0.8\r
+ c0.2,0.1,0.7,0.2,1.5,0.2C7.5,14.2,8.5,14,9.3,13.5z"/>\r
</svg>\r
xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M0.6,3.4C0.2,3,0,2.5,0,2s0.2-1,0.6-1.4C1,0.2,1.5,0,2,0c0.5,0,1,0.2,1.4,0.6C3.8,1,4,1.5,4,2\r
- S3.8,3,3.4,3.4C3,3.8,2.5,4,2,4C1.5,4,1,3.8,0.6,3.4z M0.6,9.4C0.2,9,0,8.5,0,8s0.2-1,0.6-1.4C1,6.2,1.5,6,2,6c0.5,0,1,0.2,1.4,0.6\r
- C3.8,7,4,7.5,4,8S3.8,9,3.4,9.4C3,9.8,2.5,10,2,10C1.5,10,1,9.8,0.6,9.4z M0.6,15.4C0.2,15,0,14.5,0,14c0-0.5,0.2-1,0.6-1.4\r
- C1,12.2,1.5,12,2,12c0.5,0,1,0.2,1.4,0.6C3.8,13,4,13.5,4,14c0,0.5-0.2,1-0.6,1.4C3,15.8,2.5,16,2,16C1.5,16,1,15.8,0.6,15.4z M6,1\r
- h10v2H6V1z M6,7h10v2H6V7z M6,13h10v2H6V13z"/>\r
+<path style="fill:#999999;" d="M0.6,15.4C0.2,15,0,14.5,0,14c0-0.5,0.2-1,0.6-1.4C1,12.2,1.5,12,2,12c0.5,0,1,0.2,1.4,0.6\r
+ C3.8,13,4,13.5,4,14c0,0.5-0.2,1-0.6,1.4C3,15.8,2.5,16,2,16C1.5,16,1,15.8,0.6,15.4z M0.6,9.4C0.2,9,0,8.5,0,8s0.2-1,0.6-1.4\r
+ C1,6.2,1.5,6,2,6c0.5,0,1,0.2,1.4,0.6C3.8,7,4,7.5,4,8S3.8,9,3.4,9.4C3,9.8,2.5,10,2,10C1.5,10,1,9.8,0.6,9.4z M0.6,3.4\r
+ C0.2,3,0,2.5,0,2s0.2-1,0.6-1.4C1,0.2,1.5,0,2,0c0.5,0,1,0.2,1.4,0.6C3.8,1,4,1.5,4,2S3.8,3,3.4,3.4C3,3.8,2.5,4,2,4\r
+ C1.5,4,1,3.8,0.6,3.4z M6,13h10v2H6V13z M6,7h10v2H6V7z M6,1v2h10V1H6z"/>\r
</svg>\r
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In -->\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [\r
+ <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">\r
+]>\r
+<svg version="1.1"\r
+ xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"\r
+ x="0px" y="0px" width="16px" height="16px" viewBox="0 0 16 16" style="overflow:visible;enable-background:new 0 0 16 16;"\r
+ xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
+<defs>\r
+</defs>\r
+<path style="fill:#999999;" d="M15.9,12.9L15.9,12.9L11,8l4.9-4.9C15.9,3.1,15.9,3,16,3c0.1-0.2,0-0.4-0.1-0.5l-2.3-2.3\r
+ C13.4,0,13.2,0,13,0c-0.1,0-0.1,0.1-0.2,0.1L8,5L3.1,0.1C3.1,0.1,3,0.1,3,0C2.8,0,2.6,0,2.4,0.1L0.1,2.4C0,2.6,0,2.8,0,3\r
+ c0,0.1,0.1,0.1,0.1,0.2L5,8l-4.9,4.9C0.1,12.9,0.1,13,0,13c-0.1,0.2,0,0.4,0.1,0.5l2.3,2.3C2.6,16,2.8,16,3,16\r
+ c0.1,0,0.1-0.1,0.2-0.1L8,11l4.9,4.9c0.1,0.1,0.1,0.1,0.2,0.1c0.2,0.1,0.4,0,0.5-0.1l2.3-2.3C16,13.4,16,13.2,16,13\r
+ C15.9,13,15.9,12.9,15.9,12.9"/>\r
+</svg>\r
xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M8.1,15.6c-1.9,1-8.7-6-8.1-9.3c0.1-0.7,2.8,0.8,6.1-2l5.4,5.4C11,11.2,9.6,14.8,8.1,15.6z M10.7,7.5\r
- l1.1,1.2l0.3-0.3c0.6-0.6,0.6-1.7,0-2.3L15.2,3c0.6-0.6,0.6-1.7,0-2.3L15,0.5c-0.6-0.6-1.7-0.6-2.3,0L9.6,3.6L9.5,3.5\r
- c-0.6-0.6-1.7-0.6-2.3,0L7,3.7L8.2,5L10.7,7.5z"/>\r
+<path style="fill:#999999;" d="M7,3.7l0.3-0.3c0.6-0.6,1.7-0.6,2.3,0l0.1,0.1l3.1-3.1c0.6-0.6,1.7-0.6,2.3,0l0.2,0.2\r
+ c0.6,0.6,0.6,1.7,0,2.3l-3.1,3.1c0.6,0.6,0.6,1.7,0,2.3l-0.3,0.3L7,3.7z M8.1,15.6c-1.9,1-8.7-6-8.1-9.3c0.1-0.7,2.8,0.8,6.1-2\r
+ l5.4,5.4C11,11.2,9.6,14.8,8.1,15.6z M10.4,9.9L6,5.6C3.9,7.1,2,7.1,1,7.1c0.2,1.4,1.5,3.6,3.4,5.4h0c1.7,1.7,2.9,2.2,3.2,2.2\r
+ C8.3,14.3,9.4,12.5,10.4,9.9z"/>\r
</svg>\r
]>\r
<svg version="1.1"\r
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"\r
- x="0px" y="0px" width="16px" height="16px" viewBox="-0.2 0 16 16" style="overflow:visible;enable-background:new -0.2 0 16 16;"\r
+ x="0px" y="0px" width="16px" height="16px" viewBox="0 -1.3 16 16" style="overflow:visible;enable-background:new 0 -1.3 16 16;"\r
xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M0,14h9v2H0V14z M3,0h11v2H3V0z M4.3,13L7.5,0.8l1.9,0.5L6.4,13H4.3z M14.5,16l-2-2l-2,2l-1-1l2-2\r
- l-2-2l1-1l2,2l2-2l1,1l-2,2l2,2L14.5,16z"/>\r
+<path style="fill:#999999;" d="M7,14.7H0v-1h7V14.7z M1.1,11.7h5.2v-0.3c-0.6,0-1.1-0.1-1.3-0.2c-0.2-0.1-0.3-0.3-0.3-0.7\r
+ c0-0.1,0-0.3,0.1-0.5c0-0.2,0.1-0.3,0.1-0.5l2.5-9h1c0.7,0,1.2,0.1,1.5,0.4s0.4,0.7,0.4,1.2l0,0.6l0.3,0L11.3,0H1.7L1,2.8l0.3,0.1\r
+ c0.6-1.1,1.1-1.7,1.6-1.9c0.4-0.2,1.4-0.3,2.7-0.3L3,10.1c-0.1,0.5-0.4,0.9-0.8,1.1c-0.2,0.1-0.6,0.2-1.1,0.2V11.7z M8.1,14.7h2.5\r
+ v-0.2c-0.3,0-0.5,0-0.6-0.1c-0.2-0.1-0.3-0.2-0.3-0.3c0-0.1,0.1-0.2,0.2-0.4c0.1-0.1,0.2-0.3,0.4-0.5l1.3-1.6c0.7,1.1,1.2,1.8,1.4,2\r
+ s0.2,0.5,0.2,0.6c0,0.1-0.1,0.2-0.2,0.3c-0.1,0-0.3,0.1-0.6,0.1v0.2h3.2v-0.2c-0.3,0-0.5-0.1-0.7-0.2c-0.1-0.1-0.3-0.3-0.6-0.6\r
+ l-2.1-3l1.6-2c0.4-0.5,0.7-0.8,0.9-0.9c0.2-0.1,0.4-0.1,0.7-0.1V7.5H13v0.2c0.3,0,0.4,0,0.5,0.1c0.2,0.1,0.2,0.2,0.2,0.3\r
+ c0,0.1,0,0.1-0.1,0.2c-0.1,0.1-0.2,0.3-0.4,0.5l-1.2,1.5L11,8.6c-0.1-0.1-0.1-0.2-0.1-0.2c-0.1-0.1-0.1-0.3-0.1-0.4\r
+ c0-0.2,0.1-0.3,0.2-0.3c0.1,0,0.3-0.1,0.6-0.1V7.5H8.2v0.2c0.4,0,0.6,0.1,0.9,0.3c0.2,0.2,0.6,0.7,1.1,1.4l1.2,1.8l-1.7,2.1\r
+ c-0.5,0.6-0.8,0.9-0.9,1c-0.2,0.1-0.4,0.2-0.7,0.2V14.7z"/>\r
</svg>\r
xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M0,0h16v2H0V0z M4,4v6L0,7L4,4z M0,12h16v2H0V12z M6,3h10v2H6V3z M6,6h10v2H6V6z M6,9h10v2H6V9z"/>\r
+<path style="fill:#999999;" d="M0,12h16v2H0V12z M6,9h10v2H6V9z M6,6h10v2H6V6z M6,3h10v2H6V3z M16,2V0H0v2H16z M4,4v6L0,7L4,4z"/>\r
</svg>\r
<?xml version="1.0" encoding="utf-8"?>\r
<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In -->\r
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [\r
- <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">\r
+ <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">\r
]>\r
<svg version="1.1"\r
- xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"\r
- x="0px" y="0px" width="16px" height="16px" viewBox="0 -0.1 16 16" style="overflow:visible;enable-background:new 0 -0.1 16 16;"\r
- xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
+ xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"\r
+ x="0px" y="0px" width="16px" height="16px" viewBox="0 -1 16 16" style="overflow:visible;enable-background:new 0 -1 16 16;"\r
+ xml:space="preserve">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M16.1,15.3v0.6H8.6v-0.6c0.7,0,1.2-0.1,1.5-0.2c0.2-0.1,0.4-0.3,0.4-0.7c0-0.2-0.1-0.5-0.2-0.8\r
- c-0.1-0.2-0.2-0.5-0.3-0.8l-0.4-0.9h3.9l0.1,0.2c0.6,1.4,1,2.2,1.3,2.6C15.1,15.1,15.5,15.3,16.1,15.3z M3.3,14.4\r
- c0-0.3,0.1-0.7,0.3-1.3c0.1-0.2,0.2-0.6,0.5-1.3H3l-0.3,0.7c-0.4,1-0.7,1.6-0.9,1.9C1.4,15,1,15.2,0.4,15.3v0.6h4.7v-0.6\r
- c-0.5,0-0.9-0.1-1.2-0.1C3.5,15,3.3,14.7,3.3,14.4z M16,9.9H0v1h16V9.9z M5.2,8.9l1.5-3.7h0.2l1.6,3.7h3.8L8.4,0H7.8L4.2,8.9H5.2z"\r
- />\r
-</svg>
\ No newline at end of file
+<path style="fill:#999999;" d="M14.9,14.2c0.2,0.2,0.6,0.3,1.1,0.4V15h-5.7v-0.4c0.7-0.1,1.1-0.1,1.3-0.2c0.2-0.1,0.3-0.3,0.3-0.6\r
+ c0-0.1,0-0.3-0.1-0.6c-0.1-0.3-0.2-0.6-0.3-0.9L10.9,11h2.4l0.7,1.6C14.4,13.5,14.7,14,14.9,14.2z M3.5,13.6c0-0.2,0.1-0.4,0.2-0.8\r
+ C3.8,12.6,4,12,4.4,11h-1c-0.7,1.6-1.2,2.6-1.4,2.9c-0.3,0.4-0.7,0.6-1.3,0.6V15H5v-0.4c-0.5,0-0.9-0.1-1.1-0.2\r
+ C3.6,14.2,3.5,14,3.5,13.6z M5.6,8l2-4.9l2,4.9H12L8.4,0H8L4.6,8H5.6z M16,9H0v1h16V9z"/>\r
+</svg>\r
xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M13.5,9.5c-0.1,0.5-0.3,0.9-0.5,1.3l1.6,2l-1.8,1.8l-2-1.6c-0.4,0.2-0.9,0.4-1.3,0.5L9.2,16H6.7\r
- l-0.2-2.5C6,13.4,5.6,13.2,5.2,13l-2,1.6l-1.8-1.8l1.6-2C2.8,10.4,2.6,10,2.5,9.5L0,9.2V6.8l2.5-0.3C2.6,6,2.8,5.6,3,5.2l-1.6-2\r
- l1.8-1.8l2,1.6C5.6,2.8,6,2.6,6.5,2.5L6.7,0h2.5l0.2,2.5C10,2.6,10.4,2.8,10.8,3l2-1.6l1.8,1.8l-1.6,2c0.2,0.4,0.4,0.9,0.5,1.3\r
- L16,6.8v2.5L13.5,9.5z M11,7L9,5H7L5,7v2l2,2h2l2-2V7z"/>\r
+<path style="fill:#999999;" d="M15.9,9.3C16,8.9,16,8.4,16,8s0-0.9-0.1-1.3l-2.1-0.4c-0.1-0.4-0.3-0.8-0.5-1.2l1.2-1.8\r
+ C14,2.6,13.4,2,12.6,1.5l-1.8,1.2c-0.4-0.2-0.8-0.4-1.2-0.5L9.3,0.1C8.9,0,8.4,0,8,0S7.1,0,6.7,0.1L6.3,2.2C5.9,2.4,5.5,2.5,5.1,2.7\r
+ L3.4,1.5C2.6,2,2,2.6,1.5,3.4l1.2,1.8C2.5,5.5,2.4,5.9,2.2,6.3L0.1,6.7C0,7.1,0,7.6,0,8c0,0.4,0,0.9,0.1,1.3l2.1,0.4\r
+ c0.1,0.4,0.3,0.8,0.5,1.2l-1.2,1.8C2,13.4,2.6,14,3.4,14.5l1.8-1.2c0.4,0.2,0.8,0.4,1.2,0.5l0.4,2.1C7.1,16,7.6,16,8,16\r
+ s0.9,0,1.3-0.1l0.4-2.1c0.4-0.1,0.8-0.3,1.2-0.5l1.8,1.2c0.7-0.5,1.3-1.1,1.9-1.9l-1.2-1.8c0.2-0.4,0.4-0.8,0.5-1.2L15.9,9.3z M8,10\r
+ c-1.1,0-2-0.9-2-2c0-1.1,0.9-2,2-2s2,0.9,2,2C10,9.1,9.1,10,8,10z"/>\r
</svg>\r
xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M16,8c0,2.2-0.8,4.1-2.3,5.7C12.1,15.2,10.2,16,8,16s-4.1-0.8-5.7-2.3C0.8,12.1,0,10.2,0,8\r
- s0.8-4.1,2.3-5.7S5.8,0,8,0s4.1,0.8,5.7,2.3S16,5.8,16,8z M14.8,8c0-1.9-0.7-3.4-2-4.8c-1.3-1.3-2.9-2-4.8-2c-1.9,0-3.4,0.7-4.8,2\r
- c-1.3,1.3-2,2.9-2,4.8s0.7,3.4,2,4.8c1.3,1.3,2.9,2,4.8,2c1.9,0,3.4-0.7,4.8-2C14.1,11.4,14.8,9.9,14.8,8z M3,8.2\r
- c0.2,1.4,0.7,2.5,1.7,3.4S6.7,13,8,13c1.3,0,2.4-0.5,3.3-1.4s1.5-2,1.7-3.4c-0.5,0.5-1.1,1-2,1.4C10,10,9.1,10.2,8,10.2\r
- S6,10,5.1,9.6C4.2,9.2,3.5,8.8,3,8.2z M5,4C4.7,4,4.5,4.1,4.3,4.3C4.1,4.5,4,4.7,4,5c0,0.3,0.1,0.5,0.3,0.7S4.7,6,5,6\r
- c0.3,0,0.5-0.1,0.7-0.3C5.9,5.5,6,5.3,6,5c0-0.3-0.1-0.5-0.3-0.7C5.5,4.1,5.3,4,5,4z M11,4c-0.3,0-0.5,0.1-0.7,0.3\r
- C10.1,4.5,10,4.7,10,5c0,0.3,0.1,0.5,0.3,0.7C10.5,5.9,10.7,6,11,6s0.5-0.1,0.7-0.3C11.9,5.5,12,5.3,12,5c0-0.3-0.1-0.5-0.3-0.7\r
- C11.5,4.1,11.3,4,11,4z"/>\r
+<path style="fill:#999999;" d="M8,0C3.6,0,0,3.6,0,8s3.6,8,8,8s8-3.5,8-8S12.4,0,8,0z M8,15c-3.9,0-7-3.1-7-7c0-3.9,3.1-7,7-7\r
+ s7,3.2,7,7C15,11.9,11.9,15,8,15z M8,12.8c-4.9,0-5.8-4.4-5.8-4.4C2.1,8.2,2.2,7.9,2.5,7.8C2.8,7.8,3.1,8,3.1,8.2\r
+ c0,0.1,0.8,3.6,4.9,3.6c4.1,0,4.8-3.5,4.9-3.6c0.1-0.3,0.3-0.4,0.6-0.4c0.3,0.1,0.4,0.3,0.4,0.6C13.8,8.5,12.9,12.8,8,12.8z\r
+ M11.4,5.2c0,0.8-0.3,1.5-0.7,1.5C10.3,6.7,10,6,10,5.2s0.3-1.5,0.7-1.5C11.1,3.7,11.4,4.4,11.4,5.2z M6,5.2C6,6,5.7,6.7,5.3,6.7\r
+ C4.9,6.7,4.6,6,4.6,5.2s0.3-1.5,0.7-1.5C5.7,3.7,6,4.4,6,5.2z"/>\r
</svg>\r
]>\r
<svg version="1.1"\r
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"\r
- x="0px" y="0px" width="16px" height="16px" viewBox="0 0 16 16" style="overflow:visible;enable-background:new 0 0 16 16;"\r
+ x="0px" y="0px" width="16px" height="16px" viewBox="0 0.1 16 16" style="overflow:visible;enable-background:new 0 0.1 16 16;"\r
xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M3.5,16v-2H0V8h2v4h1.5v-2l3,3L3.5,16z M3,7.2c0.2,0.1,0.4,0.2,0.7,0.2c0.2,0,0.5-0.1,0.7-0.2\r
- c0.2-0.1,0.4-0.3,0.6-0.6L4.7,6.5C4.6,6.6,4.5,6.7,4.5,6.7c0,0-0.1,0-0.1,0S4.3,6.5,4.2,6.5c0-0.1,0-0.2,0-0.4V4.1\r
- c0-0.5,0-0.9-0.1-1C4.1,2.8,3.9,2.6,3.6,2.4C3.3,2.2,3,2.1,2.5,2.1c-0.4,0-0.8,0.1-1.1,0.2S0.7,2.6,0.5,2.8C0.3,3.1,0.2,3.3,0.2,3.6\r
- c0,0.2,0.1,0.3,0.2,0.5C0.6,4.2,0.7,4.3,1,4.3c0.2,0,0.4-0.1,0.5-0.2C1.6,4,1.7,3.8,1.7,3.6c0-0.1-0.1-0.3-0.2-0.4\r
- C1.4,3.1,1.3,3,1.3,2.9c0-0.1,0-0.2,0.1-0.2C1.6,2.6,1.8,2.5,2,2.5c0.1,0,0.3,0,0.4,0.1c0.1,0.1,0.2,0.2,0.2,0.3\r
- c0,0.1,0.1,0.3,0.1,0.7v0.5C1.6,4.6,0.9,5,0.6,5.3C0.2,5.6,0.1,6,0.1,6.4c0,0.3,0.1,0.5,0.3,0.7c0.2,0.2,0.4,0.3,0.7,0.3\r
- c0.5,0,1-0.3,1.6-0.8C2.8,6.8,2.9,7,3,7.2z M2.1,6.5c-0.2,0-0.3,0-0.4-0.1C1.6,6.2,1.5,6,1.5,5.9c0-0.2,0.1-0.4,0.2-0.6\r
- C2,5,2.3,4.7,2.7,4.5v1.7C2.5,6.4,2.3,6.5,2.1,6.5z M5.3,0v0.2c0.2,0,0.3,0,0.4,0.1c0.1,0,0.1,0.1,0.2,0.2c0,0.1,0,0.2,0,0.5v6.4\r
- h0.2l0.8-0.5c0.2,0.2,0.4,0.3,0.6,0.4S8,7.4,8.3,7.4c0.5,0,0.9-0.1,1.3-0.4c0.4-0.2,0.7-0.6,0.9-1s0.3-0.9,0.3-1.5\r
- c0-0.5-0.1-0.9-0.3-1.3s-0.4-0.7-0.7-0.9c-0.3-0.2-0.6-0.3-1-0.3c-0.5,0-1,0.2-1.4,0.7V0H5.3z M8.3,2.7c0.2,0,0.4,0.1,0.6,0.3\r
- C9,3.3,9.1,3.8,9.1,4.6c0,0.8,0,1.4-0.1,1.7C8.9,6.6,8.8,6.8,8.7,6.9C8.5,7,8.4,7.1,8.2,7.1C8,7.1,7.8,7,7.7,6.9\r
- C7.5,6.7,7.5,6.6,7.4,6.3c0-0.1,0-0.4,0-0.9V3.2C7.7,2.9,8,2.7,8.3,2.7z M9.3,15.2c0.2,0.1,0.4,0.2,0.7,0.2c0.2,0,0.5-0.1,0.7-0.2\r
- c0.2-0.1,0.4-0.3,0.6-0.6L11,14.5c-0.1,0.1-0.2,0.2-0.3,0.2c0,0-0.1,0-0.1,0s-0.1-0.1-0.1-0.1c0-0.1,0-0.2,0-0.4v-1.9\r
- c0-0.5,0-0.9-0.1-1c-0.1-0.2-0.3-0.5-0.5-0.7c-0.3-0.2-0.7-0.3-1.1-0.3c-0.4,0-0.8,0.1-1.1,0.2S7,10.6,6.8,10.8\r
- c-0.2,0.2-0.3,0.5-0.3,0.7c0,0.2,0.1,0.3,0.2,0.5c0.2,0.1,0.3,0.2,0.6,0.2c0.2,0,0.4-0.1,0.5-0.2C7.9,12,8,11.8,8,11.6\r
- c0-0.1-0.1-0.3-0.2-0.4c-0.1-0.1-0.2-0.2-0.2-0.3c0-0.1,0-0.2,0.1-0.2c0.2-0.1,0.3-0.2,0.6-0.2c0.1,0,0.3,0,0.4,0.1\r
- c0.1,0.1,0.2,0.2,0.2,0.3C9,11,9,11.2,9,11.6v0.5c-1.1,0.5-1.8,0.9-2.2,1.2c-0.3,0.3-0.5,0.7-0.5,1c0,0.3,0.1,0.5,0.3,0.7\r
- c0.2,0.2,0.4,0.3,0.7,0.3c0.5,0,1-0.3,1.6-0.8C9,14.8,9.1,15,9.3,15.2z M8.4,14.5c-0.2,0-0.3,0-0.4-0.1c-0.1-0.1-0.2-0.3-0.2-0.4\r
- c0-0.2,0.1-0.4,0.2-0.6c0.2-0.3,0.5-0.6,1-0.8v1.7C8.8,14.4,8.6,14.5,8.4,14.5z M15.3,14.5c-0.2,0.1-0.3,0.1-0.5,0.1\r
- c-0.3,0-0.5-0.1-0.7-0.2c-0.3-0.2-0.5-0.5-0.6-1c-0.2-0.4-0.2-0.9-0.2-1.4c0-0.6,0.1-1,0.3-1.3c0.1-0.2,0.3-0.3,0.4-0.3\r
- c0.1,0,0.2,0,0.3,0.1s0.1,0.2,0.2,0.5c0,0.4,0.1,0.6,0.3,0.7C14.8,12,15,12,15.2,12c0.2,0,0.4-0.1,0.5-0.2c0.1-0.1,0.2-0.3,0.2-0.5\r
- c0-0.3-0.2-0.6-0.5-0.9c-0.3-0.3-0.7-0.4-1.2-0.4c-0.8,0-1.4,0.3-1.8,0.9c-0.4,0.5-0.5,1.1-0.5,1.8c0,0.7,0.2,1.3,0.6,1.8\r
- s0.9,0.8,1.6,0.8c0.4,0,0.8-0.1,1.1-0.3c0.4-0.2,0.6-0.5,0.9-1L15.8,14C15.6,14.2,15.4,14.4,15.3,14.5z"/>\r
+<path style="fill:#999999;" d="M4.8,7.9H4.6v0.2h3.1V7.4C7.5,7.2,7.4,6.9,7.2,6.5L4.3,0H4.2L1.4,6.3c-0.3,0.6-0.5,1-0.7,1.2\r
+ S0.3,7.8,0,7.9v0.2h2.6V7.9C2.2,7.9,2,7.8,1.9,7.8C1.7,7.6,1.6,7.5,1.6,7.3c0-0.2,0.1-0.4,0.2-0.6l0.3-0.8h2.8l0.4,1\r
+ c0.1,0.3,0.2,0.4,0.2,0.4c0,0.1,0,0.1,0,0.2c0,0.1,0,0.2-0.1,0.3C5.3,7.8,5.1,7.9,4.8,7.9z M2.3,5.4l1.2-2.7l1.2,2.7H2.3z\r
+ M13.8,11.9c0.8,0.2,1.3,0.4,1.6,0.6c0.4,0.4,0.7,0.8,0.7,1.4c0,0.6-0.2,1.1-0.7,1.5c-0.6,0.5-1.4,0.7-2.6,0.7h-4v-0.2\r
+ c0.4,0,0.6,0,0.7-0.1s0.2-0.2,0.3-0.3s0.1-0.4,0.1-0.8V9.6c0-0.4,0-0.7-0.1-0.8S9.5,8.5,9.4,8.5S9,8.4,8.7,8.4V8.2h3.8\r
+ c0.9,0,1.6,0.1,1.9,0.2s0.7,0.4,0.9,0.7s0.3,0.7,0.3,1c0,0.4-0.1,0.7-0.4,1S14.5,11.7,13.8,11.9z M11.6,12.2v2.5l0,0.3\r
+ c0,0.2,0.1,0.4,0.2,0.5s0.3,0.2,0.5,0.2c0.3,0,0.6-0.1,0.9-0.2s0.5-0.3,0.6-0.6s0.2-0.6,0.2-0.9c0-0.4-0.1-0.7-0.3-1\r
+ s-0.4-0.5-0.7-0.6S12.2,12.2,11.6,12.2z M11.6,11.7c0.6,0,1-0.1,1.2-0.2s0.5-0.3,0.6-0.5s0.2-0.5,0.2-0.9s-0.1-0.6-0.2-0.9\r
+ s-0.3-0.4-0.6-0.5s-0.7-0.2-1.2-0.2V11.7z M5,16.1v-2.5c-0.4,0.3-0.9,0.5-1.5,0.5C2.1,14.1,1,13,1,11.6c0-0.6,0.2-1.1,0.5-1.5H2v1v1\r
+ h0.1C2.2,12.5,2.6,12.9,3,13v0.1h2v-2l3,2.5L5,16.1z"/>\r
</svg>\r
xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M2.3,2.3C3.9,0.8,5.8,0,8,0c2.2,0,4.1,0.8,5.7,2.3C15.2,3.9,16,5.8,16,8s-0.8,4.1-2.3,5.7\r
- C12.1,15.2,10.2,16,8,16c-2.2,0-4.1-0.8-5.7-2.3C0.8,12.1,0,10.2,0,8S0.8,3.9,2.3,2.3z M12.6,3.4C11.3,2.1,9.8,1.5,8,1.5\r
- c-1.8,0-3.3,0.6-4.6,1.9C2.1,4.7,1.5,6.2,1.5,8s0.6,3.3,1.9,4.6c1.3,1.3,2.8,1.9,4.6,1.9c1.8,0,3.3-0.6,4.6-1.9\r
- c1.3-1.3,1.9-2.8,1.9-4.6S13.9,4.7,12.6,3.4z M11,4c0.3,0,0.5,0.1,0.7,0.3C11.9,4.5,12,4.7,12,5v3l-3,2H7V9l3-2V6H5V4H11z M7,11h2v2\r
- H7V11z"/>\r
+<path style="fill:#989898;" d="M8,0C3.6,0,0,3.6,0,8c0,4.4,3.6,8,8,8c4.4,0,8-3.6,8-8C16,3.6,12.4,0,8,0z M8,15c-3.9,0-7-3.1-7-7\r
+ s3.1-7,7-7s7,3.1,7,7S11.9,15,8,15z M8.5,13C7.7,13,7,12.3,7,11.5c0-0.8,0.6-1.6,1.5-1.6c0.8,0,1.5,0.7,1.5,1.5S9.3,13,8.5,13z\r
+ M6,6.6c-0.6,0-1-0.4-1-1C4.9,4.5,6.1,3,8.3,3c1.4,0,3.4,1,3.4,2.6c0,0.8-0.5,1.5-1.5,1.9C8.7,8,9.5,9.1,8.2,9.1c-0.6,0-1-0.3-1-0.9\r
+ c0-1.2,1.2-1.8,1.2-3c0-0.3-0.1-0.7-0.5-0.7c-0.4,0-0.4,0.4-0.4,0.7C7.4,6.1,6.9,6.6,6,6.6z"/>\r
</svg>\r
xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M0,0h16v2H0V0z M0,10V4l4,3L0,10z M0,12h16v2H0V12z M6,3h10v2H6V3z M6,6h10v2H6V6z M6,9h10v2H6V9z"/>\r
+<path style="fill:#999999;" d="M0,12h16v2H0V12z M6,9h10v2H6V9z M6,6h10v2H6V6z M6,3h10v2H6V3z M16,2V0H0v2H16z M0,10V4l4,3L0,10z"\r
+ />\r
</svg>\r
]>\r
<svg version="1.1"\r
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"\r
- x="0px" y="0px" width="16px" height="16px" viewBox="0 -1.5 16 16" style="overflow:visible;enable-background:new 0 -1.5 16 16;"\r
+ x="0px" y="0px" width="16px" height="16px" viewBox="0 0 16 16" style="overflow:visible;enable-background:new 0 0 16 16;"\r
xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M16,0v13H0V0H16z M15,1H1v11h14V1z M11,6.5L9,8L5,3l-3,8h12L11,6.5z M12.5,5c0.4,0,0.8-0.1,1.1-0.4\r
- C13.9,4.3,14,3.9,14,3.5c0-0.4-0.1-0.8-0.4-1.1C13.3,2.1,12.9,2,12.5,2s-0.8,0.1-1.1,0.4C11.1,2.7,11,3.1,11,3.5\r
- c0,0.4,0.1,0.8,0.4,1.1C11.7,4.9,12.1,5,12.5,5z"/>\r
+<path style="fill:#999999;" d="M0,0v16h16V0H0z M15,15H1V1h14V15z M11,8.5L9,10L5,5l-3,8h12L11,8.5z M12.5,6c0.4,0,0.8-0.1,1.1-0.4\r
+ C13.9,5.3,14,4.9,14,4.5c0-0.4-0.1-0.8-0.4-1.1C13.3,3.1,12.9,3,12.5,3s-0.8,0.1-1.1,0.4C11.1,3.7,11,4.1,11,4.5\r
+ c0,0.4,0.1,0.8,0.4,1.1C11.7,5.9,12.1,6,12.5,6z"/>\r
</svg>\r
]>\r
<svg version="1.1"\r
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"\r
- x="0px" y="0px" width="16px" height="16px" viewBox="0 -2 16 16" style="overflow:visible;enable-background:new 0 -2 16 16;"\r
+ x="0px" y="0px" width="16px" height="16px" viewBox="0 0 16 16" style="overflow:visible;enable-background:new 0 0 16 16;"\r
xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M16,0v12H0V0H16z M3,1H1v2h2V1z M3,5H1v2h2V5z M3,9H1v2h2V9z M12,1H4v10h8V1z M10,6L6,9V3L10,6z\r
- M15,1h-2v2h2V1z M15,5h-2v2h2V5z M15,9h-2v2h2V9z"/>\r
+<path style="fill:#999999;" d="M0,0v16h16V0H0z M3,15H1v-2h2V15z M3,11H1V9h2V11z M3,7H1V5h2V7z M3,3H1V1h2V3z M12,15H4V1h8V15z\r
+ M15,15h-2v-2h2V15z M15,11h-2V9h2V11z M15,7h-2V5h2V7z M15,3h-2V1h2V3z M10,8l-4,3V5L10,8z"/>\r
</svg>\r
]>\r
<svg version="1.1"\r
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"\r
- x="0px" y="0px" width="16px" height="16px" viewBox="0 -2 16 16" style="overflow:visible;enable-background:new 0 -2 16 16;"\r
+ x="0px" y="0px" width="16px" height="16px" viewBox="0 0 16 16" style="overflow:visible;enable-background:new 0 0 16 16;"\r
xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M16,6v6H0V6h2v4h12V6H16z M7,5H4V3h3V0h2v3h3v2H9v3H7V5z"/>\r
+<path style="fill:#999999;" d="M16,10v6H0v-6h2v4h12v-4H16z M7,5H4V3h3V0h2v3h3v2H9v3H7V5z"/>\r
</svg>\r
]>\r
<svg version="1.1"\r
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"\r
- x="0px" y="0px" width="16px" height="16px" viewBox="0 -0.6 16 16" style="overflow:visible;enable-background:new 0 -0.6 16 16;"\r
+ x="0px" y="0px" width="16px" height="16px" viewBox="0 0 16 16" style="overflow:visible;enable-background:new 0 0 16 16;"\r
xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M1.5,4.8L0,4c0.9-1.8,2.2-3.1,4-4l0.8,1.5C3.3,2.2,2.2,3.3,1.5,4.8z M14.7,8c0,1.9-0.7,3.4-2,4.8\r
- c-1.3,1.3-2.9,2-4.8,2c-1.9,0-3.4-0.7-4.8-2c-1.3-1.3-2-2.9-2-4.8s0.7-3.4,2-4.8c1.3-1.3,2.9-2,4.8-2c1.9,0,3.4,0.7,4.8,2\r
- C14.1,4.6,14.7,6.1,14.7,8z M11.6,4.4C10.6,3.5,9.4,3,8,3S5.4,3.5,4.4,4.4C3.5,5.4,3,6.6,3,8c0,1.4,0.5,2.6,1.5,3.6\r
- c1,1,2.2,1.5,3.6,1.5s2.6-0.5,3.6-1.5c1-1,1.5-2.2,1.5-3.6C13,6.6,12.5,5.4,11.6,4.4z M8,7.7l2.6,2.1l-0.7,0.8L7.1,8.4\r
- C7,8.3,6.9,8.2,6.9,8V4.6H8V7.7z M11.2,1.5L12,0c1.8,0.9,3.1,2.2,4,4l-1.5,0.8C13.8,3.3,12.7,2.2,11.2,1.5z"/>\r
+<path style="fill:#999999;" d="M11.9,13.4c0.3-0.2,0.5-0.4,0.8-0.7c1.3-1.3,2-2.9,2-4.8s-0.7-3.4-2-4.8c-1.3-1.3-2.9-2-4.8-2\r
+ c-1.9,0-3.4,0.7-4.8,2c-1.3,1.3-2,2.9-2,4.8s0.7,3.4,2,4.8c0.3,0.3,0.5,0.5,0.8,0.7l-0.8,1.8c-0.1,0.2,0,0.5,0.2,0.7h0\r
+ c0.2,0.1,0.5,0,0.7-0.2L4.9,14c0.9,0.5,2,0.7,3.1,0.7s2.2-0.2,3.1-0.7l0.8,1.7c0.1,0.2,0.4,0.4,0.7,0.2h0c0.2-0.1,0.4-0.4,0.2-0.7\r
+ L11.9,13.4z M8,13.7c-1.6,0-2.9-0.5-4-1.7c-1.1-1.1-1.7-2.4-1.7-4S2.8,5.1,4,4c1.1-1.1,2.4-1.7,4-1.7c1.6,0,2.9,0.5,4,1.7\r
+ c1.1,1.1,1.7,2.4,1.7,4s-0.5,2.9-1.7,4C10.9,13.2,9.6,13.7,8,13.7z M8,7.7l2.6,2.1l-0.7,0.8L7.1,8.4C7,8.3,6.9,8.2,6.9,8V4.6H8V7.7z\r
+ M11.2,1.5L12,0c1.8,0.9,3.1,2.2,4,4l-1.5,0.8C13.8,3.3,12.7,2.2,11.2,1.5z M1.5,4.8L0,4c0.9-1.8,2.2-3.1,4-4l0.8,1.5\r
+ C3.3,2.2,2.2,3.3,1.5,4.8z"/>\r
</svg>\r
]>\r
<svg version="1.1"\r
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"\r
- x="0px" y="0px" width="16px" height="16px" viewBox="-1.1 0 16 16" style="overflow:visible;enable-background:new -1.1 0 16 16;"\r
+ x="0px" y="0px" width="16px" height="16px" viewBox="-4 -1 16 16" style="overflow:visible;enable-background:new -4 -1 16 16;"\r
xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M13.7,0v1.1h-2.3L5.7,14.9H8V16H0v-1.1h2.3L8,1.1H5.7V0H13.7z"/>\r
+<path style="fill:#999999;" d="M0,14.6c0.5,0,0.9-0.1,1.1-0.3c0.3-0.2,0.6-0.7,0.8-1.4L4.7,2.8c0.1-0.4,0.2-0.7,0.2-0.9\r
+ C5,1.7,5,1.6,5,1.4C5,1,4.9,0.8,4.6,0.6C4.4,0.5,4,0.4,3.3,0.4V0H9v0.4C8.4,0.5,8,0.6,7.8,0.8C7.6,0.9,7.4,1.4,7.2,2.1L4.3,12.2\r
+ c-0.1,0.4-0.2,0.7-0.2,0.9s-0.1,0.4-0.1,0.5c0,0.4,0.1,0.6,0.4,0.8s0.7,0.2,1.2,0.2V15H0V14.6z"/>\r
</svg>\r
]>\r
<svg version="1.1"\r
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"\r
- x="0px" y="0px" width="16px" height="16px" viewBox="0 -1 16 16" style="overflow:visible;enable-background:new 0 -1 16 16;"\r
+ x="0px" y="0px" width="16px" height="16px" viewBox="0 0 16 16" style="overflow:visible;enable-background:new 0 0 16 16;"\r
xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M13,8.5l3,1.5l-8,4l-8-4l3-1.5l1.3,0.7L2.7,10L8,12.7l5.3-2.7l-1.7-0.8L13,8.5z M11.7,6.2L13.3,7\r
- L8,9.7L2.7,7l1.7-0.8L3,5.5L0,7l8,4l8-4l-3-1.5L11.7,6.2z M16,4L8,8L0,4l8-4L16,4z M8,6.7L13.3,4L8,1.3L2.7,4L8,6.7z"/>\r
+<path style="fill:#999999;" d="M13.1,10.6L16,12l-8,4l-8-4l2.9-1.4L4,11.1L2.2,12L8,14.9l5.8-2.9L12,11.1L13.1,10.6z M12,7.1L13.8,8\r
+ L8,10.9L2.2,8L4,7.1L2.9,6.6L0,8l8,4l8-4l-2.9-1.4L12,7.1z M16,4L8,8L0,4l8-4L16,4z M8,6.9L13.8,4L8,1.1L2.2,4L8,6.9z"/>\r
</svg>\r
]>\r
<svg version="1.1"\r
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"\r
- x="0px" y="0px" width="16px" height="16px" viewBox="0 -1 16 16" style="overflow:visible;enable-background:new 0 -1 16 16;"\r
+ x="0px" y="0px" width="16px" height="16px" viewBox="0 0 16 16" style="overflow:visible;enable-background:new 0 0 16 16;"\r
xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M13,5.5L16,4L8,0L0,4l3,1.5L0,7l3,1.5L0,10l8,4l8-4l-3-1.5L16,7L13,5.5z M13.3,10L8,12.7L2.7,10\r
- l1.7-0.8L8,11l3.7-1.8L13.3,10z M8,9.7L2.7,7l1.7-0.8L8,8l3.7-1.8L13.3,7L8,9.7z"/>\r
+<path style="fill:#999999;" d="M13.1,10.6L16,12l-8,4l-8-4l2.9-1.4L4,11.1L2.2,12L8,14.9l5.8-2.9L12,11.1L13.1,10.6z M12,7.1L13.8,8\r
+ L8,10.9L2.2,8L4,7.1L2.9,6.6L0,8l8,4l8-4l-2.9-1.4L12,7.1z M8,0L0,4l8,4l8-4L8,0z"/>\r
</svg>\r
]>\r
<svg version="1.1"\r
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"\r
- x="0px" y="0px" width="16px" height="16px" viewBox="0 -1 16 16" style="overflow:visible;enable-background:new 0 -1 16 16;"\r
+ x="0px" y="0px" width="16px" height="16px" viewBox="0 0 16 16" style="overflow:visible;enable-background:new 0 0 16 16;"\r
xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M13,8.5l3,1.5l-8,4l-8-4l3-1.5l1.3,0.7L2.7,10L8,12.7l5.3-2.7l-1.7-0.8L13,8.5z M8,8L3,5.5L0,7l8,4\r
- l8-4l-3-1.5L8,8z M16,4L8,8L0,4l8-4L16,4z M8,6.7L13.3,4L8,1.3L2.7,4L8,6.7z"/>\r
+<path style="fill:#999999;" d="M13.1,10.6L16,12l-8,4l-8-4l2.9-1.4L4,11.1L2.2,12L8,14.9l5.8-2.9L12,11.1L13.1,10.6z M8,9.1L2.9,6.6\r
+ L0,8l8,4l8-4l-2.9-1.4L8,9.1z M16,4L8,8L0,4l8-4L16,4z M8,6.9L13.8,4L8,1.1L2.2,4L8,6.9z"/>\r
</svg>\r
xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M0,6.9l4.6,4l-4.6,4V6.9z M6.9,0H16v2.3h-2.3V16h-2.3V2.3H9.1V16H6.9V8C5.8,8,4.8,7.6,4,6.8\r
- C3.2,6,2.9,5.1,2.9,4c0-1.1,0.4-2,1.2-2.8C4.8,0.4,5.8,0,6.9,0z"/>\r
+<path style="fill:#999999;" d="M8.1,0H16v2h-2v14h-2V2h-2v14H8.1V8C7,8,6.1,7.6,5.3,6.8S4.2,5.1,4.2,4c0-1.1,0.4-2,1.1-2.8\r
+ C6.1,0.4,7,0,8.1,0z M0,6.9l4.6,4l-4.6,4V6.9z"/>\r
</svg>\r
]>\r
<svg version="1.1"\r
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"\r
- x="0px" y="0px" width="16px" height="16px" viewBox="-0.5 0 16 16" style="overflow:visible;enable-background:new -0.5 0 16 16;"\r
+ x="0px" y="0px" width="16px" height="16px" viewBox="0 0 16 16" style="overflow:visible;enable-background:new 0 0 16 16;"\r
xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M2,0v4H1V1H0V0H2z M1,8.2V9h2v1H0V7.7l2-0.9V6H0V5h3v2.3L1,8.2z M3,11v5H0v-1h2v-1H0v-1h2v-1H0v-1H3z\r
- M5,1h10v2H5V1z M5,7h10v2H5V7z M5,13h10v2H5V13z"/>\r
+<path style="fill:#999999;" d="M2,0v4H1V1H0V0H2z M6,13h10v2H6V13z M6,7h10v2H6V7z M6,1v2h10V1H6z M3,9H1V8.2l2-0.9V5H0v1h2v0.8\r
+ L0,7.7V10h3V9z M0,11v1h2v1H0v1h2v1H0v1h3v-5H0z"/>\r
</svg>\r
xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M0,8h2v1H0V8z M13.8,0L14,7H2l0.2-7h0.5L3,6h10l0.2-6H13.8z M2.2,16L2,10h12l-0.2,6h-0.5L13,11H3\r
- l-0.2,5H2.2z M3,8h3v1H3V8z M7,8h2v1H7V8z M10,8h3v1h-3V8z M14,8h2v1h-2V8z"/>\r
+<path style="fill:#999999;" d="M14,10l-0.2,6h-0.5L13,11H3l-0.2,5H2.2L2,10H14z M14,9h2V8h-2V9z M10,8v1h3V8H10z M7,9h2V8H7V9z M3,9\r
+ h3V8H3V9z M0,9h2V8H0V9z M13.8,0h-0.5L13,6H3L2.8,0H2.2L2,7h12L13.8,0z"/>\r
</svg>\r
]>\r
<svg version="1.1"\r
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"\r
- x="0px" y="0px" width="16px" height="16px" viewBox="-0.5 0 16 16" style="overflow:visible;enable-background:new -0.5 0 16 16;"\r
+ x="0px" y="0px" width="16px" height="16px" viewBox="0 0 16 16" style="overflow:visible;enable-background:new 0 0 16 16;"\r
xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M15,5v8l-3,3H5v-3H0.5c-0.1,0-0.3,0-0.4-0.1C0,12.8,0,12.6,0,12.5v-10c0-0.1,0-0.3,0.1-0.4\r
- C0.2,2,0.4,2,0.5,2H4V1c0-0.3,0.1-0.5,0.3-0.7C4.5,0.1,4.7,0,5,0h2c0.3,0,0.5,0.1,0.7,0.3C7.9,0.5,8,0.7,8,1v1h3.5\r
- c0.1,0,0.3,0,0.4,0.1C12,2.2,12,2.4,12,2.5V5H15z M10,4V3H2v1H10z M5,2h2V1H5V2z M14,6H6v9h5v-3h3V6z M13.6,13H12v1.6L13.6,13z"/>\r
+<path style="fill:#999999;" d="M12,5V2.5C12,2.2,11.8,2,11.5,2H8V1c0-0.6-0.5-1-1-1H5C4.5,0,4,0.4,4,1v1H0.5C0.2,2,0,2.2,0,2.5v10\r
+ C0,12.8,0.2,13,0.5,13H5v3h7l3-3V5H12z M5,1L5,1l2,0c0,0,0,0,0,0l0,1H5V1z M2,3h8v1H2V3z M12,14.6V13h1.6L12,14.6z M14,12h-3v3H6V6\r
+ h8V12z"/>\r
</svg>\r
]>\r
<svg version="1.1"\r
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"\r
- x="0px" y="0px" width="16px" height="16px" viewBox="-2.1 0 16 16" style="overflow:visible;enable-background:new -2.1 0 16 16;"\r
- xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
+ x="0px" y="0px" width="16px" height="16px" viewBox="-3.6 -0.2 16 16"\r
+ style="overflow:visible;enable-background:new -3.6 -0.2 16 16;" xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M10.1,0c0.4,0,0.8,0.2,1.1,0.5c0.3,0.3,0.5,0.7,0.5,1.1v4.8L6.4,9.6v2.1H3.2V8.5l5.3-3.2V3.2H0V0\r
- H10.1z M3.2,12.8h3.2V16H3.2V12.8z"/>\r
+<path style="fill:#999999;" d="M1.1,1c0.7-0.7,1.8-1,3.2-1s2.6,0.4,3.4,1.1c0.8,0.7,1.2,1.6,1.2,2.7c0,0.5-0.1,1-0.2,1.4\r
+ C8.4,5.9,7.8,6.5,7,7.1C6.6,7.3,6.4,7.5,6.3,7.5C6.2,7.6,5.9,7.8,5.6,8C5.2,8.2,4.9,8.5,4.8,8.7C4.6,9,4.5,9.6,4.5,10.5H3.8l0-1\r
+ C3.8,8.9,4.1,8,4.6,7c0.6-1,0.8-2.1,0.8-3.3c0-0.9-0.2-1.6-0.5-2.2S4.2,0.8,3.4,0.8c-0.5,0-0.8,0.1-1,0.3C2.3,1.3,2.2,1.5,2.2,1.8\r
+ c0,0.1,0,0.2,0,0.2s0.1,0.1,0.2,0.2l0.2,0.2C2.7,2.6,2.8,2.8,2.9,3C3,3.2,3,3.4,3,3.6c0,0.4-0.1,0.8-0.4,1s-0.6,0.4-1,0.4\r
+ c-0.4,0-0.8-0.2-1.1-0.5C0.2,4.3,0,3.9,0,3.3C0,2.5,0.4,1.7,1.1,1z M2.8,12.8c0.4-0.4,0.8-0.6,1.4-0.6c0.5,0,1,0.2,1.4,0.6\r
+ c0.4,0.4,0.6,0.8,0.6,1.4s-0.2,1-0.6,1.4c-0.4,0.4-0.8,0.6-1.4,0.6c-0.5,0-1-0.2-1.4-0.6c-0.4-0.4-0.6-0.8-0.6-1.4\r
+ S2.4,13.2,2.8,12.8z"/>\r
</svg>\r
]>\r
<svg version="1.1"\r
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"\r
- x="0px" y="0px" width="16px" height="16px" viewBox="0 0 16 16" style="overflow:visible;enable-background:new 0 0 16 16;"\r
+ x="0px" y="0px" width="16px" height="16px" viewBox="-2 -2 16 16" style="overflow:visible;enable-background:new -2 -2 16 16;"\r
xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M0,14.2h1.8V16H0V14.2z M3.6,10.7h1.8v1.8H3.6V10.7z M3.6,14.2h1.8V16H3.6V14.2z M7.1,7.1h1.8v1.8\r
- H7.1V7.1z M7.1,10.7h1.8v1.8H7.1V10.7z M7.1,14.2h1.8V16H7.1V14.2z M10.7,3.6h1.8v1.8h-1.8V3.6z M10.7,7.1h1.8v1.8h-1.8V7.1z\r
- M10.7,10.7h1.8v1.8h-1.8V10.7z M10.7,14.2h1.8V16h-1.8V14.2z M14.2,0H16v1.8h-1.8V0z M14.2,3.6H16v1.8h-1.8V3.6z M14.2,7.1H16v1.8\r
- h-1.8V7.1z M14.2,10.7H16v1.8h-1.8V10.7z M14.2,14.2H16V16h-1.8V14.2z"/>\r
+<path style="fill:#999999;" d="M0,12h2v2H0V12z M3,9h2v2H3V9z M3,12h2v2H3V12z M6,6h2v2H6V6z M6,9h2v2H6V9z M6,12h2v2H6V12z M9,3h2\r
+ v2H9V3z M9,6h2v2H9V6z M9,9h2v2H9V9z M9,12h2v2H9V12z M12,0h2v2h-2V0z M12,3h2v2h-2V3z M12,6h2v2h-2V6z M12,9h2v2h-2V9z M12,12h2v2\r
+ h-2V12z"/>\r
</svg>\r
]>\r
<svg version="1.1"\r
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"\r
- x="0px" y="0px" width="16px" height="16px" viewBox="0 0 16 16" style="overflow:visible;enable-background:new 0 0 16 16;"\r
+ x="0px" y="0px" width="16px" height="16px" viewBox="-0.2 0 16 16" style="overflow:visible;enable-background:new -0.2 0 16 16;"\r
xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M3.9,0h8.8v2.3h-2.2V16H8.3V2.3H6.1V16H3.9V8c-1.1,0-2-0.4-2.7-1.2S0,5.1,0,4c0-1.1,0.4-2,1.1-2.8\r
- C1.9,0.4,2.8,0,3.9,0z M16,14.9l-4.4-4l4.4-4V14.9z"/>\r
+<path style="fill:#999999;" d="M3.9,0h7.9v2h-2v14h-2V2h-2v14H3.9V8c-1.1,0-2-0.4-2.7-1.2S0,5.1,0,4c0-1.1,0.4-2,1.1-2.8\r
+ C1.9,0.4,2.8,0,3.9,0z M15.8,14.9l-4.4-4l4.4-4V14.9z"/>\r
</svg>\r
xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M16,2v14H0V0h14L16,2z M14,2.8L13.2,2H12v5H3V2H2v12h12V2.8z M8,6h2V2H8V6z"/>\r
+<path style="fill:#999999;" d="M13,0H0v16h16V3C15,2,14,1,13,0z M8,1h2v4H8V1z M15,15H1V1h2v5h9V1h0.5c1,1,1.8,1.8,2.5,2.5V15z"/>\r
</svg>\r
]>\r
<svg version="1.1"\r
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"\r
- x="0px" y="0px" width="16px" height="16px" viewBox="-1.4 0 16 16" style="overflow:visible;enable-background:new -1.4 0 16 16;"\r
+ x="0px" y="0px" width="16px" height="16px" viewBox="-2.2 0 16 16" style="overflow:visible;enable-background:new -2.2 0 16 16;"\r
xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M4,0h9.1v2.3h-2.3V16H8.6V2.3H6.3V16H4V8C2.9,8,2,7.6,1.2,6.8C0.4,6,0,5.1,0,4c0-1.1,0.4-2,1.2-2.8\r
- C2,0.4,2.9,0,4,0z"/>\r
+<path style="fill:#999999;" d="M3.9,0h7.9v2h-2v14h-2V2h-2v14H3.9V8c-1.1,0-2-0.4-2.7-1.2S0,5.1,0,4c0-1.1,0.4-2,1.1-2.8\r
+ C1.9,0.4,2.8,0,3.9,0z"/>\r
</svg>\r
<?xml version="1.0" encoding="utf-8"?>\r
<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In -->\r
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [\r
- <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">\r
+ <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">\r
]>\r
<svg version="1.1"\r
- xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"\r
- x="0px" y="0px" width="16px" height="16px" viewBox="-1 0 16 16" style="overflow:visible;enable-background:new -1 0 16 16;"\r
- xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
+ xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"\r
+ x="0px" y="0px" width="16px" height="16px" viewBox="-1 0 16 16" style="overflow:visible;enable-background:new -1 0 16 16;"\r
+ xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
<path style="fill:#999999;" d="M1,7H0V1c0-0.3,0.1-0.5,0.3-0.7C0.5,0.1,0.7,0,1,0h2c0.3,0,0.5,0.1,0.7,0.3C3.9,0.5,4,0.7,4,1v6H3V4\r
- H1V7z M1,3h2V1H1V3z M11,8l-5.5,4.7l-2.2-2.3L2,11.5L5.5,16L12,9L11,8z M8.3,3.5c0.5,0,0.7,0.3,0.7,1V6c0,0.3-0.1,0.5-0.3,0.7\r
- C8.5,6.9,8.3,7,8,7H5V0h3c0.3,0,0.5,0.1,0.7,0.3C8.9,0.5,9,0.7,9,1v1.5C9,3.2,8.8,3.5,8.3,3.5z M8,1H6v2h2V1z M8,4H6v2h2V4z M11,1v5\r
- h3v1h-3c-0.3,0-0.5-0.1-0.7-0.3C10.1,6.5,10,6.3,10,6V1c0-0.3,0.1-0.5,0.3-0.7C10.5,0.1,10.7,0,11,0h3v1H11z"/>\r
-</svg>
\ No newline at end of file
+ H1V7z M1,3h2V1H1V3z M11,8l-5.5,4.7l-2.2-2.3L2,11.5L5.5,16L12,9L11,8z M8.3,3.5c0.5,0,0.7,0.3,0.7,1V6c0,0.3-0.1,0.5-0.3,0.7\r
+ C8.5,6.9,8.3,7,8,7H5V0h3c0.3,0,0.5,0.1,0.7,0.3C8.9,0.5,9,0.7,9,1v1.5C9,3.2,8.8,3.5,8.3,3.5z M8,1H6v2h2V1z M8,4H6v2h2V4z M11,1v5\r
+ h3v1h-3c-0.3,0-0.5-0.1-0.7-0.3C10.1,6.5,10,6.3,10,6V1c0-0.3,0.1-0.5,0.3-0.7C10.5,0.1,10.7,0,11,0h3v1H11z"/>\r
+</svg>\r
xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M0,7h16v1H0V7z M11.4,7.1c1,0.8,1.6,1.7,1.6,2.9c0,1.2-0.5,2.1-1.6,2.9C10.5,13.6,9.3,14,8,14\r
- c-1.3,0-2.5-0.4-3.4-1.1C3.5,12.1,3,11.2,3,10h2c0,0.5,0.3,1,0.9,1.4S7.2,12,8,12s1.5-0.2,2.1-0.6S11,10.5,11,10\r
- c0-0.5-0.3-1-0.9-1.4C9.5,8.2,8.8,8,8,8C6.7,8,5.5,7.6,4.6,6.9C3.5,6.1,3,5.2,3,4c0-1.2,0.5-2.1,1.6-2.9C5.5,0.4,6.7,0,8,0\r
- c1.3,0,2.5,0.4,3.4,1.1C12.5,1.9,13,2.8,13,4h-2c0-0.5-0.3-1-0.9-1.4C9.5,2.2,8.8,2,8,2S6.5,2.2,5.9,2.6C5.3,3,5,3.5,5,4\r
- c0,0.5,0.3,1,0.9,1.4C6.5,5.8,7.2,6,8,6C9.3,6,10.5,6.4,11.4,7.1z"/>\r
+<path style="fill:#999999;" d="M12.8,11c0,1.1-0.4,2.1-1.3,2.9c-0.9,0.8-2,1.1-3.3,1.1c-0.7,0-1.4-0.1-2.1-0.4\r
+ c-0.7-0.3-1.2-0.4-1.3-0.4c-0.3,0-0.4,0.1-0.5,0.2S4.2,14.8,4.1,15H3.6l-0.6-4h0.7c0.3,0.7,0.6,1.2,1,1.7c0.9,1,1.9,1.5,3.2,1.5\r
+ c0.7,0,1.3-0.2,1.8-0.7c0.5-0.4,0.8-1.1,0.8-1.8c0-0.2,0-0.5-0.1-0.7H12.8z M5.8,7.2L7.2,8h4.1c-0.5-0.4-1-0.8-1.7-1.2L7.6,5.6\r
+ C6.9,5.1,6.4,4.7,6,4.3C5.7,3.9,5.5,3.4,5.5,2.9c0-0.6,0.2-1.1,0.7-1.5c0.4-0.4,1-0.5,1.6-0.5c0.8,0,1.5,0.3,2.3,0.8\r
+ s1.4,1.5,1.7,2.9h0.5L11.8,0h-0.4c-0.1,0.2-0.1,0.4-0.2,0.5c-0.1,0.1-0.3,0.2-0.6,0.2c-0.1,0-0.5-0.1-1.2-0.4C8.7,0.1,8.1,0,7.6,0\r
+ C6.4,0,5.4,0.4,4.7,1.1S3.6,2.7,3.6,3.8c0,0.8,0.3,1.6,0.9,2.3C4.8,6.5,5.3,6.8,5.8,7.2z M16,9H0v1h16V9z"/>\r
</svg>\r
]>\r
<svg version="1.1"\r
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"\r
- x="0px" y="0px" width="16px" height="16px" viewBox="0.1 0 16 16" style="overflow:visible;enable-background:new 0.1 0 16 16;"\r
+ x="0px" y="0px" width="16px" height="16px" viewBox="0 0 16 16" style="overflow:visible;enable-background:new 0 0 16 16;"\r
xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M12,6l3.7,10h-2.3l-0.8-2.2H9L8.2,16H6L9.8,6H12z M12.2,12.1l-1.3-3.7h0l-1.3,3.7H12.2z M7.2,9.3\r
- l1.1-3L6,0H3.8L0,10h2.2L3,7.8h3.7L7.2,9.3z M3.6,6.1l1.3-3.7h0l1.3,3.7H3.6z"/>\r
+<path style="fill:#999999;" d="M5,9.2v0.3h3.7L9,9.2C8.7,9.1,8.5,9.1,8.4,9C8.3,8.9,8.2,8.5,8.1,8L6.7,0H6.4L1.2,8.2\r
+ C1,8.6,0.8,8.8,0.6,9C0.5,9.1,0.3,9.1,0,9.2v0.3h2.7V9.2C2.4,9.2,2.1,9.1,2,9.1S1.8,8.9,1.8,8.7c0-0.1,0-0.2,0.1-0.3S2,8.2,2.1,8.1\r
+ l0.8-1.4h3C6,7.2,6,7.6,6,7.7c0.1,0.4,0.1,0.6,0.1,0.8C6.1,8.7,6,8.9,5.9,9S5.4,9.2,5,9.2z M3.2,6.1l2.1-3.4l0.5,3.4H3.2z M6.8,13.7\r
+ c0.3-0.1,0.5-0.2,0.6-0.3c0.2-0.1,0.4-0.4,0.6-0.7l5.2-8.2h0.4l1.3,8c0.1,0.5,0.2,0.9,0.3,1s0.4,0.2,0.8,0.2V14h-4.2v-0.3\r
+ c0.4,0,0.7-0.1,0.9-0.2s0.2-0.3,0.2-0.6c0-0.1,0-0.4-0.1-0.8c0-0.1-0.1-0.4-0.1-1h-3l-0.8,1.4c-0.1,0.1-0.1,0.2-0.1,0.3\r
+ S8.6,13,8.6,13.2c0,0.2,0.1,0.3,0.2,0.4s0.4,0.1,0.7,0.1V14H6.8V13.7z M12.5,10.5L12,7.1L10,10.5H12.5z M16,16H5v-1h11V16z"/>\r
</svg>\r
]>\r
<svg version="1.1"\r
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"\r
- x="0px" y="0px" width="16px" height="16px" viewBox="0 -0.9 16 16" style="overflow:visible;enable-background:new 0 -0.9 16 16;"\r
+ x="0px" y="0px" width="16px" height="16px" viewBox="0 -1.4 16 16" style="overflow:visible;enable-background:new 0 -1.4 16 16;"\r
xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M7.2,4.7l4.7,4.7H9.4L6,6L2.5,9.4H0l4.7-4.7L0,0h2.5L6,3.5L9.4,0h2.5L7.2,4.7z M16,10.9V8.3h-3.5v1.2\r
- h2.4v0.9l-2.4,1.1v2.7H16V13h-2.4v-0.9L16,10.9z"/>\r
+<path style="fill:#999999;" d="M10.7,14.5c1.4-1.5,2.4-2.6,2.9-3.3s0.8-1.4,0.8-2c0-0.6-0.2-1-0.5-1.3c-0.3-0.3-0.7-0.5-1.1-0.5\r
+ c-0.5,0-1,0.2-1.3,0.6c-0.2,0.2-0.4,0.5-0.5,1l-0.3-0.1c0.2-0.9,0.5-1.5,1-1.9c0.5-0.3,1-0.5,1.5-0.5c0.7,0,1.2,0.2,1.6,0.6\r
+ s0.6,0.9,0.6,1.5c0,0.6-0.2,1.3-0.7,1.9c-0.4,0.6-1.4,1.6-2.9,3.2h2.7c0.4,0,0.6,0,0.8-0.1c0.2-0.1,0.3-0.3,0.5-0.7L16,13l-0.7,1.6\r
+ h-4.7V14.5z M0,10.3c0.4,0,0.8-0.2,1-0.3c0.2-0.2,0.7-0.7,1.3-1.5l2.5-3.1L3,2.8C2.3,1.7,1.7,1,1.4,0.7C1.1,0.5,0.7,0.3,0.2,0.3V0H5\r
+ v0.3c-0.5,0-0.8,0-0.9,0.1C3.9,0.5,3.8,0.6,3.8,0.8c0,0.1,0.1,0.3,0.2,0.5C4,1.5,4,1.6,4.1,1.7l1.7,2.4l1.8-2.2\r
+ C7.8,1.6,8,1.3,8.1,1.2C8.2,1,8.2,0.9,8.2,0.8c0-0.2-0.1-0.4-0.3-0.5c-0.1,0-0.4-0.1-0.8-0.1V0h3.8v0.3c-0.4,0-0.8,0.1-1,0.2\r
+ C9.5,0.7,9.1,1.1,8.5,1.8L6.2,4.7l3,4.4C9.6,9.6,9.8,9.9,10,10s0.5,0.2,0.9,0.3v0.3H6.3v-0.3c0.5,0,0.8,0,0.9-0.1S7.5,10,7.5,9.8\r
+ c0-0.2-0.1-0.4-0.4-0.8C6.9,8.6,6.3,7.6,5.2,6L3.3,8.4C3,8.7,2.8,9,2.7,9.1C2.6,9.4,2.5,9.6,2.5,9.7c0,0.2,0.1,0.4,0.4,0.5\r
+ c0.2,0.1,0.4,0.1,0.8,0.1v0.3H0V10.3z"/>\r
</svg>\r
xml:space="preserve" preserveAspectRatio="xMinYMid meet">\r
<defs>\r
</defs>\r
-<path style="fill:#999999;" d="M7.2,9.4l4.7,4.7H9.4L6,10.7l-3.5,3.5H0l4.7-4.7L0,4.7h2.5L6,8.2l3.5-3.5h2.5L7.2,9.4z M16,2.7V0\r
- h-3.5v1.2h2.4v0.9l-2.4,1.1v2.7H16V4.7h-2.4V3.8L16,2.7z"/>\r
+<path style="fill:#999999;" d="M10.7,7.9c1.4-1.5,2.4-2.6,2.9-3.3s0.8-1.4,0.8-2c0-0.6-0.2-1-0.5-1.3c-0.3-0.3-0.7-0.5-1.1-0.5\r
+ c-0.5,0-1,0.2-1.3,0.6c-0.2,0.2-0.4,0.5-0.5,1l-0.3-0.1c0.2-0.9,0.5-1.5,1-1.9c0.5-0.3,1-0.5,1.5-0.5c0.7,0,1.2,0.2,1.6,0.6\r
+ s0.6,0.9,0.6,1.5c0,0.6-0.2,1.3-0.7,1.9c-0.4,0.6-1.4,1.6-2.9,3.2h2.7c0.4,0,0.6,0,0.8-0.1c0.2-0.1,0.3-0.3,0.5-0.7L16,6.4l-0.7,1.6\r
+ h-4.7V7.9z M0,14.8c0.4,0,0.8-0.2,1-0.3c0.2-0.2,0.7-0.7,1.3-1.5l2.5-3.1L3,7.3C2.3,6.2,1.7,5.5,1.4,5.3C1.1,5,0.7,4.8,0.2,4.8V4.5\r
+ H5v0.3c-0.5,0-0.8,0-0.9,0.1C3.9,5,3.8,5.1,3.8,5.3c0,0.1,0.1,0.3,0.2,0.5C4,6,4,6.1,4.1,6.2l1.7,2.4l1.8-2.2C7.8,6.1,8,5.9,8.1,5.7\r
+ c0.1-0.1,0.1-0.2,0.1-0.3c0-0.2-0.1-0.4-0.3-0.5c-0.1,0-0.4-0.1-0.8-0.1V4.5h3.8v0.3c-0.4,0-0.8,0.1-1,0.2C9.5,5.2,9.1,5.7,8.5,6.3\r
+ L6.2,9.2l3,4.4c0.3,0.5,0.6,0.8,0.8,0.9s0.5,0.2,0.9,0.3v0.3H6.3v-0.3c0.5,0,0.8,0,0.9-0.1s0.3-0.2,0.3-0.4c0-0.2-0.1-0.4-0.4-0.8\r
+ c-0.2-0.4-0.9-1.4-2-2.9l-1.9,2.4c-0.3,0.3-0.5,0.6-0.6,0.8c-0.2,0.3-0.3,0.4-0.3,0.6c0,0.2,0.1,0.4,0.4,0.5\r
+ c0.2,0.1,0.4,0.1,0.8,0.1v0.3H0V14.8z"/>\r
</svg>\r