/** * Constructor * @param string $pix short icon name * @param string $alt alternative text * @param string $component emoticon image provider * @param array $attributes explicit HTML attributes */ public function __construct($pix, $alt, $component = 'moodle', array $attributes = array()) { if (empty($attributes['class'])) { $attributes['class'] = 'emoticon'; } parent::__construct($pix, $alt, $component, $attributes); }
/** * Generates the HTML for the setting * * @global moodle_page $PAGE * @global core_renderer $OUTPUT * @param string $data * @param string $query */ public function output_html($data, $query = '') { global $PAGE, $OUTPUT; $icon = new pix_icon('i/loading', get_string('loading', 'admin'), 'moodle', ['class' => 'loadingicon']); $context = (object) [ 'id' => $this->get_id(), 'name' => $this->get_full_name(), 'value' => $data, 'icon' => $icon->export_for_template($OUTPUT), 'haspreviewconfig' => !empty($this->previewconfig), 'forceltr' => $this->get_force_ltr() ]; $element = $OUTPUT->render_from_template('core_admin/setting_configcolourpicker', $context); $PAGE->requires->js_init_call('M.util.init_colour_picker', array($this->get_id(), $this->previewconfig)); return format_admin_setting($this, $this->visiblename, $element, $this->description, true, '', $this->get_defaultsetting(), $query); }
/** * Renders a pix_icon widget and returns the HTML to display it. * * @param pix_icon $icon * @return string HTML fragment */ protected function render_pix_icon(pix_icon $icon) { $data = $icon->export_for_template($this); return $this->render_from_template('core/pix_icon', $data); }
/** * Export for template. * * @param renderer_base $output The renderer. * @return stdClass */ public function export_for_template(renderer_base $output) { $data = new stdClass(); $attributes = $this->attributes; $attributesprimary = $this->attributesprimary; $attributessecondary = $this->attributessecondary; $data->instance = $this->instance; $data->classes = isset($attributes['class']) ? $attributes['class'] : ''; unset($attributes['class']); $data->attributes = array_map(function($key, $value) { return [ 'name' => $key, 'value' => $value ]; }, array_keys($attributes), $attributes); $primary = new stdClass(); $primary->title = ''; $primary->prioritise = $this->prioritise; $primary->classes = isset($attributesprimary['class']) ? $attributesprimary['class'] : ''; unset($attributesprimary['class']); $primary->attributes = array_map(function($key, $value) { return [ 'name' => $key, 'value' => $value ]; }, array_keys($attributesprimary), $attributesprimary); $actionicon = $this->actionicon; if (!empty($this->menutrigger)) { $primary->menutrigger = $this->menutrigger; } else { $primary->title = get_string('actions'); $actionicon = new pix_icon('t/edit_menu', '', 'moodle', ['class' => 'iconsmall actionmenu', 'title' => '']); } if ($actionicon instanceof pix_icon) { $primary->icon = $actionicon->export_for_template($output); $primary->title = !empty($actionicon->attributes['alt']) ? $this->actionicon->attributes['alt'] : ''; } else { $primary->iconraw = $actionicon ? $output->render($actionicon) : ''; } $primary->actiontext = $this->actiontext ? (string) $this->actiontext : ''; $primary->items = array_map(function($item) use ($output) { $data = (object) []; if ($item instanceof action_menu_link) { $data->actionmenulink = $item->export_for_template($output); } else if ($item instanceof action_menu_filler) { $data->actionmenufiller = $item->export_for_template($output); } else if ($item instanceof action_link) { $data->actionlink = $item->export_for_template($output); } else if ($item instanceof pix_icon) { $data->pixicon = $item->export_for_template($output); } else { $data->rawhtml = ($item instanceof renderable) ? $output->render($item) : $item; } return $data; }, $this->primaryactions); $secondary = new stdClass(); $secondary->classes = isset($attributessecondary['class']) ? $attributessecondary['class'] : ''; unset($attributessecondary['class']); $secondary->attributes = array_map(function($key, $value) { return [ 'name' => $key, 'value' => $value ]; }, array_keys($attributessecondary), $attributessecondary); $secondary->items = array_map(function($item) use ($output) { $data = (object) []; if ($item instanceof action_menu_link) { $data->actionmenulink = $item->export_for_template($output); } else if ($item instanceof action_menu_filler) { $data->actionmenufiller = $item->export_for_template($output); } else if ($item instanceof action_link) { $data->actionlink = $item->export_for_template($output); } else if ($item instanceof pix_icon) { $data->pixicon = $item->export_for_template($output); } else { $data->rawhtml = ($item instanceof renderable) ? $output->render($item) : $item; } return $data; }, $this->secondaryactions); $data->primary = $primary; $data->secondary = $secondary; return $data; }