Open Journal Systems  3.3.0
StaticPagesPlugin.inc.php
1 <?php
2 
15 import('lib.pkp.classes.plugins.GenericPlugin');
16 
21  function getDisplayName() {
22  return __('plugins.generic.staticPages.displayName');
23  }
24 
28  function getDescription() {
29  $description = __('plugins.generic.staticPages.description');
30  if (!$this->isTinyMCEInstalled())
31  $description .= __('plugins.generic.staticPages.requirement.tinymce');
32  return $description;
33  }
34 
39  function isTinyMCEInstalled() {
41  $products = $application->getEnabledProducts('plugins.generic');
42  return (isset($products['tinymce']));
43  }
44 
48  function register($category, $path, $mainContextId = null) {
49  if (parent::register($category, $path, $mainContextId)) {
50  if ($this->getEnabled($mainContextId)) {
51  // Register the static pages DAO.
52  import('plugins.generic.staticPages.classes.StaticPagesDAO');
53  $staticPagesDao = new StaticPagesDAO();
54  DAORegistry::registerDAO('StaticPagesDAO', $staticPagesDao);
55 
56  HookRegistry::register('Template::Settings::website', array($this, 'callbackShowWebsiteSettingsTabs'));
57 
58  // Intercept the LoadHandler hook to present
59  // static pages when requested.
60  HookRegistry::register('LoadHandler', array($this, 'callbackHandleContent'));
61 
62  // Register the components this plugin implements to
63  // permit administration of static pages.
64  HookRegistry::register('LoadComponentHandler', array($this, 'setupGridHandler'));
65  }
66  return true;
67  }
68  return false;
69  }
70 
77  function callbackShowWebsiteSettingsTabs($hookName, $args) {
78  $templateMgr = $args[1];
79  $output =& $args[2];
80  $request =& Registry::get('request');
81  $dispatcher = $request->getDispatcher();
82 
83  $output .= $templateMgr->fetch($this->getTemplateResource('staticPagesTab.tpl'));
84 
85  // Permit other plugins to continue interacting with this hook
86  return false;
87  }
88 
95  function callbackHandleContent($hookName, $args) {
96  $request = Application::get()->getRequest();
97  $templateMgr = TemplateManager::getManager($request);
98 
99  $page =& $args[0];
100  $op =& $args[1];
101 
102  $staticPagesDao = DAORegistry::getDAO('StaticPagesDAO');
103  if ($page == 'pages' && $op == 'preview') {
104  // This is a preview request; mock up a static page to display.
105  // The handler class ensures that only managers and administrators
106  // can do this.
107  $staticPage = $staticPagesDao->newDataObject();
108  $staticPage->setContent((array) $request->getUserVar('content'), null);
109  $staticPage->setTitle((array) $request->getUserVar('title'), null);
110  } else {
111  // Construct a path to look for
112  $path = $page;
113  if ($op !== 'index') $path .= "/$op";
114  if ($ops = $request->getRequestedArgs()) $path .= '/' . implode('/', $ops);
115 
116  // Look for a static page with the given path
117  $context = $request->getContext();
118  $staticPage = $staticPagesDao->getByPath(
119  $context?$context->getId():CONTEXT_ID_NONE,
120  $path
121  );
122  }
123 
124  // Check if this is a request for a static page or preview.
125  if ($staticPage) {
126  // Trick the handler into dealing with it normally
127  $page = 'pages';
128  $op = 'view';
129 
130  // It is -- attach the static pages handler.
131  define('HANDLER_CLASS', 'StaticPagesHandler');
132  $this->import('StaticPagesHandler');
133 
134  // Allow the static pages page handler to get the plugin object
136  StaticPagesHandler::setPage($staticPage);
137  return true;
138  }
139  return false;
140  }
141 
147  function setupGridHandler($hookName, $params) {
148  $component =& $params[0];
149  if ($component == 'plugins.generic.staticPages.controllers.grid.StaticPageGridHandler') {
150  // Allow the static page grid handler to get the plugin object
151  import($component);
153  return true;
154  }
155  return false;
156  }
157 
161  function getActions($request, $actionArgs) {
162  $dispatcher = $request->getDispatcher();
163  import('lib.pkp.classes.linkAction.request.RedirectAction');
164  return array_merge(
165  $this->getEnabled()?array(
166  new LinkAction(
167  'settings',
168  new RedirectAction($dispatcher->url(
169  $request, ROUTE_PAGE,
170  null, 'management', 'settings', 'website',
171  array('uid' => uniqid()), // Force reload
172  'staticPages' // Anchor for tab
173  )),
174  __('plugins.generic.staticPages.editAddContent'),
175  null
176  ),
177  ):array(),
178  parent::getActions($request, $actionArgs)
179  );
180  }
181 
186  function getInstallSchemaFile() {
187  return $this->getPluginPath() . '/schema.xml';
188  }
189 
194  return $request->getBaseUrl() . '/' . $this->getPluginPath() . '/js';
195  }
196 }
StaticPagesPlugin\getDescription
getDescription()
Definition: StaticPagesPlugin.inc.php:28
StaticPagesPlugin\isTinyMCEInstalled
isTinyMCEInstalled()
Definition: StaticPagesPlugin.inc.php:39
$op
$op
Definition: lib/pkp/pages/help/index.php:18
StaticPagesPlugin
Definition: StaticPagesPlugin.inc.php:17
StaticPagesDAO
Definition: StaticPagesDAO.inc.php:18
$application
$application
Definition: index.php:65
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
StaticPagesPlugin\callbackHandleContent
callbackHandleContent($hookName, $args)
Definition: StaticPagesPlugin.inc.php:95
StaticPagesPlugin\callbackShowWebsiteSettingsTabs
callbackShowWebsiteSettingsTabs($hookName, $args)
Definition: StaticPagesPlugin.inc.php:77
StaticPagesPlugin\getDisplayName
getDisplayName()
Definition: StaticPagesPlugin.inc.php:21
StaticPagesPlugin\getInstallSchemaFile
getInstallSchemaFile()
Definition: StaticPagesPlugin.inc.php:186
StaticPageGridHandler\setPlugin
static setPlugin($plugin)
Definition: StaticPageGridHandler.inc.php:31
Plugin\getEnabled
getEnabled()
Definition: Plugin.inc.php:868
Registry\get
static & get($key, $createIfEmpty=false, $createWithDefault=null)
Definition: Registry.inc.php:35
DAORegistry\registerDAO
static registerDAO($name, $dao)
Definition: DAORegistry.inc.php:40
LinkAction
Base class defining an action that can be performed by the user in the user interface.
Definition: LinkAction.inc.php:22
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
RedirectAction
This action request redirects to another page.
Definition: RedirectAction.inc.php:18
StaticPagesPlugin\setupGridHandler
setupGridHandler($hookName, $params)
Definition: StaticPagesPlugin.inc.php:147
Plugin\getTemplateResource
getTemplateResource($template=null, $inCore=false)
Definition: Plugin.inc.php:349
Plugin\getPluginPath
getPluginPath()
Definition: Plugin.inc.php:330
StaticPagesHandler\setPlugin
static setPlugin($plugin)
Definition: StaticPagesHandler.inc.php:35
Plugin\$request
$request
Definition: Plugin.inc.php:68
HookRegistry\register
static register($hookName, $callback, $hookSequence=HOOK_SEQUENCE_NORMAL)
Definition: HookRegistry.inc.php:70
StaticPagesHandler\setPage
static setPage($staticPage)
Definition: StaticPagesHandler.inc.php:43
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235
GenericPlugin
Abstract class for generic plugins.
Definition: GenericPlugin.inc.php:18
StaticPagesPlugin\getJavaScriptURL
getJavaScriptURL($request)
Definition: StaticPagesPlugin.inc.php:193
StaticPagesPlugin\getActions
getActions($request, $actionArgs)
Definition: StaticPagesPlugin.inc.php:161