Added coaching navigation links and enable/disable setting
This commit is contained in:
parent
747e1decd1
commit
3002a866bb
|
@ -22,6 +22,7 @@
|
||||||
|
|
||||||
namespace local_treestudyplan\local\helpers;
|
namespace local_treestudyplan\local\helpers;
|
||||||
use \core_course_category;
|
use \core_course_category;
|
||||||
|
use local_treestudyplan\courseservice;
|
||||||
|
|
||||||
defined('MOODLE_INTERNAL') || die();
|
defined('MOODLE_INTERNAL') || die();
|
||||||
require_once($CFG->dirroot.'/webservice/lib.php');
|
require_once($CFG->dirroot.'/webservice/lib.php');
|
||||||
|
@ -73,19 +74,11 @@ class webservicehelper {
|
||||||
$list = [];
|
$list = [];
|
||||||
// Initialize parent if needed.
|
// Initialize parent if needed.
|
||||||
if ($parent == null) {
|
if ($parent == null) {
|
||||||
$parent = \core_course_category::user_top();
|
$children = courseservice::user_tops();
|
||||||
|
} else {
|
||||||
if ($parent == null) {
|
$children = $parent->get_children();
|
||||||
// If the parent is still null, we do not have a valid user top.
|
array_unshift($children,$parent);
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (has_capability($capability, $parent->get_context())) {
|
|
||||||
$list[] = $parent;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$children = $parent->get_children();
|
|
||||||
// Since the change for a category permission is greatest at the lower levels,.
|
// Since the change for a category permission is greatest at the lower levels,.
|
||||||
// We scan in two stages, to focus the search more on the lower levels instead of diving deep into the first category.
|
// We scan in two stages, to focus the search more on the lower levels instead of diving deep into the first category.
|
||||||
// Stage one (surface check): check all children for the capability.
|
// Stage one (surface check): check all children for the capability.
|
||||||
|
|
|
@ -555,7 +555,12 @@ class studentstudyplanservice extends \external_api {
|
||||||
$userid = $USER->id;
|
$userid = $USER->id;
|
||||||
|
|
||||||
\external_api::validate_context(\context_system::instance());
|
\external_api::validate_context(\context_system::instance());
|
||||||
|
|
||||||
|
// Return empty list if coach role not enabled
|
||||||
|
if ( ! (premium::enabled() && \get_config("local_treestudyplan","enablecoach")) ) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
$records = $DB->get_records("local_treestudyplan_coach",["user_id" => $userid]);
|
$records = $DB->get_records("local_treestudyplan_coach",["user_id" => $userid]);
|
||||||
|
|
||||||
$list = [];
|
$list = [];
|
||||||
|
|
|
@ -636,7 +636,12 @@ class studyplan {
|
||||||
* @param bool|stdClass|null $user The userid or user record of the user Leave empty to check current user.
|
* @param bool|stdClass|null $user The userid or user record of the user Leave empty to check current user.
|
||||||
*/
|
*/
|
||||||
public function is_coach($user=null) {
|
public function is_coach($user=null) {
|
||||||
global $DB, $USER;
|
global $DB, $USER
|
||||||
|
;
|
||||||
|
if ( ! (premium::enabled() && \get_config("local_treestudyplan","enablecoach")) ) {
|
||||||
|
// If coach role is not available, return false immediately.
|
||||||
|
return false;
|
||||||
|
}
|
||||||
if($user == null) {
|
if($user == null) {
|
||||||
$user = $USER;
|
$user = $USER;
|
||||||
$userid = $USER->id;
|
$userid = $USER->id;
|
||||||
|
|
|
@ -39,6 +39,9 @@ $PAGE->set_heading(get_string('coaching_plans', 'local_treestudyplan'));
|
||||||
|
|
||||||
|
|
||||||
premium::require_premium();
|
premium::require_premium();
|
||||||
|
if ( ! (\get_config("local_treestudyplan","enablecoach")) ) {
|
||||||
|
throw new \moodle_exception("error:coachdisabled","local_treestudyplan");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Load javascripts and specific css.
|
// Load javascripts and specific css.
|
||||||
|
|
|
@ -114,7 +114,8 @@ $string["settingdesc_enableplansharing"] = 'Allow students to share access to th
|
||||||
|
|
||||||
$string["setting_limitcourselist"] = 'Limit course list to studyplan category';
|
$string["setting_limitcourselist"] = 'Limit course list to studyplan category';
|
||||||
$string["settingdesc_limitcourselist"] = 'Limit the list of available courses for a studyplan to the category the studyplan is located in.';
|
$string["settingdesc_limitcourselist"] = 'Limit the list of available courses for a studyplan to the category the studyplan is located in.';
|
||||||
|
$string["setting_enablecoach"] = 'Enable coach rolae';
|
||||||
|
$string["settingdesc_enablecoach"] = 'The coach role allows one coach specific access to one studyplan with limited access to modify it.';
|
||||||
|
|
||||||
$string["setting_courseprogressbar"] = 'Show progress bar in course';
|
$string["setting_courseprogressbar"] = 'Show progress bar in course';
|
||||||
$string["settingdesc_courseprogressbar"] = 'Show a progress bar in the course popup';
|
$string["settingdesc_courseprogressbar"] = 'Show a progress bar in the course popup';
|
||||||
|
@ -258,6 +259,7 @@ $string["studyplan_future"] = "Upcoming study plans";
|
||||||
$string["link_myreport"] = "My study plan";
|
$string["link_myreport"] = "My study plan";
|
||||||
$string["link_viewplan"] = "Study plans";
|
$string["link_viewplan"] = "Study plans";
|
||||||
$string["link_editplan"] = "Manage study plans";
|
$string["link_editplan"] = "Manage study plans";
|
||||||
|
$string["link_coach"] = "Coaching studyplans";
|
||||||
$string["nav_invited"] = "View study plan by invitation";
|
$string["nav_invited"] = "View study plan by invitation";
|
||||||
$string["associations"] = 'Associations';
|
$string["associations"] = 'Associations';
|
||||||
$string["associated_cohorts"] = 'Linked cohorts';
|
$string["associated_cohorts"] = 'Linked cohorts';
|
||||||
|
@ -476,6 +478,7 @@ $string["settingdesc_premium_key"] = 'Paste the premium key you received in the
|
||||||
$string["premiumfeature:morestudyplans"] = 'Creating more than 5 studyplans in a single category is a premium feature.';
|
$string["premiumfeature:morestudyplans"] = 'Creating more than 5 studyplans in a single category is a premium feature.';
|
||||||
$string["premiumfeature:morecategories"] = 'Creating studyplans in more than 20 categories is a premium feature.';
|
$string["premiumfeature:morecategories"] = 'Creating studyplans in more than 20 categories is a premium feature.';
|
||||||
$string["premiumfeature:warning"] = 'The features on this page are only accessible if your site has premium features enabled.';
|
$string["premiumfeature:warning"] = 'The features on this page are only accessible if your site has premium features enabled.';
|
||||||
|
$string["error:coachdisabled"] = "The coach page has been disabled by the system administrator";
|
||||||
$string["overall"] = 'Course';
|
$string["overall"] = 'Course';
|
||||||
$string["studyplan_report"] = 'Studyplan result overview';
|
$string["studyplan_report"] = 'Studyplan result overview';
|
||||||
$string["overviewreport:all"] = 'Result overview';
|
$string["overviewreport:all"] = 'Result overview';
|
||||||
|
|
|
@ -115,6 +115,8 @@ $string["settingdesc_enableplansharing"] = 'Sta studenten toe om hun studieplann
|
||||||
|
|
||||||
$string["setting_limitcourselist"] = 'Cursusenlijst beperken tot categorie';
|
$string["setting_limitcourselist"] = 'Cursusenlijst beperken tot categorie';
|
||||||
$string["settingdesc_limitcourselist"] = 'Beperk de lijst met beschikbare cursussen om in een studieplan te slepen tot de cateogrie waarin het studieplan zich bevindt.';
|
$string["settingdesc_limitcourselist"] = 'Beperk de lijst met beschikbare cursussen om in een studieplan te slepen tot de cateogrie waarin het studieplan zich bevindt.';
|
||||||
|
$string["setting_enablecoach"] = 'Coach rol inschakelen';
|
||||||
|
$string["settingdesc_enablecoach"] = 'Een coach kan aan een specifiek studieplan gekoppeld worden om deze te bewerken en studentresultaten te bekijken.';
|
||||||
|
|
||||||
$string["setting_courseprogressbar"] = 'Toon voortgangsbalk in cursus';
|
$string["setting_courseprogressbar"] = 'Toon voortgangsbalk in cursus';
|
||||||
$string["settingdesc_courseprogressbar"] = 'Laat een voortgangsbalk zien in de cursuspopup';
|
$string["settingdesc_courseprogressbar"] = 'Laat een voortgangsbalk zien in de cursuspopup';
|
||||||
|
@ -259,6 +261,7 @@ $string["studyplan_future"] = "Toekomstige studieplannen";
|
||||||
$string["link_myreport"] = "Mijn studieplan";
|
$string["link_myreport"] = "Mijn studieplan";
|
||||||
$string["link_viewplan"] = "Studieplannen";
|
$string["link_viewplan"] = "Studieplannen";
|
||||||
$string["link_editplan"] = "Studieplannen beheren";
|
$string["link_editplan"] = "Studieplannen beheren";
|
||||||
|
$string["link_coach"] = "Coach op studieplannen";
|
||||||
$string["nav_invited"] = "Studieplan op uitnodiging bekijken";
|
$string["nav_invited"] = "Studieplan op uitnodiging bekijken";
|
||||||
$string["associations"] = 'Koppelingen';
|
$string["associations"] = 'Koppelingen';
|
||||||
$string["associated_cohorts"] = 'Gekoppelde site-groepen';
|
$string["associated_cohorts"] = 'Gekoppelde site-groepen';
|
||||||
|
@ -476,7 +479,8 @@ $string["settingdesc_premium_key"] = 'Premium activation key';
|
||||||
|
|
||||||
$string["premiumfeature:morestudyplans"] = 'Meer dan 5 studieplannen in één categorie aanmaken kan alleen met premium toegang.';
|
$string["premiumfeature:morestudyplans"] = 'Meer dan 5 studieplannen in één categorie aanmaken kan alleen met premium toegang.';
|
||||||
$string["premiumfeature:morecategories"] = 'In meer dan 20 categoriën een studieplan aanmaken kan alleen met premium toegang.';
|
$string["premiumfeature:morecategories"] = 'In meer dan 20 categoriën een studieplan aanmaken kan alleen met premium toegang.';
|
||||||
$string["premiumfeature:warning"] = 'De fucnties in deze pagina kun je alleen gebruiken met premium toegang.';
|
$string["premiumfeature:warning"] = 'De functies in deze pagina kun je alleen gebruiken met premium toegang.';
|
||||||
|
$string["error:coachdisabled"] = "De coach functie is uitgeschakeld";
|
||||||
$string["overall"] = 'Cursus voltooid';
|
$string["overall"] = 'Cursus voltooid';
|
||||||
$string["studyplan_report"] = 'Studieplan resultatenoverzicht';
|
$string["studyplan_report"] = 'Studieplan resultatenoverzicht';
|
||||||
$string["overviewreport:all"] = 'Resultatenoverzicht';
|
$string["overviewreport:all"] = 'Resultatenoverzicht';
|
||||||
|
|
27
lib.php
27
lib.php
|
@ -24,6 +24,7 @@
|
||||||
require_once($CFG->dirroot.'/course/modlib.php');
|
require_once($CFG->dirroot.'/course/modlib.php');
|
||||||
|
|
||||||
use local_treestudyplan\local\helpers\webservicehelper;
|
use local_treestudyplan\local\helpers\webservicehelper;
|
||||||
|
use local_treestudyplan\premium;
|
||||||
use \local_treestudyplan\studyplan;
|
use \local_treestudyplan\studyplan;
|
||||||
use local_treestudyplan\studyplanpage;
|
use local_treestudyplan\studyplanpage;
|
||||||
|
|
||||||
|
@ -55,6 +56,10 @@ function local_treestudyplan_autofill_customusermenuitems() {
|
||||||
"/local/treestudyplan/view-plan.php" => ["included" => false, "strkey" => "link_viewplan"],
|
"/local/treestudyplan/view-plan.php" => ["included" => false, "strkey" => "link_viewplan"],
|
||||||
"/local/treestudyplan/edit-plan.php" => ["included" => false, "strkey" => "link_editplan"],
|
"/local/treestudyplan/edit-plan.php" => ["included" => false, "strkey" => "link_editplan"],
|
||||||
];
|
];
|
||||||
|
if ((premium::enabled() && \get_config("local_treestudyplan","enablecoach"))) {
|
||||||
|
// Also include the coach role if enabled
|
||||||
|
$navitems["/local/treestudyplan/coach.php"] = ["included" => false, "strkey" => "link_coach"];
|
||||||
|
}
|
||||||
|
|
||||||
// Load the custom menu items from config.
|
// Load the custom menu items from config.
|
||||||
$custommenuitems = get_config("core", "custommenuitems");
|
$custommenuitems = get_config("core", "custommenuitems");
|
||||||
|
@ -98,7 +103,7 @@ function local_treestudyplan_autofill_customusermenuitems() {
|
||||||
* @param global_navigation $navigation Navigation object
|
* @param global_navigation $navigation Navigation object
|
||||||
*/
|
*/
|
||||||
function local_treestudyplan_extend_navigation(global_navigation $navigation) {
|
function local_treestudyplan_extend_navigation(global_navigation $navigation) {
|
||||||
global $CFG, $PAGE, $COURSE, $USER;
|
global $CFG, $PAGE, $COURSE, $USER, $DB;
|
||||||
|
|
||||||
$systemcontext = context_system::instance();
|
$systemcontext = context_system::instance();
|
||||||
|
|
||||||
|
@ -193,10 +198,30 @@ function local_treestudyplan_extend_navigation(global_navigation $navigation) {
|
||||||
} else {
|
} else {
|
||||||
$hideprimaryhrefs[] = "/local/treestudyplan/edit-plan.php";
|
$hideprimaryhrefs[] = "/local/treestudyplan/edit-plan.php";
|
||||||
}
|
}
|
||||||
|
if ( (premium::enabled() && \get_config("local_treestudyplan","enablecoach")) &&
|
||||||
|
(has_capability('local/treestudyplan:coach', context_system::instance())
|
||||||
|
|| webservicehelper::has_capability_in_any_category('local/treestudyplan:coach')
|
||||||
|
) && $DB->count_records("local_treestudyplan_coach",["user_id" => $USER->id]) > 0
|
||||||
|
) {
|
||||||
|
$node = navigation_node::create(
|
||||||
|
get_string("link_coach", "local_treestudyplan"),
|
||||||
|
new moodle_url($CFG->wwwroot . "/local/treestudyplan/coach.php", array()),
|
||||||
|
global_navigation::TYPE_SYSTEM ,
|
||||||
|
null,
|
||||||
|
"local_treestudyplan_coach",
|
||||||
|
new pix_icon("viewplans", '', 'local_treestudyplan')
|
||||||
|
);
|
||||||
|
$node->showinflatnavigation = true;
|
||||||
|
$node->showinsecondarynavigation = true;
|
||||||
|
$navigation->add_node($node, 'mycourses');
|
||||||
|
} else {
|
||||||
|
$hideprimaryhrefs[] = "/local/treestudyplan/coach.php";
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$hideprimaryhrefs[] = "/local/treestudyplan/myreport.php";
|
$hideprimaryhrefs[] = "/local/treestudyplan/myreport.php";
|
||||||
$hideprimaryhrefs[] = "/local/treestudyplan/edit-plan.php";
|
$hideprimaryhrefs[] = "/local/treestudyplan/edit-plan.php";
|
||||||
$hideprimaryhrefs[] = "/local/treestudyplan/view-plan.php";
|
$hideprimaryhrefs[] = "/local/treestudyplan/view-plan.php";
|
||||||
|
$hideprimaryhrefs[] = "/local/treestudyplan/coach.php";
|
||||||
}
|
}
|
||||||
// Create invitenode node.
|
// Create invitenode node.
|
||||||
$invitenode = navigation_node::create(
|
$invitenode = navigation_node::create(
|
||||||
|
|
|
@ -119,6 +119,15 @@ if ($hassiteconfig) {
|
||||||
get_string('settingdesc_limitcourselist', 'local_treestudyplan'),
|
get_string('settingdesc_limitcourselist', 'local_treestudyplan'),
|
||||||
false,
|
false,
|
||||||
));
|
));
|
||||||
|
|
||||||
|
if (premium::enabled()) {
|
||||||
|
//get_config("local_treestudyplan","enablecoach")
|
||||||
|
$page->add(new admin_setting_configcheckbox('local_treestudyplan/enablecoach',
|
||||||
|
get_string('setting_enablecoach', 'local_treestudyplan'),
|
||||||
|
get_string('settingdesc_enablecoach', 'local_treestudyplan'),
|
||||||
|
false,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
$page->add(new admin_setting_configselect('local_treestudyplan/display_field',
|
$page->add(new admin_setting_configselect('local_treestudyplan/display_field',
|
||||||
get_string('setting_display_field', 'local_treestudyplan'),
|
get_string('setting_display_field', 'local_treestudyplan'),
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
defined('MOODLE_INTERNAL') || die();
|
defined('MOODLE_INTERNAL') || die();
|
||||||
|
|
||||||
$plugin->component = 'local_treestudyplan'; // Recommended since 2.0.2 (MDL-26035). Required since 3.0 (MDL-48494).
|
$plugin->component = 'local_treestudyplan'; // Recommended since 2.0.2 (MDL-26035). Required since 3.0 (MDL-48494).
|
||||||
$plugin->version = 2024031000; // YYYYMMDDHH (year, month, day, iteration).
|
$plugin->version = 2024031002; // YYYYMMDDHH (year, month, day, iteration).
|
||||||
$plugin->requires = 2021051700; // YYYYMMDDHH (This is the release version for Moodle 3.11).
|
$plugin->requires = 2021051700; // YYYYMMDDHH (This is the release version for Moodle 3.11).
|
||||||
|
|
||||||
$plugin->release = "1.1.6";
|
$plugin->release = "1.1.6";
|
||||||
|
|
Loading…
Reference in New Issue
Block a user