MDL-71457 theme_boost: activity icon styling

This commit is contained in:
Bas Brands 2021-09-20 11:53:23 +02:00
parent 5958c0df0c
commit f2ddd23ec1
44 changed files with 319 additions and 158 deletions

View file

@ -57,6 +57,9 @@ class content_item {
/** @var string $componentname the name of the component from which this content item originates. */
private $componentname;
/** @var string $purpose the purpose type of this component. */
private $purpose;
/**
* The content_item constructor.
*
@ -68,9 +71,10 @@ class content_item {
* @param string $help The description of the item.
* @param int $archetype the archetype for the content item (see MOD_ARCHETYPE_X definitions in lib/moodlelib.php).
* @param string $componentname the name of the component/plugin with which this content item is associated.
* @param string $purpose the purpose type of this component.
*/
public function __construct(int $id, string $name, title $title, \moodle_url $link, string $icon, string $help,
int $archetype, string $componentname) {
int $archetype, string $componentname, string $purpose) {
$this->id = $id;
$this->name = $name;
$this->title = $title;
@ -79,6 +83,7 @@ class content_item {
$this->help = $help;
$this->archetype = $archetype;
$this->componentname = $componentname;
$this->purpose = $purpose;
}
/**
@ -151,4 +156,13 @@ class content_item {
public function get_icon(): string {
return $this->icon;
}
/**
* Get purpose for this item.
*
* @return string
*/
public function get_purpose(): string {
return $this->purpose;
}
}

View file

@ -68,6 +68,7 @@ class course_content_item_exporter extends exporter {
'help' => ['type' => PARAM_RAW, 'description' => 'Html description / help for the content item'],
'archetype' => ['type' => PARAM_RAW, 'description' => 'The archetype of the module exposing the content item'],
'componentname' => ['type' => PARAM_TEXT, 'description' => 'The name of the component exposing the content item'],
'purpose' => ['type' => PARAM_TEXT, 'description' => 'The purpose of the component exposing the content item'],
];
}
@ -136,7 +137,8 @@ class course_content_item_exporter extends exporter {
'componentname' => $this->contentitem->get_component_name(),
'favourite' => $favourite,
'legacyitem' => ($this->contentitem->get_id() == -1),
'recommended' => $recommended
'recommended' => $recommended,
'purpose' => $this->contentitem->get_purpose()
];
return $properties;

View file

@ -94,9 +94,9 @@ class content_item_readonly_repository implements content_item_readonly_reposito
// modname:link, i.e. lti:http://etc...
// We need to grab the module name out to create the componentname.
$modname = (strpos($item->name, ':') !== false) ? explode(':', $item->name)[0] : $item->name;
$purpose = plugin_supports('mod', $modname, FEATURE_MOD_PURPOSE, MOD_PURPOSE_OTHER);
return new content_item($item->id, $item->name, $item->title, $item->link, $item->icon, $item->help ?? '',
$item->archetype, 'mod_' . $modname);
$item->archetype, 'mod_' . $modname, $purpose);
}
/**
@ -202,16 +202,18 @@ class content_item_readonly_repository implements content_item_readonly_reposito
// If the module chooses to implement the hook, this may be thrown away.
$help = $this->get_core_module_help_string($mod->name);
$archetype = plugin_supports('mod', $mod->name, FEATURE_MOD_ARCHETYPE, MOD_ARCHETYPE_OTHER);
$purpose = plugin_supports('mod', $mod->name, FEATURE_MOD_PURPOSE, MOD_PURPOSE_OTHER);
$contentitem = new content_item(
$mod->id,
$mod->name,
new lang_string_title("modulename", $mod->name),
new \moodle_url(''), // No course scope, so just an empty link.
$OUTPUT->pix_icon('icon', '', $mod->name, ['class' => 'icon']),
$OUTPUT->pix_icon('icon', '', $mod->name, ['class' => 'icon activityicon']),
$help,
$archetype,
'mod_' . $mod->name
'mod_' . $mod->name,
$purpose,
);
$modcontentitemreference = clone($contentitem);
@ -265,16 +267,18 @@ class content_item_readonly_repository implements content_item_readonly_reposito
// If the module chooses to implement the hook, this may be thrown away.
$help = $this->get_core_module_help_string($mod->name);
$archetype = plugin_supports('mod', $mod->name, FEATURE_MOD_ARCHETYPE, MOD_ARCHETYPE_OTHER);
$purpose = plugin_supports('mod', $mod->name, FEATURE_MOD_PURPOSE, MOD_PURPOSE_OTHER);
$contentitem = new content_item(
$mod->id,
$mod->name,
new lang_string_title("modulename", $mod->name),
new \moodle_url($urlbase, ['add' => $mod->name]),
$OUTPUT->pix_icon('icon', '', $mod->name, ['class' => 'icon']),
$OUTPUT->pix_icon('icon', '', $mod->name, ['class' => 'icon activityicon']),
$help,
$archetype,
'mod_' . $mod->name
'mod_' . $mod->name,
$purpose,
);
// Legacy vs new hooks.