KONTOLODON
/
var
/
www
/
ojs-3.3.0-13
/
lib
/
pkp
/
js
/
controllers
/
grid
/
queries
/
Nama File / Folder
Size
Action
ReadQueryHandler.js
4.576KB
Hapus
Edit
Rename
/** * @defgroup js_controllers_grid_queries */ /** * @file js/controllers/grid/queries/ReadQueryHandler.js * * Copyright (c) 2014-2021 Simon Fraser University * Copyright (c) 2000-2021 John Willinsky * Distributed under the GNU GPL v3. For full terms see the file docs/COPYING. * * @class ReadQueryHandler * @ingroup js_controllers_grid_queries * * @brief Handler for a "read query" modal * */ (function($) { /** @type {Object} */ $.pkp.controllers.grid.queries = $.pkp.controllers.grid.queries || { }; /** * @constructor * * @extends $.pkp.classes.Handler * * @param {jQueryObject} $containerElement The HTML element encapsulating * the carousel container. * @param {Object} options Handler options. */ $.pkp.controllers.grid.queries.ReadQueryHandler = function($containerElement, options) { this.fetchNoteFormUrl_ = options.fetchNoteFormUrl; this.fetchParticipantsListUrl_ = options.fetchParticipantsListUrl; $containerElement.find('.openNoteForm a').click( this.callbackWrapper(this.showNoteFormHandler_)); $containerElement.bind('dataChanged', this.callbackWrapper(this.reloadParticipantsList_)); $containerElement.bind('user-left-discussion', function() { $containerElement.parent().trigger('modalFinished'); }); this.loadParticipantsList(); }; $.pkp.classes.Helper.inherits( $.pkp.controllers.grid.queries.ReadQueryHandler, $.pkp.classes.Handler); // // Private properties // /** * The URL to be called to fetch a new note form for a query. * @private * @type {string?} */ $.pkp.controllers.grid.queries.ReadQueryHandler. prototype.fetchNoteFormUrl_ = null; /** * The URL to be called to fetch a list of participants. * @private * @type {string?} */ $.pkp.controllers.grid.queries.ReadQueryHandler. prototype.fetchParticipantsListUrl_ = null; // // Public methods // /** * Load the participants list. */ $.pkp.controllers.grid.queries.ReadQueryHandler.prototype. loadParticipantsList = function() { $.get(this.fetchParticipantsListUrl_, this.callbackWrapper(this.showFetchedParticipantsList_), 'json'); }; // // Private methods // /** * Event handler that is called when the "new note" button is clicked. * @param {HTMLElement} element The checkbox input element. * @private */ $.pkp.controllers.grid.queries.ReadQueryHandler.prototype. showNoteFormHandler_ = function(element) { $(element).parents('.queryEditButtons').addClass('is_loading'); $.get(this.fetchNoteFormUrl_, this.callbackWrapper(this.showFetchedNoteForm_), 'json'); }; /** * Event handler that is called when the new note form is ready. * @param {Object} ajaxContext The AJAX request context. * @param {Object} jsonData A parsed JSON response object. * @private */ $.pkp.controllers.grid.queries.ReadQueryHandler.prototype. showFetchedNoteForm_ = function(ajaxContext, jsonData) { var processedJsonData = this.handleJson(jsonData), $noteFormContainer = $('#newNotePlaceholder', this.getHtmlElement()), $queryEditButtons = $('.queryEditButtons.is_loading', this.getHtmlElement()); this.unbindPartial($queryEditButtons); $queryEditButtons.remove(); this.unbindPartial($noteFormContainer); $noteFormContainer.html(processedJsonData.content); }; /** * Event handler that is called when the participants list fetch is complete. * @param {Object} ajaxContext The AJAX request context. * @param {Object} jsonData A parsed JSON response object. * @private */ $.pkp.controllers.grid.queries.ReadQueryHandler.prototype. showFetchedParticipantsList_ = function(ajaxContext, jsonData) { var processedJsonData = this.handleJson(jsonData), $participantsListContainer = $('#participantsListPlaceholder', this.getHtmlElement()), $leaveQueryButton = $('.leaveQueryForm', this.getHtmlElement()); if (processedJsonData.showLeaveQueryButton) { $leaveQueryButton.show(); } else { $leaveQueryButton.hide(); } this.unbindPartial($participantsListContainer); $participantsListContainer.children().remove(); $participantsListContainer.append(processedJsonData.content); }; /** * Handler to update the participants list on change. * @param {HTMLElement} sourceElement The element that issued the * "dataChanged" event. * @param {Event} event The "dataChanged" event. * @param {HTMLElement} triggerElement The element that triggered * the "dataChanged" event. * @private */ $.pkp.controllers.grid.queries.ReadQueryHandler.prototype. reloadParticipantsList_ = function(sourceElement, event, triggerElement) { this.loadParticipantsList(); }; }(jQuery));