30 import(
'lib.pkp.classes.plugins.GenericPlugin');
38 protected $_xmlConversionStages = array(WORKFLOW_STAGE_ID_SUBMISSION,WORKFLOW_STAGE_ID_INTERNAL_REVIEW,WORKFLOW_STAGE_ID_EXTERNAL_REVIEW,WORKFLOW_STAGE_ID_EDITING,WORKFLOW_STAGE_ID_PRODUCTION);
65 return 'markupplugin';
74 return __(
'plugins.generic.markup.displayName');
83 return __(
'plugins.generic.markup.description');
90 function register($category, $path, $mainContextId =
null) {
92 if (parent::register($category, $path, $mainContextId)) {
94 $this->
import(
'classes.MarkupJobInfoDAO');
101 $templateMgr->addStyleSheet(
102 'markupBatchConvertStyle',
104 array(
'contexts' =>
'backend')
106 $templateMgr->addJavaScript(
107 'markupBatchConvertScript',
108 $this->
getJsUrl(
$request).
'/MarkupSubmissionsBatchConversionFormHandler.js',
109 array(
'contexts' =>
'backend')
117 HookRegistry::register(
'Templates::Management::Settings::website', array($this,
'callbackShowWebsiteSettingsTabs'));
118 HookRegistry::register(
'Templates::Management::Settings::website', array($this,
'callbackShowArticlesBatchConversionTabs'));
120 HookRegistry::register(
'submissionfiledaodelegate::_deleteobject', array($this,
'callbackSubmissionFileDeleted'));
131 $category = $args[0];
132 $plugins =& $args[1];
133 if ($category ==
'gateways') {
134 $this->
import(
'MarkupGatewayPlugin');
136 $plugins[$gatewayPlugin->getSeq()][$gatewayPlugin->getPluginPath()] = $gatewayPlugin;
139 $this->
import(
'MarkupBatchGatewayPlugin');
141 $plugins[$batchGatewayPlugin->getSeq()][$batchGatewayPlugin->getPluginPath()] = $batchGatewayPlugin;
160 return $baseDir .
'/' . parent::getPluginPath() .
'/js/';
193 $dispatcher =
$request->getDispatcher();
194 import(
'lib.pkp.classes.linkAction.request.RedirectAction');
201 null,
'management',
'settings',
'website',
202 array(
'uid' => uniqid()),
205 __(
'plugins.generic.markup.settings'),
214 null,
'management',
'settings',
'website',
215 array(
'uid' => uniqid()),
216 'markupBatchConversion'
218 __(
'plugins.generic.markup.batch'),
231 $this->
import(
'MarkupSettingsForm');
234 switch (
$request->getUserVar(
'verb')) {
241 $form->readInputData();
242 if ($form->validate()) {
245 $notificationManager->createTrivialNotification(
247 NOTIFICATION_TYPE_SUCCESS,
248 array(
'contents' => __(
'plugins.generic.markup.settings.saved'))
257 return parent::manage($args,
$request);
269 $dispatcher =
$request->getDispatcher();
270 $output .=
'<li><a name="markup" href="' . $dispatcher->url(
$request, ROUTE_PAGE,
null,
'markup',
'settings') .
'">' . __(
'plugins.generic.markup.settings') .
'</a></li>';
283 $dispatcher =
$request->getDispatcher();
284 $output .=
'<li><a name="markupBatchConversion" href="' . $dispatcher->url(
$request, ROUTE_PAGE,
null,
'markup',
'batch') .
'">' . __(
'plugins.generic.markup.batch') .
'</a></li>';
294 if ($page !==
'markup')
return;
299 if (
$op ==
'settings') {
300 define(
'HANDLER_CLASS',
'MarkupSettingsTabHandler');
301 $args[2] = $this->
getPluginPath() .
'/' .
'MarkupSettingsTabHandler.inc.php';
306 'generateGalleyFiles',
309 'fetchConversionJobStatus',
313 if (!in_array(
$op, $publicOps))
return;
318 $journal = $router->getContext(
$request);
321 define(
'HANDLER_CLASS',
'MarkupHandler');
324 $args[2] = $this->
getPluginPath() .
'/' .
'MarkupHandler.inc.php';
334 if ($page !==
'batch')
return;
337 $publicOps = array(
'filesToConvert',
'startConversion',
'fetchConversionStatus',
'cancelConversion');
338 if (!in_array(
$op, $publicOps))
return;
340 define(
'HANDLER_CLASS',
'MarkupBatchConversionHandler');
341 $args[2] = $this->
getPluginPath() .
'/' .
'MarkupBatchConversionHandler.inc.php';
352 $dispatcher = $router->getDispatcher();
354 $journalId = $journal->getId();
356 $templateMgr = $params[0];
357 $resourceName = $params[1];
358 if ($resourceName ==
'controllers/grid/gridRow.tpl') {
359 $row = $templateMgr->get_template_vars(
'row');
360 $data = $row->getData();
361 if (is_array($data) && (isset($data[
'submissionFile']))) {
362 $submissionFile = $data[
'submissionFile'];
363 $fileExtension = strtolower($submissionFile->getExtension());
366 $stage = $submissionFile->getFileStage();
367 $stageId = (int)
$request->getUserVar(
'stageId');
369 if (in_array($fileExtension, array(
'doc',
'docx',
'odt',
'pdf',
'xml'))) {
371 import(
'lib.pkp.classes.linkAction.request.AjaxModal');
374 $xmlConversionStages = $this->
getSetting($journalId,
'xmlConversionStages');
375 if (in_array($stageId, $xmlConversionStages) && ($fileExtension !=
'xml')) {
379 $dispatcher->url(
$request, ROUTE_PAGE,
null,
'markup',
'convertToXml',
null,
381 'submissionId' => $submissionFile->getSubmissionId(),
382 'fileId' => $submissionFile->getFileId(),
383 'stageId' => $stageId)
385 __(
'plugins.generic.markup.modal.xmlConversion')
387 __(
'plugins.generic.markup.links.convertToXml'),
392 if ($stageId == WORKFLOW_STAGE_ID_PRODUCTION) {
394 'generateGalleyFiles',
396 $dispatcher->url(
$request, ROUTE_PAGE,
null,
'markup',
'generateGalleyFiles',
null,
398 'submissionId' => $submissionFile->getSubmissionId(),
399 'fileId' => $submissionFile->getFileId(),
400 'stageId' => WORKFLOW_STAGE_ID_PRODUCTION)
402 __(
'plugins.generic.markup.modal.galleyProduction')
404 __(
'plugins.generic.markup.links.generateGalley'),
422 public function fetchGateway($fileId, $stageId, $target) {
427 $dispatcher = $router->getDispatcher();
431 $this->
import(
'classes.MarkupConversionHelper');
435 $url =
$request->url(
null,
'gateway',
'plugin',
436 array(
'MarkupGatewayPlugin',
'fileId', $fileId,
'userId', $user->getId(),
437 'stageId', $stageId,
'jobId', $jobId,
'target', $target,
'accessKey', $accessKey)
441 curl_setopt($ch, CURLOPT_URL, $url);
442 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
443 curl_setopt($ch, CURLOPT_TIMEOUT_MS, 1000);
459 $this->
import(
'classes.MarkupConversionHelper');
465 $authType = $this->
getSetting($journalId,
'authType');
469 'host' => $this->
getSetting($journalId,
'markupHostURL'),
470 'user' => isset($user) ? $user->getSetting(
'markupHostUser') :
null,
471 'password' => isset($user) ? $user->getSetting(
'markupHostPass') :
null,
476 'host' => $this->
getSetting($journalId,
'markupHostURL'),
477 'user' => $this->
getSetting($journalId,
'markupHostUser'),
478 'password' => $this->
getSetting($journalId,
'markupHostPass'),
500 $authType = $this->
getSetting($context->getId(),
'authType');
502 if ($authType ==
'user') {
503 $output =& $params[2];
504 $dispatcher =
$request->getDispatcher();
505 $url = $dispatcher->url(
$request, ROUTE_PAGE,
null,
'markup',
'profile');
507 $output .=
'<li><a name="otsServerCredentials" ' .
508 'href="'.$url.
'">' . __(
'plugins.generic.markup.tab.profile') .
'</a></li>';
521 if ((
count($params) == 3) && isset($params[1])
522 && is_array($params[1]) &&
count($params[1] == 2)) {
523 $submissionFileId = $params[1][0];
525 $markupJobInfoDao->deleteByFileId($submissionFileId);