.
/**
* Contains class core_tag_renderer
*
* @package core_tag
* @copyright 2015 Marina Glancy
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
/**
* Class core_tag_renderer
*
* @package core_tag
* @copyright 2015 Marina Glancy
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class core_tag_renderer extends plugin_renderer_base {
/**
* Renders the tag search page
*
* @param string $query
* @param int $tagcollid
* @return string
*/
public function tag_search_page($query = '', $tagcollid = 0) {
$rv = $this->output->heading(get_string('searchtags', 'tag'), 2);
$searchbox = $this->search_form($query, $tagcollid);
$rv .= html_writer::div($searchbox, '', array('id' => 'tag-search-box'));
$tagcloud = core_tag_collection::get_tag_cloud($tagcollid, false, 150, 'name', $query);
$searchresults = '';
if ($tagcloud->get_count()) {
$searchresults = $this->output->render_from_template('core_tag/tagcloud',
$tagcloud->export_for_template($this->output));
$rv .= html_writer::div($searchresults, '', array('id' => 'tag-search-results'));
} else if (strval($query) !== '') {
$rv .= '
' . get_string('notagsfound', 'tag', s($query)) . '
';
}
return $rv;
}
/**
* Renders the tag index page
*
* @param core_tag_tag $tag
* @param \core_tag\output\tagindex[] $entities
* @param int $tagareaid
* @param bool $exclusivemode if set to true it means that no other entities tagged with this tag
* are displayed on the page and the per-page limit may be bigger
* @param int $fromctx context id where the link was displayed, may be used by callbacks
* to display items in the same context first
* @param int $ctx context id where to search for records
* @param bool $rec search in subcontexts as well
* @param int $page 0-based number of page being displayed
* @return string
*/
public function tag_index_page($tag, $entities, $tagareaid, $exclusivemode, $fromctx, $ctx, $rec, $page) {
global $CFG, $OUTPUT;
$this->page->requires->js_call_amd('core/tag', 'initTagindexPage');
$tagname = $tag->get_display_name();
$systemcontext = context_system::instance();
if ($tag->flag > 0 && has_capability('moodle/tag:manage', $systemcontext)) {
$tagname = '' . $tagname . '';
}
$rv = '';
$rv .= $this->output->heading($tagname, 2);
$rv .= $this->tag_links($tag);
if ($desciption = $tag->get_formatted_description()) {
$rv .= $this->output->box($desciption, 'generalbox tag-description');
}
$relatedtagslimit = 10;
$relatedtags = $tag->get_related_tags();
$taglist = new \core_tag\output\taglist($relatedtags, get_string('relatedtags', 'tag'),
'tag-relatedtags', $relatedtagslimit);
$rv .= $OUTPUT->render_from_template('core_tag/taglist', $taglist->export_for_template($OUTPUT));
// Display quick menu of the item types (if more than one item type found).
$entitylinks = array();
foreach ($entities as $entity) {
if (!empty($entity->hascontent)) {
$entitylinks[] = '' .
core_tag_area::display_name($entity->component, $entity->itemtype) . '';
}
}
if (count($entitylinks) > 1) {
$rv .= '' . join('', $entitylinks) . '
';
} else if (!$entitylinks) {
$rv .= '' . get_string('noresultsfor', 'tag', $tagname) . '
';
}
// Display entities tagged with the tag.
$content = '';
foreach ($entities as $entity) {
if (!empty($entity->hascontent)) {
$content .= $this->output->render_from_template('core_tag/index', $entity->export_for_template($this->output));
}
}
if ($exclusivemode) {
$rv .= $content;
} else if ($content) {
$rv .= html_writer::div($content, 'tag-index-items');
}
// Display back link if we are browsing one tag area.
if ($tagareaid) {
$url = $tag->get_view_url(0, $fromctx, $ctx, $rec);
$rv .= '' .
html_writer::link($url, get_string('backtoallitems', 'tag', $tag->get_display_name())) .
'
';
}
return $rv;
}
/**
* Prints a box that contains the management links of a tag
*
* @param core_tag_tag $tag
* @return string
*/
protected function tag_links($tag) {
if ($links = $tag->get_links()) {
$content = '- ' . implode('
- ', $links) . '
';
return html_writer::div($content, 'tag-management-box');
}
return '';
}
/**
* Prints the tag search box
*
* @param string $query last search string
* @param int $tagcollid last selected tag collection id
* @return string
*/
protected function search_form($query = '', $tagcollid = 0) {
$searchurl = new moodle_url('/tag/search.php');
$output = '';
return $output;
}
}