139 lines
4.5 KiB
PHP
139 lines
4.5 KiB
PHP
<?php
|
|
// This file is part of the Studyplan plugin for Moodle
|
|
//
|
|
// Moodle is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// Moodle is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with Moodle. If not, see <https://www.gnu.org/licenses/>.
|
|
/**
|
|
* Main block code
|
|
*
|
|
* @package block_mytreestudyplan
|
|
* @copyright 2023 P.M. Kuipers
|
|
* @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
|
*/
|
|
|
|
use local_treestudyplan\studyplan;
|
|
|
|
/**
|
|
* MyTreestudyplan block base code
|
|
*/
|
|
class block_mytreestudyplan extends \block_base {
|
|
|
|
/**
|
|
* Plugin initialization (before $this->config and $this->page are loaded)
|
|
*/
|
|
public function init() {
|
|
}
|
|
|
|
/**
|
|
* Plugin specialization (directly called after $this->config and $this->page are ready)
|
|
*/
|
|
public function specialization() {
|
|
global $CFG;
|
|
$this->title = get_string('title', 'block_mytreestudyplan');
|
|
|
|
$systemcontext = \context_system::instance();
|
|
$teachermode = has_capability("local/treestudyplan:viewuserreports", $systemcontext);
|
|
|
|
// Load CSS files from treestudyplan.
|
|
try {
|
|
$this->page->requires->css(new \moodle_url($CFG->wwwroot.'/local/treestudyplan/css/bootstrap-vue/bootstrap-vue.min.css'));
|
|
if($CFG->debugdeveloper){
|
|
$this->page->requires->css(new moodle_url($CFG->wwwroot.'/local/treestudyplan/css/devstyles.css'));
|
|
}
|
|
$this->page->add_body_class("features-treestudyplan"); // Mark body as containing treestudyplan content.
|
|
// Include javascript and run studyplan renderer when page loading is complete.
|
|
$this->page->requires->js_call_amd('block_mytreestudyplan/block_mytreestudyplan',
|
|
'init',
|
|
[$teachermode ? 'teaching' : 'myreport']);
|
|
} catch (Exception $x) {
|
|
// On some occasions (Plugin management), the plugin is loaded after HEAD has been printed.
|
|
// In those cases we don't want to show the block anyway, so ignore the error that gets inevitably thrown.
|
|
$off = 0; // Empty statement to satisfy code checker.
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Publish the pages this block can be shown on
|
|
*/
|
|
public function applicable_formats() {
|
|
// Limit this block to the site index and the dashboard (my) pages.
|
|
return [
|
|
'admin' => false,
|
|
'site-index' => true,
|
|
'course-view' => false,
|
|
'mod' => false,
|
|
'my' => true
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Render block content
|
|
*/
|
|
public function get_content() {
|
|
global $CFG;
|
|
global $USER;
|
|
global $COURSE;
|
|
global $OUTPUT;
|
|
|
|
if ($this->content !== null) {
|
|
return $this->content;
|
|
}
|
|
|
|
$systemcontext = \context_system::instance();
|
|
|
|
// TODO: Check if they have the permission in any relevant context, not just system.
|
|
$teachermode = has_capability("local/treestudyplan:viewuserreports", $systemcontext);
|
|
|
|
$this->content = new \stdClass;
|
|
$this->content->text = "";
|
|
|
|
$mystudyplans = studyplan::find_for_user($USER->id);
|
|
|
|
$data = [
|
|
'teachermode' => $teachermode,
|
|
];
|
|
|
|
$this->content->text = $OUTPUT->render_from_template("block_mytreestudyplan/block", $data);
|
|
|
|
$inviteurl = $CFG->wwwroot.'/local/treestudyplan/invitations.php';
|
|
$invitetext = get_string('manage_invites', 'local_treestudyplan');
|
|
|
|
if ( (!$teachermode ) && count($mystudyplans) > 0) {
|
|
$this->content->footer = " <a class='btn btn-primary' href='{$inviteurl}'>{$invitetext}</a>";
|
|
}
|
|
|
|
return $this->content;
|
|
}
|
|
|
|
/**
|
|
* Whether to hide the header or not
|
|
*/
|
|
public function hide_header() {
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Whether this block has config or not
|
|
*/
|
|
public function has_config() {
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Return true to avoid broken self-test message
|
|
*/
|
|
function _self_test() {
|
|
return true;
|
|
}
|
|
}
|