From ba6fb02f0f2a8877a99e4d47eb90802137d2a97b Mon Sep 17 00:00:00 2001 From: Gareth J Barnard Date: Sat, 17 Jan 2015 15:25:17 +0000 Subject: [PATCH] New #433. --- README.txt | 1 + lang/en/theme_essential.php | 2 + layout/includes/header.php | 3 ++ less/essential/navigation.less | 2 + less/essential/responsive.less | 1 + renderers/core_renderer.php | 72 ++++++++++++++++++++++++++++++++++ style/essential-rtl.css | 3 ++ style/essential.css | 3 ++ 8 files changed, 87 insertions(+) diff --git a/README.txt b/README.txt index d6499d53..b284e207 100644 --- a/README.txt +++ b/README.txt @@ -171,6 +171,7 @@ New in 2.8.1.1 - FIX: Apply MDL-45930. - FIX: Apply MDL-44907. - NEW: Issue #428: Add setting to customise header background image. Thanks to Jerome Charaoui (https://github.com/jcharaoui) for this. +- NEW: Issue #433: Add a 'This Course' dropdown menu. Thanks to ActionJONA (https://github.com/ActionJONA) for the ported BCU theme code. New in 2.8.1 ============ diff --git a/lang/en/theme_essential.php b/lang/en/theme_essential.php index 967892bf..437a362a 100644 --- a/lang/en/theme_essential.php +++ b/lang/en/theme_essential.php @@ -208,6 +208,8 @@ $string['allmodules'] = 'All modules'; $string['allclasses'] = 'All classes'; $string['noenrolments'] = 'You have no current enrolments'; +$string['thiscourse'] = 'This course'; +$string['people'] = 'People'; $string['helplinktype'] = 'Enable help link in menu'; $string['helplinktypedesc'] = 'Choose whether you want to enable a help option in the user menu, you can choose to either provide an URL that will be opened in a new window or an email address.'; diff --git a/layout/includes/header.php b/layout/includes/header.php index 21d9d0b1..b8f73240 100755 --- a/layout/includes/header.php +++ b/layout/includes/header.php @@ -157,6 +157,9 @@
custom_menu(); ?>
+
+ custom_menu_activitystream(); ?> +
diff --git a/less/essential/navigation.less b/less/essential/navigation.less index 5c374024..dae805e9 100644 --- a/less/essential/navigation.less +++ b/less/essential/navigation.less @@ -45,12 +45,14 @@ #custom_menu_language, #custom_menu_courses, #custom_menu_themecolours, + #custom_menu_activitystream, #custom_menu { display: inline-block; vertical-align: top; } #custom_menu_courses, + #custom_menu_activitystream, #custom_menu_language { ul.dropdown-menu { max-height: 384px; diff --git a/less/essential/responsive.less b/less/essential/responsive.less index 15166b60..4c9663e9 100644 --- a/less/essential/responsive.less +++ b/less/essential/responsive.less @@ -49,6 +49,7 @@ #custom_menu_language, #custom_menu_courses, #custom_menu_themecolours, + #custom_menu_activitystream, #custom_menu { vertical-align: top; float: left; diff --git a/renderers/core_renderer.php b/renderers/core_renderer.php index 5d0238c7..6db0d5fd 100644 --- a/renderers/core_renderer.php +++ b/renderers/core_renderer.php @@ -330,6 +330,78 @@ public function custom_menu_themecolours() return $this->render_custom_menu($colourmenu); } + /** + * Outputs the Activity Stream menu + * @return custom_menu object + */ + public function custom_menu_activitystream() { + if ($this->page->pagelayout != 'course') { + return ''; + } + + if (!isguestuser()) { + if (isset($this->page->course->id) && $this->page->course->id > 1) { + $activitystreammenu = new custom_menu(); + $branchtitle = get_string('thiscourse', 'theme_essential'); + $branchlabel = ''.$branchtitle; + $branchurl = new moodle_url('#'); + $branch = $activitystreammenu->add($branchlabel, $branchurl, $branchtitle, 10002); + $branchtitle = get_string('people', 'theme_essential'); + $branchlabel = ''.$branchtitle; + $branchurl = new moodle_url('/user/index.php', array('id' => $this->page->course->id)); + $branch->add($branchlabel, $branchurl, $branchtitle, 100003); + $branchtitle = get_string('grades'); + $branchlabel = ''.$branchtitle; + $branchurl = new moodle_url('/grade/report/index.php', array('id' => $this->page->course->id)); + $branch->add($branchlabel, $branchurl, $branchtitle, 100004); + + $data = $this->get_course_activities(); + foreach ($data as $modname => $modfullname) { + if ($modname === 'resources') { + $icon = $this->pix_icon('icon', '', 'mod_page', array('class' => 'icon')); + $branch->add($icon.$modfullname, new moodle_url('/course/resources.php', array('id' => $this->page->course->id))); + } else { + $icon = ''; + $branch->add($icon.$modfullname, new moodle_url('/mod/'.$modname.'/index.php', array('id' => $this->page->course->id))); + } + } + return $this->render_custom_menu($activitystreammenu); + } + } + return ''; + } + + private function get_course_activities() { + // A copy of block_activity_modules. + $course = $this->page->course; + $content = new stdClass(); + $modinfo = get_fast_modinfo($course); + $modfullnames = array(); + $archetypes = array(); + foreach ($modinfo->cms as $cm) { + // Exclude activities which are not visible or have no link (=label). + if (!$cm->uservisible or !$cm->has_view()) { + continue; + } + if (array_key_exists($cm->modname, $modfullnames)) { + continue; + } + if (!array_key_exists($cm->modname, $archetypes)) { + $archetypes[$cm->modname] = plugin_supports('mod', $cm->modname, FEATURE_MOD_ARCHETYPE, MOD_ARCHETYPE_OTHER); + } + if ($archetypes[$cm->modname] == MOD_ARCHETYPE_RESOURCE) { + if (!array_key_exists('resources', $modfullnames)) { + $modfullnames['resources'] = get_string('resources'); + } + } else { + $modfullnames[$cm->modname] = $cm->modplural; + } + } + core_collator::asort($modfullnames); + + return $modfullnames; + } + /** * Outputs the messages menu * @return custom_menu object diff --git a/style/essential-rtl.css b/style/essential-rtl.css index e587e8c8..58fdc699 100644 --- a/style/essential-rtl.css +++ b/style/essential-rtl.css @@ -22740,12 +22740,14 @@ ul.socials li { .navbar .navbar-inner #custom_menu_language, .navbar .navbar-inner #custom_menu_courses, .navbar .navbar-inner #custom_menu_themecolours, +.navbar .navbar-inner #custom_menu_activitystream, .navbar .navbar-inner #custom_menu { display: inline-block; vertical-align: top; } .navbar .navbar-inner #custom_menu_courses ul.dropdown-menu, +.navbar .navbar-inner #custom_menu_activitystream ul.dropdown-menu, .navbar .navbar-inner #custom_menu_language ul.dropdown-menu { max-height: 384px; overflow-y: auto; @@ -23473,6 +23475,7 @@ body.format-topcoll .course-content ul.ctopics li.section.main { .navbar-inner .nav-collapse #custom_menu_language, .navbar-inner .nav-collapse #custom_menu_courses, .navbar-inner .nav-collapse #custom_menu_themecolours, + .navbar-inner .nav-collapse #custom_menu_activitystream, .navbar-inner .nav-collapse #custom_menu { vertical-align: top; float: right; diff --git a/style/essential.css b/style/essential.css index d4a7b17d..da2c618f 100644 --- a/style/essential.css +++ b/style/essential.css @@ -18901,11 +18901,13 @@ ul.socials li { .navbar .navbar-inner #custom_menu_language, .navbar .navbar-inner #custom_menu_courses, .navbar .navbar-inner #custom_menu_themecolours, +.navbar .navbar-inner #custom_menu_activitystream, .navbar .navbar-inner #custom_menu { display: inline-block; vertical-align: top; } .navbar .navbar-inner #custom_menu_courses ul.dropdown-menu, +.navbar .navbar-inner #custom_menu_activitystream ul.dropdown-menu, .navbar .navbar-inner #custom_menu_language ul.dropdown-menu { max-height: 384px; overflow-y: auto; @@ -19486,6 +19488,7 @@ body.format-topcoll .course-content ul.ctopics li.section.main { .navbar-inner .nav-collapse #custom_menu_language, .navbar-inner .nav-collapse #custom_menu_courses, .navbar-inner .nav-collapse #custom_menu_themecolours, + .navbar-inner .nav-collapse #custom_menu_activitystream, .navbar-inner .nav-collapse #custom_menu { vertical-align: top; float: left;