[ Mini Kiebo ]
Server: Windows NT DESKTOP-5B8S0D4 6.2 build 9200 (Windows 8 Professional Edition) i586
Path:
D:
/
Backup
/
05122024
/
htdocs
/
jurnal-kesmas
/
baru
/
plugins
/
generic
/
staticPages
/
[
Home
]
File: StaticPagesPlugin.php
<?php /** * @file StaticPagesPlugin.php * * Copyright (c) 2014-2020 Simon Fraser University * Copyright (c) 2003-2020 John Willinsky * Distributed under the GNU GPL v3. For full terms see the file docs/COPYING. * * @package plugins.generic.staticPages * * @class StaticPagesPlugin * * @brief Static pages plugin main class */ namespace APP\plugins\generic\staticPages; use APP\core\Application; use APP\plugins\generic\staticPages\classes\StaticPagesDAO; use APP\plugins\generic\staticPages\controllers\grid\StaticPageGridHandler; use APP\template\TemplateManager; use PKP\core\Registry; use PKP\db\DAORegistry; use PKP\linkAction\LinkAction; use PKP\linkAction\request\RedirectAction; use PKP\plugins\GenericPlugin; use PKP\plugins\Hook; class StaticPagesPlugin extends GenericPlugin { /** * @copydoc Plugin::getDisplayName() */ public function getDisplayName() { return __('plugins.generic.staticPages.displayName'); } /** * @copydoc Plugin::getDescription() */ public function getDescription() { $description = __('plugins.generic.staticPages.description'); if (!$this->isTinyMCEInstalled()) { $description .= __('plugins.generic.staticPages.requirement.tinymce'); } return $description; } /** * Check whether or not the TinyMCE plugin is installed. * * @return bool True iff TinyMCE is installed. */ public function isTinyMCEInstalled() { $application = Application::get(); $products = $application->getEnabledProducts('plugins.generic'); return (isset($products['tinymce'])); } /** * @copydoc Plugin::register() * * @param null|mixed $mainContextId */ public function register($category, $path, $mainContextId = null) { if (parent::register($category, $path, $mainContextId)) { if ($this->getEnabled($mainContextId)) { // Register the static pages DAO. $staticPagesDao = new StaticPagesDAO(); DAORegistry::registerDAO('StaticPagesDAO', $staticPagesDao); Hook::add('Template::Settings::website', [$this, 'callbackShowWebsiteSettingsTabs']); // Intercept the LoadHandler hook to present // static pages when requested. Hook::add('LoadHandler', [$this, 'callbackHandleContent']); // Register the components this plugin implements to // permit administration of static pages. Hook::add('LoadComponentHandler', [$this, 'setupGridHandler']); } return true; } return false; } /** * Extend the website settings tabs to include static pages * * @param string $hookName The name of the invoked hook * @param array $args Hook parameters * * @return bool Hook handling status */ public function callbackShowWebsiteSettingsTabs($hookName, $args) { $templateMgr = $args[1]; $output = & $args[2]; $request = & Registry::get('request'); $dispatcher = $request->getDispatcher(); $output .= $templateMgr->fetch($this->getTemplateResource('staticPagesTab.tpl')); // Permit other plugins to continue interacting with this hook return false; } /** * Declare the handler function to process the actual page PATH * * @param string $hookName The name of the invoked hook * @param array $args Hook parameters * * @return bool Hook handling status */ public function callbackHandleContent($hookName, $args) { $request = Application::get()->getRequest(); $templateMgr = TemplateManager::getManager($request); $page = & $args[0]; $op = & $args[1]; $handler = & $args[3]; /** @var StaticPagesDAO */ $staticPagesDao = DAORegistry::getDAO('StaticPagesDAO'); if ($page == 'pages' && $op == 'preview') { // This is a preview request; mock up a static page to display. // The handler class ensures that only managers and administrators // can do this. $staticPage = $staticPagesDao->newDataObject(); $staticPage->setContent((array) $request->getUserVar('content'), null); $staticPage->setTitle((array) $request->getUserVar('title'), null); } else { // Construct a path to look for $path = $page; if ($op !== 'index') { $path .= "/{$op}"; } if ($ops = $request->getRequestedArgs()) { $path .= '/' . implode('/', $ops); } // Look for a static page with the given path $context = $request->getContext(); $staticPage = $staticPagesDao->getByPath( $context?->getId() ?? Application::CONTEXT_ID_NONE, $path ); } // Check if this is a request for a static page or preview. if ($staticPage) { // Trick the handler into dealing with it normally $page = 'pages'; $op = 'view'; // It is -- attach the static pages handler. $handler = new StaticPagesHandler($this, $staticPage); return true; } return false; } /** * Permit requests to the static pages grid handler * * @param string $hookName The name of the hook being invoked */ public function setupGridHandler($hookName, $params) { $component = & $params[0]; $componentInstance = & $params[2]; if ($component == 'plugins.generic.staticPages.controllers.grid.StaticPageGridHandler') { // Allow the static page grid handler to get the plugin object $componentInstance = new StaticPageGridHandler($this); return true; } return false; } /** * @copydoc Plugin::getActions() */ public function getActions($request, $actionArgs) { $dispatcher = $request->getDispatcher(); return array_merge( $this->getEnabled() ? [ new LinkAction( 'settings', new RedirectAction($dispatcher->url( $request, Application::ROUTE_PAGE, null, 'management', 'settings', 'website', ['uid' => uniqid()], // Force reload 'staticPages' // Anchor for tab )), __('plugins.generic.staticPages.editAddContent'), null ), ] : [], parent::getActions($request, $actionArgs) ); } /** * @copydoc Plugin::getInstallMigration() */ public function getInstallMigration() { return new StaticPagesSchemaMigration(); } /** * Get the JavaScript URL for this plugin. */ public function getJavaScriptURL($request) { return $request->getBaseUrl() . '/' . $this->getPluginPath() . '/js'; } } if (!PKP_STRICT_MODE) { class_alias('\APP\plugins\generic\staticPages\StaticPagesPlugin', '\StaticPagesPlugin'); }