From 7204a990e52aa84f94324c957dbb60b6cec74193 Mon Sep 17 00:00:00 2001 From: Mathew May Date: Thu, 28 Feb 2019 12:01:40 +0800 Subject: [PATCH 01/18] MDL-64506 theme_more: Remove More from core --- theme/more/classes/privacy/provider.php | 46 ------ theme/more/config.php | 40 ----- theme/more/db/install.php | 47 ------ theme/more/db/upgrade.php | 49 ------- theme/more/lang/en/theme_more.php | 82 ----------- theme/more/less/moodle.less | 19 --- theme/more/lib.php | 181 ----------------------- theme/more/pix/background.jpg | Bin 4451 -> 0 bytes theme/more/pix/favicon.ico | Bin 1150 -> 0 bytes theme/more/pix/screenshot.jpg | Bin 51095 -> 0 bytes theme/more/settings.php | 185 ------------------------ theme/more/style/custom.css | 40 ----- theme/more/version.php | 33 ----- 13 files changed, 722 deletions(-) delete mode 100644 theme/more/classes/privacy/provider.php delete mode 100644 theme/more/config.php delete mode 100644 theme/more/db/install.php delete mode 100644 theme/more/db/upgrade.php delete mode 100644 theme/more/lang/en/theme_more.php delete mode 100644 theme/more/less/moodle.less delete mode 100644 theme/more/lib.php delete mode 100644 theme/more/pix/background.jpg delete mode 100644 theme/more/pix/favicon.ico delete mode 100644 theme/more/pix/screenshot.jpg delete mode 100644 theme/more/settings.php delete mode 100644 theme/more/style/custom.css delete mode 100644 theme/more/version.php diff --git a/theme/more/classes/privacy/provider.php b/theme/more/classes/privacy/provider.php deleted file mode 100644 index c74f2cfe196fd..0000000000000 --- a/theme/more/classes/privacy/provider.php +++ /dev/null @@ -1,46 +0,0 @@ -. - -/** - * Privacy Subsystem implementation for theme_more. - * - * @package theme_more - * @copyright 2018 Andrew Nicols - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ - -namespace theme_more\privacy; - -defined('MOODLE_INTERNAL') || die(); - -/** - * The more theme does not store any data. - * - * @copyright 2018 Andrew Nicols - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ -class provider implements \core_privacy\local\metadata\null_provider { - - /** - * Get the language string identifier with the component's language - * file to explain why this plugin stores no data. - * - * @return string - */ - public static function get_reason() : string { - return 'privacy:metadata'; - } -} diff --git a/theme/more/config.php b/theme/more/config.php deleted file mode 100644 index 09991ee3e6139..0000000000000 --- a/theme/more/config.php +++ /dev/null @@ -1,40 +0,0 @@ -. - -/** - * Theme More config file. - * - * @package theme_more - * @copyright 2014 Frédéric Massart - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ - -$THEME->name = 'more'; -$THEME->parents = array('clean', 'bootstrapbase'); - -$THEME->doctype = 'html5'; -$THEME->sheets = array('custom'); -$THEME->lessfile = 'moodle'; -$THEME->usefallback = true; -$THEME->parents_exclude_sheets = array('bootstrapbase' => array('moodle'), 'clean' => array('custom')); -$THEME->lessvariablescallback = 'theme_more_less_variables'; -$THEME->extralesscallback = 'theme_more_extra_less'; -$THEME->yuicssmodules = array(); -$THEME->enable_dock = true; -$THEME->editor_sheets = array(); - -$THEME->rendererfactory = 'theme_overridden_renderer_factory'; -$THEME->csspostprocess = 'theme_more_process_css'; diff --git a/theme/more/db/install.php b/theme/more/db/install.php deleted file mode 100644 index 2544f417efba3..0000000000000 --- a/theme/more/db/install.php +++ /dev/null @@ -1,47 +0,0 @@ -. - -/** - * Theme More install. - * - * @package theme_more - * @copyright 2014 Frédéric Massart - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ - -defined('MOODLE_INTERNAL') || die(); - -/** - * Theme_more install function. - * - * @return void - */ -function xmldb_theme_more_install() { - global $CFG; - - // Set the default background. - $fs = get_file_storage(); - - $filerecord = new stdClass(); - $filerecord->component = 'theme_more'; - $filerecord->contextid = context_system::instance()->id; - $filerecord->userid = get_admin()->id; - $filerecord->filearea = 'backgroundimage'; - $filerecord->filepath = '/'; - $filerecord->itemid = 0; - $filerecord->filename = 'background.jpg'; - $fs->create_file_from_pathname($filerecord, $CFG->dirroot . '/theme/more/pix/background.jpg'); -} diff --git a/theme/more/db/upgrade.php b/theme/more/db/upgrade.php deleted file mode 100644 index 1573e64c2ee50..0000000000000 --- a/theme/more/db/upgrade.php +++ /dev/null @@ -1,49 +0,0 @@ -. - -/** - * Theme More upgrade. - * - * @package theme_more - * @copyright 2014 Frédéric Massart - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ - -defined('MOODLE_INTERNAL') || die(); - -/** - * Theme_more upgrade function. - * - * @param int $oldversion The version we upgrade from. - * @return bool - */ -function xmldb_theme_more_upgrade($oldversion) { - global $CFG; - - // Automatically generated Moodle v3.3.0 release upgrade line. - // Put any upgrade step following this. - - // Automatically generated Moodle v3.4.0 release upgrade line. - // Put any upgrade step following this. - - // Automatically generated Moodle v3.5.0 release upgrade line. - // Put any upgrade step following this. - - // Automatically generated Moodle v3.6.0 release upgrade line. - // Put any upgrade step following this. - - return true; -} diff --git a/theme/more/lang/en/theme_more.php b/theme/more/lang/en/theme_more.php deleted file mode 100644 index 361867f5528e4..0000000000000 --- a/theme/more/lang/en/theme_more.php +++ /dev/null @@ -1,82 +0,0 @@ -. - -/** - * Theme More lang file. - * - * @package theme_more - * @copyright 2014 Frédéric Massart - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ - -$string['backgroundfixed'] = 'Background fixed'; -$string['backgroundfixed_desc'] = 'Use this setting to fix the background image to the page.'; -$string['backgroundimage'] = 'Background image'; -$string['backgroundimage_desc'] = 'The image to display as a background of the site.'; -$string['backgroundposition'] = 'Background position'; -$string['backgroundposition_desc'] = 'The position of the background image.'; -$string['backgroundpositioncenterbottom'] = 'Center bottom'; -$string['backgroundpositioncentercenter'] = 'Center center'; -$string['backgroundpositioncentertop'] = 'Center top'; -$string['backgroundpositionleftbottom'] = 'Left bottom'; -$string['backgroundpositionleftcenter'] = 'Left center'; -$string['backgroundpositionlefttop'] = 'Left top'; -$string['backgroundpositionrightbottom'] = 'Right bottom'; -$string['backgroundpositionrightcenter'] = 'Right center'; -$string['backgroundpositionrighttop'] = 'Right top'; -$string['backgroundrepeat'] = 'Background repeat'; -$string['backgroundrepeat_desc'] = 'Defines the way the background image will be repeated.'; -$string['backgroundrepeatnorepeat'] = 'No repeat'; -$string['backgroundrepeatrepeat'] = 'Repeat'; -$string['backgroundrepeatrepeatx'] = 'Repeat horizontally'; -$string['backgroundrepeatrepeaty'] = 'Repeat vertically'; -$string['bodybackground'] = 'Background colour'; -$string['bodybackground_desc'] = 'The main colour to use for the background.'; -$string['choosereadme'] = '

More is a theme that allows you to easily customise Moodle\'s look and feel directly from the web interface.

-

Visit the admin settings to change colours, add an image as a background, add your logo and more.

'; - -$string['configtitle'] = 'More'; -$string['contentbackground'] = 'Main content background colour'; -$string['contentbackground_desc'] = 'The background colour of the main content of the site, leave empty for none.'; - -$string['customcss'] = 'Custom CSS'; -$string['customcssdesc'] = 'Whatever CSS rules you add to this textarea will be reflected in every page, making for easier customization of this theme.'; - -$string['footnote'] = 'Footnote'; -$string['footnotedesc'] = 'Whatever you add to this textarea will be displayed in the footer throughout your Moodle site.'; - -$string['invert'] = 'Invert navbar'; -$string['invertdesc'] = 'Swaps text and background for the navbar at the top of the page between black and white.'; - -$string['linkcolor'] = 'Link colour'; -$string['linkcolor_desc'] = 'The colour of the links.'; -$string['logo'] = 'Logo'; -$string['logodesc'] = 'The logo is only displayed in the header of the front page and login page.
If the height of your logo is more than 75px add div.logo {height: 100px;} to the Custom CSS box below, amending accordingly if the height is other than 100px. If a logo is not added here, the logo in Appearance > Logos will be used.'; - -$string['pluginname'] = 'More'; -$string['privacy:metadata'] = 'The More theme does not store any personal data about any user.'; -$string['region-side-post'] = 'Right'; -$string['region-side-pre'] = 'Left'; -$string['secondarybackground'] = 'Secondary background colour'; -$string['secondarybackground_desc'] = 'The background colour of any secondary content, such as blocks.'; -$string['sitelogo'] = 'Site logo'; -$string['sitename'] = 'Display site name along with small logo'; -$string['sitenamedesc'] = 'If there is no small logo, the site name is always displayed in the navigation bar. If a small logo is set, it may be displayed with or without the site name.'; -$string['smalllogo'] = 'Small logo'; -$string['smalllogodesc'] = 'The small logo is displayed in the navigation bar. If there is a header logo for the front page and login page, the small logo is not displayed on these pages. If a logo is not added here, the compact logo in Appearance > Logos will be used.'; -$string['textcolor'] = 'Text colour'; -$string['textcolor_desc'] = 'The colour of the text.'; - diff --git a/theme/more/less/moodle.less b/theme/more/less/moodle.less deleted file mode 100644 index b7d8a31596cc0..0000000000000 --- a/theme/more/less/moodle.less +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Import all the rules from the parent. - */ -@import "../../bootstrapbase/less/moodle.less"; - -// Set the secondary background. -@tableBackgroundAccent: darken(@wellBackground, 5%); -@tableBackgroundHover: darken(@wellBackground, 10%); -@tableBorder: @wellBorder; -@navbarBackground: @wellBackground; -@formActionsBackground: @wellBackground; -@paginationActiveBackground: @wellBackground; -@hrBorder: darken(@wellBackground, 5%); - -// Remove unwanted text shadow, this can look odd with random colours. -.breadcrumb li, -.nav-header { - text-shadow: none; -} \ No newline at end of file diff --git a/theme/more/lib.php b/theme/more/lib.php deleted file mode 100644 index 0162903e51139..0000000000000 --- a/theme/more/lib.php +++ /dev/null @@ -1,181 +0,0 @@ -. - -/** - * Theme More lib. - * - * @package theme_more - * @copyright 2014 Frédéric Massart - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ - -/** - * Extra LESS code to inject. - * - * This will generate some LESS code from the settings used by the user. We cannot use - * the {@link theme_more_less_variables()} here because we need to create selectors or - * alter existing ones. - * - * @param theme_config $theme The theme config object. - * @return string Raw LESS code. - */ -function theme_more_extra_less($theme) { - $content = ''; - $imageurl = $theme->setting_file_url('backgroundimage', 'backgroundimage'); - // Sets the background image, and its settings. - if (!empty($imageurl)) { - $content .= 'body { '; - $content .= "background-image: url('$imageurl');"; - if (!empty($theme->settings->backgroundfixed)) { - $content .= 'background-attachment: fixed;'; - } - if (!empty($theme->settings->backgroundposition)) { - $content .= 'background-position: ' . str_replace('_', ' ', $theme->settings->backgroundposition) . ';'; - } - if (!empty($theme->settings->backgroundrepeat)) { - $content .= 'background-repeat: ' . $theme->settings->backgroundrepeat . ';'; - } - $content .= ' }'; - } - // If there the user wants a background for the content, we need to make it look consistent, - // therefore we need to round its borders, and adapt the border colour. - if (!empty($theme->settings->contentbackground)) { - $content .= ' - #region-main { - .well; - background-color: ' . $theme->settings->contentbackground . '; - border-color: darken(' . $theme->settings->contentbackground . ', 7%); - }'; - } - return $content; -} - -/** - * Returns variables for LESS. - * - * We will inject some LESS variables from the settings that the user has defined - * for the theme. No need to write some custom LESS for this. - * - * @param theme_config $theme The theme config object. - * @return array of LESS variables without the @. - */ -function theme_more_less_variables($theme) { - $variables = array(); - if (!empty($theme->settings->bodybackground)) { - $variables['bodyBackground'] = $theme->settings->bodybackground; - } - if (!empty($theme->settings->textcolor)) { - $variables['textColor'] = $theme->settings->textcolor; - } - if (!empty($theme->settings->linkcolor)) { - $variables['linkColor'] = $theme->settings->linkcolor; - } - if (!empty($theme->settings->secondarybackground)) { - $variables['wellBackground'] = $theme->settings->secondarybackground; - } - return $variables; -} - -/** - * Parses CSS before it is cached. - * - * This function can make alterations and replace patterns within the CSS. - * - * @param string $css The CSS - * @param theme_config $theme The theme config object. - * @return string The parsed CSS The parsed CSS. - */ -function theme_more_process_css($css, $theme) { - global $OUTPUT; - - // Set the background image for the logo. - $logo = $OUTPUT->get_logo_url(null, 100); - $css = theme_more_set_logo($css, $logo); - - // Set custom CSS. - if (!empty($theme->settings->customcss)) { - $customcss = $theme->settings->customcss; - } else { - $customcss = null; - } - $css = theme_more_set_customcss($css, $customcss); - - return $css; -} - -/** - * Adds the logo to CSS. - * - * @param string $css The CSS. - * @param string $logo The URL of the logo. - * @return string The parsed CSS - */ -function theme_more_set_logo($css, $logo) { - $tag = '[[setting:logo]]'; - $replacement = $logo; - if (is_null($replacement)) { - $replacement = ''; - } - - $css = str_replace($tag, $replacement, $css); - - return $css; -} - -/** - * Serves any files associated with the theme settings. - * - * @param stdClass $course - * @param stdClass $cm - * @param context $context - * @param string $filearea - * @param array $args - * @param bool $forcedownload - * @param array $options - * @return bool - */ -function theme_more_pluginfile($course, $cm, $context, $filearea, $args, $forcedownload, array $options = array()) { - if ($context->contextlevel == CONTEXT_SYSTEM && - ($filearea === 'logo' || $filearea === 'smalllogo' || $filearea === 'backgroundimage')) { - $theme = theme_config::load('more'); - // By default, theme files must be cache-able by both browsers and proxies. - if (!array_key_exists('cacheability', $options)) { - $options['cacheability'] = 'public'; - } - return $theme->setting_file_serve($filearea, $args, $forcedownload, $options); - } else { - send_file_not_found(); - } -} - -/** - * Adds any custom CSS to the CSS before it is cached. - * - * @param string $css The original CSS. - * @param string $customcss The custom CSS to add. - * @return string The CSS which now contains our custom CSS. - */ -function theme_more_set_customcss($css, $customcss) { - $tag = '[[setting:customcss]]'; - $replacement = $customcss; - if (is_null($replacement)) { - $replacement = ''; - } - - $css = str_replace($tag, $replacement, $css); - - return $css; -} diff --git a/theme/more/pix/background.jpg b/theme/more/pix/background.jpg deleted file mode 100644 index 808052dbec7209349d71bee8498047de209fba8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4451 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 F{|&|ssK)>R diff --git a/theme/more/pix/favicon.ico b/theme/more/pix/favicon.ico deleted file mode 100644 index eea02482c3702d68518faecf6021610628fc1b62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1150 zcmZQzU<5(|0R|wcz>vYhz#zuJz@P!dKp~(AL>x#lFaYI*xFHzKA4G&k&1VMn>d%rI zwV%y(8owCW_kLwpuK&WI*Zx&OyZx($Ue{M`t4ZIOI}iL~G@1NOU8nz>h4JL?IxsIl z_2&Wge*@~j0@N?7+yK_!2h{%)sDB?&KQB-}tLfx#Yk>N{1N9$Cnf8?_dFod-tvaCn zHJ?j>`u_vM4%K5*#!2DJYx16+Ui*OS(h;qHg)2ik7~#QJ(w zpBR8)P@-A;;lEzPyGKslZxy90--Gne0K32Y>uH^*^_p`pwZ{#&>;#3E!?k_3umTy&+fD zvt4geZ-;zhTLj7ze%3jbHFrxBc^9olamF_I!P%*Z1w2PT#lx z`V+o=v7YfgbHe<6(v>aqYO?ZcFGR(pe)aYa`0wc8{NL2X{J(~}=6@|iyUUi1H;avW zzpvHr`Fcmc@7q0~{rfGZeoG8r_JgCOrk|mmxwH`f|DS;YgdYM82Vq4ttN`T0Km#KK!vlE+hCe_I(+2=Z CziV^= diff --git a/theme/more/pix/screenshot.jpg b/theme/more/pix/screenshot.jpg deleted file mode 100644 index e10dc4aef443def86bf97aa392795cf251c533c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51095 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 -
+

{{#str}}selectedcompetency, tool_lp{{/str}}

diff --git a/blocks/myoverview/templates/placeholders.mustache b/blocks/myoverview/templates/placeholders.mustache index 5bbe7efffd342..8410211db7929 100644 --- a/blocks/myoverview/templates/placeholders.mustache +++ b/blocks/myoverview/templates/placeholders.mustache @@ -34,25 +34,25 @@ {{#list}}
  • -
    +
  • -
    +
  • -
    +
  • -
    +
    diff --git a/blocks/myoverview/templates/view-list.mustache b/blocks/myoverview/templates/view-list.mustache index a39a9bbbad808..5e588a3909d8f 100644 --- a/blocks/myoverview/templates/view-list.mustache +++ b/blocks/myoverview/templates/view-list.mustache @@ -64,11 +64,11 @@
    {{#hasprogress}} -
    +
    {{> block_myoverview/progress-bar}}
    {{/hasprogress}} -
    +
    {{> block_myoverview/course-action-menu }}
    diff --git a/course/classes/management_renderer.php b/course/classes/management_renderer.php index d2e709250ecc2..c0f25d0d09832 100644 --- a/course/classes/management_renderer.php +++ b/course/classes/management_renderer.php @@ -453,8 +453,8 @@ public function category_bulk_actions(core_course_category $category = null) { $form .= html_writer::end_div(); $html .= html_writer::start_div('detail-pair row yui3-g m-y-1'); - $html .= html_writer::div(html_writer::span(get_string('sorting')), 'pair-key span3 col-md-3 yui3-u-1-4'); - $html .= html_writer::div($form, 'pair-value span9 col-md-9 yui3-u-3-4'); + $html .= html_writer::div(html_writer::span(get_string('sorting')), 'pair-key col-md-3 yui3-u-1-4'); + $html .= html_writer::div($form, 'pair-value col-md-9 yui3-u-3-4'); $html .= html_writer::end_div(); } if (core_course_category::can_change_parent_any()) { diff --git a/course/templates/activityinstance.mustache b/course/templates/activityinstance.mustache index 1ed95a8b7fef2..84169aed5fe8f 100644 --- a/course/templates/activityinstance.mustache +++ b/course/templates/activityinstance.mustache @@ -48,7 +48,7 @@
-
+
{{#completionstatus.icon}} {{{completionstatus.icon}}} {{/completionstatus.icon}} @@ -56,7 +56,7 @@ {{/completionstatus.icon}}
-
+
{{{completionstatus.string}}}
diff --git a/course/templates/defaultactivitycompletion.mustache b/course/templates/defaultactivitycompletion.mustache index 066370f49c509..4cccedb68b81a 100644 --- a/course/templates/defaultactivitycompletion.mustache +++ b/course/templates/defaultactivitycompletion.mustache @@ -68,7 +68,7 @@ {{{formattedname}}}
-
+
{{#completionstatus.icon}} {{{completionstatus.icon}}} {{/completionstatus.icon}} @@ -76,7 +76,7 @@ {{/completionstatus.icon}}
-
+
{{{completionstatus.string}}}
diff --git a/group/templates/index.mustache b/group/templates/index.mustache index e68bdaf2da4d1..a86b15a52e522 100644 --- a/group/templates/index.mustache +++ b/group/templates/index.mustache @@ -78,7 +78,7 @@
-
+
-
+