From c2dde7eebc03daf6b2095839301fed6aa0830e11 Mon Sep 17 00:00:00 2001 From: Damyon Wiese Date: Thu, 19 Jan 2017 14:06:07 +0800 Subject: [PATCH] MDL-40759 icons: Split pix_icon from activity_icon Activity icons always use the standard icon renderer. --- backup/moodle2/backup_activity_task.class.php | 2 +- .../moodle2/restore_activity_task.class.php | 2 +- backup/util/ui/renderer.php | 2 +- blocks/course_overview/renderer.php | 2 +- lib/outputcomponents.php | 12 ++++++++ lib/outputrenderers.php | 30 +++++++++++++++++++ lib/upgrade.txt | 5 ++-- 7 files changed, 48 insertions(+), 7 deletions(-) diff --git a/backup/moodle2/backup_activity_task.class.php b/backup/moodle2/backup_activity_task.class.php index f47eda68c39..cd93be0e08c 100644 --- a/backup/moodle2/backup_activity_task.class.php +++ b/backup/moodle2/backup_activity_task.class.php @@ -271,7 +271,7 @@ abstract class backup_activity_task extends backup_task { // - section_included setting (if exists) $settingname = $settingprefix . 'included'; $activity_included = new backup_activity_generic_setting($settingname, base_setting::IS_BOOLEAN, true); - $activity_included->get_ui()->set_icon(new pix_icon('icon', get_string('pluginname', $this->modulename), + $activity_included->get_ui()->set_icon(new activity_icon('icon', get_string('pluginname', $this->modulename), $this->modulename, array('class' => 'iconlarge icon-post'))); $this->add_setting($activity_included); // Look for "activities" root setting diff --git a/backup/moodle2/restore_activity_task.class.php b/backup/moodle2/restore_activity_task.class.php index 69221c82071..56b0b98d547 100644 --- a/backup/moodle2/restore_activity_task.class.php +++ b/backup/moodle2/restore_activity_task.class.php @@ -287,7 +287,7 @@ abstract class restore_activity_task extends restore_task { // - section_included setting (if exists) $settingname = $settingprefix . 'included'; $activity_included = new restore_activity_generic_setting($settingname, base_setting::IS_BOOLEAN, true); - $activity_included->get_ui()->set_icon(new pix_icon('icon', get_string('pluginname', $this->modulename), + $activity_included->get_ui()->set_icon(new activity_icon('icon', get_string('pluginname', $this->modulename), $this->modulename, array('class' => 'iconlarge icon-post'))); $this->add_setting($activity_included); // Look for "activities" root setting diff --git a/backup/util/ui/renderer.php b/backup/util/ui/renderer.php index 0cb151ba50f..77f179c7061 100644 --- a/backup/util/ui/renderer.php +++ b/backup/util/ui/renderer.php @@ -171,7 +171,7 @@ class core_backup_renderer extends plugin_renderer_base { $table->data = array(); } $name = get_string('pluginname', $activity->modulename); - $icon = new pix_icon('icon', $name, $activity->modulename, array('class' => 'iconlarge icon-pre')); + $icon = new activity_icon('icon', $name, $activity->modulename, array('class' => 'iconlarge icon-pre')); $table->data[] = array( $this->output->render($icon).$name, $activity->title, diff --git a/blocks/course_overview/renderer.php b/blocks/course_overview/renderer.php index 420e241657a..206f575fc95 100644 --- a/blocks/course_overview/renderer.php +++ b/blocks/course_overview/renderer.php @@ -184,7 +184,7 @@ class block_course_overview_renderer extends plugin_renderer_base { $output .= html_writer::start_tag('div', array('class' => 'activity_overview')); $url = new moodle_url("/mod/$module/index.php", array('id' => $cid)); $modulename = get_string('modulename', $module); - $icontext = html_writer::link($url, $this->output->pix_icon('icon', $modulename, 'mod_'.$module, array('class'=>'iconlarge'))); + $icontext = html_writer::link($url, $this->output->activity_icon('icon', $modulename, 'mod_'.$module, array('class'=>'iconlarge'))); if (get_string_manager()->string_exists("activityoverview", $module)) { $icontext .= get_string("activityoverview", $module); } else { diff --git a/lib/outputcomponents.php b/lib/outputcomponents.php index 9ba9341333a..2ef36e4d3e1 100644 --- a/lib/outputcomponents.php +++ b/lib/outputcomponents.php @@ -705,6 +705,18 @@ class pix_icon implements renderable, templatable { } } +/** + * Data structure representing an activity icon. + * + * The difference is that activity icons will always render with the standard icon system (no font icons). + * + * @copyright 2017 Damyon Wiese + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + * @package core + */ +class activity_icon extends pix_icon { +} + /** * Data structure representing an emoticon image * diff --git a/lib/outputrenderers.php b/lib/outputrenderers.php index 179f80c68ca..0be6043ca77 100644 --- a/lib/outputrenderers.php +++ b/lib/outputrenderers.php @@ -2028,6 +2028,36 @@ class core_renderer extends renderer_base { return html_writer::tag('a', $icon.$text, $attributes); } + /** + * Return HTML for an activity_icon. + * + * Theme developers: DO NOT OVERRIDE! Please override function + * {@link core_renderer::render_activity_icon()} instead. + * + * @param string $pix short pix name + * @param string $alt mandatory alt attribute + * @param string $component standard compoennt name like 'moodle', 'mod_forum', etc. + * @param array $attributes htm lattributes + * @return string HTML fragment + */ + public function activity_icon($pix, $alt, $component='moodle', array $attributes = null) { + $icon = new activity_icon($pix, $alt, $component, $attributes); + return $this->render($icon); + } + + /** + * Renders a pix_icon widget and returns the HTML to display it. + * + * @param pix_icon $icon + * @return string HTML fragment + */ + protected function render_activity_icon(activity_icon $icon) { + global $PAGE; + + $system = \core\output\icon_system::instance('standard'); + return $system->render_pix_icon($this, $icon); + } + /** * Return HTML for a pix_icon. * diff --git a/lib/upgrade.txt b/lib/upgrade.txt index 6e93c9e3bf0..2f44197cf2b 100644 --- a/lib/upgrade.txt +++ b/lib/upgrade.txt @@ -3,11 +3,10 @@ information provided here is intended especially for developers. === 3.3 === * Moodle has support for font-awesome icons. Plugins should use the xxx_get_fontawesome_icon_map callback to map their custom icons to one from font-awesome. - -=== 3.3 === - * The method moodleform::after_definition() has been added and can now be used to add some logic to be performed after the form's definition was set. This is useful for intermediate subclasses. +* Activity icons have been split from standard icons. Use $OUTPUT->activity_icon instead of $OUTPUT->pix_icon for these + type of icons (the coloured main icon for each activity). * YUI module moodle-core-formautosubmit has been removed, use jquery .change() instead (see lib/templates/url_select.mustache for an example) * $mform->init_javascript_enhancement() is deprecated and no longer does anything. Existing uses of smartselect enhancement