first commit
This commit is contained in:
@@ -0,0 +1,164 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file plugins/generic/pdfJsViewer/PdfJsViewerPlugin.php
|
||||
*
|
||||
* Copyright (c) 2013-2020 Simon Fraser University
|
||||
* Copyright (c) 2003-2020 John Willinsky
|
||||
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
|
||||
*
|
||||
* @class PdfJsViewerPlugin
|
||||
*
|
||||
* @brief This plugin enables embedding of the pdf.js viewer for PDF display
|
||||
*/
|
||||
|
||||
namespace APP\plugins\generic\pdfJsViewer;
|
||||
|
||||
use APP\core\Application;
|
||||
use APP\template\TemplateManager;
|
||||
use Exception;
|
||||
use PKP\plugins\Hook;
|
||||
|
||||
class PdfJsViewerPlugin extends \PKP\plugins\GenericPlugin
|
||||
{
|
||||
/**
|
||||
* @copydoc Plugin::register()
|
||||
*
|
||||
* @param null|mixed $mainContextId
|
||||
*/
|
||||
public function register($category, $path, $mainContextId = null)
|
||||
{
|
||||
if (parent::register($category, $path, $mainContextId)) {
|
||||
if ($this->getEnabled($mainContextId)) {
|
||||
// For OPS
|
||||
Hook::add('PreprintHandler::view::galley', [$this, 'submissionCallback'], Hook::SEQUENCE_LAST);
|
||||
// For OJS
|
||||
Hook::add('ArticleHandler::view::galley', [$this, 'submissionCallback'], Hook::SEQUENCE_LAST);
|
||||
Hook::add('IssueHandler::view::galley', [$this, 'issueCallback'], Hook::SEQUENCE_LAST);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Install default settings on context creation.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getContextSpecificPluginSettingsFile()
|
||||
{
|
||||
return $this->getPluginPath() . '/settings.xml';
|
||||
}
|
||||
|
||||
/**
|
||||
* @copydoc Plugin::getDisplayName
|
||||
*/
|
||||
public function getDisplayName()
|
||||
{
|
||||
return __('plugins.generic.pdfJsViewer.name');
|
||||
}
|
||||
|
||||
/**
|
||||
* @copydoc Plugin::getDescription
|
||||
*/
|
||||
public function getDescription()
|
||||
{
|
||||
return __('plugins.generic.pdfJsViewer.description');
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback that renders the submission galley.
|
||||
*
|
||||
* @param string $hookName
|
||||
* @param array $args
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function submissionCallback($hookName, $args)
|
||||
{
|
||||
$request = & $args[0];
|
||||
$application = Application::get();
|
||||
switch ($application->getName()) {
|
||||
case 'ojs2':
|
||||
$issue = & $args[1];
|
||||
$galley = & $args[2];
|
||||
$submission = & $args[3];
|
||||
$submissionNoun = 'article';
|
||||
break;
|
||||
case 'ops':
|
||||
$galley = & $args[1];
|
||||
$submission = & $args[2];
|
||||
$submissionNoun = 'preprint';
|
||||
$issue = null;
|
||||
break;
|
||||
default: throw new Exception('Unknown application!');
|
||||
}
|
||||
|
||||
if (!$galley) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$submissionFile = $galley->getFile();
|
||||
if ($submissionFile->getData('mimetype') === 'application/pdf') {
|
||||
$galleyPublication = null;
|
||||
foreach ($submission->getData('publications') as $publication) {
|
||||
if ($publication->getId() === $galley->getData('publicationId')) {
|
||||
$galleyPublication = $publication;
|
||||
break;
|
||||
}
|
||||
}
|
||||
$templateMgr = TemplateManager::getManager($request);
|
||||
$templateMgr->assign([
|
||||
'displayTemplateResource' => $this->getTemplateResource('display.tpl'),
|
||||
'pluginUrl' => $request->getBaseUrl() . '/' . $this->getPluginPath(),
|
||||
'galleyFile' => $submissionFile,
|
||||
'issue' => $issue,
|
||||
'submission' => $submission,
|
||||
'submissionNoun' => $submissionNoun,
|
||||
'bestId' => $submission->getBestId(),
|
||||
'galley' => $galley,
|
||||
'currentVersionString' => $application->getCurrentVersion()->getVersionString(false),
|
||||
'isLatestPublication' => $submission->getData('currentPublicationId') === $galley->getData('publicationId'),
|
||||
'galleyPublication' => $galleyPublication,
|
||||
]);
|
||||
$templateMgr->display($this->getTemplateResource('submissionGalley.tpl'));
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback that renders the issue galley.
|
||||
*
|
||||
* @param string $hookName
|
||||
* @param array $args
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function issueCallback($hookName, $args)
|
||||
{
|
||||
$request = & $args[0];
|
||||
$issue = & $args[1];
|
||||
$galley = & $args[2];
|
||||
|
||||
$templateMgr = TemplateManager::getManager($request);
|
||||
if ($galley && $galley->getFileType() == 'application/pdf') {
|
||||
$application = Application::get();
|
||||
$templateMgr->assign([
|
||||
'displayTemplateResource' => $this->getTemplateResource('display.tpl'),
|
||||
'pluginUrl' => $request->getBaseUrl() . '/' . $this->getPluginPath(),
|
||||
'galleyFile' => $galley->getFile(),
|
||||
'issue' => $issue,
|
||||
'galley' => $galley,
|
||||
'currentVersionString' => $application->getCurrentVersion()->getVersionString(false),
|
||||
'isLatestPublication' => true,
|
||||
]);
|
||||
$templateMgr->display($this->getTemplateResource('issueGalley.tpl'));
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user