Always use the pix icon helper in templates.
if ($this->map === null) {
$this->map = $this->get_icon_name_map();
}
- if ($component == null) {
+ if ($component == null || $component == 'moodle') {
$component = 'core';
} else if ($component != 'theme') {
$component = \core_component::normalize_componentname($component);
// Split the text into an array of variables.
$key = strtok($text, ",");
$key = trim($key);
+ $key = $helper->render($key);
$component = strtok(",");
$component = trim($component);
if (!$component) {
$component = '';
}
+ $component = $helper->render($component);
$text = strtok("");
// Allow mustache tags in the last argument.
$text = $helper->render($text);
*/
var $attributes = array();
- /**
- * @var bool True if this is a font-awesome icon.
- */
- protected $fontawesome;
-
/**
* Constructor
*
return $data;
}
+
+ /**
+ * Much simpler version of export that will produce the data required to render this pix with the
+ * pix helper in a mustache tag.
+ *
+ * @return array
+ */
+ public function export_for_pix() {
+ $title = isset($this->attributes['title']) ? $this->attributes['title'] : '';
+ if (empty($title)) {
+ $title = isset($this->attributes['alt']) ? $this->attributes['alt'] : '';
+ }
+ return [
+ 'key' => $this->pix,
+ 'component' => $this->component,
+ 'title' => $title
+ ];
+ }
}
/**
$data->text = $this->text instanceof renderable ? $output->render($this->text) : (string) $this->text;
$data->url = $this->url ? $this->url->out(false) : '';
- $data->icon = $this->icon ? $this->icon->export_for_template($output) : null;
+ $data->icon = $this->icon ? $this->icon->export_for_pix() : null;
$data->classes = isset($attributes['class']) ? $attributes['class'] : '';
unset($attributes['class']);
}
if ($actionicon instanceof pix_icon) {
- $primary->icon = $actionicon->export_for_template($output);
+ $primary->icon = $actionicon->export_for_pix();
$primary->title = !empty($actionicon->attributes['alt']) ? $this->actionicon->attributes['alt'] : '';
} else {
$primary->iconraw = $actionicon ? $output->render($actionicon) : '';
unset($icon->attributes['title']);
}
}
- $data->icon = $icon ? $icon->export_for_template($output) : null;
+ $data->icon = $icon ? $icon->export_for_pix() : null;
}
$data->disabled = !empty($attributes['disabled']);
}
}}
{{^disabled}}
- <a href="{{{url}}}" id="{{id}}" class="{{classes}}"{{#attributes}} {{name}}={{#quote}}{{value}}{{/quote}}{{/attributes}}>{{#icon}}{{>core/pix_icon}}{{/icon}}{{{text}}}</a>
+ <a href="{{{url}}}" id="{{id}}" class="{{classes}}" {{#attributes}} {{name}}={{#quote}}{{value}}{{/quote}} {{/attributes}}>{{#icon}}{{#pix}}{{key}}, {{component}}, {{title}}{{/pix}}{{/icon}}{{{text}}}</a>
{{#hasactions}}
{{> core/actions }}
{{/hasactions}}
{{/disabled}}
{{#disabled}}
- <span class="currentlink {{classes}}"{{#attributes}} {{name}}={{#quote}}{{value}}{{/quote}}{{/attributes}}>{{#icon}}{{>core/pix_icon}}{{/icon}}{{{text}}}</span>
+ <span class="currentlink {{classes}}" {{#attributes}} {{name}}={{#quote}}{{value}}{{/quote}} {{/attributes}}>{{#icon}}{{#pix}}{{key}}, {{component}}, {{title}}{{/pix}}{{/icon}}{{{text}}}</span>
{{/disabled}}
{{#actionmenulink}}{{> core/action_menu_link }}{{/actionmenulink}}
{{#actionmenufiller}}<span class="filler"> </span>{{/actionmenufiller}}
{{#actionlink}}{{> core/action_link }}{{/actionlink}}
-{{#pixicon}}{{> core/pix_icon }}{{/pixicon}}
-{{#rawhtml}}{{{.}}}{{/rawhtml}}
\ No newline at end of file
+{{#pixicon}}{{#pix}}{{key}}, {{component}}, {{title}}{{/pix}}{{/pixicon}}
+{{#rawhtml}}{{{.}}}{{/rawhtml}}
}
}}
{{^disabled}}
- <a href="{{url}}" class="{{classes}}"{{#attributes}} {{name}}={{#quote}}{{value}}{{/quote}}{{/attributes}} {{#showtext}}aria-labelledby="actionmenuaction-{{instance}}"{{/showtext}}>{{#icon}}{{>core/pix_icon}}{{/icon}}{{#showtext}}<span class="menu-action-text" id="actionmenuaction-{{instance}}">{{{text}}}</span>{{/showtext}}</a>
+ <a href="{{url}}" class="{{classes}}" {{#attributes}}{{name}}={{#quote}}{{value}}{{/quote}}{{/attributes}} {{#showtext}}aria-labelledby="actionmenuaction-{{instance}}"{{/showtext}}>{{#icon}}{{#pix}}{{key}}, {{component}}, {{title}}{{/pix}}{{/icon}}{{#showtext}}<span class="menu-action-text" id="actionmenuaction-{{instance}}">{{{text}}}</span>{{/showtext}}</a>
{{/disabled}}
{{#disabled}}
- <span class="currentlink" role="menuitem">{{#icon}}{{>core/pix_icon}}{{/icon}}{{{text}}}</span>
+ <span class="currentlink" role="menuitem">{{#icon}}{{#pix}}{{key}}, {{component}}, {{title}}{{/pix}}{{/icon}}{{{text}}}</span>
{{/disabled}}
"menutrigger": true
}
}}
-<a href="#" class="toggle-display {{#menutrigger}}textmenu{{/menutrigger}}" id="action-menu-toggle-{{instance}}" title="{{title}}" role="menuitem">{{{actiontext}}}{{{menutrigger}}}{{#icon}}{{> core/pix_icon}}{{/icon}}{{#rawicon}}{{{.}}}{{/rawicon}}{{#menutrigger}}<b class="caret"></b>{{/menutrigger}}</a>
\ No newline at end of file
+<a href="#" class="toggle-display {{#menutrigger}}textmenu{{/menutrigger}}" id="action-menu-toggle-{{instance}}" title="{{title}}" role="menuitem">{{{actiontext}}}{{{menutrigger}}}{{#icon}}{{#pix}}{{key}}, {{component}}, {{title}}{{/pix}}{{/icon}}{{#rawicon}}{{{.}}}{{/rawicon}}{{#menutrigger}}<b class="caret"></b>{{/menutrigger}}</a>
}
$context = $menu->export_for_template($this);
- // We do not want the icon with the caret, the caret is added by Bootstrap.
- if (empty($context->primary->menutrigger)) {
- $newurl = $this->pix_url('t/edit', 'moodle');
- $context->primary->icon['attributes'] = array_reduce($context->primary->icon['attributes'],
- function($carry, $item) use ($newurl) {
- if ($item['name'] === 'src') {
- $item['value'] = $newurl->out(false);
- }
- $carry[] = $item;
- return $carry;
- }, []
- );
- }
-
return $this->render_from_template('core/action_menu', $context);
}
{{#actionmenulink}}{{> core/action_menu_link }}{{/actionmenulink}}
{{#actionmenufiller}}<span class="filler"> </span>{{/actionmenufiller}}
{{#actionlink}}{{> core/action_link }}{{/actionlink}}
-{{#pixicon}}{{> core/pix_icon }}{{/pixicon}}
-{{#rawhtml}}{{{.}}}{{/rawhtml}}
\ No newline at end of file
+{{#pixicon}}{{#pix}}{{key}}, {{component}}, {{title}}{{/pix}}{{/pixicon}}
+{{#rawhtml}}{{{.}}}{{/rawhtml}}
}
}}
{{^disabled}}
- <a href="{{url}}" class="{{classes}}"{{#attributes}} {{name}}={{#quote}}{{value}}{{/quote}}{{/attributes}} {{#showtext}}aria-labelledby="actionmenuaction-{{instance}}"{{/showtext}}>{{#icon}}{{>core/pix_icon}}{{/icon}}{{#showtext}}<span class="menu-action-text" id="actionmenuaction-{{instance}}">{{{text}}}</span>{{/showtext}}</a>
+ <a href="{{url}}" class="{{classes}}" {{#attributes}}{{name}}={{#quote}}{{value}}{{/quote}}{{/attributes}} {{#showtext}}aria-labelledby="actionmenuaction-{{instance}}"{{/showtext}}>{{#icon}}{{#pix}}{{key}}, {{component}}, {{title}}{{/pix}}{{/icon}}{{#showtext}}<span class="menu-action-text" id="actionmenuaction-{{instance}}">{{{text}}}</span>{{/showtext}}</a>
{{/disabled}}
{{#disabled}}
- <span class="currentlink" role="menuitem">{{#icon}}{{>core/pix_icon}}{{/icon}}{{{text}}}</span>
+ <span class="currentlink" role="menuitem">{{#icon}}{{#pix}}{{key}},{{component}},{{title}}{{/pix}}{{/icon}}{{{text}}}</span>
{{/disabled}}
{{!
Action menu trigger.
}}
-<div class="dropdown">
- <a href="#" class="dropdown-toggle" id="action-menu-toggle-{{instance}}" title="{{title}}" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">{{{actiontext}}}{{{menutrigger}}}{{#icon}}{{> core/pix_icon}}{{/icon}}{{#rawicon}}{{{.}}}{{/rawicon}}{{#menutrigger}}<b class="caret"></b>{{/menutrigger}}</a>
+<span class="dropdown">
+ <a href="#" class="dropdown-toggle" id="dropdown-{{instance}}" title="{{title}}" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">{{{actiontext}}}{{{menutrigger}}}{{#icon}}{{#pix}}{{key}},{{component}},{{title}}{{/pix}}{{/icon}}{{#rawicon}}{{{.}}}{{/rawicon}}{{#menutrigger}}<b class="caret"></b>{{/menutrigger}}</a>
{{#secondary}}
<div class="dropdown-menu dropdown-menu-right {{classes}}"{{#attributes}} {{name}}="{{value}}"{{/attributes}}>
{{#items}}{{!
- }}{{#actionmenulink}}<a href="{{url}}" class="dropdown-item {{classes}}"{{#attributes}} {{name}}={{#quote}}{{value}}{{/quote}}{{/attributes}} {{#showtext}}aria-labelledby="actionmenuaction-{{instance}}"{{/showtext}}>{{#icon}}{{>core/pix_icon}}{{/icon}}{{#showtext}}<span class="menu-action-text" id="actionmenuaction-{{instance}}">{{{text}}}</span>{{/showtext}}</a>{{/actionmenulink}}{{!
+ }}{{#actionmenulink}}<a href="{{url}}" class="dropdown-item {{classes}}" {{#attributes}}{{name}}={{#quote}}{{value}}{{/quote}}{{/attributes}} {{#showtext}}aria-labelledby="actionmenuaction-{{instance}}"{{/showtext}}>{{#icon}}{{#pix}}{{key}},{{component}},{{title}}{{/pix}}{{/icon}}{{#showtext}}<span class="menu-action-text" id="actionmenuaction-{{instance}}">{{{text}}}</span>{{/showtext}}</a>{{/actionmenulink}}{{!
}}{{#actionmenufiller}}<div class="dropdown-divider"></div>{{/actionmenufiller}}{{!
}}{{^actionmenulink}}{{^actionmenufiller}}<div class="dropdown-item">{{> core/action_menu_item }}</div>{{/actionmenufiller}}{{/actionmenulink}}{{!
}}{{/items}}