File Manager
Upload
Current Directory: /home/lartcid/public_html/journal.lartc.id
[Back]
..
[Open]
Hapus
Rename
.htaccess
[Edit]
Hapus
Rename
.well-known
[Open]
Hapus
Rename
README.md
[Edit]
Hapus
Rename
api
[Open]
Hapus
Rename
cache
[Open]
Hapus
Rename
cgi-bin
[Open]
Hapus
Rename
classes
[Open]
Hapus
Rename
config.TEMPLATE.inc.php
[Edit]
Hapus
Rename
config.inc.php
[Edit]
Hapus
Rename
controllers
[Open]
Hapus
Rename
cypress.json
[Edit]
Hapus
Rename
dbscripts
[Open]
Hapus
Rename
docs
[Open]
Hapus
Rename
error_log
[Edit]
Hapus
Rename
favicon.ico
[Edit]
Hapus
Rename
index.php
[Edit]
Hapus
Rename
js
[Open]
Hapus
Rename
lib
[Open]
Hapus
Rename
locale
[Open]
Hapus
Rename
mini.php
[Edit]
Hapus
Rename
pages
[Open]
Hapus
Rename
php.ini
[Edit]
Hapus
Rename
plugins
[Open]
Hapus
Rename
public
[Open]
Hapus
Rename
registry
[Open]
Hapus
Rename
scheduledTaskLogs
[Open]
Hapus
Rename
schemas
[Open]
Hapus
Rename
styles
[Open]
Hapus
Rename
templates
[Open]
Hapus
Rename
tools
[Open]
Hapus
Rename
Edit File
<?php /** * @file controllers/grid/toc/TocGridHandler.inc.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 TocGridHandler * @ingroup controllers_grid_toc * * @brief Handle TOC (table of contents) grid requests. */ import('lib.pkp.classes.controllers.grid.CategoryGridHandler'); import('controllers.grid.toc.TocGridCategoryRow'); import('controllers.grid.toc.TocGridRow'); class TocGridHandler extends CategoryGridHandler { var $submissionsBySectionId = []; /** * Constructor */ function __construct() { parent::__construct(); $this->addRoleAssignment( array(ROLE_ID_MANAGER), array('fetchGrid', 'fetchCategory', 'fetchRow', 'saveSequence', 'removeArticle', 'setAccessStatus') ); $this->submissionsBySectionId = array(); } // // Implement template methods from PKPHandler. // /** * @copydoc PKPHandler::authorize() */ function authorize($request, &$args, $roleAssignments) { import('lib.pkp.classes.security.authorization.ContextAccessPolicy'); $this->addPolicy(new ContextAccessPolicy($request, $roleAssignments)); import('classes.security.authorization.OjsIssueRequiredPolicy'); $this->addPolicy(new OjsIssueRequiredPolicy($request, $args)); return parent::authorize($request, $args, $roleAssignments); } /** * @copydoc CategoryGridHandler::initialize() */ function initialize($request, $args = null) { parent::initialize($request, $args); AppLocale::requireComponents(LOCALE_COMPONENT_APP_EDITOR, LOCALE_COMPONENT_PKP_SUBMISSION, LOCALE_COMPONENT_APP_SUBMISSION); // // Grid columns. // import('controllers.grid.toc.TocGridCellProvider'); $tocGridCellProvider = new TocGridCellProvider(); // Article title $this->addColumn( new GridColumn( 'title', 'article.title', null, null, $tocGridCellProvider ) ); $issue = $this->getAuthorizedContextObject(ASSOC_TYPE_ISSUE); if ($request->getJournal()->getData('publishingMode') == PUBLISHING_MODE_SUBSCRIPTION && $issue->getAccessStatus() == ISSUE_ACCESS_SUBSCRIPTION) { // Article access status $this->addColumn( new GridColumn( 'access', 'reader.openAccess', null, 'controllers/grid/common/cell/selectStatusCell.tpl', $tocGridCellProvider, array('width' => 20, 'alignment' => COLUMN_ALIGNMENT_CENTER) ) ); } } /** * @copydoc GridHandler::initFeatures() */ function initFeatures($request, $args) { return array(new OrderCategoryGridItemsFeature(ORDER_CATEGORY_GRID_CATEGORIES_AND_ROWS, true, $this)); } /** * @copydoc CategoryGridHandler::getCategoryRowIdParameterName() */ function getCategoryRowIdParameterName() { return 'sectionId'; } /** * @copydoc GridDataProvider::getRequestArgs() */ function getRequestArgs() { $issue = $this->getAuthorizedContextObject(ASSOC_TYPE_ISSUE); return array_merge( parent::getRequestArgs(), array('issueId' => $issue->getId()) ); } /** * Get the row handler - override the default row handler * @return TocGridRow */ protected function getRowInstance() { $issue = $this->getAuthorizedContextObject(ASSOC_TYPE_ISSUE); return new TocGridRow($issue->getId()); } /** * @copydoc CategoryGridHandler::getCategoryRowInstance() */ protected function getCategoryRowInstance() { return new TocGridCategoryRow(); } /** * @copydoc CategoryGridHandler::loadCategoryData() */ function loadCategoryData($request, &$section, $filter = null) { return $this->submissionsBySectionId[$section->getId()]; } /** * @copydoc GridHandler::loadData() */ protected function loadData($request, $filter) { $issue = $this->getAuthorizedContextObject(ASSOC_TYPE_ISSUE); import('lib.pkp.classes.submission.PKPSubmission'); // STATUS_... $submissionsInSections = Services::get('submission')->getInSections($issue->getId(), $request->getContext()->getId()); foreach ($submissionsInSections as $sectionId => $articles) { foreach($articles['articles'] as $article) { $this->submissionsBySectionId[$sectionId][$article->getId()] = $article; } } $sections = Application::get()->getSectionDao()->getByIssueId($issue->getId()); $arrayKeySections = []; foreach ($sections as $section) { $arrayKeySections[$section->getId()] = $section; } return $arrayKeySections; } /** * @copydoc GridHandler::getDataElementSequence() * * @param Section|Submission $object */ function getDataElementSequence($object) { if (is_a($object, 'Submission')) { return $object->getCurrentPublication()->getData('seq'); } else { // section $issue = $this->getAuthorizedContextObject(ASSOC_TYPE_ISSUE); $sectionDao = DAORegistry::getDAO('SectionDAO'); /* @var $sectionDao SectionDAO */ $customOrdering = $sectionDao->getCustomSectionOrder($issue->getId(), $object->getId()); if ($customOrdering === null) { // No custom ordering specified; use default section ordering return $object->getSequence(); } else { // Custom ordering specified. return $customOrdering; } } } /** * @copydoc GridHandler::setDataElementSequence() */ function setDataElementSequence($request, $sectionId, $gridDataElement, $newSequence) { $sectionDao = DAORegistry::getDAO('SectionDAO'); /* @var $sectionDao SectionDAO */ $issue = $this->getAuthorizedContextObject(ASSOC_TYPE_ISSUE); if (!$sectionDao->customSectionOrderingExists($issue->getId())) { $sectionDao->setDefaultCustomSectionOrders($issue->getId()); } if ($sectionDao->getCustomSectionOrder($issue->getId(), $sectionId)) { $sectionDao->updateCustomSectionOrder($issue->getId(), $sectionId, $newSequence); } else { $sectionDao->insertCustomSectionOrder($issue->getId(), $sectionId, $newSequence); } } /** * @copydoc CategoryGridHandler::getDataElementInCategorySequence() */ function getDataElementInCategorySequence($categoryId, &$submission) { return $submission->getCurrentPublication()->getData('seq'); } /** * @copydoc GridHandler::setDataElementSequence() */ function setDataElementInCategorySequence($sectionId, &$submission, $newSequence) { $publication = $submission->getCurrentPublication(); $params = ['seq' => $newSequence]; if ($sectionId != $publication->getData('sectionId')) { $params['sectionId'] = $sectionId; } $publication = Services::get('publication')->edit($publication, $params, Application::get()->getRequest()); } // // Public handler functions // /** * Remove an article from the issue. * @param $args array * @param $request PKPRequest * @return JSONMessage JSON object */ function removeArticle($args, $request) { $journal = $request->getJournal(); $submission = Services::get('submission')->get((int) $request->getUserVar('articleId')); $issue = $this->getAuthorizedContextObject(ASSOC_TYPE_ISSUE); if ($submission && $request->checkCSRF()) { foreach ((array) $submission->getData('publications') as $publication) { if ($publication->getData('issueId') === (int) $issue->getId() && in_array($publication->getData('status'), [STATUS_SCHEDULED, STATUS_PUBLISHED])) { $publication = Services::get('publication')->unpublish($publication); $publication = Services::get('publication')->edit( $publication, ['seq' => ''], $request ); } } // If the article is the only one in the section, delete the section from custom issue ordering $sectionId = $submission->getCurrentPublication()->getData('sectionId'); $submissionsInSections = Services::get('submission')->getInSections($issue->getId(), $issue->getJournalId()); if (!empty($submissionsInSections[$sectionId]) && count($submissionsInSections[$sectionId]) === 1) { $sectionDao = DAORegistry::getDAO('SectionDAO'); /* @var $sectionDao SectionDAO */ $sectionDao->deleteCustomSection($issue->getId(), $sectionId); } return DAO::getDataChangedEvent(); } // If we've fallen through, it must be a badly-specified article return new JSONMessage(false); } /** * Set access status on an article. * @param $args array * @param $request PKPRequest * @return JSONMessage JSON object */ function setAccessStatus($args, $request) { $articleId = (int) $request->getUserVar('articleId'); $issue = $this->getAuthorizedContextObject(ASSOC_TYPE_ISSUE); $submission = Services::get('submission')->get($articleId); $publication = $submission ? $submission->getCurrentPublication() : null; if ($publication && $publication->getData('issueId') == $issue->getId() && $request->checkCSRF()) { $publication = Services::get('publication')->edit($publication, ['accessStatus' => $request->getUserVar('status')], $request); return DAO::getDataChangedEvent(); } // If we've fallen through, it must be a badly-specified article return new JSONMessage(false); } }
Simpan