Proyectos de Subversion Moodle

Rev

Rev 1 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
{{!
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
    @template mod_forum/discussion_list
19
 
20
    Template to display the list of forum discussions.
21
 
22
    Classes required for JS:
23
    * none
24
 
25
    Data attributes required for JS:
26
    * none
27
 
28
    Context variables required for this template:
29
    * TODO
30
 
31
    Example context (json):
32
    {
33
    }
34
}}
35
<div id="discussion-list-{{uniqid}}" {{!
36
    }}data-contextid="{{contextid}}" {{!
37
    }}data-cmid="{{cmid}}" {{!
38
    }}data-name="{{forum.name}}" {{!
39
    }}data-group="{{forum.groupid}}" {{!
40
    }}data-grading-component="{{gradingcomponent}}" {{!
41
    }}data-grading-component-subtype="{{gradingcomponentsubtype}}" {{!
42
    }}data-gradable-itemtype="forum" {{!
43
    }}{{#firstgradeduserid}}data-initialuserid="{{firstgradeduserid}}" {{/firstgradeduserid}}{{!
44
    }}>
45
 
46
    {{#notifications}}
47
        {{> core/notification}}
48
    {{/notifications}}
49
 
50
    {{{groupchangemenu}}}
51
 
52
 
53
    <div class="py-3">
54
        {{#forum.capabilities.create}}
55
            {{#enablediscussioncreation}}
1441 ariadna 56
                <a class="btn btn-primary" data-bs-toggle="collapse" href="#collapseAddForm">
1 efrain 57
                    {{$discussion_create_text}}
58
                        {{#str}}addanewdiscussion, forum{{/str}}
59
                    {{/discussion_create_text}}
60
                </a>
61
            {{/enablediscussioncreation}}
62
        {{/forum.capabilities.create}}
63
        {{^forum.capabilities.create}}
64
            {{#forum.capabilities.selfenrol}}
65
                {{#enablediscussioncreation}}
66
                    <a class="btn btn-primary" href="{{forum.urls.create}}">
67
                        {{$discussion_create_text}}
68
                            {{#str}}addanewdiscussion, forum{{/str}}
69
                        {{/discussion_create_text}}
70
                    </a>
71
                {{/enablediscussioncreation}}
72
            {{/forum.capabilities.selfenrol}}
73
        {{/forum.capabilities.create}}
74
        {{#forum.capabilities.grade}}
75
            {{#forum.state.gradingenabled}}
76
                {{> mod_forum/grades/grade_button }}
77
            {{/forum.state.gradingenabled}}
78
        {{/forum.capabilities.grade}}
79
        {{^forum.capabilities.grade}}
80
            {{#forum.state.gradingenabled}}
81
                {{> mod_forum/grades/view_grade_button }}
82
            {{/forum.state.gradingenabled}}
83
        {{/forum.capabilities.grade}}
84
    </div>
85
    {{#forum.capabilities.create}}
86
        <div class="collapse mt-3 pb-3" id="collapseAddForm">
87
            {{{newdiscussionhtml}}}
88
        </div>
89
    {{/forum.capabilities.create}}
90
 
91
    {{#state.hasdiscussions}}
92
        {{$discussion_top_pagination}}
93
            {{{ pagination }}}
94
        {{/discussion_top_pagination}}
95
        {{$discussion_list_output}}
1441 ariadna 96
        <div class="table-responsive">
97
            <table class="table discussion-list generaltable">
98
                <caption id="discussion-table-description-{{uniqid}}" class="visually-hidden">
99
                    {{#str}} showingcountoftotaldiscussions, mod_forum, {"count": "{{visiblediscussioncount}}", "total":"{{totaldiscussioncount}}"} {{/str}}
100
                </caption>
101
                {{$discussion_list_header}}
102
                <thead>
103
                    <tr>
104
                        <th scope="col">
105
                            <span class="accesshide">{{#str}}status{{/str}}</span>
106
                        </th>
107
                        <th scope="col" class="ps-0">
108
                            {{#state.sortorder.isdiscussiondesc}}
109
                                <a href="{{{forum.urls.sortdiscussionasc}}}" aria-label="{{#str}}discussionlistsortbydiscussionasc, mod_forum{{/str}}">{{#str}}discussion, mod_forum{{/str}}</a> <span class="text-primary">{{#pix}}t/downlong, core, {{#str}}desc, core{{/str}}{{/pix}}</span>
110
                            {{/state.sortorder.isdiscussiondesc}}
111
                            {{#state.sortorder.isdiscussionasc}}
112
                                <a href="{{{forum.urls.sortdiscussiondesc}}}" aria-label="{{#str}}discussionlistsortbydiscussiondesc, mod_forum{{/str}}">{{#str}}discussion, mod_forum{{/str}}</a> <span class="text-primary">{{#pix}}t/uplong, core, {{#str}}asc, core{{/str}}{{/pix}}</span>
113
                            {{/state.sortorder.isdiscussionasc}}
114
                            {{^state.sortorder.isdiscussiondesc}}
115
                                {{^state.sortorder.isdiscussionasc}}
116
                                    <a href="{{{forum.urls.sortdiscussiondesc}}}" aria-label="{{#str}}discussionlistsortbydiscussiondesc, mod_forum{{/str}}">{{#str}}discussion, mod_forum{{/str}}</a>
1 efrain 117
                                {{/state.sortorder.isdiscussionasc}}
1441 ariadna 118
                            {{/state.sortorder.isdiscussiondesc}}
119
                        </th>
120
                        {{#forum.state.groupmode}}
121
                        <th scope="col" class="group px-3">
122
                            {{#state.sortorder.isgroupdesc}}
123
                                <a href="{{{forum.urls.sortgroupasc}}}" aria-label="{{#str}}discussionlistsortbygroupasc, mod_forum{{/str}}">{{#str}}group{{/str}}</a> <span class="text-primary">{{#pix}}t/downlong, core, {{#str}}desc, core{{/str}}{{/pix}}</span>
124
                            {{/state.sortorder.isgroupdesc}}
125
                            {{#state.sortorder.isgroupasc}}
126
                                <a href="{{{forum.urls.sortgroupdesc}}}" aria-label="{{#str}}discussionlistsortbygroupdesc, mod_forum{{/str}}">{{#str}}group{{/str}}</a> <span class="text-primary">{{#pix}}t/uplong, core, {{#str}}asc, core{{/str}}{{/pix}}</span>
127
                            {{/state.sortorder.isgroupasc}}
128
                            {{^state.sortorder.isgroupdesc}}
129
                                {{^state.sortorder.isgroupasc}}
130
                                    <a href="{{{forum.urls.sortgroupdesc}}}" aria-label="{{#str}}discussionlistsortbygroupdesc, mod_forum{{/str}}">{{#str}}group{{/str}}</a>
1 efrain 131
                                {{/state.sortorder.isgroupasc}}
1441 ariadna 132
                            {{/state.sortorder.isgroupdesc}}
133
                        </th>
134
                        {{/forum.state.groupmode}}
135
                        <th scope="col" class="author px-3">
136
                            {{#state.sortorder.isstarterdesc}}
137
                                <a href="{{{forum.urls.sortstarterasc}}}" aria-label="{{#str}}discussionlistsortbystarterasc, mod_forum{{/str}}">{{#str}}startedby, mod_forum{{/str}}</a> <span class="text-primary">{{#pix}}t/downlong, core, {{#str}}desc, core{{/str}}{{/pix}}</span>
138
                            {{/state.sortorder.isstarterdesc}}
139
                            {{#state.sortorder.isstarterasc}}
140
                                <a href="{{{forum.urls.sortstarterdesc}}}" aria-label="{{#str}}discussionlistsortbystarterdesc, mod_forum{{/str}}">{{#str}}startedby, mod_forum{{/str}}</a> <span class="text-primary">{{#pix}}t/uplong, core, {{#str}}asc, core{{/str}}{{/pix}}</span>
141
                            {{/state.sortorder.isstarterasc}}
142
                            {{^state.sortorder.isstarterdesc}}
143
                                {{^state.sortorder.isstarterasc}}
144
                                    <a href="{{{forum.urls.sortstarterdesc}}}" aria-label="{{#str}}discussionlistsortbystarterdesc, mod_forum{{/str}}">{{#str}}startedby, mod_forum{{/str}}</a>
1 efrain 145
                                {{/state.sortorder.isstarterasc}}
1441 ariadna 146
                            {{/state.sortorder.isstarterdesc}}
147
                        </th>
148
                        <th scope="col" class="lastpost px-3">
149
                            {{#state.sortorder.islastpostdesc}}
150
                                <a href="{{{forum.urls.sortlastpostasc}}}" aria-label="{{#str}}discussionlistsortbylastpostasc, mod_forum{{/str}}">{{#str}}lastpost, mod_forum{{/str}}</a> <span class="text-primary">{{#pix}}t/downlong, core, {{#str}}desc, core{{/str}}{{/pix}}</span>
151
                            {{/state.sortorder.islastpostdesc}}
152
                            {{#state.sortorder.islastpostasc}}
153
                                <a href="{{{forum.urls.sortlastpostdesc}}}" aria-label="{{#str}}discussionlistsortbylastpostdesc, mod_forum{{/str}}">{{#str}}lastpost, mod_forum{{/str}}</a> <span class="text-primary">{{#pix}}t/uplong, core, {{#str}}asc, core{{/str}}{{/pix}}</span>
154
                            {{/state.sortorder.islastpostasc}}
155
                            {{^state.sortorder.islastpostdesc}}
156
                                {{^state.sortorder.islastpostasc}}
157
                                    <a href="{{{forum.urls.sortlastpostdesc}}}" aria-label="{{#str}}discussionlistsortbylastpostdesc, mod_forum{{/str}}">{{#str}}lastpost, mod_forum{{/str}}</a>
1 efrain 158
                                {{/state.sortorder.islastpostasc}}
1441 ariadna 159
                            {{/state.sortorder.islastpostdesc}}
160
                        </th>
161
                        {{#forum.capabilities.viewdiscussions}}
162
                            <th scope="col" class="text-center px-2">
163
                                {{#state.sortorder.isrepliesdesc}}
164
                                    <a href="{{{forum.urls.sortrepliesasc}}}" aria-label="{{#str}}discussionlistsortbyrepliesasc, mod_forum{{/str}}">{{#str}}replies, mod_forum{{/str}}</a> <span class="text-primary">{{#pix}}t/downlong, core, {{#str}}desc, core{{/str}}{{/pix}}</span>
165
                                {{/state.sortorder.isrepliesdesc}}
166
                                {{#state.sortorder.isrepliesasc}}
167
                                    <a href="{{{forum.urls.sortrepliesdesc}}}" aria-label="{{#str}}discussionlistsortbyrepliesdesc, mod_forum{{/str}}">{{#str}}replies, mod_forum{{/str}}</a> <span class="text-primary">{{#pix}}t/uplong, core, {{#str}}asc, core{{/str}}{{/pix}}</span>
168
                                {{/state.sortorder.isrepliesasc}}
169
                                {{^state.sortorder.isrepliesdesc}}
170
                                    {{^state.sortorder.isrepliesasc}}
171
                                        <a href="{{{forum.urls.sortrepliesdesc}}}" aria-label="{{#str}}discussionlistsortbyrepliesdesc, mod_forum{{/str}}">{{#str}}replies, mod_forum{{/str}}</a>
1 efrain 172
                                    {{/state.sortorder.isrepliesasc}}
1441 ariadna 173
                                {{/state.sortorder.isrepliesdesc}}
174
                                {{#forum.userstate.tracked}}
175
                                    <a href="{{{forum.urls.markasread}}}">{{#pix}}t/markasread, core, {{#str}}markallread, mod_forum{{/str}}{{/pix}}</a>
176
                                {{/forum.userstate.tracked}}
1 efrain 177
                            </th>
1441 ariadna 178
                        {{/forum.capabilities.viewdiscussions}}
179
                        {{#forum.capabilities.subscribe}}
180
                            <th scope="col" class="text-center px-2">{{#str}} notsubscribed, mod_forum {{/str}}</th>
181
                        {{/forum.capabilities.subscribe}}
182
                        <th scope="col" class="discussionsubscription">
183
                            <span class="accesshide">{{#str}}actions{{/str}}</span>
184
                        </th>
185
                    </tr>
186
                </thead>
187
                {{/discussion_list_header}}
188
                {{$discussion_list_body}}
189
                <tbody>
190
                    {{#summaries}}
191
                        {{! The discussion class is only required for behat tests to identify the row. }}
192
                        <tr class="discussion{{!
193
                                }}{{#discussion.pinned}} pinned{{/discussion.pinned}}{{!
194
                                }}{{#discussion.userstate.favourited}} favourited{{/discussion.userstate.favourited}}{{!
195
                                }}{{#discussion.userstate.subscribed}} subscribed{{/discussion.userstate.subscribed}}{{!
196
                                }}{{#unread}} hasunread{{/unread}}{{!
197
                                }}{{#discussion.timed}}{{#istimed}}{{^visible}} dimmed_text{{/visible}}{{/istimed}}{{/discussion.timed}}"
198
                            data-region="discussion-list-item"
199
                            data-discussionid="{{id}}"
200
                            data-forumid="{{forumid}}">
201
                            <td class="p-0 text-center align-middle icon-no-margin" style="width: 1px;">
202
                                {{#discussion}}
203
                                    {{> mod_forum/forum_discussion_favourite_toggle}}
204
                                {{/discussion}}
205
                            </td>
206
                            <th scope="row" class="topic p-0 align-middle">
207
                                <div class="p-3 ps-0">
208
                                    <div class="d-flex">
209
                                        {{#discussion.pinned}}
210
                                            {{#pix}}i/pinned, mod_forum, {{#str}}discussionpinned, mod_forum{{/str}}{{/pix}}
211
                                        {{/discussion.pinned}}
212
                                        <a class="w-100 h-100 d-block" href="{{discussion.urls.view}}" title="{{discussion.name}}" aria-label="{{discussion.name}}">
213
                                            {{#shortentext}}100, {{{discussion.name}}}{{/shortentext}}
214
                                        </a>
215
                                    </div>
216
                                    <div>
217
                                        <span class="badge bg-danger text-white rounded" data-region="locked-label" {{^discussion.locked}}hidden{{/discussion.locked}}>
218
                                            {{#str}}locked, forum{{/str}}
219
                                        </span>
220
                                        {{#discussion.timed.istimed}}
221
                                        <span>
222
                                                <button class="btn badge bg-primary text-white rounded border-0" data-region="timed-label"
223
                                                data-bs-toggle="popover" data-bs-container="body" data-bs-placement="right" data-bs-html="true"
224
                                                data-bs-content="{{#discussion.timed}}{{#discussion.times}}{{> mod_forum/discussion_times}}{{/discussion.times}}{{/discussion.timed}}"
225
                                                data-bs-trigger="click" aria-label="{{#str}}timeddiscussion, forum{{/str}}" title="{{#str}}timeddiscussion, forum{{/str}}">
226
                                                    {{#str}}timed, forum{{/str}}
227
                                                </button>
228
                                        </span>
229
                                        {{/discussion.timed.istimed}}
230
                                    </div>
231
                                </div>
232
                            </th>
233
                            {{#forum.state.groupmode}}
234
                                <td class="group align-middle fit-content limit-width px-3">
235
                                    {{#discussion.group}}
236
                                        <img alt="{{#str}} pictureof, core, {{name}} {{/str}}"
237
                                                class="border rounded h-auto rounded-circle grouppicture"
238
                                                src="{{{urls.picture}}}"
239
                                                title="{{#str}} pictureof, core, {{name}} {{/str}}">
240
                                        {{#urls.userlist}}
241
                                            <a href="{{{urls.userlist}}}" aria-label='{{#str}} memberofgroup, group, {{name}}{{/str}}'
242
                                                title='{{#str}} memberofgroup, group, {{name}}{{/str}}'>
243
                                                {{#shortentext}}30, {{name}}{{/shortentext}}
244
                                            </a>
245
                                        {{/urls.userlist}}
246
                                        {{^urls.userlist}}
247
                                            <span>{{name}}</span>
248
                                        {{/urls.userlist}}
249
                                    {{/discussion.group}}
1 efrain 250
                                </td>
1441 ariadna 251
                            {{/forum.state.groupmode}}
252
                            <td class="author align-middle fit-content limit-width px-3">
253
                                {{#firstpostauthor}}
254
                                    <div class="d-flex">
255
                                        <div class="align-middle p-0">
256
                                            <img class="rounded-circle userpicture" src="{{urls.profileimage}}"
257
                                                    alt="{{#str}}pictureof, moodle, {{fullname}}{{/str}}"
258
                                                    title="{{#str}}pictureof, moodle, {{fullname}}{{/str}}" >
1 efrain 259
                                        </div>
1441 ariadna 260
                                        <div class="author-info align-middle">
261
                                            <div class="mb-1 line-height-3 text-truncate">{{fullname}}</div>
262
                                            <div class="line-height-3">
263
                                                {{< core/time_element }}
264
                                                    {{$elementid}}created-{{discussion.id}}{{/elementid}}
265
                                                    {{$timestampval}}{{discussion.times.created}}{{/timestampval}}
266
                                                    {{$userdateformatval}}{{#str}}strftimedatemonthabbr, langconfig{{/str}}{{/userdateformatval}}
267
                                                {{/core/time_element}}
268
                                            </div>
1 efrain 269
                                        </div>
270
                                    </div>
1441 ariadna 271
                                {{/firstpostauthor}}
272
                            </td>
273
                            <td class="text-start align-middle fit-content limit-width px-3">
274
                                {{! TODO Check q&a, eachuser }}
275
                                {{#latestpostauthor}}
276
                                    <div class="d-flex">
277
                                        <div class="align-middle p-0">
278
                                            <img class="rounded-circle userpicture" src="{{urls.profileimage}}"
279
                                                    alt="{{#str}}pictureof, moodle, {{fullname}}{{/str}}"
280
                                                    title="{{#str}}pictureof, moodle, {{fullname}}{{/str}}" >
1 efrain 281
                                        </div>
1441 ariadna 282
                                        <div class="author-info align-middle">
283
                                            <div class="mb-1 line-height-3 text-truncate">{{fullname}}</div>
284
                                            <div class="line-height-3">
285
                                                {{#latestpostid}}
286
                                                    <a href="{{{discussion.urls.viewlatest}}}" title="{{#userdate}}{{discussion.times.modified}},{{#str}}strftimerecentfull{{/str}}{{/userdate}}">
287
                                                        {{< core/time_element }}
288
                                                            {{$elementid}}modified-{{discussion.id}}{{/elementid}}
289
                                                            {{$timestampval}}{{discussion.times.modified}}{{/timestampval}}
290
                                                            {{$userdateformatval}}{{#str}}strftimedatemonthabbr, langconfig{{/str}}{{/userdateformatval}}
291
                                                        {{/ core/time_element }}
292
                                                    </a>
293
                                                {{/latestpostid}}
1 efrain 294
                                            </div>
295
                                        </div>
1441 ariadna 296
                                    </div>
297
                                {{/latestpostauthor}}
298
                            </td>
299
                            {{#forum.capabilities.viewdiscussions}}
300
                                <td class="p-0 text-center align-middle fit-content px-2">
301
                                    <span>{{replies}}</span>
302
                                    {{#forum.userstate.tracked}}
303
                                        {{#unread}}
304
                                        {{! TODO Rewrite as AJAX}}
305
                                            <span class="lead">
306
                                                <a href="{{{discussion.urls.viewfirstunread}}}" class="badge bg-primary text-white rounded-pill fw-normal"
307
                                                    title="{{#str}}unreadpostsnumber, mod_forum, {{unread}}{{/str}}" aria-label="{{#str}}unreadpostsnumber, mod_forum, {{unread}}{{/str}}">
308
                                                    {{unread}}
309
                                                </a>
310
                                            </span>
311
                                        {{/unread}}
312
                                    {{/forum.userstate.tracked}}
1 efrain 313
                                </td>
1441 ariadna 314
                            {{/forum.capabilities.viewdiscussions}}
315
                            {{#forum.capabilities.subscribe}}
316
                                <td class="text-center align-middle fit-content px-2">
317
                                    {{#discussion}}
318
                                        <div class="form-check form-switch mb-1">
319
                                            <input
320
                                                type="checkbox"
321
                                                class="form-check-input"
322
                                                id="subscription-toggle-{{id}}"
323
                                                data-type="subscription-toggle"
324
                                                data-action="toggle"
325
                                                data-discussionid="{{id}}"
326
                                                data-forumid="{{forumid}}"
327
                                                {{#userstate.subscribed}}data-targetstate="0" checked{{/userstate.subscribed}}
328
                                                {{^userstate.subscribed}}data-targetstate="1"{{/userstate.subscribed}}>
329
                                            <label class="form-check-label" for="subscription-toggle-{{id}}">
330
                                                <span class="visually-hidden">
331
                                                    {{#userstate.subscribed}}
332
                                                        {{#str}}unsubscribediscussion, forum{{/str}}
333
                                                    {{/userstate.subscribed}}
334
                                                    {{^userstate.subscribed}}
335
                                                        {{#str}}subscribediscussion, forum{{/str}}
336
                                                    {{/userstate.subscribed}}
1 efrain 337
                                                </span>
1441 ariadna 338
                                            </label>
1 efrain 339
                                        </div>
340
                                    {{/discussion}}
341
                                </td>
1441 ariadna 342
                            {{/forum.capabilities.subscribe}}
343
                            <td class="p-0 align-middle fit-content" data-container="discussion-summary-actions">
344
                                {{#discussion}}
345
                                    <div class="d-flex flex-wrap justify-content-end icon-no-margin">
346
                                        {{#hasanyactions}}
347
                                            <div data-container='discussion-tools'>
348
                                                {{> mod_forum/forum_action_menu}}
349
                                            </div>
350
                                        {{/hasanyactions}}
351
                                    </div>
352
                                {{/discussion}}
353
                            </td>
354
                        </tr>
355
                    {{/summaries}}
356
                </tbody>
357
                {{/discussion_list_body}}
358
            </table>
1 efrain 359
        </div>
360
        {{/discussion_list_output}}
361
        {{$discussion_bottom_pagination}}
362
            {{{ pagination }}}
363
        {{/discussion_bottom_pagination}}
364
        {{#can_create_discussion}}
365
            <div class="forumaddnew">
366
                <a href="{{create_discussion_link}}" class="btn btn-primary">{{create_discussion_link_text}}</a>
367
            </div>
368
        {{/can_create_discussion}}
369
    {{/state.hasdiscussions}}
370
    {{^state.hasdiscussions}}
371
        <div class="forumnodiscuss alert alert-info">
372
            {{$no_discussions_text}}
373
                {{#str}}nodiscussions, forum{{/str}}
374
            {{/no_discussions_text}}
375
        </div>
376
    {{/state.hasdiscussions}}
377
 
378
</div>
379
{{#js}}
380
    require(['jquery', 'mod_forum/discussion_list'], function($, View) {
381
        var root = $('#discussion-list-{{uniqid}}');
382
        View.init(root);
383
    });
384
{{/js}}