X-Git-Url: http://aleph1.co.uk/gitweb/?a=blobdiff_plain;ds=inline;f=web%2Fcore%2Fmodules%2Fsystem%2Fsrc%2FPlugin%2FBlock%2FSystemBrandingBlock.php;fp=web%2Fcore%2Fmodules%2Fsystem%2Fsrc%2FPlugin%2FBlock%2FSystemBrandingBlock.php;h=330528528d67808d8ec94da33f59f201c3e51448;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hp=0000000000000000000000000000000000000000;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad;p=yaffs-website diff --git a/web/core/modules/system/src/Plugin/Block/SystemBrandingBlock.php b/web/core/modules/system/src/Plugin/Block/SystemBrandingBlock.php new file mode 100644 index 000000000..330528528 --- /dev/null +++ b/web/core/modules/system/src/Plugin/Block/SystemBrandingBlock.php @@ -0,0 +1,186 @@ +configFactory = $config_factory; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { + return new static( + $configuration, + $plugin_id, + $plugin_definition, + $container->get('config.factory') + ); + } + + /** + * {@inheritdoc} + */ + public function defaultConfiguration() { + return [ + 'use_site_logo' => TRUE, + 'use_site_name' => TRUE, + 'use_site_slogan' => TRUE, + 'label_display' => FALSE, + ]; + } + + /** + * {@inheritdoc} + */ + public function blockForm($form, FormStateInterface $form_state) { + // Get the theme. + $theme = $form_state->get('block_theme'); + + // Get permissions. + $url_system_theme_settings = new Url('system.theme_settings'); + $url_system_theme_settings_theme = new Url('system.theme_settings_theme', ['theme' => $theme]); + + if ($url_system_theme_settings->access() && $url_system_theme_settings_theme->access()) { + // Provide links to the Appearance Settings and Theme Settings pages + // if the user has access to administer themes. + $site_logo_description = $this->t('Defined on the Appearance Settings or Theme Settings page.', [ + ':appearance' => $url_system_theme_settings->toString(), + ':theme' => $url_system_theme_settings_theme->toString(), + ]); + } + else { + // Explain that the user does not have access to the Appearance and Theme + // Settings pages. + $site_logo_description = $this->t('Defined on the Appearance or Theme Settings page. You do not have the appropriate permissions to change the site logo.'); + } + $url_system_site_information_settings = new Url('system.site_information_settings'); + if ($url_system_site_information_settings->access()) { + // Get paths to settings pages. + $site_information_url = $url_system_site_information_settings->toString(); + + // Provide link to Site Information page if the user has access to + // administer site configuration. + $site_name_description = $this->t('Defined on the Site Information page.', [':information' => $site_information_url]); + $site_slogan_description = $this->t('Defined on the Site Information page.', [':information' => $site_information_url]); + } + else { + // Explain that the user does not have access to the Site Information + // page. + $site_name_description = $this->t('Defined on the Site Information page. You do not have the appropriate permissions to change the site logo.'); + $site_slogan_description = $this->t('Defined on the Site Information page. You do not have the appropriate permissions to change the site logo.'); + } + + $form['block_branding'] = [ + '#type' => 'fieldset', + '#title' => $this->t('Toggle branding elements'), + '#description' => $this->t('Choose which branding elements you want to show in this block instance.'), + ]; + $form['block_branding']['use_site_logo'] = [ + '#type' => 'checkbox', + '#title' => $this->t('Site logo'), + '#description' => $site_logo_description, + '#default_value' => $this->configuration['use_site_logo'], + ]; + + $form['block_branding']['use_site_name'] = [ + '#type' => 'checkbox', + '#title' => $this->t('Site name'), + '#description' => $site_name_description, + '#default_value' => $this->configuration['use_site_name'], + ]; + $form['block_branding']['use_site_slogan'] = [ + '#type' => 'checkbox', + '#title' => $this->t('Site slogan'), + '#description' => $site_slogan_description, + '#default_value' => $this->configuration['use_site_slogan'], + ]; + return $form; + } + + /** + * {@inheritdoc} + */ + public function blockSubmit($form, FormStateInterface $form_state) { + $block_branding = $form_state->getValue('block_branding'); + $this->configuration['use_site_logo'] = $block_branding['use_site_logo']; + $this->configuration['use_site_name'] = $block_branding['use_site_name']; + $this->configuration['use_site_slogan'] = $block_branding['use_site_slogan']; + } + + /** + * {@inheritdoc} + */ + public function build() { + $build = []; + $site_config = $this->configFactory->get('system.site'); + + $build['site_logo'] = [ + '#theme' => 'image', + '#uri' => theme_get_setting('logo.url'), + '#alt' => $this->t('Home'), + '#access' => $this->configuration['use_site_logo'], + ]; + + $build['site_name'] = [ + '#markup' => $site_config->get('name'), + '#access' => $this->configuration['use_site_name'], + ]; + + $build['site_slogan'] = [ + '#markup' => $site_config->get('slogan'), + '#access' => $this->configuration['use_site_slogan'], + ]; + + return $build; + } + + /** + * {@inheritdoc} + */ + public function getCacheTags() { + return Cache::mergeTags( + parent::getCacheTags(), + $this->configFactory->get('system.site')->getCacheTags() + ); + } + +}