Open Journal Systems  3.3.0
PdfJsViewerPlugin.inc.php
1 <?php
2 
15 import('lib.pkp.classes.plugins.GenericPlugin');
16 
21  function register($category, $path, $mainContextId = null) {
22  if (parent::register($category, $path, $mainContextId)) {
23  if ($this->getEnabled($mainContextId)) {
24  // For OPS
25  HookRegistry::register('PreprintHandler::view::galley', array($this, 'submissionCallback'), HOOK_SEQUENCE_LAST);
26  // For OJS
27  HookRegistry::register('ArticleHandler::view::galley', array($this, 'submissionCallback'), HOOK_SEQUENCE_LAST);
28  HookRegistry::register('IssueHandler::view::galley', array($this, 'issueCallback'), HOOK_SEQUENCE_LAST);
29  AppLocale::requireComponents(LOCALE_COMPONENT_APP_COMMON);
30  }
31  return true;
32  }
33  return false;
34  }
35 
41  return $this->getPluginPath() . '/settings.xml';
42  }
43 
47  function getDisplayName() {
48  return __('plugins.generic.pdfJsViewer.name');
49  }
50 
54  function getDescription() {
55  return __('plugins.generic.pdfJsViewer.description');
56  }
57 
64  function submissionCallback($hookName, $args) {
65  $request =& $args[0];
67  switch ($application->getName()) {
68  case 'ojs2':
69  $issue =& $args[1];
70  $galley =& $args[2];
71  $submission =& $args[3];
72  $submissionNoun = 'article';
73  break;
74  case 'ops':
75  $galley =& $args[1];
76  $submission =& $args[2];
77  $submissionNoun = 'preprint';
78  $issue = null;
79  break;
80  default: throw new Exception('Unknown application!');
81  }
82 
83  if ($galley && $galley->getFileType() == 'application/pdf') {
84  $galleyPublication = null;
85  foreach ($submission->getData('publications') as $publication) {
86  if ($publication->getId() === $galley->getData('publicationId')) {
87  $galleyPublication = $publication;
88  break;
89  }
90  }
91  $templateMgr = TemplateManager::getManager($request);
92  $templateMgr->assign(array(
93  'displayTemplateResource' => $this->getTemplateResource('display.tpl'),
94  'pluginUrl' => $request->getBaseUrl() . '/' . $this->getPluginPath(),
95  'galleyFile' => $galley->getFile(),
96  'issue' => $issue,
97  'submission' => $submission,
98  'submissionNoun' => $submissionNoun,
99  'bestId' => $submission->getBestId(),
100  'galley' => $galley,
101  'jQueryUrl' => $this->_getJQueryUrl($request),
102  'currentVersionString' => $application->getCurrentVersion()->getVersionString(false),
103  'isLatestPublication' => $submission->getData('currentPublicationId') === $galley->getData('publicationId'),
104  'galleyPublication' => $galleyPublication,
105  ));
106  $templateMgr->display($this->getTemplateResource('submissionGalley.tpl'));
107  return true;
108  }
109 
110  return false;
111  }
112 
119  function issueCallback($hookName, $args) {
120  $request =& $args[0];
121  $issue =& $args[1];
122  $galley =& $args[2];
123 
124  $templateMgr = TemplateManager::getManager($request);
125  if ($galley && $galley->getFileType() == 'application/pdf') {
127  $templateMgr->assign(array(
128  'displayTemplateResource' => $this->getTemplateResource('display.tpl'),
129  'pluginUrl' => $request->getBaseUrl() . '/' . $this->getPluginPath(),
130  'galleyFile' => $galley->getFile(),
131  'issue' => $issue,
132  'galley' => $galley,
133  'jQueryUrl' => $this->_getJQueryUrl($request),
134  'currentVersionString' => $application->getCurrentVersion()->getVersionString(false),
135  'isLatestPublication' => true,
136  ));
137  $templateMgr->display($this->getTemplateResource('issueGalley.tpl'));
138  return true;
139  }
140 
141  return false;
142  }
143 
149  private function _getJQueryUrl($request) {
150  $min = Config::getVar('general', 'enable_minified') ? '.min' : '';
151  if (Config::getVar('general', 'enable_cdn')) {
152  return '//ajax.googleapis.com/ajax/libs/jquery/' . CDN_JQUERY_VERSION . '/jquery' . $min . '.js';
153  } else {
154  return $request->getBaseUrl() . '/lib/pkp/lib/vendor/components/jquery/jquery' . $min . '.js';
155  }
156  }
157 }
158 
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
PdfJsViewerPlugin\getDisplayName
getDisplayName()
Definition: PdfJsViewerPlugin.inc.php:47
$application
$application
Definition: index.php:65
Plugin\getEnabled
getEnabled()
Definition: Plugin.inc.php:868
Config\getVar
static getVar($section, $key, $default=null)
Definition: Config.inc.php:35
PdfJsViewerPlugin\submissionCallback
submissionCallback($hookName, $args)
Definition: PdfJsViewerPlugin.inc.php:64
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
Plugin\getTemplateResource
getTemplateResource($template=null, $inCore=false)
Definition: Plugin.inc.php:349
Plugin\getPluginPath
getPluginPath()
Definition: Plugin.inc.php:330
PdfJsViewerPlugin
This plugin enables embedding of the pdf.js viewer for PDF display.
Definition: PdfJsViewerPlugin.inc.php:17
PdfJsViewerPlugin\getContextSpecificPluginSettingsFile
getContextSpecificPluginSettingsFile()
Definition: PdfJsViewerPlugin.inc.php:40
Plugin\$request
$request
Definition: Plugin.inc.php:68
PdfJsViewerPlugin\issueCallback
issueCallback($hookName, $args)
Definition: PdfJsViewerPlugin.inc.php:119
HookRegistry\register
static register($hookName, $callback, $hookSequence=HOOK_SEQUENCE_NORMAL)
Definition: HookRegistry.inc.php:70
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235
GenericPlugin
Abstract class for generic plugins.
Definition: GenericPlugin.inc.php:18
PdfJsViewerPlugin\getDescription
getDescription()
Definition: PdfJsViewerPlugin.inc.php:54