-
Notifications
You must be signed in to change notification settings - Fork 1
/
renderer.php
127 lines (112 loc) · 3.83 KB
/
renderer.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<?php
// This file is part of Moodle - http://moodle.org/
//
// 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 <http://www.gnu.org/licenses/>.
/**
* Rendering methods
*
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*
* @package mod_gcanvas
* @copyright 8-10-2018 MFreak.nl
* @author Luuk Verhoeven
**/
use mod_gcanvas\output\output_canvas_attempts;
/**
* Class mod_gcanvas_renderer
*
* @copyright 2018 Luuk Verhoeven - LdesignMedia.nl / MFreak.nl <luuk@ldesignmedia.nl>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class mod_gcanvas_renderer extends plugin_renderer_base {
/**
* Javascript helper
*
* @param stdClass $canvas
*
* @throws coding_exception
*/
public function add_javascript_helper(\stdClass $canvas) : void {
$this->page->requires->strings_for_js([
'javascript:confirm_title',
'javascript:confirm_desc',
'javascript:yes',
'javascript:no',
'javascript:updated',
], 'mod_gcanvas');
$backgrounds = \mod_gcanvas\helper::get_images('background', $this->page->context, $this->page->cm->instance, 1);
$this->page->requires->js('/mod/gcanvas/javascript/fabric.js', true);
$this->page->requires->js_call_amd('mod_gcanvas/canvas', 'initialise', [
[
'background' => reset($backgrounds),
'debugjs' => \mod_gcanvas\helper::has_debugging_enabled(),
'id' => $this->page->url->get_param('id'),
'hasHorizontalRuler' => (bool) $canvas->has_horizontal_ruler,
// TODO get this from module settings.
],
]);
}
/**
* Render templates used in display class
*
* @param string $template
* @param stdClass $data
*
* @return bool|string
* @throws moodle_exception
*/
public function render_template(string $template, \stdClass $data) {
return $this->render_from_template($template, $data);
}
/**
* Render the main canvas
*
* @param stdClass $canvas
*
* @return bool|string
* @throws coding_exception
* @throws moodle_exception
*/
public function render_canvas(\stdClass $canvas) {
$context = (new \mod_gcanvas\output\output_canvas($canvas))->export_for_template($this);
return $this->render_from_template('mod_gcanvas/canvas', $context);
}
/**
* Render attempts
*
* @param int $id
*
* @return string
* @throws coding_exception
* @throws moodle_exception
*/
public function render_attempts(int $id) : string {
$context = (new output_canvas_attempts($id))->export_for_template($this);
return $this->render_from_template('mod_gcanvas/canvas_attempts', $context);
}
/**
* Uploader form
*
* @param string $filearea
*
* @param stdClass $moduleinstance
*
* @return string
* @throws moodle_exception
*/
public function render_uploader(string $filearea, \stdClass $moduleinstance) : string {
$context = (new \mod_gcanvas\output\output_uploader($filearea, $moduleinstance))->export_for_template($this);
return $this->render_from_template('mod_gcanvas/canvas_uploader', $context);
}
}