2023-05-17 21:19:14 +02:00
< ? php
require_once ( " ../../config.php " );
require_once ( $CFG -> libdir . '/weblib.php' );
use \local_treestudyplan\courseservice ;
$systemcontext = context_system :: instance ();
$PAGE -> set_url ( " /local/treestudyplan/edit-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
{
$categoryid = 0 ;
$studyplancontext = $systemcontext ;
}
require_capability ( 'local/treestudyplan:editstudyplan' , $studyplancontext );
$contextname = $studyplancontext -> get_context_name ( false , false );
$PAGE -> set_pagelayout ( 'coursecategory' );
$PAGE -> set_context ( $studyplancontext );
$PAGE -> set_title ( get_string ( 'cfg_plans' , 'local_treestudyplan' ) . " - " . $contextname );
$PAGE -> set_heading ( $contextname );
if ( $studyplancontext -> id > 1 ){
navigation_node :: override_active_url ( new moodle_url ( '/course/index.php' , [ 'categoryid' => $categoryid ]));
$PAGE -> navbar -> add ( get_string ( 'cfg_plans' , '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-edit-plan' , 'init' , [ $studyplancontext -> id , $categoryid ]);
$catlist = courseservice :: list_accessible_categories_with_usage ( " edit " );
//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 = 'activestudyplan' @ click . prevent = 'closeStudyplan' >< i style = 'font-size: 150%;' class = 'fa fa-chevron-left' ></ i > < ? php t ( 'back' ); ?> </a>
< span v - if = 'activestudyplan' >< ? php t ( " studyplan_select " ); ?> </span>
< b - dropdown v - if = 'activestudyplan' 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 ;
< t - studyplan - edit
@ creating = " "
@ created = " onStudyPlanCreated "
v - if = '!activestudyplan'
mode = " create "
v - model = " create.studyplan "
type = " button "
variant = " primary "
>< i class = 'fa fa-plus' ></ i > < ? php t ( " studyplan_add " ); ?> </t-studyplan-edit>
< b - button v - if = '!activestudyplan' variant = 'danger' href = '#' role = 'presentation' @ click = " import_studyplan " >< i class = 'fa fa-upload' ></ i > < ? php t ( " advanced_import_from_file " ); ?> </b-button>
< b - button v - if = 'activestudyplan' variant = 'primary' v - b - toggle . toolbox - sidebar >< ? php t ( 'opentoolbox' ) ?> </b-button>
</ div >
< div class = 't-studyplan-container' >
< t - studyplan v - if = 'activestudyplan' v - model = 'activestudyplan' @ moved = " movedStudyplan " ></ t - 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)'
>
< template #title>
< span class = 's-studyplan-card-title-buttons' >
< a href = '#' @ click . prevent = " export_plan(studyplan) " >< i class = 'fa fa-download' ></ i ></ a >
< t - studyplan - edit v - model = " studyplans[planindex] " ></ t - studyplan - edit >
< t - studyplan - associate v - model = " studyplans[planindex] " ></ t - studyplan - associate >
</ span >
</ template >
</ s - studyplan - card >
</ b - card - group >
</ div >
</ div >
< b - sidebar
id = " toolbox-sidebar "
: right = 'toolbox.right'
shadow
title = '<?php t("toolbox")?>'
>
< div class = 't-toolbox-preface' >
< b - form - checkbox v - model = " toolbox.right " switch >< ? php t ( " toolbar-right " ); ?> </b-form-checkbox>
</ div >
< b - tabs content - class = 'mt-3' >
< b - tab title = " <?php t('courses')?> " >
< t - coursecat - list v - model = " courses " ></ t - coursecat - list >
</ b - tab >
< b - tab title = " <?php t('toolbox')?> " >
< ul class = " t-toolbox " >
< li >< drag
2023-08-04 11:54:16 +02:00
: type = " filterComponentType "
2023-05-17 21:19:14 +02:00
: data = " { type: 'junction'} "
@ cut = " "
>< t - item - junction ></ t - item - junction >< ? php t ( " tool-junction " ) ?>
< template v - slot : drag - image = " { data} " >< t - item - junction ></ t - i tem - junction ></ template >
</ drag ></ li >
< li >< drag
2023-08-04 11:54:16 +02:00
: type = " filterComponentType "
2023-05-17 21:19:14 +02:00
: data = " { type: 'finish'} "
@ cut = " "
>< t - item - finish ></ t - item - finish >< ? php t ( " tool-finish " ) ?>
< template v - slot : drag - image = " { data} " >< t - item - finish ></ t - item - finish ></ template >
</ drag ></ li >
< li >< drag
2023-08-04 11:54:16 +02:00
: type = " filterComponentType "
2023-05-17 21:19:14 +02:00
: data = " { type: 'start'} "
@ cut = " "
>< t - item - start ></ t - item - start >< ? php t ( " tool-start " ) ?>
< template v - slot : drag - image = " { data} " >< t - item - start ></ t - item - start ></ template >
</ drag ></ li >
</ ul >
</ b - tab >
< b - tab title = " <?php t('badges')?> " >
< ul class = " t-badges " >
< li v - for = " b in badges " >< img : src = " b.imageurl " : alt = " b.name " >< drag
class = " t-badge-drag "
2023-08-04 11:54:16 +02:00
: type = " filterComponentType "
2023-05-17 21:19:14 +02:00
: data = " { type: 'badge', badge: b} "
@ cut = " "
> {{ b . name }}
< template v - slot : drag - image = " { data} " >< img : src = " b.imageurl " : alt = " b.name " ></ template >
</ drag ></ li >
</ ul >
</ b - tab >
</ b - tabs >
</ b - sidebar >
</ div >
</ div >
< ? php
print $OUTPUT -> footer ();