Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
// This file is part of Moodle - http://moodle.org/
3
//
4
// Moodle is free software: you can redistribute it and/or modify
5
// it under the terms of the GNU General Public License as published by
6
// the Free Software Foundation, either version 3 of the License, or
7
// (at your option) any later version.
8
//
9
// Moodle is distributed in the hope that it will be useful,
10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
// GNU General Public License for more details.
13
//
14
// You should have received a copy of the GNU General Public License
15
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
16
 
17
/**
18
 * Test page for action menu subpanel output component.
19
 *
20
 * @copyright 2023 Ferran Recio <ferran@moodle.com>
21
 * @package   core
22
 * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23
 */
24
 
25
require_once(__DIR__ . '/../../../../config.php');
26
 
27
defined('BEHAT_SITE_RUNNING') || die();
28
 
29
$foo = optional_param('foo', 'none', PARAM_TEXT);
30
 
31
global $CFG, $PAGE, $OUTPUT;
32
$PAGE->set_url('/lib/tests/behat/fixtures/action_menu_subpanel_output_testpage.php');
33
$PAGE->add_body_class('limitedwidth');
34
require_login();
35
$PAGE->set_context(core\context\system::instance());
36
$PAGE->set_title('Action menu subpanel test page');
37
 
38
echo $OUTPUT->header();
39
 
40
$choice1 = new core\output\choicelist('Choice example');
41
$choice1->add_option("statusa", "Status A", [
42
    'url' => new moodle_url($PAGE->url, ['foo' => 'Aardvark']),
43
    'description' => 'Status A description',
44
    'icon' => new pix_icon('t/user', '', ''),
45
]);
46
$choice1->add_option("statusb", "Status B", [
47
    'url' => new moodle_url($PAGE->url, ['foo' => 'Beetle']),
48
    'description' => 'Status B description',
49
    'icon' => new pix_icon('t/groupv', '', ''),
50
]);
51
$choice1->set_selected_value('statusb');
52
 
53
$choice2 = new core\output\choicelist('Choice example');
54
$choice2->add_option("statusc", "Status C", [
55
    'url' => new moodle_url($PAGE->url, ['foo' => 'Caterpillar']),
56
    'description' => 'Status C description',
57
    'icon' => new pix_icon('t/groups', '', ''),
58
]);
59
$choice2->add_option("statusd", "Status D", [
60
    'url' => new moodle_url($PAGE->url, ['foo' => 'Donkey']),
61
    'description' => 'Status D description',
62
    'icon' => new pix_icon('t/hide', '', ''),
63
]);
64
$choice2->set_selected_value('statusc');
65
 
66
$normalactionlink = new action_menu_link(
67
    new moodle_url($PAGE->url, ['foo' => 'bar']),
68
    new pix_icon('t/emptystar', ''),
69
    'Action link example',
70
    false
71
);
72
 
73
echo "<h2>Action menu subpanel test page</h2>";
74
 
75
echo '<div id="paramcheck" class="mb-4">';
76
echo "<p>Foo param value: $foo</p>";
77
echo '</div>';
78
 
79
echo '<div id="regularscenario" class="mb-4">';
80
echo "<h3>Basic example</h3>";
81
$menu = new action_menu();
82
$menu->add($normalactionlink);
83
$menu->add($normalactionlink);
84
$menu->add(
85
    new core\output\local\action_menu\subpanel(
86
        'Subpanel example',
87
        $choice1
88
    )
89
);
90
$menu->add(
91
    new core\output\local\action_menu\subpanel(
92
        'Another subpanel',
93
        $choice2
94
    )
95
);
96
echo '<div class="border p-2 d-flex flex-row">';
97
echo '<div class="flex-fill">Menu right example</div><div>';
98
echo $OUTPUT->render($menu);
99
echo '</div></div>';
100
 
101
echo '</div>';
102
 
103
echo '<div id="menuleft" class="mb-4">';
104
echo "<h3>Menu left</h3>";
105
 
106
$menu = new action_menu();
107
$menu->set_menu_left();
108
$menu->add($normalactionlink);
109
$menu->add($normalactionlink);
110
$menu->add(
111
    new core\output\local\action_menu\subpanel(
112
        'Subpanel example',
113
        $choice1,
114
        null,
115
        null
116
    )
117
);
118
$menu->add(
119
    new core\output\local\action_menu\subpanel(
120
        'Another subpanel',
121
        $choice2,
122
        null,
123
        null
124
    )
125
);
126
echo '<div class="border p-2 d-flex flex-row"><div>';
127
echo $OUTPUT->render($menu);
128
echo '</div><div class="flex-fill ml-2">Menu left example</div></div>';
129
 
