express-8.x-1.x-dev/modules/custom/express_site_info/src/Plugin/Block/SiteInfoBlock.php
modules/custom/express_site_info/src/Plugin/Block/SiteInfoBlock.php
<?php namespace Drupal\express_site_info\Plugin\Block; use Drupal\Core\Block\BlockBase; use Drupal\Core\Block\BlockPluginInterface; use Drupal\Core\Form\FormStateInterface; use Drupal\Component\Utility\Xss; use Drupal\Core\Url; use Drupal\Core\Link; /** * Provides the Express Site Info Block. * * @Block( * id = "Express Site Info", * admin_label = @Translation("Express Site Info"), * ) */ class SiteInfoBlock extends BlockBase implements BlockPluginInterface { /** * {@inheritdoc} */ public function build() { global $base_url; $config = $this->getConfiguration(); $contact_info = Xss::filterAdmin($config['contact_info']); $config_site_name = \Drupal::config('system.site'); $site_name = $config_site_name->get('name'); $link = Link::fromTextAndUrl(t($site_name), Url::fromUri($base_url,array()))->toString(); return array( '#markup' => $contact_info, '#attached' => array( 'library' => array( 'express_site_info/express_site_info_styles', ), ), '#title' => $link, ); } /** * {@inheritdoc} */ public function blockForm($form, FormStateInterface $form_state) { $form = parent::blockForm($form, $form_state); $config = $this->getConfiguration(); $form['express_site_info_contact_info'] = array( '#type' => 'textarea', '#title' => $this->t('Express Site Info Contact Information'), '#description' => $this->t('This will display as contact information for your visitors.'), '#default_value' => isset($config['contact_info']) ? $config['contact_info'] : '', ); return $form; } /** * {@inheritdoc} */ public function blockSubmit($form, FormStateInterface $form_state) { $this->configuration['contact_info'] = $form_state->getValue('express_site_info_contact_info'); } /** * {@inheritdoc} */ public function defaultConfiguration() { $default_config = \Drupal::config('express_site_info.settings'); return array( 'contact_info' => $default_config->get('express_site_info.contact_info'), ); } }