Added setting and feature to automatically add primary navigation menu items to custommenuitems setting

This commit is contained in:
PMKuipers 2023-09-04 22:37:58 +02:00
parent 11ed955fd7
commit c67c40d74d
5 changed files with 81 additions and 4 deletions

View File

@ -83,6 +83,11 @@ $string["settingdesc_display_heading"] = 'Study plan display settings';
$string["setting_display_field"] = 'Course display name'; $string["setting_display_field"] = 'Course display name';
$string["settingdesc_display_field"] = 'Select the field to use for the display name of a course in the study plan'; $string["settingdesc_display_field"] = 'Select the field to use for the display name of a course in the study plan';
$string["setting_navigation_heading"] = 'Navigation';
$string["settingdesc_navigation_heading"] = 'Navigation menu configuration';
$string["setting_primary_nav_autofill"] = 'Automatically fill User menu items';
$string["settingdesc_primary_nav_autofill"] = 'To show the studyplan links in the primary navigation menu, lines have to be added to the setting <b>Appearance</b> - <b>Theme settings</b> - <b>Custom menu items</b>. Enable this feature to do so automatically.';
$string["settingspage_csync"] = 'Synchronize linked cohorts and users to courses'; $string["settingspage_csync"] = 'Synchronize linked cohorts and users to courses';
$string["setting_csync_heading"] = 'Automatically create a cohort sync in all courses linked to a study plan for all cohorts linked to a study plan'; $string["setting_csync_heading"] = 'Automatically create a cohort sync in all courses linked to a study plan for all cohorts linked to a study plan';
$string["settingdesc_csync_heading"] = ''; $string["settingdesc_csync_heading"] = '';
@ -194,6 +199,7 @@ $string["coursetiming_future"] = "Upcoming course";
$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["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';

View File

@ -78,6 +78,11 @@ $string["view_plan"] = 'Studieplannen bekijken';
$string["edit_plan"] = 'Studieplan bewerken'; $string["edit_plan"] = 'Studieplan bewerken';
$string["settingspage"] = 'Studieplan instellingen'; $string["settingspage"] = 'Studieplan instellingen';
$string["setting_navigation_heading"] = 'Navigatie';
$string["settingdesc_navigation_heading"] = 'Instellingen voor navigatie';
$string["setting_primary_nav_autofill"] = 'Aangepast menu items automatisch aanvullen';
$string["settingdesc_primary_nav_autofill"] = 'Om in het primaire navigatiemenu de studieplan links te tonen, moeten regels worden toegevoegd in de instelling <b>Uiterlijk</b> - <b>Thema instellingen</b> - <b>Aangepast menu items</b>. Zet deze optie aan om dat automatisch te doen.';
$string["setting_display_heading"] = 'Weergave'; $string["setting_display_heading"] = 'Weergave';
$string["settingdesc_display_heading"] = 'Configuratie voor de weergave van de studieplannen'; $string["settingdesc_display_heading"] = 'Configuratie voor de weergave van de studieplannen';
$string["setting_display_field"] = 'Weergavenaam cursus'; $string["setting_display_field"] = 'Weergavenaam cursus';
@ -194,6 +199,7 @@ $string["coursetiming_future"] = "Toekomstige cursus";
$string["link_myreport"] = "Mijn studieplan"; $string["link_myreport"] = "Mijn studieplan";
$string["link_viewplan"] = "Studieplannen"; $string["link_viewplan"] = "Studieplannen";
$string["link_editplan"] = "Studieplannen beheren";
$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';

55
lib.php
View File

@ -42,6 +42,52 @@ function local_treestudyplan_unit_get_editor_options(context $context) {
'trusttext' => 0]; 'trusttext' => 0];
} }
function local_treestudyplan_autofill_customusermenuitems() {
if (get_config("local_treestudyplan", "primary_nav_autofill")) {
$lang = current_language();
$navitems = [
"/local/treestudyplan/myreport.php" => ["included" => false, "strkey" => "link_myreport"],
"/local/treestudyplan/view-plan.php" => ["included" => false, "strkey" => "link_viewplan"],
"/local/treestudyplan/edit-plan.php" => ["included" => false, "strkey" => "link_editplan"],
];
// Load the custom menu items from config
$custommenuitems = get_config("core", "custommenuitems");
// Scan through all the lines to see if it is a link to one of our nav items in the current language.
$lines = explode("\n", $custommenuitems);
//debugging("\n\nLines: ". print_r($lines,true)."\n");
$links = array_keys($navitems);
foreach ($lines as $line) {
$parms = explode('|', $line);
if (count($parms) > 3) {
$link = trim($parms[1]);
if (trim($parms[3]) == $lang && in_array($link, $links)) {
// Register the link as already included if it is found.
$navitems[$link]["included"] = true;
}
}
}
// List through all the links to see if we need to add one or more
foreach($navitems as $link => $details){
if (!$details["included"]) {
$line = implode("|",[
get_string($details["strkey"],"local_treestudyplan"), // Menu text.
$link, // Link.
'', // Tooltip,
$lang, // Language code.
" #Automatically added by studyplan plugin. See setting 'primary_nav_autofill' to disable this"
]);
$custommenuitems = trim($custommenuitems)."\n".$line;
}
}
// Store the modified custom menu items.
set_config("custommenuitems",$custommenuitems);
}
}
/** /**
* Hook to extend navigation * Hook to extend navigation
* @param global_navigation $navigation Navigation object * @param global_navigation $navigation Navigation object
@ -66,6 +112,13 @@ function local_treestudyplan_extend_navigation(global_navigation $navigation) {
and not much more complex than loading a separate stylesheet for each link we want to hide). and not much more complex than loading a separate stylesheet for each link we want to hide).
We will add all the hrefs that should be hidden to this variable below. We will add all the hrefs that should be hidden to this variable below.
*/ */
/*
In addition, the function local_treestudyplan_autofill_customusermenuitems() called below will
automatically generate the required lines if they are missing...
*/
local_treestudyplan_autofill_customusermenuitems();
$hideprimaryhrefs = []; $hideprimaryhrefs = [];
if ($USER->id > 1) { if ($USER->id > 1) {
@ -122,7 +175,7 @@ function local_treestudyplan_extend_navigation(global_navigation $navigation) {
|| webservicehelper::has_capability_in_any_category('local/treestudyplan:editstudyplan') || webservicehelper::has_capability_in_any_category('local/treestudyplan:editstudyplan')
) { ) {
$node = navigation_node::create( $node = navigation_node::create(
get_string("cfg_plans", "local_treestudyplan"), get_string("link_editplan", "local_treestudyplan"),
new moodle_url($CFG->wwwroot . "/local/treestudyplan/edit-plan.php", array()), new moodle_url($CFG->wwwroot . "/local/treestudyplan/edit-plan.php", array()),
global_navigation::TYPE_SYSTEM , global_navigation::TYPE_SYSTEM ,
null, null,

View File

@ -42,7 +42,19 @@ if ($hassiteconfig) {
$page = new admin_settingpage('local_treestudyplan_settings', $page = new admin_settingpage('local_treestudyplan_settings',
get_string('settingspage', 'local_treestudyplan', null, true)); get_string('settingspage', 'local_treestudyplan', null, true));
// GOAL AGGREGATION SETTINGS. // NAVIGATION
$page->add(new admin_setting_heading('local_treestudyplan/navigation_heading',
get_string('setting_navigation_heading', 'local_treestudyplan'),
get_string('settingdesc_navigation_heading', 'local_treestudyplan')
));
$page->add(new admin_setting_configcheckbox('local_treestudyplan/primary_nav_autofill',
get_string('setting_primary_nav_autofill', 'local_treestudyplan'),
get_string('settingdesc_primary_nav_autofill', 'local_treestudyplan'),
true,
));
// OUTCOME AGGREGATION SETTINGS.
$page->add(new admin_setting_heading('local_treestudyplan/aggregation_heading', $page->add(new admin_setting_heading('local_treestudyplan/aggregation_heading',
get_string('setting_aggregation_heading', 'local_treestudyplan'), get_string('setting_aggregation_heading', 'local_treestudyplan'),
get_string('settingdesc_aggregation_heading', 'local_treestudyplan') get_string('settingdesc_aggregation_heading', 'local_treestudyplan')

View File

@ -22,11 +22,11 @@
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 = 2023090300; // YYYYMMDDHH (year, month, day, iteration). $plugin->version = 2023090400; // 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.0.0"; $plugin->release = "1.0.0";
$plugin->maturity = MATURITY_RC; $plugin->maturity = MATURITY_STABLE;
// Supported from Moodle 3.11 to 4.1 (4.2 not yet tested). // Supported from Moodle 3.11 to 4.1 (4.2 not yet tested).
$plugin->supported = [ 311, 401 ]; $plugin->supported = [ 311, 401 ];