MDL-79674 behat: Use proper tags for testing WCAG 2.1 criteria
[moodle.git] / group / templates / index.mustache
blob424174049625322b54907d43d087390c104041da
1 {{!
2     This file is part of Moodle - http://moodle.org/
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.
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.
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/>.
17 {{!
18     @template core_group/index
20     Template for the Groups page.
22     Classes required for JS:
23     * none
25     Data attributes required for JS:
26     * none
28     Context variables required for this template:
29     * courseid int The course ID.
30     * selectedgroup string The initially selected group.
31     * editgroupsettingsdisabled bool Whether to disable the "Edit group settings" button on load.
32     * deletegroupdisabled bool Whether to disable the "Delete selected group" button on load.
33     * addmembersdisabled bool Whether to disable the "Add/remove users" button on load.
34     * groups array The list of groups.
35     * members array The list of members, grouped based on roles.
36     * undeletablegroups string A JSON string containing an array of group IDs that a user cannot delete.
37     * messagingsettingsvisible bool Wether the messaging settings buttons should be visible.
39     Example context (json):
40     {
41         "courseid": "1",
42         "selectedgroup": "Group 1 (3)",
43         "editgroupsettingsdisabled": false,
44         "deletegroupdisabled": false,
45         "addmembersdisabled": false,
46         "messagingenabled": true,
47         "groups": [
48             {
49                 "value": "1",
50                 "text": "Group 1 (3)",
51                 "selected": true
52             },
53             {
54                 "value": "2",
55                 "text": "Group 2 (2)"
56             }
57         ],
58         "members": [
59             {
60                 "role": "Student",
61                 "rolemembers": [
62                     {
63                         "value": "1",
64                         "text": "John Doe"
65                     },
66                     {
67                         "value": "2",
68                         "text": "Jane Doe"
69                     },
70                     {
71                         "value": "3",
72                         "text": "John Smith"
73                     }
74                 ]
75             }
76         ],
77         "undeletablegroups": "[1: true, 3: true]"
78     }
80 <form id="groupeditform" action="index.php" method="post">
81     <div class="container-fluid groupmanagementtable">
82         <div class="row rtl-compatible">
83             <div class="col-md-6 mb-1">
84                 <input type="hidden" name="id" value="{{courseid}}">
85                 <div class="form-group">
86                     <label for="groups">
87                         <span id="groupslabel">{{#str}}groups{{/str}}</span>
88                         <span id="thegrouping">&nbsp;</span>
89                     </label>
90                     <select name="groups[]" multiple="multiple" id="groups" size="15" class="form-control input-block-level">
91                         {{#groups}}
92                             <option value="{{value}}" {{#selected}}selected="selected"{{/selected}} title="{{{text}}}">{{{text}}}</option>
93                         {{/groups}}
94                     </select>
95                 </div>
96                 <h3> {{#str}} withselected, group {{/str}} </h3>
97                 <div class="form-group">
98                     <button type="submit" name="action" id="updatemembers" value="updatemembers" class="btn btn-secondary">{{#str}}showmembersforgroup, group{{/str}}</button>
99                 </div>
100                 <div class="form-group">
101                     <button type="submit" name="action" id="showeditgroupsettingsform" value="showgroupsettingsform" {{#editgroupsettingsdisabled}}disabled="disabled"{{/editgroupsettingsdisabled}} class="btn btn-secondary">{{#str}}editgroupsettings, group{{/str}}</button>
102                 </div>
103                 <div class="form-group">
104                     <button type="submit" name="action" id="deletegroup" value="deletegroup" {{#deletegroupdisabled}}disabled="disabled"{{/deletegroupdisabled}} class="btn btn-secondary">{{#str}}deleteselectedgroup, group{{/str}}</button>
105                 </div>
106                 {{#messagingsettingsvisible}}
107                     <div class="form-group">
108                         <button type="submit" name="action" id="disablemessaging" value="disablemessaging" class="btn btn-secondary" disabled="disabled">{{#str}}disablemessagingaction, group{{/str}}</button>
109                     </div>
110                     <div class="form-group">
111                         <button type="submit" name="action" id="enablemessaging" value="enablemessaging" class="btn btn-secondary" disabled="disabled">{{#str}}enablemessagingaction, group{{/str}}</button>
112                     </div>
113                 {{/messagingsettingsvisible}}
114                 <h3> {{#str}} manageactions, group {{/str}} </h3>
115                 <div class="form-group">
116                     <button type="submit" name="action" id="showcreateorphangroupform" value="showcreateorphangroupform" class="btn btn-secondary">{{#str}}creategroup, group{{/str}}</button>
117                 </div>
118                 <div class="form-group">
119                     <button type="submit" name="action" id="showautocreategroupsform" value="showautocreategroupsform" class="btn btn-secondary">{{#str}}autocreategroups, group{{/str}}</button>
120                 </div>
121                 <div class="form-group">
122                     <button type="submit" name="action" id="showimportgroups" value="showimportgroups" class="btn btn-secondary">{{#str}}importgroups, group{{/str}}</button>
123                 </div>
124             </div>
125             <div class="col-md-6 mb-1">
126                 <div class="form-group">
127                     <label for="members">
128                         <span id="memberslabel">{{#str}}membersofselectedgroup, group{{/str}}</span>
129                         <span id="thegroup">{{{selectedgroup}}}</span>
130                     </label>
131                     <select size="15" multiple="multiple" class="form-control input-block-level" id="members" name="user">
132                         {{#members}}
133                             <optgroup label="{{role}}">
134                                 {{#rolemembers}}
135                                     <option value="{{value}}" title="{{text}}">{{{text}}}</option>
136                                 {{/rolemembers}}
137                             </optgroup>
138                         {{/members}}
139                     </select>
140                 </div>
141                 <div class="form-group">
142                     <button type="submit" value="showaddmembersform" class="btn btn-secondary" {{#addmembersdisabled}}disabled="disabled"{{/addmembersdisabled}} name="action" id="showaddmembersform">{{#str}}adduserstogroup, group{{/str}}</button>
143                 </div>
144             </div>
145         </div>
146     </div>
147 </form>
148 {{#js}}
149     require(['jquery', 'core/yui'], function($) {
150         $("#groups").change(function() {
151             M.core_group.membersCombo.refreshMembers();
152         });
153         M.core_group.init_index(Y, "{{wwwroot}}", {{courseid}});
154         var undeletableGroups = JSON.parse('{{{undeletablegroups}}}');
155         M.core_group.groupslist(Y, undeletableGroups);
156     });
157 {{/js}}
158 {{#js}}
159     require(['core_group/index'], (module) => module.init());
160 {{/js}}