first commit
This commit is contained in:
@@ -0,0 +1,117 @@
|
||||
/**
|
||||
* @defgroup js_pages_workflow
|
||||
*/
|
||||
/**
|
||||
* @file js/pages/workflow/WorkflowHandler.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 WorkflowHandler
|
||||
* @ingroup js_pages_workflow
|
||||
*
|
||||
* @brief Base handler for the workflow pages.
|
||||
*
|
||||
*/
|
||||
(function($) {
|
||||
|
||||
/** @type {Object} */
|
||||
$.pkp.pages.workflow = $.pkp.pages.workflow || {};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*
|
||||
* @extends $.pkp.classes.Handler
|
||||
*
|
||||
* @param {jQueryObject} $workflowElement The HTML element encapsulating
|
||||
* the production page.
|
||||
* @param {Object} options Handler options.
|
||||
*/
|
||||
$.pkp.pages.workflow.WorkflowHandler =
|
||||
function($workflowElement, options) {
|
||||
|
||||
this.parent($workflowElement, options);
|
||||
|
||||
this.bind('stageParticipantsChanged', this.handleStageParticipantsChanged_);
|
||||
this.bind('dataChanged', this.dataChangedHandler_);
|
||||
};
|
||||
$.pkp.classes.Helper.inherits(
|
||||
$.pkp.pages.workflow.WorkflowHandler,
|
||||
$.pkp.classes.Handler);
|
||||
|
||||
|
||||
//
|
||||
// Private functions
|
||||
//
|
||||
/**
|
||||
* Potentially refresh workflow content on participant change.
|
||||
*
|
||||
* @param {jQueryObject} callingElement The calling element.
|
||||
* that triggered the event.
|
||||
* @param {Event} event The event.
|
||||
* @private
|
||||
*/
|
||||
$.pkp.pages.workflow.WorkflowHandler.prototype.handleStageParticipantsChanged_ =
|
||||
function(callingElement, event) {
|
||||
// Find and reload editor decision action and progress bar.
|
||||
var $elements, $stageTabs, matches, cssClass, stageId, sourceUrl,
|
||||
$editorDecisionActions = this.getHtmlElement()
|
||||
.find('.editorDecisionActions'),
|
||||
$progressBar = this.getHtmlElement().find('#submissionProgressBarDiv'),
|
||||
$stageTabContainer = this.getHtmlElement().find('#stageTabs');
|
||||
|
||||
$stageTabs = $stageTabContainer.find('li');
|
||||
$stageTabs.each(function(index) {
|
||||
if ($(this).hasClass('ui-state-active')) {
|
||||
cssClass = $(this).find('a').attr('class');
|
||||
matches = cssClass.match(/stageId(\d)/);
|
||||
if (matches) {
|
||||
stageId = matches[1];
|
||||
var handler = $.pkp.classes.Handler.getHandler($progressBar);
|
||||
sourceUrl = handler.getSourceUrl();
|
||||
handler.setSourceUrl(sourceUrl.replace(/stageId=\d/, 'stageId=' +
|
||||
stageId));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
$elements = $editorDecisionActions.add($progressBar);
|
||||
|
||||
$elements.each(function() {
|
||||
var handler = $.pkp.classes.Handler.getHandler($(this));
|
||||
handler.reload();
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Potentially refresh contained grid.
|
||||
*
|
||||
* @param {jQueryObject} callingElement The calling element.
|
||||
* that triggered the event.
|
||||
* @param {Event} event The event.
|
||||
* @param {Object} eventData Event data.
|
||||
* @private
|
||||
*/
|
||||
$.pkp.pages.workflow.WorkflowHandler.prototype.dataChangedHandler_ =
|
||||
function(callingElement, event, eventData) {
|
||||
|
||||
var $childAnchors = $(event.target, this.getHtmlElement()).children('a'),
|
||||
$formatsGrid;
|
||||
|
||||
if ($childAnchors.length &&
|
||||
$childAnchors.attr('id').match(/submissionEntry/)) {
|
||||
// Refresh the format grid on this page, if any.
|
||||
$formatsGrid = $('[id^="formatsGridContainer"]',
|
||||
this.getHtmlElement()).children('div');
|
||||
$formatsGrid.trigger('dataChanged', [eventData]);
|
||||
$formatsGrid.trigger('notifyUser', [$formatsGrid]);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}(jQuery));
|
||||
Reference in New Issue
Block a user