* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ declare(strict_types=1); namespace PrestaShopBundle\Bridge\Smarty; use Language; use PrestaShop\PrestaShop\Adapter\Configuration; use PrestaShop\PrestaShop\Core\Help\Documentation; use PrestaShopBundle\Bridge\AdminController\ControllerConfiguration; use Tools; /** * This class sets help link, maintenance information, title, and others in the controller configuration. */ class ToolbarFlagsConfigurator implements ConfiguratorInterface { /** * @var Configuration */ private $configuration; /** * @var Documentation */ private $documentation; /** * @var bool */ private $isDebugMode; /** * @param Configuration $configuration * @param Documentation $documentation * @param bool $isDebugMode */ public function __construct( Configuration $configuration, Documentation $documentation, bool $isDebugMode ) { $this->configuration = $configuration; $this->documentation = $documentation; $this->isDebugMode = $isDebugMode; } /** * @param ControllerConfiguration $controllerConfiguration * * @return void */ public function configure(ControllerConfiguration $controllerConfiguration): void { $this->initToolbar($controllerConfiguration); $this->initPageHeaderToolbar($controllerConfiguration); $controllerConfiguration->templateVars['maintenance_mode'] = !(bool) $this->configuration->get('PS_SHOP_ENABLE'); $controllerConfiguration->templateVars['maintenance_allow_admins'] = !(bool) $this->configuration->get('PS_MAINTENANCE_ALLOW_ADMINS'); $controllerConfiguration->templateVars['debug_mode'] = $this->isDebugMode; $controllerConfiguration->templateVars['lite_display'] = $controllerConfiguration->liteDisplay; $controllerConfiguration->templateVars['show_page_header_toolbar'] = $controllerConfiguration->showPageHeaderToolbar; $controllerConfiguration->templateVars['page_header_toolbar_title'] = $controllerConfiguration->pageHeaderToolbarTitle; $controllerConfiguration->templateVars['title'] = $controllerConfiguration->pageHeaderToolbarTitle; $controllerConfiguration->templateVars['toolbar_btn'] = $controllerConfiguration->pageHeaderToolbarActions; $controllerConfiguration->templateVars['page_header_toolbar_btn'] = $controllerConfiguration->pageHeaderToolbarActions; $controllerConfiguration->templateVars['help_link'] = $this->documentation->generateLink( Tools::getValue('controller'), (string) Language::getIsoById($controllerConfiguration->getUser()->getData()->id_lang) ); } /** * assign default action in toolbar_btn smarty var, if they are not set. * uses override to specifically add, modify or remove items. * * This method will be used in add, edit... * * @param ControllerConfiguration $controllerConfiguration * * @return void */ public function initToolbar(ControllerConfiguration $controllerConfiguration): void { } /** * @param ControllerConfiguration $controllerConfiguration * * @return void */ public function initPageHeaderToolbar(ControllerConfiguration $controllerConfiguration): void { if (empty($this->toolbarTitle)) { $this->initToolbarTitle($controllerConfiguration); } if (count($controllerConfiguration->toolbarTitle)) { $controllerConfiguration->showPageHeaderToolbar = true; } if (empty($controllerConfiguration->pageHeaderToolbarTitle)) { $controllerConfiguration->pageHeaderToolbarTitle = $controllerConfiguration->toolbarTitle[count($controllerConfiguration->toolbarTitle) - 1]; } } /** * Set default toolbarTitle to admin breadcrumb. * * @param ControllerConfiguration $controllerConfiguration * * @return void */ public function initToolbarTitle(ControllerConfiguration $controllerConfiguration): void { $controllerConfiguration->toolbarTitle = array_unique($controllerConfiguration->breadcrumbs); } }