132 lines
3.3 KiB
PHP
132 lines
3.3 KiB
PHP
<?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';
|
|
}
|
|
}
|