Initial commit

This commit is contained in:
eduardogusmao
2019-08-27 11:32:32 -03:00
commit ac035071ec
392 changed files with 27015 additions and 0 deletions

188
renderers/core_renderer.php Normal file
View File

@@ -0,0 +1,188 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* renderers/core_renderer.php
* @package theme_qualisaude
* @copyright 2015 onwards LMSACE Dev Team (http://www.lmsace.com)
* @author LMSACE Dev Team
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
/**
* qualisaude core renderer renderer from the moodle core renderer
* @copyright 2015 onwards LMSACE Dev Team (http://www.lmsace.com)
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class theme_qualisaude_core_renderer extends theme_boost\output\core_renderer {
/**
* Custom menu in header.
* @param custom_menu $menu
* @return type
*/
public function custom_menu_render(custom_menu $menu) {
global $CFG;
$langs = get_string_manager()->get_list_of_translations();
$haslangmenu = $this->lang_menu() != '';
if (!$menu->has_children() && !$haslangmenu) {
return '';
}
$content = '';
foreach ($menu->get_children() as $item) {
$context = $item->export_for_template($this);
$content .= $this->render_from_template('theme_qualisaude/custom_menu_item', $context);
}
return $content;
}
/**
* Extract first image from html
*
* @param string $html (must be well formed)
* @return array | bool (false)
*/
public static function extract_first_image($html) {
$doc = new \DOMDocument();
libxml_use_internal_errors(true); // Required for HTML5.
$doc->loadHTML($html);
libxml_clear_errors(); // Required for HTML5.
$imagetags = $doc->getElementsByTagName('img');
if ($imagetags->item(0)) {
$src = $imagetags->item(0)->getAttribute('src');
$alt = $imagetags->item(0)->getAttribute('alt');
return array('src' => $src, 'alt' => $alt);
} else {
return false;
}
}
/**
* Alternative rendering of front page news, called from layout/faux_site_index.php which
* replaces the standard news output with this.
*
* @return string
*/
public function site_frontpage_news() {
global $CFG, $SITE;
require_once($CFG->dirroot.'/mod/forum/lib.php');
if (!$forum = forum_get_course_forum($SITE->id, 'news')) {
print_error('cannotfindorcreateforum', 'forum');
}
$cm = get_coursemodule_from_instance('forum', $forum->id, $SITE->id, false, MUST_EXIST);
$context = \context_module::instance($cm->id, MUST_EXIST);
$output = html_writer::start_tag('div', array('id' => 'site-news-forum', 'class' => 'clearfix'));
$output .= $this->heading(format_string('Notícias', true, array('context' => $context)));
$groupmode = groups_get_activity_groupmode($cm, $SITE);
$currentgroup = groups_get_activity_group($cm);
if (!$discussions = forum_get_discussions($cm,
'p.modified DESC', true, null, $SITE->newsitems, false, -1, $SITE->newsitems)) {
$output .= html_writer::tag('div', '('.get_string('nonews', 'forum').')', array('class' => 'forumnodiscuss'));
if (forum_user_can_post_discussion($forum, $currentgroup, $groupmode, $cm, $context)) {
$output .= html_writer::link(
new moodle_url('/mod/forum/post.php', array('forum' => $forum->id)),
'Adicionar notícia',
array('class' => 'btn btn-primary')
);
} else {
// No news and user cannot edit, so return nothing.
return 'Nenhuma notícia cadastrada';
}
return $output.'</div>';
}
$output .= html_writer::start_div('', array('id' => 'news-articles'));
foreach ($discussions as $discussion) {
if (!forum_user_can_see_discussion($forum, $discussion, $context)) {
continue;
}
$message = file_rewrite_pluginfile_urls($discussion->message,
'pluginfile.php', $context->id, 'mod_forum', 'post', $discussion->id);
$imagestyle = '';
$imgarr = $this->extract_first_image($message);
if ($imgarr) {
$imageurl = s($imgarr['src']);
$imagestyle = " style=\"background-image:url('$imageurl')\"";
}
$name = format_string($discussion->name, true, array('context' => $context));
$date = userdate($discussion->timemodified, get_string('strftimedatetime', 'langconfig'));
$message = format_text($message, $discussion->messageformat, ['context' => $context]);
$readmorebtn = "<a class='btn btn-secondary toggle' href='".
$CFG->wwwroot."/mod/forum/discuss.php?d=".$discussion->discussion."'>Saiba mais</a>";
$preview = '';
$newsimage = '';
if (!$imagestyle) {
$preview = html_to_text($message, 0, false);
$preview = "<div class='news-article-preview'><p>".shorten_text($preview, 200)."</p>";
// $preview .= "<p class='text-right'>".$readmorebtn."</p>";
$preview .= "</div>";
} else {
$newsimage = '<div class="news-article-image toggle"'.$imagestyle.' title="Saiba mais"></div>';
}
$close = get_string('closebuttontitle', 'moodle');
$output .= <<<HTML
<div class="news-article clearfix">
<div class="news-article-inner">
<div class="news-article-content">
<h3 class='toggle'><a href="$CFG->wwwroot/mod/forum/discuss.php?d=$discussion->discussion">{$name}</a></h3>
</div>
</div>
{$preview}
</div>
HTML;
}
// $actionlinks = html_writer::link(
// new moodle_url('/mod/forum/view.php', array('id' => $cm->id)),
// 'Mais notícias',
// array('class' => 'btn btn-secondary')
// );
// if (forum_user_can_post_discussion($forum, $currentgroup, $groupmode, $cm, $context)) {
// $actionlinks .= html_writer::link(
// new moodle_url('/mod/forum/post.php', array('forum' => $forum->id)),
// 'Nova notícia',
// array('class' => 'btn btn-primary')
// );
// }
$output .= html_writer::end_div();
// $output .= "<br><div class='text-center'>$actionlinks</div>";
$output .= html_writer::end_tag('div');
return $output;
}
}