2023-05-17 21:19:14 +02:00
< ? php
require_once ( " ../../config.php " );
2023-06-16 11:59:36 +02:00
use \local_treestudyplan\courseservice ;
2023-05-17 21:19:14 +02:00
require_once ( $CFG -> libdir . '/weblib.php' );
$systemcontext = context_system :: instance ();
$PAGE -> set_url ( " /local/treestudyplan/view-plan.php " , array ());
require_login ();
// Figure out the context (category or system, based on either category or context parameter)
$categoryid = optional_param ( 'categoryid' , 0 , PARAM_INT ); // Category id
$contextid = optional_param ( 'contextid' , 0 , PARAM_INT ); // Context id
if ( $categoryid > 0 ){
$studyplancontext = context_coursecat :: instance ( $categoryid );
}
elseif ( $contextid > 0 )
{
$studyplancontext = context :: instance_by_id ( $contextid );
if ( in_array ( $studyplancontext -> contextlevel ,[ CONTEXT_SYSTEM , CONTEXT_COURSECAT ]))
{
$categoryid = $studyplancontext -> instanceid ;
}
else
{
$studyplancontext = $systemcontext ;
}
}
else
{
2023-06-16 11:59:36 +02:00
// If no context is selected, find the first available one
2023-06-16 13:49:05 +02:00
$available_contexts = courseservice :: list_accessible_categories_with_usage ( " view " );
2023-06-16 11:59:36 +02:00
$contextid = 1 ; // fallback to system context
foreach ( $available_contexts as $ctx ){
2023-06-16 13:49:05 +02:00
if ( $ctx -> count > 0 ){
$contextid = $ctx -> ctxid ;
2023-06-16 11:59:36 +02:00
break ;
}
}
// reload page with selected category
$url = new \moodle_url ( '/local/treestudyplan/view-plan.php' ,[ " contextid " => $contextid ]);
header ( 'Location: ' . $url -> out ( false ), true , 302 );
exit ;
2023-05-17 21:19:14 +02:00
}
require_capability ( 'local/treestudyplan:viewuserreports' , $studyplancontext );
$contextname = $studyplancontext -> get_context_name ( false , false );
$PAGE -> set_pagelayout ( 'base' );
$PAGE -> set_context ( $studyplancontext );
$PAGE -> set_title ( get_string ( 'view_plan' , 'local_treestudyplan' ) . " - " . $contextname );
$PAGE -> set_heading ( get_string ( 'view_plan' , 'local_treestudyplan' ) . " - " . $contextname );
if ( $studyplancontext -> id > 1 ){
navigation_node :: override_active_url ( new moodle_url ( '/course/index.php' , [ 'categoryid' => $categoryid ]));
$PAGE -> navbar -> add ( get_string ( 'view_plan' , 'local_treestudyplan' ));
}
// Load javascripts and specific css
$PAGE -> requires -> css ( new moodle_url ( $CFG -> wwwroot . '/local/treestudyplan/css/bootstrap-vue.min.css' ));
$PAGE -> requires -> css ( new moodle_url ( $CFG -> wwwroot . '/local/treestudyplan/css/devstyles.css' ));
$PAGE -> requires -> css ( new moodle_url ( $CFG -> wwwroot . '/local/treestudyplan/css/vue-hsluv-picker.css' ));
$PAGE -> requires -> js_call_amd ( 'local_treestudyplan/page-view-plan' , 'init' ,[ $studyplancontext -> id , $categoryid ]);
//Local translate function
function t ( $str , $param = null , $plugin = 'local_treestudyplan' ){
print get_string ( $str , $plugin , $param );
}
print $OUTPUT -> header ();
?>
< div id = 'root' >
< div class = 'vue-loader' v - show = 'false' >
< div class = " spinner-border text-primary " role = " status " >
< span class = " sr-only " > Loading ...</ span >
</ div >
</ div >
< div v - cloak >
< div v - if = '!activestudyplan && usedcontexts' class = 'ml-3 mb-3' >
< b - form - select text = '<?php print($contextname);?>' : value = " contextid " >
< b - form - select - option v - for = 'ctx in usedcontexts' : key = 'ctx.id' : value = " ctx.context_id " @ click = 'switchContext(ctx)'
: active = " ctx.context_id == contextid " : class = " (ctx.studyplancount > 0)?'font-weight-bold':'' "
>< span v - for = " (p,i) in ctx.category.path " >< span v - if = " i>0 " > / </ span > {{ p }} </ span > < span > ({{ ctx . studyplancount }}) </ b - form - select - option >
</ b - form - select >
</ div >
< h3 v - else >< ? php print $contextname ; ?> </h3>
< div class = " m-buttonbar " style = " margin-bottom: 1em; " >
< a href = '#' v - if = 'displayedstudyplan' @ click . prevent = 'closeStudyplan' >< i style = 'font-size: 150%;' class = 'fa fa-chevron-left' ></ i > < ? php t ( 'back' ); ?> </a>
< span v - if = 'displayedstudyplan' >< ? php t ( " studyplan_select " ); ?> </span>
< b - dropdown v - if = 'displayedstudyplan' lazy : text = 'dropdown_title' >
< b - dropdown - item - button v - for = '(studyplan,planindex) in studyplans' : key = 'studyplan.id' @ click = 'selectStudyplan(studyplan)' > {{ studyplan . name }} </ b - dropdown - item >
</ b - dropdown >& nbsp ;
< b - button variant = 'primary' v - if = 'associatedstudents && associatedstudents.length > 0' v - b - toggle . toolbox - sidebar >< ? php t ( 'selectstudent_btn' ) ?> </b-button>
</ div >
< div class = 't-studyplan-container' >
< h2 v - if = 'displayedstudyplan&& selectedstudent' > {{ selectedstudent . firstname }} {{ selectedstudent . lastname }} - {{ displayedstudyplan . name }} </ h2 >
< h2 v - else - if = 'displayedstudyplan' >< ? php t ( " showoverview " ); ?> - {{displayedstudyplan.name}}</h2>
< r - studyplan v - if = '!loadingstudyplan && displayedstudyplan' v - model = 'displayedstudyplan' : teachermode = '!selectedstudent' ></ r - studyplan >
< div v - else - if = 'loadingstudyplan' class = " spinner-border text-primary " role = " status " >
< span class = " sr-only " > Loading ...</ span >
</ div >
< div v - else class = 't-studyplan-notselected' >
< p >< ? php t ( " studyplan_noneselected " ); ?> </p>
< b - card - group deck >
< s - studyplan - card
v - for = '(studyplan,planindex) in studyplans'
: key = 'studyplan.id'
v - model = 'studyplans[planindex]'
open
@ open = 'selectStudyplan(studyplan)'
></ s - studyplan - card >
</ b - card - group >
</ div >
</ div >
< b - sidebar
id = " toolbox-sidebar "
right
shadow
title = '<?php t("selectstudent")?>'
>
< div class = 'm-2' >< ? php t ( " selectstudent_details " ) ?> </div>
< b - list - group v - if = " associatedstudents " >
< b - list - group - item : active = " ! selectedstudent "
button
variant = " primary "
@ click = 'showOverview()'
>
< ? php t ( " showoverview " ); ?>
</ b - list - group - item >
< b - list - group - item v - for = " student in associatedstudents " : key = " student.id "
: active = " selectedstudent && student.id == selectedstudent.id "
button
@ click = 'showStudentView(student)'
>
{{ student . firstname }} {{ student . lastname }}
</ b - list - group - item >
</ b - list - group >
</ b - sidebar >
</ div >
</ div >
< ? php
print $OUTPUT -> footer ();