public function test_get_course_color() { $actual = local::get_course_color(1); $this->assertSame('c4ca42', $actual); $actual = local::get_course_color(10); $this->assertSame('d3d944', $actual); $actual = local::get_course_color(100); $this->assertSame('f89913', $actual); $actual = local::get_course_color(1000); $this->assertSame('a9b7ba', $actual); }
/** * Set image css for course card (cover image, etc). */ private function apply_image_css() { $bgcolor = local::get_course_color($this->courseid); $this->imagecss = "background-color: #{$bgcolor};"; $bgimage = local::course_coverimage_url($this->courseid); if (!empty($bgimage)) { $this->imagecss .= "background-image: url({$bgimage});"; } }
/** * Print fixy (login or menu for signed in users) * */ public function print_fixed_menu() { global $CFG, $USER, $PAGE, $DB; $logout = get_string('logout'); $isguest = isguestuser(); if (!isloggedin() || $isguest) { $login = get_string('login'); $cancel = get_string('cancel'); $username = get_string('username'); $password = get_string('password'); $loginform = get_string('loginform', 'theme_snap'); $helpstr = ''; if (empty($CFG->forcelogin) || $isguest || !isloggedin() || !empty($CFG->registerauth) || is_enabled_auth('none') || !empty($CFG->auth_instructions)) { if ($isguest) { $helpstr = '<p class="text-center">' . get_string('loggedinasguest', 'theme_snap') . '</p>'; $helpstr .= '<p class="text-center">' . '<a class="btn btn-primary" href="' . s($CFG->wwwroot) . '/login/logout.php?sesskey=' . sesskey() . '">' . $logout . '</a></p>'; $helpstr .= '<p class="text-center">' . '<a href="' . s($CFG->wwwroot) . '/login/index.php">' . get_string('helpwithloginandguest', 'theme_snap') . '</a></p>'; } else { if (empty($CFG->forcelogin)) { $help = get_string('helpwithloginandguest', 'theme_snap'); } else { $help = get_string('helpwithlogin', 'theme_snap'); } $helpstr = "<p class='text-center'><a href='" . s($CFG->wwwroot) . "/login/index.php'>{$help}</a></p>"; } } echo $this->print_login_button(); echo "<form class=fixy action='{$CFG->wwwroot}/login/' method='post' id='login'>\n <a id='fixy-close' class='pull-right snap-action-icon' href='#'>\n <i class='icon icon-office-52'></i><small>{$cancel}</small>\n </a>\n <div class=fixy-inner>\n <legend>{$loginform}</legend>\n <label for='username'>{$username}</label>\n <input autocapitalize='off' type='text' name='username' id='username' placeholder='" . s($username) . "'>\n <label for='password'>{$password}</label>\n <input type='password' name='password' id='password' placeholder='" . s($password) . "'>\n <br>\n <input type='submit' id='loginbtn' value='" . s($login) . "'>\n {$helpstr}\n </div>\n </form>"; } else { $courselist = ""; $userpicture = new user_picture($USER); $userpicture->link = false; $userpicture->alttext = false; $userpicture->size = 100; $picture = $this->render($userpicture); $mycourses = enrol_get_my_courses(null, 'visible DESC, fullname ASC, id DESC'); $courselist .= "<section id='fixy-my-courses'><div class='clearfix'><h2>" . get_string('courses') . "</h2>"; foreach ($mycourses as $c) { $pubstatus = ""; if (!$c->visible) { $notpublished = get_string('notpublished', 'theme_snap'); $pubstatus = "<small class='published-status'>" . $notpublished . "</small>"; } $bgcolor = local::get_course_color($c->id); $courseimagecss = "background-color: #{$bgcolor};"; $bgimage = local::course_coverimage_url($c->id); if (!empty($bgimage)) { $courseimagecss .= "background-image: url({$bgimage});"; } $dynamicinfo = '<div data-courseid="' . $c->id . '" class=dynamicinfo></div>'; $teachers = ''; $courseteachers = ''; $clist = new course_in_list($c); $teachers = $clist->get_course_contacts(); if (!empty($teachers)) { $courseteachers = "<div class='sr-only'>" . get_string('coursecontacts', 'theme_snap') . "</div>"; // Get all teacher user records in one go. $teacherids = array(); foreach ($teachers as $teacher) { $teacherids[] = $teacher['user']->id; } $teacherusers = $DB->get_records_list('user', 'id', $teacherids); foreach ($teachers as $teacher) { if (!isset($teacherusers[$teacher['user']->id])) { continue; } $teacheruser = $teacherusers[$teacher['user']->id]; $userpicture = new user_picture($teacheruser); $userpicture->link = false; $userpicture->size = 100; $teacherpicture = $this->render($userpicture); $courseteachers .= $teacherpicture; } } $clink = '<div data-href="' . $CFG->wwwroot . '/course/view.php?id=' . $c->id . '" class="courseinfo" style="' . $courseimagecss . '"> <div class="courseinfo-body"><h3><a href="' . $CFG->wwwroot . '/course/view.php?id=' . $c->id . '">' . format_string($c->fullname) . '</a></h3>' . $dynamicinfo . $courseteachers . $pubstatus . '</div></div>'; $courselist .= $clink; } $courselist .= "</div>"; $courselist .= '<div class="row fixy-browse-search-courses"><br>'; if (has_capability('moodle/site:config', context_system::instance())) { $courserenderer = $PAGE->get_renderer('core', 'course'); $courselist .= '<div class="col-md-6">'; $courselist .= $courserenderer->course_search_form(null, 'fixy'); $courselist .= '</div>'; } $courselist .= '<div class="col-md-6">'; $courselist .= $this->print_view_all_courses(); $courselist .= '</div>'; $courselist .= '</div></section>'; // Close row. $menu = get_string('menu', 'theme_snap'); echo '<a href="#primary-nav" aria-haspopup="true" class="fixy-trigger" id="js-personal-menu-trigger" ' . 'aria-controls="primary-nav" title="' . get_string('sitenavigation', 'theme_snap') . '" data-toggle="tooltip" data-placement="bottom">' . $menu . $picture . $this->render_badge_count() . '</a>'; $close = get_string('close', 'theme_snap'); $viewyourprofile = get_string('viewyourprofile', 'theme_snap'); $realuserinfo = ''; if (\core\session\manager::is_loggedinas()) { $realuser = \core\session\manager::get_realuser(); $via = get_string('via', 'theme_snap'); $fullname = fullname($realuser, true); $realuserinfo = html_writer::span($via . ' ' . html_writer::span($fullname, 'real-user-name'), 'real-user-info'); } echo '<nav id="primary-nav" class="fixy toggle-details" tabindex="0"> <a id="fixy-close" class="pull-right snap-action-icon" href="#"> <i class="icon icon-office-52"></i><small>' . $close . '</small> </a> <div class=fixy-inner> <h1 id="fixy-profile-link"> <a title="' . s($viewyourprofile) . '" href="' . s($CFG->wwwroot) . '/user/profile.php" >' . $picture . '<span id="fixy-username">' . format_string(fullname($USER)) . '</span> </a> </h1>' . $realuserinfo . $courselist . $this->render_callstoaction() . ' <div class="fixy-logout-footer clearfix text-center"> <a class="btn btn-default logout" href="' . s($CFG->wwwroot) . '/login/logout.php?sesskey=' . sesskey() . '">' . $logout . '</a> </div> </div><!-- end fixy-inner --> </nav><!-- end primary nav -->'; } }