Skip to content
Snippets Groups Projects
Commit 5310b99d authored by Alexander Bias's avatar Alexander Bias
Browse files

Restructure code in several areas, especially to support our companion plugin...

Restructure code in several areas, especially to support our companion plugin local_boostcoc; No functionality change
parent ee4bf2ef
No related branches found
No related tags found
No related merge requests found
...@@ -4,6 +4,13 @@ moodle-block_course_overview_campus ...@@ -4,6 +4,13 @@ moodle-block_course_overview_campus
Changes Changes
------- -------
### Unreleased
* 2017-03-10 - Don't show course news when hidden courses management is active
* 2017-03-10 - Bugfix: The hidden courses management box was partly broken after the styling changes in v3.2-r3
* 2017-03-10 - Bugfix: The fallback for browsers with JavaScript disabled was broken after the styling changes in v3.2-r3
* 2017-03-10 - Restructure code in several areas, especially to support our companion plugin local_boostcoc; No functionality change
### v3.2-r3 ### v3.2-r3
* 2017-03-04 - Change the styling of the block even more to Bootstrap 4 * 2017-03-04 - Change the styling of the block even more to Bootstrap 4
......
define(["jquery"],function(a){"use strict";function b(b){void 0!==b&&b.preventDefault();var c=a("#coc-filterterm").val();"all"===c?a(".termdiv").removeClass("coc-hidden"):(a(".termdiv").addClass("coc-hidden"),a(".coc-term-"+c).removeClass("coc-hidden")),M.util.set_user_preference("block_course_overview_campus-selectedterm",c)}function c(b){void 0!==b&&b.preventDefault();var c=a("#coc-filterteacher").val();"all"===c?a(".teacherdiv").removeClass("coc-hidden"):(a(".teacherdiv").addClass("coc-hidden"),a(".coc-teacher-"+c).removeClass("coc-hidden")),M.util.set_user_preference("block_course_overview_campus-selectedteacher",c)}function d(b){void 0!==b&&b.preventDefault();var c=a("#coc-filtercategory").val();"all"===c?a(".categorydiv").removeClass("coc-hidden"):(a(".categorydiv").addClass("coc-hidden"),a(".coc-category-"+c).removeClass("coc-hidden")),M.util.set_user_preference("block_course_overview_campus-selectedcategory",c)}function e(b){void 0!==b&&b.preventDefault();var c=a("#coc-filtertoplevelcategory").val();"all"===c?a(".toplevelcategorydiv").removeClass("coc-hidden"):(a(".toplevelcategorydiv").addClass("coc-hidden"),a(".coc-toplevelcategory-"+c).removeClass("coc-hidden")),M.util.set_user_preference("block_course_overview_campus-selectedtoplevelcategory",c)}function f(f){var g,h,i,j;for(g in f)if(f.hasOwnProperty(g)&&(h=f[g],i=a("#coc-filter"+g),i.length&&(j=i.val(),j!==h)))switch(g){case"term":b();break;case"teacher":c();break;case"category":d();break;case"toplevelcategory":e()}}return{initFilter:function(g){a("#coc-filterterm").on("change",b),a("#coc-filterteacher").on("change",c),a("#coc-filtercategory").on("change",d),a("#coc-filtertoplevelcategory").on("change",e),f(g.initialsettings)}}}); define(["jquery"],function(a){"use strict";function b(b){void 0!==b&&b.preventDefault();var c=a("#coc-filterterm").val();"all"===c?a(".termdiv").removeClass("coc-hidden"):(a(".termdiv").addClass("coc-hidden"),a(".coc-term-"+c).removeClass("coc-hidden")),M.util.set_user_preference("block_course_overview_campus-selectedterm",c)}function c(b){void 0!==b&&b.preventDefault();var c=a("#coc-filterteacher").val();"all"===c?a(".teacherdiv").removeClass("coc-hidden"):(a(".teacherdiv").addClass("coc-hidden"),a(".coc-teacher-"+c).removeClass("coc-hidden")),M.util.set_user_preference("block_course_overview_campus-selectedteacher",c)}function d(b){void 0!==b&&b.preventDefault();var c=a("#coc-filtercategory").val();"all"===c?a(".categorydiv").removeClass("coc-hidden"):(a(".categorydiv").addClass("coc-hidden"),a(".coc-category-"+c).removeClass("coc-hidden")),M.util.set_user_preference("block_course_overview_campus-selectedcategory",c)}function e(b){void 0!==b&&b.preventDefault();var c=a("#coc-filtertoplevelcategory").val();"all"===c?a(".toplevelcategorydiv").removeClass("coc-hidden"):(a(".toplevelcategorydiv").addClass("coc-hidden"),a(".coc-toplevelcategory-"+c).removeClass("coc-hidden")),M.util.set_user_preference("block_course_overview_campus-selectedtoplevelcategory",c)}function f(f){var g,h,i,j;for(g in f)if(f.hasOwnProperty(g)&&(h=f[g],i=a("#coc-filter"+g),i.length&&(j=i.val(),j!==h)))switch(g){case"term":b();break;case"teacher":c();break;case"category":d();break;case"toplevelcategory":e()}}function g(){var b=new Array;a(".coc-course").each(function(c,d){0==a(d).height()&&b.push(d.id.replace("coc-course-",""))});var c=JSON.stringify(b);M.util.set_user_preference("local_boostcoc-notshowncourses",c)}return{initFilter:function(h){a("#coc-filterterm").on("change",b),a("#coc-filterteacher").on("change",c),a("#coc-filtercategory").on("change",d),a("#coc-filtertoplevelcategory").on("change",e),1==h.local_boostcoc&&a("#coc-filterterm, #coc-filterteacher, #coc-filtercategory, #coc-filtertoplevelcategory").on("change",g),f(h.initialsettings)}}});
\ No newline at end of file \ No newline at end of file
define(["jquery"],function(a){"use strict";function b(b){var c;b.preventDefault(),a("#coc-hidecourse-"+b.data.course).addClass("coc-hidden"),a("#coc-showcourse-"+b.data.course).removeClass("coc-hidden"),0===b.data.editing&&(a("#coc-course-"+b.data.course).addClass("coc-hidden"),c=parseInt(a("#coc-hiddencoursescount").html(),10),a("#coc-hiddencoursescount").html(c+1),a("#coc-hiddencoursesmanagement-bottom").removeClass("coc-hidden")),M.util.set_user_preference("block_course_overview_campus-hidecourse-"+b.data.course,1)}function c(b){b.preventDefault(),a("#coc-showcourse-"+b.data.course).addClass("coc-hidden"),a("#coc-hidecourse-"+b.data.course).removeClass("coc-hidden"),a("#coc-course-"+b.data.course).removeClass("coc-hidden"),M.util.set_user_preference("block_course_overview_campus-hidecourse-"+b.data.course,0)}return{initHideCourse:function(d){var e,f=d.courses.split(" ");for(e=0;e<f.length;e++)a("#coc-hidecourse-"+f[e]).on("click",{course:f[e],editing:d.editing},b),a("#coc-showcourse-"+f[e]).on("click",{course:f[e]},c)}}}); define(["jquery"],function(a){"use strict";function b(b){var c;b.preventDefault(),1===b.data.manage&&(a("#coc-hidecourseicon-"+b.data.course).addClass("coc-hidden"),a("#coc-showcourseicon-"+b.data.course).removeClass("coc-hidden")),0===b.data.manage&&(a(".coc-hidecourse-"+b.data.course).addClass("coc-hidden"),c=parseInt(a("#coc-hiddencoursescount").html(),10),a("#coc-hiddencoursescount").html(c+1),a("#coc-hiddencoursesmanagement-bottom .row").removeClass("coc-hidden")),M.util.set_user_preference("block_course_overview_campus-hidecourse-"+b.data.course,1)}function c(b){b.preventDefault(),1===b.data.manage&&(a("#coc-showcourseicon-"+b.data.course).addClass("coc-hidden"),a("#coc-hidecourseicon-"+b.data.course).removeClass("coc-hidden")),M.util.set_user_preference("block_course_overview_campus-hidecourse-"+b.data.course,0)}function d(){var b=new Array;a(".coc-course").each(function(c,d){0==a(d).height()&&b.push(d.id.replace("coc-course-",""))});var c=JSON.stringify(b);M.util.set_user_preference("local_boostcoc-notshowncourses",c)}return{initHideCourse:function(e){var f,g=e.courses.split(" ");for(f=0;f<g.length;f++)a("#coc-hidecourseicon-"+g[f]).on("click",{course:g[f],manage:e.manage},b),a("#coc-showcourseicon-"+g[f]).on("click",{course:g[f],manage:e.manage},c),1==e.local_boostcoc&&0==e.manage&&a("#coc-hidecourseicon-"+g[f]).on("click",d)}}});
\ No newline at end of file \ No newline at end of file
define(["jquery"],function(a){"use strict";function b(b){b.preventDefault(),a("#coc-coursenews-"+b.data.course).addClass("coc-hidden"),a("#coc-hidenews-"+b.data.course).addClass("coc-hidden"),a("#coc-shownews-"+b.data.course).removeClass("coc-hidden"),M.util.set_user_preference("block_course_overview_campus-hidenews-"+b.data.course,1)}function c(b){b.preventDefault(),a("#coc-coursenews-"+b.data.course).removeClass("coc-hidden"),a("#coc-hidenews-"+b.data.course).removeClass("coc-hidden"),a("#coc-shownews-"+b.data.course).addClass("coc-hidden"),M.util.set_user_preference("block_course_overview_campus-hidenews-"+b.data.course,0)}return{initHideNews:function(d){var e,f=d.courses.split(" ");for(e=0;e<f.length;e++)a("#coc-hidenews-"+f[e]).on("click",{course:f[e]},b),a("#coc-shownews-"+f[e]).on("click",{course:f[e]},c)}}}); define(["jquery"],function(a){"use strict";function b(b){b.preventDefault(),a("#coc-coursenews-"+b.data.course).addClass("coc-hidden"),a("#coc-hidenewsicon-"+b.data.course).addClass("coc-hidden"),a("#coc-shownewsicon-"+b.data.course).removeClass("coc-hidden"),M.util.set_user_preference("block_course_overview_campus-hidenews-"+b.data.course,1)}function c(b){b.preventDefault(),a("#coc-coursenews-"+b.data.course).removeClass("coc-hidden"),a("#coc-hidenewsicon-"+b.data.course).removeClass("coc-hidden"),a("#coc-shownewsicon-"+b.data.course).addClass("coc-hidden"),M.util.set_user_preference("block_course_overview_campus-hidenews-"+b.data.course,0)}return{initHideNews:function(d){var e,f=d.courses.split(" ");for(e=0;e<f.length;e++)a("#coc-hidenewsicon-"+f[e]).on("click",{course:f[e]},b),a("#coc-shownewsicon-"+f[e]).on("click",{course:f[e]},c)}}});
\ No newline at end of file \ No newline at end of file
...@@ -113,17 +113,39 @@ define(['jquery'], function ($) { ...@@ -113,17 +113,39 @@ define(['jquery'], function ($) {
} }
} }
function localBoostCOCRemember() {
// Get all course nodes which are not shown (= invisible = their height is 0) and store their IDs in an array
var notshowncourses = new Array();
$('.coc-course').each(function(index, element) {
if ($(element).height() == 0) {
notshowncourses.push(element.id.replace('coc-course-', ''));
}
});
// Convert not shown courses array to JSON
var jsonstring = JSON.stringify(notshowncourses);
// Store the current status of not shown courses (Uses AJAX to save to the database).
M.util.set_user_preference('local_boostcoc-notshowncourses', jsonstring);
}
return { return {
initFilter: function (options) { initFilter: function (params) {
// Add change listener to filter widgets. // Add change listener to filter widgets.
$('#coc-filterterm').on('change', filterTerm); $('#coc-filterterm').on('change', filterTerm);
$('#coc-filterteacher').on('change', filterTeacher); $('#coc-filterteacher').on('change', filterTeacher);
$('#coc-filtercategory').on('change', filterCategory); $('#coc-filtercategory').on('change', filterCategory);
$('#coc-filtertoplevelcategory').on('change', filterTopLevelCategory); $('#coc-filtertoplevelcategory').on('change', filterTopLevelCategory);
// Add change listener to filter widgets for local_boostcoc.
if (params.local_boostcoc == true) {
$('#coc-filterterm, #coc-filterteacher, #coc-filtercategory, #coc-filtertoplevelcategory').on('change',
localBoostCOCRemember);
}
// Make sure any initial filter settings are applied (may be needed if the user // Make sure any initial filter settings are applied (may be needed if the user
// has used the browser 'back' button). // has used the browser 'back' button).
applyAllFilters(options.initialsettings); applyAllFilters(params.initialsettings);
} }
}; };
}); });
...@@ -17,13 +17,15 @@ define(['jquery'], function ($) { ...@@ -17,13 +17,15 @@ define(['jquery'], function ($) {
// Prevent the event from refreshing the page // Prevent the event from refreshing the page
e.preventDefault(); e.preventDefault();
$('#coc-hidecourse-' + e.data.course).addClass('coc-hidden'); if (e.data.manage === 1) {
$('#coc-showcourse-' + e.data.course).removeClass('coc-hidden'); $('#coc-hidecourseicon-' + e.data.course).addClass('coc-hidden');
if (e.data.editing === 0) { $('#coc-showcourseicon-' + e.data.course).removeClass('coc-hidden');
$('#coc-course-' + e.data.course).addClass('coc-hidden'); }
if (e.data.manage === 0) {
$('.coc-hidecourse-' + e.data.course).addClass('coc-hidden');
hiddenCount = parseInt($('#coc-hiddencoursescount').html(), 10); hiddenCount = parseInt($('#coc-hiddencoursescount').html(), 10);
$('#coc-hiddencoursescount').html(hiddenCount + 1); $('#coc-hiddencoursescount').html(hiddenCount + 1);
$('#coc-hiddencoursesmanagement-bottom').removeClass('coc-hidden'); $('#coc-hiddencoursesmanagement-bottom .row').removeClass('coc-hidden');
} }
// Store the course status (Uses AJAX to save to the database). // Store the course status (Uses AJAX to save to the database).
...@@ -34,22 +36,49 @@ define(['jquery'], function ($) { ...@@ -34,22 +36,49 @@ define(['jquery'], function ($) {
// Prevent the event from refreshing the page // Prevent the event from refreshing the page
e.preventDefault(); e.preventDefault();
$('#coc-showcourse-' + e.data.course).addClass('coc-hidden'); if (e.data.manage === 1) {
$('#coc-hidecourse-' + e.data.course).removeClass('coc-hidden'); $('#coc-showcourseicon-' + e.data.course).addClass('coc-hidden');
$('#coc-course-' + e.data.course).removeClass('coc-hidden'); $('#coc-hidecourseicon-' + e.data.course).removeClass('coc-hidden');
}
// Store the course status (Uses AJAX to save to the database). // Store the course status (Uses AJAX to save to the database).
M.util.set_user_preference('block_course_overview_campus-hidecourse-' + e.data.course, 0); M.util.set_user_preference('block_course_overview_campus-hidecourse-' + e.data.course, 0);
} }
function localBoostCOCRemember() {
// Get all course nodes which are not shown (= invisible = their height is 0) and store their IDs in an array
var notshowncourses = new Array();
$('.coc-course').each(function(index, element) {
if ($(element).height() == 0) {
notshowncourses.push(element.id.replace('coc-course-', ''));
}
});
// Convert not shown courses array to JSON
var jsonstring = JSON.stringify(notshowncourses);
// Store the current status of not shown courses (Uses AJAX to save to the database).
M.util.set_user_preference('local_boostcoc-notshowncourses', jsonstring);
}
return { return {
initHideCourse: function (params) { initHideCourse: function (params) {
var i; var i;
var courses = params.courses.split(" "); var courses = params.courses.split(" ");
for (i = 0; i<courses.length; i++) { for (i = 0; i<courses.length; i++) {
$('#coc-hidecourse-' + courses[i]).on('click', {course: courses[i], editing: params.editing}, hideCourse); // Add change listener to hide courses widgets.
$('#coc-showcourse-' + courses[i]).on('click', {course: courses[i]}, showCourse); $('#coc-hidecourseicon-' + courses[i]).on('click', {course: courses[i], manage: params.manage}, hideCourse);
// Add change listener to show courses widgets.
$('#coc-showcourseicon-' + courses[i]).on('click', {course: courses[i], manage: params.manage}, showCourse);
// Add change listener to show / hide courses widgets for local_boostcoc.
// Do this only when hidden courses management isn't active. This way, the notshowncourses will not be remembered on
// the server until the user finishes hidden courses management. While working in hidden courses management in one
// browser tab, the nav drawer in a second browser tab would still show the old status. But we accept this because
// otherwise we would have to implement a second localBoostCOCRemember detection algorithm for hidden courses
// management.
if (params.local_boostcoc == true && params.manage == false) {
$('#coc-hidecourseicon-' + courses[i]).on('click', localBoostCOCRemember);
}
} }
} }
}; };
......
...@@ -17,8 +17,8 @@ define(['jquery'], function ($) { ...@@ -17,8 +17,8 @@ define(['jquery'], function ($) {
e.preventDefault(); e.preventDefault();
$('#coc-coursenews-' + e.data.course).addClass('coc-hidden'); $('#coc-coursenews-' + e.data.course).addClass('coc-hidden');
$('#coc-hidenews-' + e.data.course).addClass('coc-hidden'); $('#coc-hidenewsicon-' + e.data.course).addClass('coc-hidden');
$('#coc-shownews-' + e.data.course).removeClass('coc-hidden'); $('#coc-shownewsicon-' + e.data.course).removeClass('coc-hidden');
// Store the course news status (Uses AJAX to save to the database). // Store the course news status (Uses AJAX to save to the database).
M.util.set_user_preference('block_course_overview_campus-hidenews-' + e.data.course, 1); M.util.set_user_preference('block_course_overview_campus-hidenews-' + e.data.course, 1);
...@@ -29,8 +29,8 @@ define(['jquery'], function ($) { ...@@ -29,8 +29,8 @@ define(['jquery'], function ($) {
e.preventDefault(); e.preventDefault();
$('#coc-coursenews-' + e.data.course).removeClass('coc-hidden'); $('#coc-coursenews-' + e.data.course).removeClass('coc-hidden');
$('#coc-hidenews-' + e.data.course).removeClass('coc-hidden'); $('#coc-hidenewsicon-' + e.data.course).removeClass('coc-hidden');
$('#coc-shownews-' + e.data.course).addClass('coc-hidden'); $('#coc-shownewsicon-' + e.data.course).addClass('coc-hidden');
// Store the course news status (Uses AJAX to save to the database). // Store the course news status (Uses AJAX to save to the database).
M.util.set_user_preference('block_course_overview_campus-hidenews-' + e.data.course, 0); M.util.set_user_preference('block_course_overview_campus-hidenews-' + e.data.course, 0);
...@@ -39,11 +39,12 @@ define(['jquery'], function ($) { ...@@ -39,11 +39,12 @@ define(['jquery'], function ($) {
return { return {
initHideNews: function (params) { initHideNews: function (params) {
var i; var i;
var courses = params.courses.split(" "); var courses = params.courses.split(" ");
for (i = 0; i<courses.length; i++) { for (i = 0; i<courses.length; i++) {
$('#coc-hidenews-' + courses[i]).on('click', {course: courses[i]}, hideNewsCourse); // Add change listener to hide course news widgets.
$('#coc-shownews-' + courses[i]).on('click', {course: courses[i]}, showNews); $('#coc-hidenewsicon-' + courses[i]).on('click', {course: courses[i]}, hideNewsCourse);
// Add change listener to show course news widgets.
$('#coc-shownewsicon-' + courses[i]).on('click', {course: courses[i]}, showNews);
} }
} }
}; };
......
This diff is collapsed.
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
// along with Moodle. If not, see <http://www.gnu.org/licenses/>. // along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/** /**
* Block "course overview (campus)" - Library * Block "course overview (campus)" - Local library
* *
* @package block_course_overview_campus * @package block_course_overview_campus
* @copyright 2013 Alexander Bias, Ulm University <alexander.bias@uni-ulm.de> * @copyright 2013 Alexander Bias, Ulm University <alexander.bias@uni-ulm.de>
...@@ -24,6 +24,148 @@ ...@@ -24,6 +24,148 @@
defined('MOODLE_INTERNAL') || die(); defined('MOODLE_INTERNAL') || die();
/**
* Get my courses from DB
*
* @return array
*/
function block_course_overview_campus_get_my_courses() {
// Get my courses in alphabetical order
$courses = enrol_get_my_courses('id, shortname', 'fullname ASC');
// Remove frontpage course, if enrolled, from courses list
$site = get_site();
if (array_key_exists($site->id, $courses)) {
unset($courses[$site->id]);
}
return $courses;
}
/**
* Check if course is hidden according to the hide courses feature
*
* @param course $course
* @return boolean
*/
function block_course_overview_campus_course_hidden_by_hidecourses($course) {
// Course is visible if it isn't hidden
if (get_user_preferences('block_course_overview_campus-hidecourse-'.$course->id, 0) == 0) {
return false;
// Otherwise it is hidden
} else {
return true;
}
}
/**
* Check if course news are hidden for this course
*
* @param course $course
* @return boolean
*/
function block_course_overview_campus_coursenews_hidden($course) {
// Course news are hidden if the user wanted it for this course or if they are hidden by default
if (get_user_preferences('block_course_overview_campus-hidenews-'.$course->id, get_config('block_course_overview_campus', 'coursenewsdefault')) == 1) {
return true;
// Otherwise it is visible
} else {
return false;
}
}
/**
* Check if course is hidden according to the term course filter
*
* @param course $course
* @param string $selectedterm
* @return boolean
*/
function block_course_overview_campus_course_hidden_by_termcoursefilter($course, $selectedterm) {
// Course is visible if it is within selected term or all terms are selected
if ($course->term == $selectedterm || $selectedterm == 'all') {
return false;
// Otherwise it is hidden
} else {
return true;
}
}
/**
* Check if course is hidden according to the parent category course filter
*
* @param course $course
* @param string $selectedcategory
* @return boolean
*/
function block_course_overview_campus_course_hidden_by_categorycoursefilter($course, $selectedcategory) {
// Course is visible if it is within selected parent category or all categories are selected
if ($course->categoryid == $selectedcategory || $selectedcategory == 'all') {
return false;
// Otherwise it is hidden
} else {
return true;
}
}
/**
* Check if course is hidden according to the top level category course filter
*
* @param course $course
* @param string $selectedtoplevelcategory
* @return boolean
*/
function block_course_overview_campus_course_hidden_by_toplevelcategorycoursefilter($course, $selectedtoplevelcategory) {
// Course is visible if it is within selected top level category or all categories are selected
if ($course->toplevelcategoryid == $selectedtoplevelcategory || $selectedtoplevelcategory == 'all') {
return false;
// Otherwise it is hidden
} else {
return true;
}
}
/**
* Check if course is visible according to the teacher course filter
*
* @param course $course
* @param string $selectedteacher
* @return boolean
*/
function block_course_overview_campus_course_hidden_by_teachercoursefilter($course, $selectedteacher) {
// Course is visible if it has the selected teacher or all teachers are selected
if (isset($course->teachers[$selectedteacher]) || $selectedteacher == 'all') {
return false;
// Otherwise it is hidden
} else {
return true;
}
}
/**
* Check if course is hidden according to any (preprocessed!) filter
*
* @param course $course
* @return boolean
*/
function block_course_overview_campus_course_hidden_by_anyfilter($course) {
// Check if there is any reason to hide the course
$hidecourse = (isset($course->termcoursefiltered) && $course->termcoursefiltered) ||
(isset($course->categorycoursefiltered) && $course->categorycoursefiltered == true) ||
(isset($course->toplevelcategorycoursefiltered) && $course->toplevelcategorycoursefiltered == true) ||
(isset($course->teachercoursefiltered) && $course->teachercoursefiltered == true);
return $hidecourse;
}
/** /**
* Display overview for courses (copied from /blocks/course_overview/locallib.php) * Display overview for courses (copied from /blocks/course_overview/locallib.php)
* *
...@@ -64,7 +206,9 @@ function block_course_overview_campus_get_overviews($courses, $skip) { ...@@ -64,7 +206,9 @@ function block_course_overview_campus_get_overviews($courses, $skip) {
* @param object $coc_config The config object * @param object $coc_config The config object
* @return bool * @return bool
*/ */
function block_course_overview_campus_check_term_config($coc_config) { function block_course_overview_campus_check_term_config() {
$coc_config = get_config('block_course_overview_campus');
if ($coc_config->termmode == 1) { if ($coc_config->termmode == 1) {
return true; return true;
} }
...@@ -96,7 +240,7 @@ function block_course_overview_campus_check_term_config($coc_config) { ...@@ -96,7 +240,7 @@ function block_course_overview_campus_check_term_config($coc_config) {
* @return string String with concatenated teacher names * @return string String with concatenated teacher names
*/ */
function block_course_overview_campus_get_teachername_string($teachers) { function block_course_overview_campus_get_teachername_string($teachers) {
global $coc_config; $coc_config = get_config('block_course_overview_campus');
// If given array is empty, return empty string // If given array is empty, return empty string
if (empty($teachers)) if (empty($teachers))
...@@ -150,7 +294,7 @@ function block_course_overview_campus_get_teachername_string($teachers) { ...@@ -150,7 +294,7 @@ function block_course_overview_campus_get_teachername_string($teachers) {
* @return string String with the term's displayname * @return string String with the term's displayname
*/ */
function block_course_overview_campus_get_term_displayname($termname, $year, $year2='') { function block_course_overview_campus_get_term_displayname($termname, $year, $year2='') {
global $coc_config; $coc_config = get_config('block_course_overview_campus');
// Build the first year - second year combination // Build the first year - second year combination
$displayname = $year; $displayname = $year;
...@@ -253,3 +397,51 @@ function block_course_overview_campus_compare_categories($a, $b) { ...@@ -253,3 +397,51 @@ function block_course_overview_campus_compare_categories($a, $b) {
return 0; return 0;
} }
} }
/**
* Remember the not shown courses for local_boostcoc
*
* @param array $courses
*/
function block_course_overview_campus_remember_notshowncourses_for_local_boostcoc($courses) {
// Do only if local_boostcoc is installed
if (block_course_overview_campus_check_local_boostcoc() == true) {
// Get all courses which are not shown (because they are hidden by any filter or by the hide courses feature) and store their IDs in an array
$notshowncourses = array();
foreach ($courses as $c) {
if ((block_course_overview_campus_course_hidden_by_anyfilter($c) == true || block_course_overview_campus_course_hidden_by_hidecourses($c)) == true) {
$notshowncourses[] = $c->id;
}
}
// Convert not shown courses array to JSON
$jsonstring = json_encode($notshowncourses);
// Store the current status of not shown courses (Uses AJAX to save to the database).
set_user_preference('local_boostcoc-notshowncourses', $jsonstring);
}
}
/**
* Check if our companion plugin local_boostcoc is installed
*
* @return boolean
*/
function block_course_overview_campus_check_local_boostcoc() {
global $CFG;
static $local_boostcoc_installed;
if (!isset($local_boostcoc_installed)) {
if (file_exists($CFG->dirroot.'/local/boostcoc/lib.php')) {
$local_boostcoc_installed = true;
} else {
$local_boostcoc_installed = false;
}
}
return $local_boostcoc_installed;
}
...@@ -24,8 +24,6 @@ ...@@ -24,8 +24,6 @@
defined('MOODLE_INTERNAL') || die(); defined('MOODLE_INTERNAL') || die();
require_once(dirname(__FILE__) . '/lib.php');
if ($hassiteconfig) { if ($hassiteconfig) {
// Empty $settings to prevent a single settings page from being created by lib/classes/plugininfo/block.php because we will create several settings pages now // Empty $settings to prevent a single settings page from being created by lib/classes/plugininfo/block.php because we will create several settings pages now
$settings = null; $settings = null;
...@@ -77,6 +75,10 @@ if ($hassiteconfig) { ...@@ -77,6 +75,10 @@ if ($hassiteconfig) {
// Create full settings page structure // Create full settings page structure
else if ($ADMIN->fulltree) { else if ($ADMIN->fulltree) {
// Include local library
require_once(dirname(__FILE__) . '/locallib.php');
// Settings page: General // Settings page: General
$settingspage = new admin_settingpage('block_course_overview_campus_general', get_string('settingspage_general', 'block_course_overview_campus', null, true)); $settingspage = new admin_settingpage('block_course_overview_campus_general', get_string('settingspage_general', 'block_course_overview_campus', null, true));
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
defined('MOODLE_INTERNAL') || die(); defined('MOODLE_INTERNAL') || die();
$plugin->component = 'block_course_overview_campus'; $plugin->component = 'block_course_overview_campus';
$plugin->version = 2017030400; $plugin->version = 2017031000;
$plugin->release = 'v3.2-r3'; $plugin->release = 'v3.2-r3';
$plugin->requires = 2016120500; $plugin->requires = 2016120500;
$plugin->maturity = MATURITY_STABLE; $plugin->maturity = MATURITY_STABLE;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment