Files
OSJ/lib/pkp/js/controllers/form/reviewer/ReviewerReviewStep3FormHandler.js
CHIEFSOFT\ameye df3a033196 first commit
2024-06-08 17:09:23 -04:00

138 lines
4.0 KiB
JavaScript

/**
* @defgroup js_controllers_form_reviewer
*/
/**
* @file js/controllers/form/reviewer/ReviewerReviewStep3FormHandler.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 ReviewerReviewStep3FormHandler
* @ingroup js_controllers_form_reviewer
*
* @brief Reviewer step 3 form handler.
*/
(function($) {
/** @type {Object} */
$.pkp.controllers.form.reviewer =
$.pkp.controllers.form.reviewer || { };
/**
* @constructor
*
* @extends $.pkp.controllers.form.AjaxFormHandler
*
* @param {jQueryObject} $formElement A wrapped HTML element that
* represents the approved proof form interface element.
* @param {Object} options Tabbed modal options.
*/
$.pkp.controllers.form.reviewer.ReviewerReviewStep3FormHandler =
function($formElement, options) {
this.parent($formElement, options);
// bind a handler to make sure we update the required state
// of the comments field.
$formElement.find('[id^=\'submitFormButton-\']').click(this.callbackWrapper(
this.updateCommentsRequired_));
$formElement.find('[type^=\'submit\']').click(this.callbackWrapper(
this.updateRecommendationRequired_));
$formElement.find('[type^=\'submit\']').click(this.callbackWrapper(
this.updateSaveOrSubmit_));
};
$.pkp.classes.Helper.inherits(
$.pkp.controllers.form.reviewer.ReviewerReviewStep3FormHandler,
$.pkp.controllers.form.AjaxFormHandler
);
//
// Private methods.
//
/**
* Internal callback called before form validation to ensure the
* proper "required" state of the Recommendation field
*
* @param {HTMLElement} submitButton The submit button.
* @param {Event} event The event that triggered the
* submit button.
* @return {boolean} true.
* @private
*/
$.pkp.controllers.form.reviewer.ReviewerReviewStep3FormHandler.
prototype.updateRecommendationRequired_ = function(submitButton, event) {
var $formElement = this.getHtmlElement(),
$recommendationElement = $formElement.find('[id^="recommendation"]');
if ($recommendationElement.length) {
if (submitButton.id.includes('submitFormButton-')) {
$recommendationElement.attr('required', '1');
} else {
$recommendationElement.removeAttr('required');
}
}
return true;
};
/**
* Internal callback called before form validation to ensure the
* proper "required" state of the comments field, depending on grid
* contents.
*
* @param {HTMLElement} submitButton The submit button.
* @param {Event} event The event that triggered the
* submit button.
* @return {boolean} true.
* @private
*/
$.pkp.controllers.form.reviewer.ReviewerReviewStep3FormHandler.
prototype.updateCommentsRequired_ = function(submitButton, event) {
var $formElement = this.getHtmlElement(),
$commentsElement = $formElement.find('[id^="comments"]');
if ($('#reviewAttachmentsGridContainer').
find('tbody.empty:visible').length == 1) {
// There's nothing in the files grid; make sure the
// comments field is required.
$commentsElement.attr('required', '1');
} else {
// There's something in the files grid; the comments
// field is optional.
$commentsElement.removeAttr('required');
}
return true;
};
/**
* Internal callback called before form validation to ensure the
* proper handling of the save vs. submit button, using a hidden
* field.
*
* @param {HTMLElement} submitButton The submit button.
* @param {Event} event The event that triggered the
* submit button.
* @return {boolean} true.
* @private
*/
$.pkp.controllers.form.reviewer.ReviewerReviewStep3FormHandler.
prototype.updateSaveOrSubmit_ = function(submitButton, event) {
var $formElement = this.getHtmlElement();
switch ($(submitButton).attr('name')) {
case 'submitFormButton':
$formElement.find('input[name="isSave"]').val('0');
break;
case 'saveFormButton':
$formElement.find('input[name="isSave"]').val('1');
break;
}
return true;
};
}(jQuery));