first commit
This commit is contained in:
@@ -0,0 +1,131 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file controllers/grid/issues/IssueGridHandler.php
|
||||
*
|
||||
* 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 BackIssueGridHandler
|
||||
*
|
||||
* @ingroup controllers_grid_issues
|
||||
*
|
||||
* @brief Handle issues grid requests.
|
||||
*/
|
||||
|
||||
namespace APP\controllers\grid\issues;
|
||||
|
||||
use APP\facades\Repo;
|
||||
use APP\issue\Collector;
|
||||
use PKP\controllers\grid\feature\OrderGridItemsFeature;
|
||||
use PKP\controllers\grid\GridColumn;
|
||||
use PKP\security\Role;
|
||||
|
||||
class BackIssueGridHandler extends IssueGridHandler
|
||||
{
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->addRoleAssignment(
|
||||
[Role::ROLE_ID_MANAGER, Role::ROLE_ID_SITE_ADMIN],
|
||||
['saveSequence']
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Implement template methods from PKPHandler
|
||||
//
|
||||
/**
|
||||
* @copydoc IssueGridHandler::initialize()
|
||||
*
|
||||
* @param null|mixed $args
|
||||
*/
|
||||
public function initialize($request, $args = null)
|
||||
{
|
||||
parent::initialize($request, $args);
|
||||
|
||||
// Basic grid configuration.
|
||||
$this->setTitle('editor.issues.backIssues');
|
||||
}
|
||||
|
||||
/**
|
||||
* Private function to add central columns to the grid.
|
||||
*
|
||||
* @param IssueGridCellProvider $issueGridCellProvider
|
||||
*/
|
||||
protected function _addCenterColumns($issueGridCellProvider)
|
||||
{
|
||||
// Published state
|
||||
$this->addColumn(
|
||||
new GridColumn(
|
||||
'published',
|
||||
'editor.issues.published',
|
||||
null,
|
||||
null,
|
||||
$issueGridCellProvider
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @copydoc GridHandler::setDataElementSequence()
|
||||
*/
|
||||
public function setDataElementSequence($request, $rowId, $gridDataElement, $newSequence)
|
||||
{
|
||||
Repo::issue()->dao->moveCustomIssueOrder($gridDataElement->getJournalId(), $gridDataElement->getId(), $newSequence);
|
||||
}
|
||||
|
||||
/**
|
||||
* @copydoc GridHandler::getDataElementSequence()
|
||||
*/
|
||||
public function getDataElementSequence($gridDataElement)
|
||||
{
|
||||
$customOrder = Repo::issue()->dao->getCustomIssueOrder($gridDataElement->getJournalId(), $gridDataElement->getId());
|
||||
if ($customOrder !== null) {
|
||||
return $customOrder;
|
||||
}
|
||||
|
||||
$currentIssue = Repo::issue()->getCurrent($gridDataElement->getJournalId());
|
||||
if ($currentIssue != null && $gridDataElement->getId() == $currentIssue->getId()) {
|
||||
return 0;
|
||||
}
|
||||
return $gridDataElement->getDatePublished();
|
||||
}
|
||||
|
||||
/**
|
||||
* @copydoc GridHandler::addFeatures()
|
||||
*/
|
||||
public function initFeatures($request, $args)
|
||||
{
|
||||
return [new OrderGridItemsFeature()];
|
||||
}
|
||||
|
||||
/**
|
||||
* @copydoc GridHandler::loadData()
|
||||
*/
|
||||
protected function loadData($request, $filter)
|
||||
{
|
||||
$journal = $request->getJournal();
|
||||
return Repo::issue()->getCollector()
|
||||
->filterByContextIds([$journal->getId()])
|
||||
->filterByPublished(true)
|
||||
->orderBy(Collector::ORDERBY_PUBLISHED_ISSUES)
|
||||
->getMany()
|
||||
->toArray();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the js handler for this component.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getJSHandler()
|
||||
{
|
||||
return '$.pkp.controllers.grid.issues.BackIssueGridHandler';
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user