/**
* @file js/classes/linkAction/AjaxRequest.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 AjaxRequest
* @ingroup js_classes_linkAction
*
* @brief AJAX link action request.
*/
(function($) {
/**
* @constructor
*
* @extends $.pkp.classes.linkAction.LinkActionRequest
*
* @param {jQueryObject} $linkActionElement The element the link
* action was attached to.
* @param {{
* requestType: string,
* data: PlainObject
* }} options Configuration of the link action
* request.
*/
$.pkp.classes.linkAction.AjaxRequest =
function($linkActionElement, options) {
this.parent($linkActionElement, options);
};
$.pkp.classes.Helper.inherits(
$.pkp.classes.linkAction.AjaxRequest,
$.pkp.classes.linkAction.LinkActionRequest);
//
// Public methods
//
/**
* @inheritDoc
*/
$.pkp.classes.linkAction.AjaxRequest.prototype.activate =
function(element, event) {
var returnValue = /** @type {boolean} */ (
this.parent('activate', element, event)),
options = this.getOptions(),
responseHandler = $.pkp.classes.Helper.curry(
this.handleResponse, this);
switch (options.requestType) {
case 'get':
$.getJSON(options.url, options.data, responseHandler);
break;
case 'post':
$.post(options.url, options.data, responseHandler, 'json');
break;
}
return returnValue;
};
/**
* Handle the AJAX response.
* @param {Object} jsonData The data returned by the server.
*/
$.pkp.classes.linkAction.AjaxRequest.prototype.handleResponse =
function(jsonData) {
var $linkActionHandler = this.getLinkActionElement().data('pkp.handler');
$linkActionHandler.handleJson(jsonData);
this.finish();
};
}(jQuery));
|