150 lines
4.0 KiB
PHP
150 lines
4.0 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @file plugins/generic/customBlockManager/CustomBlockPlugin.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.customBlockManager
|
|
*
|
|
* @class CustomBlockPlugin
|
|
*
|
|
* A generic sidebar block that can be customized through the CustomBlockManagerPlugin
|
|
*
|
|
*/
|
|
|
|
namespace APP\plugins\generic\customBlockManager;
|
|
|
|
use APP\core\Application;
|
|
use PKP\facades\Locale;
|
|
use PKP\plugins\BlockPlugin;
|
|
|
|
class CustomBlockPlugin extends BlockPlugin
|
|
{
|
|
/** @var string Name of this block plugin */
|
|
public $_blockName;
|
|
|
|
/** @var CustomBlockManagerPlugin Parent plugin */
|
|
public $_parentPlugin;
|
|
|
|
/**
|
|
* Constructor
|
|
*
|
|
* @param string $blockName Name of this block plugin.
|
|
* @param CustomBlockManagerPlugin $parentPlugin Custom block plugin management plugin.
|
|
*/
|
|
public function __construct($blockName, $parentPlugin)
|
|
{
|
|
$this->_blockName = $blockName;
|
|
$this->_parentPlugin = $parentPlugin;
|
|
parent::__construct();
|
|
}
|
|
|
|
/**
|
|
* Get the management plugin
|
|
*
|
|
* @return CustomBlockManagerPlugin
|
|
*/
|
|
public function getManagerPlugin()
|
|
{
|
|
return $this->_parentPlugin;
|
|
}
|
|
|
|
/**
|
|
* @copydoc Plugin::getName()
|
|
*/
|
|
public function getName()
|
|
{
|
|
return $this->_blockName;
|
|
}
|
|
|
|
/**
|
|
* @copydoc Plugin::getPluginPath()
|
|
*/
|
|
public function getPluginPath()
|
|
{
|
|
$plugin = $this->getManagerPlugin();
|
|
return $plugin->getPluginPath();
|
|
}
|
|
|
|
/**
|
|
* @copydoc Plugin::getTemplatePath()
|
|
*/
|
|
public function getTemplatePath($inCore = false)
|
|
{
|
|
$plugin = $this->getManagerPlugin();
|
|
return $plugin->getTemplatePath($inCore);
|
|
}
|
|
|
|
/**
|
|
* @copydoc Plugin::getHideManagement()
|
|
*/
|
|
public function getHideManagement()
|
|
{
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* @copydoc LazyLoadPlugin::getEnabled()
|
|
*
|
|
* @param null|mixed $contextId
|
|
*/
|
|
public function getEnabled($contextId = null)
|
|
{
|
|
if (!Application::isInstalled()) {
|
|
return true;
|
|
}
|
|
return parent::getEnabled($contextId);
|
|
}
|
|
|
|
/**
|
|
* @copydoc Plugin::getDisplayName()
|
|
*/
|
|
public function getDisplayName()
|
|
{
|
|
return $this->_blockName . ' ' . __('plugins.generic.customBlock.nameSuffix');
|
|
}
|
|
|
|
/**
|
|
* @copydoc Plugin::getDescription()
|
|
*/
|
|
public function getDescription()
|
|
{
|
|
return __('plugins.generic.customBlock.description');
|
|
}
|
|
|
|
/**
|
|
* @copydoc BlockPlugin::getContents()
|
|
*
|
|
* @param null|mixed $request
|
|
*/
|
|
public function getContents($templateMgr, $request = null)
|
|
{
|
|
$context = $request->getContext();
|
|
$contextId = $context ? $context->getId() : 0;
|
|
|
|
// Get the block contents.
|
|
$customBlockTitle = $this->getSetting($contextId, 'blockTitle');
|
|
$customBlockContent = $this->getSetting($contextId, 'blockContent');
|
|
$currentLocale = Locale::getLocale();
|
|
$contextPrimaryLocale = $context ? $context->getPrimaryLocale() : $request->getSite()->getPrimaryLocale();
|
|
|
|
$divCustomBlockId = 'customblock-' . preg_replace('/\W+/', '-', $this->getName());
|
|
$templateMgr->assign('customBlockId', $divCustomBlockId);
|
|
|
|
$title = $customBlockTitle[$currentLocale] ? $customBlockTitle[$currentLocale] : $customBlockTitle[$contextPrimaryLocale];
|
|
$content = $customBlockContent[$currentLocale] ? $customBlockContent[$currentLocale] : $customBlockContent[$contextPrimaryLocale];
|
|
|
|
$templateMgr->assign('customBlockTitle', $title);
|
|
$templateMgr->assign('customBlockContent', $content);
|
|
$templateMgr->assign('showName', $this->getSetting($contextId, 'showName'));
|
|
return parent::getContents($templateMgr, $request);
|
|
}
|
|
}
|
|
|
|
if (!PKP_STRICT_MODE) {
|
|
class_alias('\APP\plugins\generic\customBlockManager\CustomBlockPlugin', '\CustomBlockPlugin');
|
|
}
|