Skip to content

Commit

Permalink
pkp/pkp-lib#2163 Keep future and back issue grids in sync when issues…
Browse files Browse the repository at this point in the history
… are published or unpublished
  • Loading branch information
NateWr committed Jan 18, 2017
1 parent 7833945 commit 4fa2d05
Show file tree
Hide file tree
Showing 6 changed files with 123 additions and 4 deletions.
9 changes: 5 additions & 4 deletions classes/controllers/grid/issues/IssueGridHandler.inc.php
Original file line number Diff line number Diff line change
Expand Up @@ -482,7 +482,9 @@ function publishIssue($args, $request) {
)
);

return DAO::getDataChangedEvent();
$json = DAO::getDataChangedEvent();
$json->setGlobalEvent('issuePublished', array('id' => $issue->getId()));
return $json;
}

/**
Expand Down Expand Up @@ -512,9 +514,8 @@ function unpublishIssue($args, $request) {
$articleTombstoneManager->insertArticleTombstone($article, $journal);
}

$dispatcher = $request->getDispatcher();
$json = new JSONMessage();
$json->setEvent('containerReloadRequested', array('tabsUrl' => $dispatcher->url($request, ROUTE_PAGE, null, 'manageIssues', 'index')));
$json = DAO::getDataChangedEvent();
$json->setGlobalEvent('issueUnpublished', array('id' => $issue->getId()));
return $json;
}

Expand Down
8 changes: 8 additions & 0 deletions controllers/grid/issues/BackIssueGridHandler.inc.php
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,14 @@ protected function loadData($request, $filter) {
$issueDao = DAORegistry::getDAO('IssueDAO');
return $issueDao->getPublishedIssues($journal->getId());
}

/**
* Get the js handler for this component.
* @return string
*/
public function getJSHandler() {
return '$.pkp.controllers.grid.issues.BackIssueGridHandler';
}
}

?>
8 changes: 8 additions & 0 deletions controllers/grid/issues/FutureIssueGridHandler.inc.php
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,14 @@ protected function loadData($request, $filter) {
$issueDao = DAORegistry::getDAO('IssueDAO');
return $issueDao->getUnpublishedIssues($journal->getId());
}

/**
* Get the js handler for this component.
* @return string
*/
public function getJSHandler() {
return '$.pkp.controllers.grid.issues.FutureIssueGridHandler';
}
}

?>
49 changes: 49 additions & 0 deletions js/controllers/grid/issues/BackIssueGridHandler.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
/**
* @defgroup js_controllers_grid
*/
/**
* @file js/controllers/grid/issues/BackIssueGridHandler.js
*
* Copyright (c) 2014-2016 Simon Fraser University Library
* Copyright (c) 2000-2016 John Willinsky
* Distributed under the GNU GPL v2. For full terms see the file docs/COPYING.
*
* @class BackIssueGridHandler
* @ingroup js_controllers_grid
*
* @brief A subclass of the GridHandler for the grid displaying back issues.
* It handles communication between the future and back issue grids, so that
* updates to published issues are synchronized.
*/
(function($) {

/** @type {Object} */
$.pkp.controllers.grid.issues = $.pkp.controllers.grid.issues || {};

/** @type {Object} */
$.pkp.controllers.grid.issues.BackIssueGridHandler =
$.pkp.controllers.grid.issues.BackIssueGridHandler || {};


/**
* @constructor
*
* @extends $.pkp.controllers.grid.GridHandler
*
* @param {jQueryObject} $grid The grid this handler is
* attached to.
* @param {{features}} options Grid handler configuration.
*/
$.pkp.controllers.grid.issues.BackIssueGridHandler =
function($grid, options) {
this.parent($grid, options);

this.bind('issuePublished', function() { this.refreshGridHandler(); });
};
$.pkp.classes.Helper.inherits(
$.pkp.controllers.grid.issues.BackIssueGridHandler,
$.pkp.controllers.grid.GridHandler);


/** @param {jQuery} $ jQuery closure. */
}(jQuery));
51 changes: 51 additions & 0 deletions js/controllers/grid/issues/FutureIssueGridHandler.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
/**
* @defgroup js_controllers_grid
*/
/**
* @file js/controllers/grid/issues/FutureIssueGridHandler.js
*
* Copyright (c) 2014-2016 Simon Fraser University Library
* Copyright (c) 2000-2016 John Willinsky
* Distributed under the GNU GPL v2. For full terms see the file docs/COPYING.
*
* @class FutureIssueGridHandler
* @ingroup js_controllers_grid
*
* @brief A subclass of the GridHandler for the grid displaying future issues.
* It handles communication between the future and back issue grids, so that
* updates to published issues are synchronized.
*/
(function($) {

/** @type {Object} */
$.pkp.controllers.grid.issues = $.pkp.controllers.grid.issues || {};

/** @type {Object} */
$.pkp.controllers.grid.issues.FutureIssueGridHandler =
$.pkp.controllers.grid.issues.FutureIssueGridHandler || {};


/**
* @constructor
*
* @extends $.pkp.controllers.grid.GridHandler
*
* @param {jQueryObject} $grid The grid this handler is
* attached to.
* @param {{features}} options Grid handler configuration.
*/
$.pkp.controllers.grid.issues.FutureIssueGridHandler =
function($grid, options) {
this.parent($grid, options);

this.bind('issueUnpublished', function() { this.refreshGridHandler(); });
};
$.pkp.classes.Helper.inherits(
$.pkp.controllers.grid.issues.FutureIssueGridHandler,
$.pkp.controllers.grid.GridHandler);




/** @param {jQuery} $ jQuery closure. */
}(jQuery));
2 changes: 2 additions & 0 deletions registry/minifiedScripts.txt
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,8 @@ lib/pkp/js/controllers/grid/users/stageParticipant/form/AddParticipantFormHandle
lib/pkp/js/pages/reviewer/ReviewerTabHandler.js
lib/pkp/js/pages/authorDashboard/SubmissionEmailHandler.js
js/controllers/grid/articleGalleys/ArticleGalleyGridHandler.js
js/controllers/grid/issues/BackIssueGridHandler.js
js/controllers/grid/issues/FutureIssueGridHandler.js
js/controllers/tab/issueEntry/IssueEntryTabHandler.js
js/controllers/tab/issueEntry/form/IssueEntryPublicationMetadataFormHandler.js
js/pages/search/SearchFormHandler.js
Expand Down

0 comments on commit 4fa2d05

Please sign in to comment.