weekly release 4.0dev
[moodle.git] / mod / forum / amd / src / lock_toggle.js
CommitLineData
2893812e
P
1// This file is part of Moodle - http://moodle.org/
2//
3// Moodle is free software: you can redistribute it and/or modify
4// it under the terms of the GNU General Public License as published by
5// the Free Software Foundation, either version 3 of the License, or
6// (at your option) any later version.
7//
8// Moodle is distributed in the hope that it will be useful,
9// but WITHOUT ANY WARRANTY; without even the implied warranty of
10// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11// GNU General Public License for more details.
12//
13// You should have received a copy of the GNU General Public License
14// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
15
16/**
17 * Handle the manual locking of individual discussions
18 *
19 * @module mod_forum/lock_toggle
2893812e
P
20 * @copyright 2019 Peter Dias <peter@moodle.com>
21 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
22 */
23define([
24 'jquery',
25 'core/templates',
26 'core/notification',
27 'mod_forum/repository',
28 'mod_forum/selectors',
29 ], function(
30 $,
31 Templates,
32 Notification,
33 Repository,
49f5b16c 34 Selectors
2893812e
P
35 ) {
36
37 /**
38 * Register event listeners for the subscription toggle.
39 *
40 * @param {object} root The discussion list root element
49f5b16c 41 * @param {boolean} preventDefault Should the default action of the event be prevented
2893812e 42 */
49f5b16c 43 var registerEventListeners = function(root, preventDefault) {
2893812e 44 root.on('click', Selectors.lock.toggle, function(e) {
49f5b16c
RW
45 var toggleElement = $(this);
46 var forumId = toggleElement.data('forumid');
47 var discussionId = toggleElement.data('discussionid');
48 var state = toggleElement.data('state');
2893812e 49
49f5b16c
RW
50 Repository.setDiscussionLockState(forumId, discussionId, state)
51 .then(function() {
52 return location.reload();
53 })
54 .catch(Notification.exception);
2893812e 55
49f5b16c
RW
56 if (preventDefault) {
57 e.preventDefault();
58 }
2893812e
P
59 });
60 };
61
62 return {
49f5b16c 63 init: registerEventListeners
2893812e
P
64 };
65});