Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 7 |
CRAP | |
0.00% |
0 / 92 |
SystemBrandingBlock | |
0.00% |
0 / 1 |
|
0.00% |
0 / 7 |
110 | |
0.00% |
0 / 92 |
__construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
create | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 7 |
|||
defaultConfiguration | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 7 |
|||
blockForm | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 47 |
|||
blockSubmit | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 5 |
|||
build | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 18 |
|||
getCacheTags | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 5 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\system\Plugin\Block\SystemBrandingBlock. | |
*/ | |
namespace Drupal\system\Plugin\Block; | |
use Drupal\Core\Block\BlockBase; | |
use Drupal\Core\Cache\Cache; | |
use Drupal\Core\Config\ConfigFactoryInterface; | |
use Drupal\Core\Form\FormStateInterface; | |
use Drupal\Core\Plugin\ContainerFactoryPluginInterface; | |
use Drupal\Core\Url; | |
use Symfony\Component\DependencyInjection\ContainerInterface; | |
/** | |
* Provides a block to display 'Site branding' elements. | |
* | |
* @Block( | |
* id = "system_branding_block", | |
* admin_label = @Translation("Site branding") | |
* ) | |
*/ | |
class SystemBrandingBlock extends BlockBase implements ContainerFactoryPluginInterface { | |
/** | |
* Stores the configuration factory. | |
* | |
* @var \Drupal\Core\Config\ConfigFactoryInterface | |
*/ | |
protected $configFactory; | |
/** | |
* Creates a SystemBrandingBlock instance. | |
* | |
* @param array $configuration | |
* A configuration array containing information about the plugin instance. | |
* @param string $plugin_id | |
* The plugin_id for the plugin instance. | |
* @param mixed $plugin_definition | |
* The plugin implementation definition. | |
* @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory | |
* The factory for configuration objects. | |
*/ | |
public function __construct(array $configuration, $plugin_id, $plugin_definition, ConfigFactoryInterface $config_factory) { | |
parent::__construct($configuration, $plugin_id, $plugin_definition); | |
$this->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 array( | |
'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', array('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 <a href=":appearance">Appearance Settings</a> or <a href=":theme">Theme Settings</a> page.', array( | |
':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 <a href=":information">Site Information</a> page.', array(':information' => $site_information_url)); | |
$site_slogan_description = $this->t('Defined on the <a href=":information">Site Information</a> page.', array(':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'] = array( | |
'#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'] = array( | |
'#type' => 'checkbox', | |
'#title' => $this->t('Site logo'), | |
'#description' => $site_logo_description, | |
'#default_value' => $this->configuration['use_site_logo'], | |
); | |
$form['block_branding']['use_site_name'] = array( | |
'#type' => 'checkbox', | |
'#title' => $this->t('Site name'), | |
'#description' => $site_name_description, | |
'#default_value' => $this->configuration['use_site_name'], | |
); | |
$form['block_branding']['use_site_slogan'] = array( | |
'#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 = array(); | |
$site_config = $this->configFactory->get('system.site'); | |
$build['site_logo'] = array( | |
'#theme' => 'image', | |
'#uri' => theme_get_setting('logo.url'), | |
'#alt' => $this->t('Home'), | |
'#access' => $this->configuration['use_site_logo'], | |
); | |
$build['site_name'] = array( | |
'#markup' => $site_config->get('name'), | |
'#access' => $this->configuration['use_site_name'], | |
); | |
$build['site_slogan'] = array( | |
'#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() | |
); | |
} | |
} |