%PDF- %PDF-
Direktori : /home/vacivi36/ava/mod/forum/amd/src/ |
Current File : /home/vacivi36/ava/mod/forum/amd/src/repository.js |
// 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/>. /** * Forum repository class to encapsulate all of the AJAX requests that subscribe or unsubscribe * can be sent for forum. * * @module mod_forum/repository * @copyright 2019 Andrew Nicols <andrew@nicols.co.uk> * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ define(['core/ajax'], function(Ajax) { /** * Set the subscription state for a discussion in a forum. * * @param {number} forumId ID of the forum the discussion belongs to * @param {number} discussionId ID of the discussion with the subscription state * @param {boolean} targetState Set the subscribed state. True == subscribed; false == unsubscribed. * @return {object} jQuery promise */ var setDiscussionSubscriptionState = function(forumId, discussionId, targetState) { var request = { methodname: 'mod_forum_set_subscription_state', args: { forumid: forumId, discussionid: discussionId, targetstate: targetState } }; return Ajax.call([request])[0]; }; var addDiscussionPost = function(postid, subject, message, messageformat, isprivatereply, topreferredformat) { var request = { methodname: 'mod_forum_add_discussion_post', args: { postid: postid, message: message, messageformat: messageformat, subject: subject, options: [{ name: "private", value: isprivatereply, }, { name: "topreferredformat", value: topreferredformat, }] } }; return Ajax.call([request])[0]; }; /** * Set the favourite state for a discussion in a forum. * * @param {number} forumId ID of the forum the discussion belongs to * @param {number} discussionId ID of the discussion with the subscription state * @param {null|date} targetState Set the favourite state. True == favourited; false == unfavourited. * @return {object} jQuery promise */ var setFavouriteDiscussionState = function(forumId, discussionId, targetState) { var request = { methodname: 'mod_forum_toggle_favourite_state', args: { discussionid: discussionId, targetstate: targetState } }; return Ajax.call([request])[0]; }; var setDiscussionLockState = function(forumId, discussionId, targetState) { var request = { methodname: 'mod_forum_set_lock_state', args: { forumid: forumId, discussionid: discussionId, targetstate: targetState} }; return Ajax.call([request])[0]; }; /** * Set the pinned state for the discussion provided. * * @param {number} forumid * @param {number} discussionid * @param {boolean} targetstate * @return {*|Promise} */ var setPinDiscussionState = function(forumid, discussionid, targetstate) { var request = { methodname: 'mod_forum_set_pin_state', args: { discussionid: discussionid, targetstate: targetstate } }; return Ajax.call([request])[0]; }; /** * Get the discussions for the user and cmid provided. * * @param {number} userid * @param {number} cmid * @param {string} sortby * @param {string} sortdirection * @return {*|Promise} */ var getDiscussionByUserID = function(userid, cmid, sortby = 'modified', sortdirection = 'DESC') { var request = { methodname: 'mod_forum_get_discussion_posts_by_userid', args: { userid: userid, cmid: cmid, sortby: sortby, sortdirection: sortdirection, }, }; return Ajax.call([request])[0]; }; /** * Get the posts for the discussion ID provided. * * @param {number} discussionId * @param {String} sortby * @param {String} sortdirection * @return {*|Promise} */ var getDiscussionPosts = function(discussionId, sortby = 'created', sortdirection = 'ASC') { var request = { methodname: 'mod_forum_get_discussion_posts', args: { discussionid: discussionId, sortby: sortby, sortdirection: sortdirection, }, }; return Ajax.call([request])[0]; }; return { setDiscussionSubscriptionState: setDiscussionSubscriptionState, addDiscussionPost: addDiscussionPost, setDiscussionLockState: setDiscussionLockState, setFavouriteDiscussionState: setFavouriteDiscussionState, setPinDiscussionState: setPinDiscussionState, getDiscussionByUserID: getDiscussionByUserID, getDiscussionPosts: getDiscussionPosts, }; });