MDL-64438 block_starredcourses: Optionally show course category
authorMihail Geshoski <mihail@moodle.com>
Wed, 18 Sep 2019 09:58:24 +0000 (17:58 +0800)
committerMihail Geshoski <mihail@moodle.com>
Wed, 18 Sep 2019 09:58:24 +0000 (17:58 +0800)
AMOS BEGIN
CPY [displaycategories,block_myoverview],[displaycategories,block_starredcourses]
AMOS END

blocks/starredcourses/amd/build/main.min.js
blocks/starredcourses/amd/build/main.min.js.map
blocks/starredcourses/amd/src/main.js
blocks/starredcourses/block_starredcourses.php
blocks/starredcourses/classes/output/main.php
blocks/starredcourses/lang/en/block_starredcourses.php
blocks/starredcourses/settings.php [new file with mode: 0644]
blocks/starredcourses/templates/main.mustache
blocks/starredcourses/upgrade.txt
blocks/starredcourses/version.php

index bb939cd..060eb3e 100644 (file)
Binary files a/blocks/starredcourses/amd/build/main.min.js and b/blocks/starredcourses/amd/build/main.min.js differ
index 7656935..31c003a 100644 (file)
Binary files a/blocks/starredcourses/amd/build/main.min.js.map and b/blocks/starredcourses/amd/build/main.min.js.map differ
index 0c6d9c0..5ad14b0 100644 (file)
@@ -39,6 +39,7 @@ function(
 ) {
 
     var SELECTORS = {
+        BLOCK_CONTAINER: '[data-region="starred-courses"]',
         STARRED_COURSES_REGION_VIEW: '[data-region="starred-courses-view"]',
         STARRED_COURSES_REGION: '[data-region="starred-courses-view-content"]'
     };
@@ -80,6 +81,12 @@ function(
 
         return Repository.getStarredCourses(args)
             .then(function(courses) {
+                // Whether the course category should be displayed in the course item.
+                var showcoursecategory = $(SELECTORS.BLOCK_CONTAINER).data('displaycoursecategory');
+                courses = courses.map(function(course) {
+                    course.showcoursecategory = showcoursecategory;
+                    return course;
+                });
                 return renderCourses(root, courses);
             }).then(function(html, js) {
                 return Templates.replaceNodeContents(content, html, js);
index 2da98ce..46bfda9 100644 (file)
@@ -72,4 +72,13 @@ class block_starredcourses extends block_base {
     public function applicable_formats() {
         return array('my' => true);
     }
+
+    /**
+     * Allow the block to have a configuration page
+     *
+     * @return boolean
+     */
+    public function has_config() {
+        return true;
+    }
 }
index 6b7d427..9daec06 100644 (file)
@@ -50,10 +50,12 @@ class main implements renderable, templatable {
         global $USER;
 
         $nocoursesurl = $output->image_url('courses', 'block_starredcourses')->out();
+        $config = get_config('block_starredcourses');
 
         return [
             'userid' => $USER->id,
-            'nocoursesimg' => $nocoursesurl
+            'nocoursesimg' => $nocoursesurl,
+            'displaycategories' => !empty($config->displaycategories)
         ];
     }
 }
index 06706b8..db56aaf 100644 (file)
@@ -22,6 +22,8 @@
  * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 
+$string['displaycategories'] = 'Display categories';
+$string['displaycategories_help'] = 'Display the course category on the starred courses block items.';
 $string['pluginname'] = 'Starred courses';
 $string['privacy:metadata'] = 'The starred courses block does not store any personal data.';
 $string['starredcourses:myaddinstance'] = 'Add a new starred courses block to Dashboard';
diff --git a/blocks/starredcourses/settings.php b/blocks/starredcourses/settings.php
new file mode 100644 (file)
index 0000000..fd5f62e
--- /dev/null
@@ -0,0 +1,34 @@
+<?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/>.
+
+/**
+ * Settings for the starredcourses block
+ *
+ * @package    block_starredcourses
+ * @copyright  2019 Mihail Geshoski <mihail@moodle.com>
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die;
+
+if ($ADMIN->fulltree) {
+    // Display Course Categories on the starred courses block items.
+    $settings->add(new admin_setting_configcheckbox(
+        'block_starredcourses/displaycategories',
+        get_string('displaycategories', 'block_starredcourses'),
+        get_string('displaycategories_help', 'block_starredcourses'),
+        1));
+}
index a25abf6..e8826ff 100644 (file)
@@ -23,7 +23,8 @@
     {}
 }}
 
-<div id="block-starredcourses-{{uniqid}}" class="block-starredcourses block-cards" data-region="starred-courses">
+<div id="block-starredcourses-{{uniqid}}" class="block-starredcourses block-cards" data-region="starred-courses"
+        data-displaycoursecategory="{{displaycategories}}">
     <div class="container-fluid p-0">
         {{> block_starredcourses/view }}
     </div>
index 4f39536..1513824 100644 (file)
@@ -1,5 +1,10 @@
 This file describes API changes in the starredcourses block code.
 
+=== 3.8 ===
+
+* New admin setting block_starredcourses/displaycategories which enables the starred courses block
+  to display the course category.
+
 === 3.7 ===
 
 * The 'block/starredcourses:addinstance' capability has been removed. It has never been used in code.
\ No newline at end of file
index e306532..83a69d1 100644 (file)
@@ -23,6 +23,6 @@
  */
 defined('MOODLE_INTERNAL') || die;
 
-$plugin->version = 2019052000;
+$plugin->version = 2019052001;
 $plugin->requires  = 2019051100;
 $plugin->component = 'block_starredcourses';
\ No newline at end of file