Open Journal Systems  3.3.0
TexturePlugin.inc.php
1 <?php
2 
17 import('lib.pkp.classes.plugins.GenericPlugin');
18 
26  function getDisplayName() {
27  return __('plugins.generic.texture.displayName');
28  }
29 
33  function getDescription() {
34  return __('plugins.generic.texture.description');
35  }
36 
40  function register($category, $path, $mainContextId = null) {
41  if (parent::register($category, $path, $mainContextId)) {
42  if ($this->getEnabled()) {
43  // Register callbacks.
44  HookRegistry::register('LoadHandler', array($this, 'callbackLoadHandler'));
45  HookRegistry::register('TemplateManager::fetch', array($this, 'templateFetchCallback'));
46 
48  }
49  return true;
50  }
51  return false;
52  }
53 
59  function getTextureUrl($request) {
60  return $this->getPluginUrl($request) . '/texture';
61  }
62 
68  function getPluginUrl($request) {
69  return $request->getBaseUrl() . '/' . $this->getPluginPath();
70  }
71 
75  public function callbackLoadHandler($hookName, $args) {
76  $page = $args[0];
77  $op = $args[1];
78 
79  switch ("$page/$op") {
80  case 'texture/createGalley':
81  case 'texture/editor':
82  case 'texture/json':
83  case 'texture/save':
84  case 'texture/createGalleyForm':
85  case 'texture/media':
86  define('HANDLER_CLASS', 'TextureHandler');
87  define('TEXTURE_PLUGIN_NAME', $this->getName());
88  $args[2] = $this->getPluginPath() . '/' . 'TextureHandler.inc.php';
89  break;
90  }
91 
92  return false;
93  }
94 
100  public function templateFetchCallback($hookName, $params) {
101  $request = $this->getRequest();
102  $router = $request->getRouter();
103  $dispatcher = $router->getDispatcher();
104 
105  $templateMgr = $params[0];
106  $resourceName = $params[1];
107  if ($resourceName == 'controllers/grid/gridRow.tpl') {
108  $row = $templateMgr->getTemplateVars('row');
109  $data = $row->getData();
110  if (is_array($data) && (isset($data['submissionFile']))) {
111  $submissionFile = $data['submissionFile'];
112  $fileExtension = strtolower($submissionFile->getExtension());
113 
114  // get stage ID
115  $stageId = (int)$request->getUserVar('stageId');
116  $fileStage = SUBMISSION_FILE_PRODUCTION_READY;
117 
118  if (strtolower($fileExtension) == 'xml') {
119  import('lib.pkp.classes.linkAction.request.OpenWindowAction');
120  $this->_editWithTextureAction($row, $dispatcher, $request, $submissionFile, $stageId);
121  $this->_createGalleyAction($row, $dispatcher, $request, $submissionFile, $stageId, $fileStage);
122  }
123  }
124  }
125  }
126 
135  private function _editWithTextureAction($row, Dispatcher $dispatcher, PKPRequest $request, $submissionFile, int $stageId): void {
136  $row->addAction(new LinkAction(
137  'texture_editor',
138  new OpenWindowAction(
139  $dispatcher->url($request, ROUTE_PAGE, null, 'texture', 'editor', null,
140  array(
141  'submissionId' => $submissionFile->getSubmissionId(),
142  'fileId' => $submissionFile->getFileId(),
143  'stageId' => $stageId
144  )
145  )
146  ),
147  __('plugins.generic.texture.links.editWithTexture'),
148  null
149  ));
150  }
151 
160  private function _createGalleyAction($row, Dispatcher $dispatcher, PKPRequest $request, $submissionFile, int $stageId, int $fileStage): void {
161 
162  $actionArgs = array(
163  'submissionId' => $submissionFile->getSubmissionId(),
164  'stageId' => $stageId,
165  'fileStage' => $fileStage,
166  'fileId' => $submissionFile->getFileId()
167  );
168  $row->addAction(new LinkAction(
169  'createGalleyForm',
170  new AjaxModal(
171  $dispatcher->url(
172  $request, ROUTE_PAGE, null,
173  'texture',
174  'createGalleyForm', null,
175  $actionArgs
176  ),
177  __('submission.layout.newGalley')
178  ),
179  __('plugins.generic.texture.links.createGalley'),
180  null
181  ));
182 
183 
184  }
185 }
TexturePlugin\templateFetchCallback
templateFetchCallback($hookName, $params)
Definition: TexturePlugin.inc.php:100
$op
$op
Definition: lib/pkp/pages/help/index.php:18
OpenWindowAction
This action request redirects to another page.
Definition: OpenWindowAction.inc.php:18
TexturePlugin
Definition: TexturePlugin.inc.php:22
Plugin\getRequest
& getRequest()
Definition: Plugin.inc.php:828
TexturePlugin\callbackLoadHandler
callbackLoadHandler($hookName, $args)
Definition: TexturePlugin.inc.php:75
PKPRequest
Class providing operations associated with HTTP requests.
Definition: PKPRequest.inc.php:17
Dispatcher\url
url($request, $shortcut, $newContext=null, $handler=null, $op=null, $path=null, $params=null, $anchor=null, $escape=false)
Definition: Dispatcher.inc.php:174
Plugin\getEnabled
getEnabled()
Definition: Plugin.inc.php:868
TexturePlugin\getDescription
getDescription()
Definition: TexturePlugin.inc.php:33
AjaxModal
A modal that retrieves its content from via AJAX.
Definition: AjaxModal.inc.php:18
LinkAction
Base class defining an action that can be performed by the user in the user interface.
Definition: LinkAction.inc.php:22
LazyLoadPlugin\getName
getName()
Definition: LazyLoadPlugin.inc.php:40
TexturePlugin\getTextureUrl
getTextureUrl($request)
Definition: TexturePlugin.inc.php:59
Plugin\_registerTemplateResource
_registerTemplateResource($inCore=false)
Definition: Plugin.inc.php:376
Plugin\getPluginPath
getPluginPath()
Definition: Plugin.inc.php:330
Plugin\$request
$request
Definition: Plugin.inc.php:68
HookRegistry\register
static register($hookName, $callback, $hookSequence=HOOK_SEQUENCE_NORMAL)
Definition: HookRegistry.inc.php:70
TexturePlugin\getPluginUrl
getPluginUrl($request)
Definition: TexturePlugin.inc.php:68
TexturePlugin\getDisplayName
getDisplayName()
Definition: TexturePlugin.inc.php:26
Dispatcher
Class dispatching HTTP requests to handlers.
Definition: Dispatcher.inc.php:17
GenericPlugin
Abstract class for generic plugins.
Definition: GenericPlugin.inc.php:18