[ Mini Kiebo ]
Server: Windows NT DESKTOP-5B8S0D4 6.2 build 9200 (Windows 8 Professional Edition) i586
Path:
D:
/
Backup
/
05122024
/
htdocs
/
jurnal-kesmas
/
v1
/
controllers
/
grid
/
issues
/
[
Home
]
File: BackIssueGridHandler.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'; } }