isTinyMCEInstalled())
$description .= __('plugins.generic.staticPages.requirement.tinymce');
return $description;
}
/**
* Check whether or not the TinyMCE plugin is installed.
* @return boolean True iff TinyMCE is installed.
*/
function isTinyMCEInstalled() {
$application = PKPApplication::getApplication();
$products = $application->getEnabledProducts('plugins.generic');
return (isset($products['tinymce']));
}
/**
* @copydoc Plugin::register()
*/
function register($category, $path, $mainContextId = null) {
if (parent::register($category, $path, $mainContextId)) {
if ($this->getEnabled($mainContextId)) {
// Register the static pages DAO.
import('plugins.generic.staticPages.classes.StaticPagesDAO');
$staticPagesDao = new StaticPagesDAO();
DAORegistry::registerDAO('StaticPagesDAO', $staticPagesDao);
HookRegistry::register('Templates::Management::Settings::website', array($this, 'callbackShowWebsiteSettingsTabs'));
// Intercept the LoadHandler hook to present
// static pages when requested.
HookRegistry::register('LoadHandler', array($this, 'callbackHandleContent'));
// Register the components this plugin implements to
// permit administration of static pages.
HookRegistry::register('LoadComponentHandler', array($this, 'setupGridHandler'));
$this->_registerTemplateResource();
}
return true;
}
return false;
}
/**
* Extend the website settings tabs to include static pages
* @param $hookName string The name of the invoked hook
* @param $args array Hook parameters
* @return boolean Hook handling status
*/
function callbackShowWebsiteSettingsTabs($hookName, $args) {
$output =& $args[2];
$request =& Registry::get('request');
$dispatcher = $request->getDispatcher();
// Add a new tab for static pages
$output .= '
' . __('plugins.generic.staticPages.staticPages') . '';
// Permit other plugins to continue interacting with this hook
return false;
}
/**
* Declare the handler function to process the actual page PATH
* @param $hookName string The name of the invoked hook
* @param $args array Hook parameters
* @return boolean Hook handling status
*/
function callbackHandleContent($hookName, $args) {
$request = $this->getRequest();
$templateMgr = TemplateManager::getManager($request);
$page =& $args[0];
$op =& $args[1];
$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?$context->getId():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.
define('HANDLER_CLASS', 'StaticPagesHandler');
$this->import('StaticPagesHandler');
// Allow the static pages page handler to get the plugin object
StaticPagesHandler::setPlugin($this);
StaticPagesHandler::setPage($staticPage);
return true;
}
return false;
}
/**
* Permit requests to the static pages grid handler
* @param $hookName string The name of the hook being invoked
* @param $args array The parameters to the invoked hook
*/
function setupGridHandler($hookName, $params) {
$component =& $params[0];
if ($component == 'plugins.generic.staticPages.controllers.grid.StaticPageGridHandler') {
// Allow the static page grid handler to get the plugin object
import($component);
StaticPageGridHandler::setPlugin($this);
return true;
}
return false;
}
/**
* @copydoc Plugin::getActions()
*/
function getActions($request, $actionArgs) {
$dispatcher = $request->getDispatcher();
import('lib.pkp.classes.linkAction.request.RedirectAction');
return array_merge(
$this->getEnabled()?array(
new LinkAction(
'settings',
new RedirectAction($dispatcher->url(
$request, ROUTE_PAGE,
null, 'management', 'settings', 'website',
array('uid' => uniqid()), // Force reload
'staticPages' // Anchor for tab
)),
__('plugins.generic.staticPages.editAddContent'),
null
),
):array(),
parent::getActions($request, $actionArgs)
);
}
/**
* Get the filename of the ADODB schema for this plugin.
* @return string Full path and filename to schema descriptor.
*/
function getInstallSchemaFile() {
return $this->getPluginPath() . '/schema.xml';
}
/**
* @copydoc PKPPlugin::getTemplatePath
*/
function getTemplatePath($inCore = false) {
return $this->getTemplateResourceName() . ':templates/';
}
/**
* Get the JavaScript URL for this plugin.
*/
function getJavaScriptURL($request) {
return $request->getBaseUrl() . '/' . $this->getPluginPath() . '/js';
}
}
?>