| Server IP : 127.0.1.1 / Your IP : 216.73.216.60 Web Server : Apache/2.4.58 (Ubuntu) System : Linux nepub 6.8.0-88-generic #89-Ubuntu SMP PREEMPT_DYNAMIC Sat Oct 11 01:02:46 UTC 2025 x86_64 User : root ( 0) PHP Version : 8.2.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/html/public_html/lib/pkp/js/controllers/grid/queries/ |
Upload File : |
/**
* @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));