AutorÃa | Ultima modificación | Ver Log |
{{!
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/>.
}}
{{!
@template mod_forum/discussion_list
Template to display the list of forum discussions.
Classes required for JS:
* none
Data attributes required for JS:
* none
Context variables required for this template:
* TODO
Example context (json):
{
}
}}
<div id="discussion-list-{{uniqid}}" {{!
}}data-contextid="{{contextid}}" {{!
}}data-cmid="{{cmid}}" {{!
}}data-name="{{forum.name}}" {{!
}}data-group="{{forum.groupid}}" {{!
}}data-grading-component="{{gradingcomponent}}" {{!
}}data-grading-component-subtype="{{gradingcomponentsubtype}}" {{!
}}data-gradable-itemtype="forum" {{!
}}{{#firstgradeduserid}}data-initialuserid="{{firstgradeduserid}}" {{/firstgradeduserid}}{{!
}}>
{{#notifications}}
{{> core/notification}}
{{/notifications}}
{{{groupchangemenu}}}
<div class="py-3">
{{#forum.capabilities.create}}
{{#enablediscussioncreation}}
<a class="btn btn-primary" data-toggle="collapse" href="#collapseAddForm">
{{$discussion_create_text}}
{{#str}}addanewdiscussion, forum{{/str}}
{{/discussion_create_text}}
</a>
{{/enablediscussioncreation}}
{{/forum.capabilities.create}}
{{^forum.capabilities.create}}
{{#forum.capabilities.selfenrol}}
{{#enablediscussioncreation}}
<a class="btn btn-primary" href="{{forum.urls.create}}">
{{$discussion_create_text}}
{{#str}}addanewdiscussion, forum{{/str}}
{{/discussion_create_text}}
</a>
{{/enablediscussioncreation}}
{{/forum.capabilities.selfenrol}}
{{/forum.capabilities.create}}
{{#forum.capabilities.grade}}
{{#forum.state.gradingenabled}}
{{> mod_forum/grades/grade_button }}
{{/forum.state.gradingenabled}}
{{/forum.capabilities.grade}}
{{^forum.capabilities.grade}}
{{#forum.state.gradingenabled}}
{{> mod_forum/grades/view_grade_button }}
{{/forum.state.gradingenabled}}
{{/forum.capabilities.grade}}
</div>
{{#forum.capabilities.create}}
<div class="collapse mt-3 pb-3" id="collapseAddForm">
{{{newdiscussionhtml}}}
</div>
{{/forum.capabilities.create}}
{{#state.hasdiscussions}}
{{$discussion_top_pagination}}
{{{ pagination }}}
{{/discussion_top_pagination}}
{{$discussion_list_output}}
<div class="position-relative">
<div class="no-overflow">
<table class="table discussion-list generaltable">
<caption id="discussion-table-description-{{uniqid}}" class="sr-only">
{{#str}} showingcountoftotaldiscussions, mod_forum, {"count": "{{visiblediscussioncount}}", "total":"{{totaldiscussioncount}}"} {{/str}}
</caption>
{{$discussion_list_header}}
<thead>
<tr>
<th scope="col">
<span class="accesshide">{{#str}}status{{/str}}</span>
</th>
<th scope="col" class="pl-0">
{{#state.sortorder.isdiscussiondesc}}
<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>
{{/state.sortorder.isdiscussiondesc}}
{{#state.sortorder.isdiscussionasc}}
<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>
{{/state.sortorder.isdiscussionasc}}
{{^state.sortorder.isdiscussiondesc}}
{{^state.sortorder.isdiscussionasc}}
<a href="{{{forum.urls.sortdiscussiondesc}}}" aria-label="{{#str}}discussionlistsortbydiscussiondesc, mod_forum{{/str}}">{{#str}}discussion, mod_forum{{/str}}</a>
{{/state.sortorder.isdiscussionasc}}
{{/state.sortorder.isdiscussiondesc}}
</th>
{{#forum.state.groupmode}}
<th scope="col" class="group px-3">
{{#state.sortorder.isgroupdesc}}
<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>
{{/state.sortorder.isgroupdesc}}
{{#state.sortorder.isgroupasc}}
<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>
{{/state.sortorder.isgroupasc}}
{{^state.sortorder.isgroupdesc}}
{{^state.sortorder.isgroupasc}}
<a href="{{{forum.urls.sortgroupdesc}}}" aria-label="{{#str}}discussionlistsortbygroupdesc, mod_forum{{/str}}">{{#str}}group{{/str}}</a>
{{/state.sortorder.isgroupasc}}
{{/state.sortorder.isgroupdesc}}
</th>
{{/forum.state.groupmode}}
<th scope="col" class="author px-3">
{{#state.sortorder.isstarterdesc}}
<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>
{{/state.sortorder.isstarterdesc}}
{{#state.sortorder.isstarterasc}}
<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>
{{/state.sortorder.isstarterasc}}
{{^state.sortorder.isstarterdesc}}
{{^state.sortorder.isstarterasc}}
<a href="{{{forum.urls.sortstarterdesc}}}" aria-label="{{#str}}discussionlistsortbystarterdesc, mod_forum{{/str}}">{{#str}}startedby, mod_forum{{/str}}</a>
{{/state.sortorder.isstarterasc}}
{{/state.sortorder.isstarterdesc}}
</th>
<th scope="col" class="lastpost px-3">
{{#state.sortorder.islastpostdesc}}
<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>
{{/state.sortorder.islastpostdesc}}
{{#state.sortorder.islastpostasc}}
<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>
{{/state.sortorder.islastpostasc}}
{{^state.sortorder.islastpostdesc}}
{{^state.sortorder.islastpostasc}}
<a href="{{{forum.urls.sortlastpostdesc}}}" aria-label="{{#str}}discussionlistsortbylastpostdesc, mod_forum{{/str}}">{{#str}}lastpost, mod_forum{{/str}}</a>
{{/state.sortorder.islastpostasc}}
{{/state.sortorder.islastpostdesc}}
</th>
{{#forum.capabilities.viewdiscussions}}
<th scope="col" class="text-center px-2">
{{#state.sortorder.isrepliesdesc}}
<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>
{{/state.sortorder.isrepliesdesc}}
{{#state.sortorder.isrepliesasc}}
<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>
{{/state.sortorder.isrepliesasc}}
{{^state.sortorder.isrepliesdesc}}
{{^state.sortorder.isrepliesasc}}
<a href="{{{forum.urls.sortrepliesdesc}}}" aria-label="{{#str}}discussionlistsortbyrepliesdesc, mod_forum{{/str}}">{{#str}}replies, mod_forum{{/str}}</a>
{{/state.sortorder.isrepliesasc}}
{{/state.sortorder.isrepliesdesc}}
{{#forum.userstate.tracked}}
<a href="{{{forum.urls.markasread}}}">{{#pix}}t/markasread, core, {{#str}}markallread, mod_forum{{/str}}{{/pix}}</a>
{{/forum.userstate.tracked}}
</th>
{{/forum.capabilities.viewdiscussions}}
{{#forum.capabilities.subscribe}}
<th scope="col" class="text-center px-2">{{#str}} notsubscribed, mod_forum {{/str}}</th>
{{/forum.capabilities.subscribe}}
<th scope="col" class="discussionsubscription">
<span class="accesshide">{{#str}}actions{{/str}}</span>
</th>
</tr>
</thead>
{{/discussion_list_header}}
{{$discussion_list_body}}
<tbody>
{{#summaries}}
{{! The discussion class is only required for behat tests to identify the row. }}
<tr class="discussion{{!
}}{{#discussion.pinned}} pinned{{/discussion.pinned}}{{!
}}{{#discussion.userstate.favourited}} favourited{{/discussion.userstate.favourited}}{{!
}}{{#discussion.userstate.subscribed}} subscribed{{/discussion.userstate.subscribed}}{{!
}}{{#unread}} hasunread{{/unread}}{{!
}}{{#discussion.timed}}{{#istimed}}{{^visible}} dimmed_text{{/visible}}{{/istimed}}{{/discussion.timed}}"
data-region="discussion-list-item"
data-discussionid="{{id}}"
data-forumid="{{forumid}}">
<td class="p-0 text-center align-middle icon-no-margin" style="width: 1px;">
{{#discussion}}
{{> mod_forum/forum_discussion_favourite_toggle}}
{{/discussion}}
</td>
<th scope="row" class="topic p-0 align-middle">
<div class="py-3 pl-0">
<div class="d-flex">
{{#discussion.pinned}}
{{#pix}}i/pinned, mod_forum, {{#str}}discussionpinned, mod_forum{{/str}}{{/pix}}
{{/discussion.pinned}}
<a class="w-100 h-100 d-block" href="{{discussion.urls.view}}" title="{{discussion.name}}" aria-label="{{discussion.name}}">
{{#shortentext}}100, {{{discussion.name}}}{{/shortentext}}
</a>
</div>
<div>
<span class="badge badge-danger rounded" data-region="locked-label" {{^discussion.locked}}hidden{{/discussion.locked}}>
{{#str}}locked, forum{{/str}}
</span>
{{#discussion.timed.istimed}}
<span>
<button class="btn badge badge-primary rounded border-0" data-region="timed-label"
data-toggle="popover" data-container="body" data-placement="right" data-html="true"
data-content="{{#discussion.timed}}{{#discussion.times}}{{> mod_forum/discussion_times}}{{/discussion.times}}{{/discussion.timed}}"
data-trigger="click" aria-label="{{#str}}timeddiscussion, forum{{/str}}" title="{{#str}}timeddiscussion, forum{{/str}}">
{{#str}}timed, forum{{/str}}
</button>
</span>
{{/discussion.timed.istimed}}
</div>
</div>
</th>
{{#forum.state.groupmode}}
<td class="group align-middle fit-content limit-width px-3">
{{#discussion.group}}
<img alt="{{#str}} pictureof, core, {{name}} {{/str}}"
class="border rounded h-auto rounded-circle grouppicture"
src="{{{urls.picture}}}"
title="{{#str}} pictureof, core, {{name}} {{/str}}">
{{#urls.userlist}}
<a href="{{{urls.userlist}}}" aria-label='{{#str}} memberofgroup, group, {{name}}{{/str}}'
title='{{#str}} memberofgroup, group, {{name}}{{/str}}'>
{{#shortentext}}30, {{name}}{{/shortentext}}
</a>
{{/urls.userlist}}
{{^urls.userlist}}
<span>{{name}}</span>
{{/urls.userlist}}
{{/discussion.group}}
</td>
{{/forum.state.groupmode}}
<td class="author align-middle fit-content limit-width px-3">
{{#firstpostauthor}}
<div class="d-flex">
<div class="align-middle p-0">
<img class="rounded-circle userpicture" src="{{urls.profileimage}}"
alt="{{#str}}pictureof, moodle, {{fullname}}{{/str}}"
title="{{#str}}pictureof, moodle, {{fullname}}{{/str}}" >
</div>
<div class="author-info align-middle">
<div class="mb-1 line-height-3 text-truncate">{{fullname}}</div>
<div class="line-height-3">
{{< core/time_element }}
{{$elementid}}created-{{discussion.id}}{{/elementid}}
{{$timestampval}}{{discussion.times.created}}{{/timestampval}}
{{$userdateformatval}}{{#str}}strftimedatemonthabbr, langconfig{{/str}}{{/userdateformatval}}
{{/core/time_element}}
</div>
</div>
</div>
{{/firstpostauthor}}
</td>
<td class="text-left align-middle fit-content limit-width px-3">
{{! TODO Check q&a, eachuser }}
{{#latestpostauthor}}
<div class="d-flex">
<div class="align-middle p-0">
<img class="rounded-circle userpicture" src="{{urls.profileimage}}"
alt="{{#str}}pictureof, moodle, {{fullname}}{{/str}}"
title="{{#str}}pictureof, moodle, {{fullname}}{{/str}}" >
</div>
<div class="author-info align-middle">
<div class="mb-1 line-height-3 text-truncate">{{fullname}}</div>
<div class="line-height-3">
{{#latestpostid}}
<a href="{{{discussion.urls.viewlatest}}}" title="{{#userdate}}{{discussion.times.modified}},{{#str}}strftimerecentfull{{/str}}{{/userdate}}">
{{< core/time_element }}
{{$elementid}}modified-{{discussion.id}}{{/elementid}}
{{$timestampval}}{{discussion.times.modified}}{{/timestampval}}
{{$userdateformatval}}{{#str}}strftimedatemonthabbr, langconfig{{/str}}{{/userdateformatval}}
{{/ core/time_element }}
</a>
{{/latestpostid}}
</div>
</div>
</div>
{{/latestpostauthor}}
</td>
{{#forum.capabilities.viewdiscussions}}
<td class="p-0 text-center align-middle fit-content px-2">
<span>{{replies}}</span>
{{#forum.userstate.tracked}}
{{#unread}}
{{! TODO Rewrite as AJAX}}
<span class="lead">
<a href="{{{discussion.urls.viewfirstunread}}}" class="badge badge-primary rounded-pill font-weight-normal"
title="{{#str}}unreadpostsnumber, mod_forum, {{unread}}{{/str}}" aria-label="{{#str}}unreadpostsnumber, mod_forum, {{unread}}{{/str}}">
{{unread}}
</a>
</span>
{{/unread}}
{{/forum.userstate.tracked}}
</td>
{{/forum.capabilities.viewdiscussions}}
{{#forum.capabilities.subscribe}}
<td class="text-center align-middle fit-content px-2">
{{#discussion}}
<div class="d-inline custom-control custom-switch mb-1">
<input
type="checkbox"
class="custom-control-input"
id="subscription-toggle-{{id}}"
data-type="subscription-toggle"
data-action="toggle"
data-discussionid="{{id}}"
data-forumid="{{forumid}}"
{{#userstate.subscribed}}data-targetstate="0" checked{{/userstate.subscribed}}
{{^userstate.subscribed}}data-targetstate="1"{{/userstate.subscribed}}>
<label class="custom-control-label" for="subscription-toggle-{{id}}">
<span class="sr-only">
{{#userstate.subscribed}}
{{#str}}unsubscribediscussion, forum{{/str}}
{{/userstate.subscribed}}
{{^userstate.subscribed}}
{{#str}}subscribediscussion, forum{{/str}}
{{/userstate.subscribed}}
</span>
</label>
</div>
{{/discussion}}
</td>
{{/forum.capabilities.subscribe}}
<td class="p-0 align-middle fit-content" data-container="discussion-summary-actions">
{{#discussion}}
<div class="d-flex flex-wrap justify-content-end icon-no-margin">
{{#hasanyactions}}
<div data-container='discussion-tools'>
{{> mod_forum/forum_action_menu}}
</div>
{{/hasanyactions}}
</div>
{{/discussion}}
</td>
</tr>
{{/summaries}}
</tbody>
{{/discussion_list_body}}
</table>
</div>
</div>
{{/discussion_list_output}}
{{$discussion_bottom_pagination}}
{{{ pagination }}}
{{/discussion_bottom_pagination}}
{{#can_create_discussion}}
<div class="forumaddnew">
<a href="{{create_discussion_link}}" class="btn btn-primary">{{create_discussion_link_text}}</a>
</div>
{{/can_create_discussion}}
{{/state.hasdiscussions}}
{{^state.hasdiscussions}}
<div class="forumnodiscuss alert alert-info">
{{$no_discussions_text}}
{{#str}}nodiscussions, forum{{/str}}
{{/no_discussions_text}}
</div>
{{/state.hasdiscussions}}
</div>
{{#js}}
require(['jquery', 'mod_forum/discussion_list'], function($, View) {
var root = $('#discussion-list-{{uniqid}}');
View.init(root);
});
{{/js}}