first commit
This commit is contained in:
@@ -0,0 +1,157 @@
|
||||
/**
|
||||
* @defgroup js_classes_linkAction
|
||||
*/
|
||||
/**
|
||||
* @file js/classes/linkAction/LinkActionRequest.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 LinkActionRequest
|
||||
* @ingroup js_classes_linkAction
|
||||
*
|
||||
* @brief Base class for all link action requests.
|
||||
*/
|
||||
(function($) {
|
||||
|
||||
/** @type {Object} */
|
||||
$.pkp.classes.linkAction = $.pkp.classes.linkAction || {};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*
|
||||
* @extends $.pkp.classes.ObjectProxy
|
||||
*
|
||||
* @param {jQueryObject} $linkActionElement The element the link
|
||||
* action was attached to.
|
||||
* @param {Object} options Configuration of the link action
|
||||
* request.
|
||||
*/
|
||||
$.pkp.classes.linkAction.LinkActionRequest =
|
||||
function($linkActionElement, options) {
|
||||
|
||||
// Save the reference to the link action element.
|
||||
this.$linkActionElement = $linkActionElement;
|
||||
|
||||
// Save the link action request options.
|
||||
this.options = options;
|
||||
|
||||
// If the link action element is an actual link
|
||||
// and we find a URL in the options then set the
|
||||
// link of the link action for better documentation
|
||||
// and easier debugging in the DOM and for other
|
||||
// JS to easily access the target if required.
|
||||
if ($linkActionElement.is('a') && options.url) {
|
||||
$linkActionElement.attr('href', options.url);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// Protected properties
|
||||
//
|
||||
/**
|
||||
* The element the link action was attached to.
|
||||
* @protected
|
||||
* @type {jQueryObject}
|
||||
*/
|
||||
$.pkp.classes.linkAction.LinkActionRequest.prototype.
|
||||
$linkActionElement = null;
|
||||
|
||||
|
||||
/**
|
||||
* The link action request options.
|
||||
* @protected
|
||||
* @type {Object}
|
||||
*/
|
||||
$.pkp.classes.linkAction.LinkActionRequest.prototype.options = null;
|
||||
|
||||
|
||||
//
|
||||
// Public methods
|
||||
//
|
||||
/**
|
||||
* Callback that will be bound to the link action element.
|
||||
* @param {HTMLElement} element The element that triggered the link
|
||||
* action activation event.
|
||||
* @param {Event} event The event that activated the link action.
|
||||
* @return {boolean} Should return false to stop event propagation.
|
||||
*/
|
||||
$.pkp.classes.linkAction.LinkActionRequest.prototype.activate =
|
||||
function(element, event) {
|
||||
|
||||
this.getLinkActionElement().trigger('actionStart');
|
||||
return false;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Callback that will be bound to the 'action finished' event of the
|
||||
* link action.
|
||||
*
|
||||
* @return {boolean} Should return false to stop event propagation.
|
||||
*/
|
||||
$.pkp.classes.linkAction.LinkActionRequest.prototype.finish =
|
||||
function() {
|
||||
|
||||
// Execute the finish callback if there is one.
|
||||
if (this.options.finishCallback) {
|
||||
this.options.finishCallback();
|
||||
}
|
||||
|
||||
this.getLinkActionElement().trigger('actionStop');
|
||||
return false;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Get the link action request url.
|
||||
* @return {?string} The link action request url.
|
||||
*/
|
||||
$.pkp.classes.linkAction.LinkActionRequest.prototype.getUrl =
|
||||
function() {
|
||||
if (this.options.url) {
|
||||
return this.options.url;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// Protected methods
|
||||
//
|
||||
/**
|
||||
* Retrieve the link action request options.
|
||||
* @return {Object} The link action request options.
|
||||
*/
|
||||
$.pkp.classes.linkAction.LinkActionRequest.prototype.getOptions = function() {
|
||||
return this.options;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Retrieve the element the link action was attached to.
|
||||
* @return {jQueryObject} The element the link action was attached to.
|
||||
*/
|
||||
$.pkp.classes.linkAction.LinkActionRequest.prototype.
|
||||
getLinkActionElement = function() {
|
||||
|
||||
return this.$linkActionElement;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Determine whether or not the link action should be debounced.
|
||||
* @return {boolean} Whether or not to debounce the link action.
|
||||
*/
|
||||
$.pkp.classes.linkAction.LinkActionRequest.prototype.
|
||||
shouldDebounce = function() {
|
||||
return true;
|
||||
};
|
||||
|
||||
|
||||
}(jQuery));
|
||||
Reference in New Issue
Block a user