. /** * renderers/course_renderer.php * * @package theme_klass * @copyright 2015 onwards LMSACE Dev Team (http://www.lmsace.com) * @author LMSACE Dev Team , lmsace.com * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ defined('MOODLE_INTERNAL') || die(); require_once($CFG->dirroot . "/course/renderer.php"); /** * Klass theme course renderer class * * @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_klass_core_course_renderer extends core_course_renderer { /** * Create the new course block to display in the frontpage. */ public function new_courses() { /* New Courses */ global $CFG; $newcourse = get_string('newcourses', 'theme_klass'); $header = '

'.$newcourse.'

'; $footer = '
'; $cocnt = 1; $content = ''; if ($ccc = get_courses('all', 'c.id DESC, c.sortorder ASC', 'c.id, c.shortname, c.visible')) { foreach ($ccc as $cc) { if ($cocnt > 8) { break; } if ( $cc->visible == "0" || $cc->id == "1") { continue; } $courseid = $cc->id; $course = get_course($courseid); $noimgurl = $this->output->image_url('no-image', 'theme'); $courseurl = new moodle_url('/course/view.php', array('id' => $courseid )); if ($course instanceof stdClass) { $course = new core_course_list_element($course); } $imgurl = ''; $context = context_course::instance($course->id); foreach ($course->get_course_overviewfiles() as $file) { $isimage = $file->is_valid_image(); $imgurl = file_encode_url("$CFG->wwwroot/pluginfile.php", '/'. $file->get_contextid(). '/'. $file->get_component(). '/'. $file->get_filearea(). $file->get_filepath(). $file->get_filename(), !$isimage); if (!$isimage) { $imgurl = $noimgurl; } } if (empty($imgurl)) { $imgurl = $noimgurl; } $icon = "fa-angle-double-right"; if (right_to_left()) { $icon = "fa-angle-double-left"; } $content .= '
'; if ( ( $cocnt % 4) == "0") { $content .= '
'; } $cocnt++; } } $coursehtml = $header.$content.$footer; $frontpage = isset($CFG->frontpage) ? $CFG->frontpage : ''; $frontpageloggedin = isset($CFG->frontpageloggedin) ? $CFG->frontpageloggedin : ''; $f1pos = strpos($frontpage, '6'); $f2pos = strpos($frontpageloggedin, '6'); $btnhtml = ''; if ($cocnt <= 1 && !$this->page->user_is_editing() && has_capability('moodle/course:create', context_system::instance())) { $btnhtml = $this->add_new_course_button(); } if (!isloggedin() or isguestuser()) { if ($f1pos === false) { if ($cocnt > 1) { echo $coursehtml; } } } else { if ($f2pos === false) { echo $coursehtml."
".$btnhtml; } } } /** * Renderer for the frontpage available course * @return type|string */ public function frontpage_available_courses() { global $CFG; $chelper = new coursecat_helper(); $chelper->set_show_courses(self::COURSECAT_SHOW_COURSES_EXPANDED)->set_courses_display_options(array( 'recursive' => true, 'limit' => $CFG->frontpagecourselimit, 'viewmoreurl' => new moodle_url('/course/index.php'), 'viewmoretext' => new lang_string('fulllistofcourses'))); $chelper->set_attributes(array('class' => 'frontpage-course-list-all')); $courses = core_course_category::get(0)->get_courses($chelper->get_courses_display_options()); $totalcount = core_course_category::get(0)->get_courses_count($chelper->get_courses_display_options()); $courseids = array_keys($courses); $newcourse = get_string('availablecourses'); $header = '

'.$newcourse.'

'; $footer = '
'; $cocnt = 1; $content = ''; if ($ccc = get_courses('all', 'c.sortorder ASC', 'c.id, c.shortname, c.visible')) { foreach ($courseids as $courseid) { $course = get_course($courseid); $noimgurl = $this->output->image_url('no-image', 'theme'); $courseurl = new moodle_url('/course/view.php', array('id' => $courseid )); if ($course instanceof stdClass) { $course = new core_course_list_element($course); } $imgurl = ''; $context = context_course::instance($course->id); foreach ($course->get_course_overviewfiles() as $file) { $isimage = $file->is_valid_image(); $imgurl = file_encode_url("$CFG->wwwroot/pluginfile.php", '/'. $file->get_contextid(). '/'. $file->get_component(). '/'. $file->get_filearea(). $file->get_filepath(). $file->get_filename(), !$isimage); if (!$isimage) { $imgurl = $noimgurl; } } if (empty($imgurl)) { $imgurl = $noimgurl; } $icon = "fa-angle-double-right"; if (right_to_left()) { $icon = "fa-angle-double-left"; } $content .= '
'; if (($cocnt % 4) == "0") { $content .= '
'; } $cocnt++; } } $coursehtml = $header.$content.$footer; echo $coursehtml; if (!$totalcount && !$this->page->user_is_editing() && has_capability('moodle/course:create', context_system::instance())) { // Print link to create a new course, for the 1st available category. echo $this->add_new_course_button(); } } /** * Renderer the course cat course box from the parent * * @param coursecat_helper $chelper * @param int $course * @param string $additionalclasses * @return $content */ protected function coursecat_coursebox(coursecat_helper $chelper, $course, $additionalclasses = '') { global $CFG; if (!isset($this->strings->summary)) { $this->strings->summary = get_string('summary'); } if ($chelper->get_show_courses() <= self::COURSECAT_SHOW_COURSES_COUNT) { return ''; } if ($course instanceof stdClass) { $course = new core_course_list_element($course); } $content = ''; $classes = trim('coursebox clearfix '. $additionalclasses); if ($chelper->get_show_courses() >= self::COURSECAT_SHOW_COURSES_EXPANDED) { $nametag = 'h3'; } else { $classes .= ' collapsed'; $nametag = 'div'; } // Coursebox. if (empty($course->get_course_overviewfiles())) { $coursecontent = "content-block"; } else { $coursecontent = ""; } $content .= html_writer::start_tag('div', array( 'class' => $classes.' '.$coursecontent, 'data-courseid' => $course->id, 'data-type' => self::COURSECAT_TYPE_COURSE, )); $content .= html_writer::start_tag('div', array('class' => 'info')); // Course name. $coursename = $chelper->get_course_formatted_name($course); $coursenamelink = html_writer::link(new moodle_url('/course/view.php', array('id' => $course->id)), $coursename, array('class' => $course->visible ? '' : 'dimmed')); $content .= html_writer::tag($nametag, $coursenamelink, array('class' => 'coursename')); // If we display course in collapsed form but the course has summary or course contacts, display the link to the info page. $content .= html_writer::start_tag('div', array('class' => 'moreinfo')); if ($chelper->get_show_courses() < self::COURSECAT_SHOW_COURSES_EXPANDED) { if ($course->has_summary() || $course->has_course_contacts() || $course->has_course_overviewfiles()) { $url = new moodle_url('/course/info.php', array('id' => $course->id)); $image = html_writer::empty_tag('img', array('src' => $this->output->image_url('i/info'), 'alt' => $this->strings->summary)); $content .= html_writer::link($url, $image, array('title' => $this->strings->summary)); // Make sure JS file to expand course content is included. $this->coursecat_include_js(); } } $content .= html_writer::end_tag('div'); // Moreinfo. // Print enrolmenticons. if ($icons = enrol_get_course_info_icons($course)) { $content .= html_writer::start_tag('div', array('class' => 'enrolmenticons')); foreach ($icons as $pixicon) { $content .= $this->render($pixicon); } $content .= html_writer::end_tag('div'); // Enrolmenticons. } $content .= html_writer::end_tag('div'); // Info. if (empty($course->get_course_overviewfiles())) { $class = "content-block"; } else { $class = ""; } $content .= html_writer::start_tag('div', array('class' => 'content '.$class)); $content .= $this->coursecat_coursebox_content($chelper, $course); $content .= html_writer::end_tag('div'); // Content. $content .= html_writer::end_tag('div'); // Coursebox. return $content; } }