130
echo '</div>';
131
 
132
echo '<div id="itemicon" class="mb-4">';
133
echo "<h3>Menu item with icon</h3>";
134
 
135
$menu = new action_menu();
136
$menu->add($normalactionlink);
137
$menu->add($normalactionlink);
138
$menu->add(
139
    new core\output\local\action_menu\subpanel(
140
        'Subpanel example',
141
        $choice1,
142
        null,
143
        new pix_icon('t/locked', 'Locked icon')
144
    )
145
);
146
$menu->add(
147
    new core\output\local\action_menu\subpanel(
148
        'Another subpanel',
149
        $choice2,
150
        null,
151
        new pix_icon('t/message', 'Message icon')
152
    )
153
);
154
echo '<div class="border p-2 d-flex flex-row">';
155
echo '<div class="flex-fill">Menu right example</div><div>';
156
echo $OUTPUT->render($menu);
157
echo '</div></div>';
158
 
159
echo '</div>';
160
 
161
 
162
echo '<div id="itemiconleft" class="mb-4">';
163
echo "<h3>Left menu with item icon</h3>";
164
 
165
$menu = new action_menu();
166
$menu->set_menu_left();
167
$menu->add($normalactionlink);
168
$menu->add($normalactionlink);
169
$menu->add(
170
    new core\output\local\action_menu\subpanel(
171
        'Subpanel example',
172
        $choice1,
173
        null,
174
        new pix_icon('t/locked', 'Locked icon')
175
    )
176
);
177
$menu->add(
178
    new core\output\local\action_menu\subpanel(
179
        'Another subpanel',
180
        $choice2,
181
        null,
182
        new pix_icon('t/message', 'Message icon')
183
    )
184
);
185
echo '<div class="border p-2 d-flex flex-row"><div>';
186
echo $OUTPUT->render($menu);
187
echo '</div><div class="flex-fill ml-2">Menu left example</div></div>';
188
 
189
echo '</div>';
190
 
191
echo '<div id="dataattributes" class="mb-4">';
192
echo "<h3>Adding data attributes to menu item</h3>";
193
$menu = new action_menu();
194
$menu->add($normalactionlink);
195
$menu->add($normalactionlink);
196
$menu->add(
197
    new core\output\local\action_menu\subpanel(
198
        'Subpanel example',
199
        $choice1,
200
        ['data-extra' => 'some extra value']
201
    )
202
);
203
$menu->add(
204
    new core\output\local\action_menu\subpanel(
205
        'Another subpanel',
206
        $choice2,
207
        ['data-extra' => 'some other value']
208
    )
209
);
210
echo '<div class="border p-2 d-flex flex-row">';
211
echo '<div class="flex-fill">Menu right example</div><div>';
212
echo $OUTPUT->render($menu);
213
echo '</div></div>';
214
echo '<div class="mt-1 p-2 border" id="datachecks">Nothing here.</div>';
215
echo '</div>';
216
 
217
$inlinejs = <<<EOF
218
    const datachecks = document.getElementById('datachecks');
219
    const dataitems = document.querySelectorAll('[data-extra]');
220
    let dataitemshtml = '';
221
    for (let i = 0; i < dataitems.length; i++) {
222
        dataitemshtml += '<p>Extra data attribute detected: ' + dataitems[i].getAttribute('data-extra') + '</p>';
223
    }
224
    datachecks.innerHTML = dataitemshtml;
225
EOF;
226
 
227
$PAGE->requires->js_amd_inline($inlinejs);
228
 
229
echo '<div id="drawersimulation" class="mb-4">';
230
echo "<h3>Drawer like example</h3>";
231
$menu = new action_menu();
232
$menu->add($normalactionlink);
233
$menu->add($normalactionlink);
234
$menu->add(
235
    new core\output\local\action_menu\subpanel(
236
        'Subpanel example',
237
        $choice1
238
    )
239
);
240
$menu->add(
241
    new core\output\local\action_menu\subpanel(
242
        'Another subpanel',
243
        $choice2
244
    )
245
);
246
echo '<div class="border p-2 d-flex flex-row" data-region="fixed-drawer" data-behat-fake-drawer="true" style="width: 350px;">';
247
echo '<div class="flex-fill">Drawer example</div><div>';
248
echo $OUTPUT->render($menu);
249
echo '</div></div>';
250
 
251
echo '</div>';
252
 
253
echo $OUTPUT->footer();