class BackLinkBlock in Opigno Learning path 3.x
Provides a backlinkblock block.
Plugin annotation
@Block(
  id = "opigno_learning_path_back_link_block",
  admin_label = @Translation("BackLinkBlock"),
  category = @Translation("Custom")
)
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait- class \Drupal\Core\Block\BlockBase implements BlockPluginInterface, ContextAwarePluginInterface, PluginWithFormsInterface, PreviewFallbackInterface uses BlockPluginTrait, ContextAwarePluginAssignmentTrait, ContextAwarePluginTrait- class \Drupal\system\Plugin\Block\SystemBreadcrumbBlock implements ContainerFactoryPluginInterface- class \Drupal\opigno_learning_path\Plugin\Block\BackLinkBlock implements ContainerFactoryPluginInterface
 
 
- class \Drupal\system\Plugin\Block\SystemBreadcrumbBlock implements ContainerFactoryPluginInterface
 
- class \Drupal\Core\Block\BlockBase implements BlockPluginInterface, ContextAwarePluginInterface, PluginWithFormsInterface, PreviewFallbackInterface uses BlockPluginTrait, ContextAwarePluginAssignmentTrait, ContextAwarePluginTrait
 
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of BackLinkBlock
1 string reference to 'BackLinkBlock'
- block.block.backlinkblock.yml in config/optional/ block.block.backlinkblock.yml 
- config/optional/block.block.backlinkblock.yml
File
- src/Plugin/ Block/ BackLinkBlock.php, line 20 
Namespace
Drupal\opigno_learning_path\Plugin\BlockView source
class BackLinkBlock extends SystemBreadcrumbBlock implements ContainerFactoryPluginInterface {
  /**
   * @var \Drupal\Component\Plugin\Context\ContextInterface[]|void
   */
  protected $isOverrideJS = NULL;
  /**
   * {@inheritdoc}
   */
  public function defaultConfiguration() {
    return [
      'js_button' => implode(PHP_EOL, [
        'user.login',
        'user.register',
        'user.pass',
        'opigno_module.group.answer_form',
        'entity.group.canonical',
        'view.opigno_training_catalog.training_catalogue',
        'opigno_module.module_result',
      ]),
    ];
  }
  /**
   * Builds the breadcrumb links.
   */
  public function getLinks() {
    return $this->breadcrumbManager
      ->build($this->routeMatch)
      ->getLinks() ?: [];
  }
  /**
   * {@inheritdoc}
   */
  public function blockForm($form, FormStateInterface $form_state) {
    $config = $this->configuration;
    $form['js_button'] = [
      '#type' => 'textarea',
      '#title' => $this
        ->t('Breadcrumbs routes'),
      '#default_value' => $config['js_button'],
    ];
    return $form;
  }
  /**
   * {@inheritdoc}
   */
  public function getCacheContexts() {
    return Cache::mergeContexts(parent::getCacheContexts(), [
      'url.path',
    ]);
  }
  /**
   * {@inheritdoc}
   */
  public function blockSubmit($form, FormStateInterface $form_state) {
    $js_button = $form_state
      ->getValue('js_button');
    $this->configuration['js_button'] = $js_button;
  }
  /**
   * {@inheritdoc}
   */
  public function build() {
    $config = $this->configuration;
    /** @var \Drupal\Core\Link[] $links */
    $links = $this
      ->getLinks();
    /** @var \Drupal\Core\Link $last_link */
    $last_link = array_pop($links);
    if ($last_link instanceof Link) {
      return [
        '#type' => 'inline_template',
        '#template' => '<div class="back-btn d-none d-lg-block {{js_button}}"><a href="{{context}}"><i class="fi fi-rr-angle-small-left d-lg-none"></i><i class="fi fi-rr-arrow-left d-none d-lg-block"></i>{{context_title}}</a></div>',
        '#context' => [
          'context_title' => $this
            ->t('Back'),
          'context' => $last_link
            ->getUrl()
            ->toString(),
        ],
        '#attached' => [
          'library' => [
            'opigno_learning_path/back_button',
          ],
          'drupalSettings' => [
            'learning_path_back_link' => [
              'js_button' => $this
                ->isOverrideJS(),
            ],
          ],
        ],
      ];
    }
    return [];
  }
  /**
   * {@inheritdoc}
   */
  protected function isOverrideJS() {
    if (is_null($this->isOverrideJS)) {
      $this
        ->setOverrideJS();
    }
    return $this->isOverrideJS;
  }
  /**
   * {@inheritdoc}
   */
  protected function setOverrideJS() {
    // Add the route name as an extra class to body.
    $route = (string) \Drupal::routeMatch()
      ->getRouteName();
    return $this->isOverrideJS = !in_array($route, preg_split('/\\n|\\r\\n?/', $this->configuration['js_button']));
  }
}Members
| Name   | Modifiers | Type | Description | Overrides | 
|---|---|---|---|---|
| BackLinkBlock:: | protected | property | ||
| BackLinkBlock:: | public | function | Overrides BlockPluginTrait:: | |
| BackLinkBlock:: | public | function | Overrides BlockPluginTrait:: | |
| BackLinkBlock:: | public | function | Builds and returns the renderable array for this block plugin. Overrides SystemBreadcrumbBlock:: | |
| BackLinkBlock:: | public | function | Overrides BlockPluginTrait:: | |
| BackLinkBlock:: | public | function | Overrides ContextAwarePluginTrait:: | |
| BackLinkBlock:: | public | function | Builds the breadcrumb links. | |
| BackLinkBlock:: | protected | function | ||
| BackLinkBlock:: | protected | function | ||
| BlockBase:: | public | function | Form constructor. Overrides PluginFormInterface:: | 2 | 
| BlockPluginInterface:: | constant | Indicates the block label (title) should be displayed to end users. | ||
| BlockPluginTrait:: | protected | property | The transliteration service. | |
| BlockPluginTrait:: | public | function | ||
| BlockPluginTrait:: | protected | function | Returns generic default configuration for block plugins. | |
| BlockPluginTrait:: | protected | function | Indicates whether the block should be shown. | 16 | 
| BlockPluginTrait:: | public | function | 3 | |
| BlockPluginTrait:: | public | function | Creates a generic configuration form for all block types. Individual block plugins can add elements to this form by overriding BlockBase::blockForm(). Most block plugins should not override this method unless they need to alter the generic form elements. Aliased as: traitBuildConfigurationForm | |
| BlockPluginTrait:: | public | function | ||
| BlockPluginTrait:: | public | function | 1 | |
| BlockPluginTrait:: | public | function | 1 | |
| BlockPluginTrait:: | public | function | 3 | |
| BlockPluginTrait:: | public | function | ||
| BlockPluginTrait:: | public | function | ||
| BlockPluginTrait:: | public | function | ||
| BlockPluginTrait:: | public | function | Sets the transliteration service. | |
| BlockPluginTrait:: | public | function | Most block plugins should not override this method. To add submission handling for a specific block type, override BlockBase::blockSubmit(). | |
| BlockPluginTrait:: | protected | function | Wraps the transliteration service. | |
| BlockPluginTrait:: | public | function | Most block plugins should not override this method. To add validation for a specific block type, override BlockBase::blockValidate(). | 1 | 
| ContextAwarePluginAssignmentTrait:: | protected | function | Builds a form element for assigning a context to a given slot. | |
| ContextAwarePluginAssignmentTrait:: | protected | function | Wraps the context handler. | |
| ContextAwarePluginTrait:: | protected | property | The data objects representing the context of this plugin. | |
| ContextAwarePluginTrait:: | protected | property | Tracks whether the context has been initialized from configuration. | |
| ContextAwarePluginTrait:: | public | function | 7 | |
| ContextAwarePluginTrait:: | public | function | 4 | |
| ContextAwarePluginTrait:: | public | function | ||
| ContextAwarePluginTrait:: | public | function | ||
| ContextAwarePluginTrait:: | public | function | ||
| ContextAwarePluginTrait:: | public | function | ||
| ContextAwarePluginTrait:: | public | function | ||
| ContextAwarePluginTrait:: | public | function | ||
| ContextAwarePluginTrait:: | public | function | ||
| ContextAwarePluginTrait:: | abstract protected | function | 1 | |
| ContextAwarePluginTrait:: | public | function | 1 | |
| ContextAwarePluginTrait:: | public | function | ||
| ContextAwarePluginTrait:: | public | function | ||
| ContextAwarePluginTrait:: | public | function | ||
| DependencySerializationTrait:: | protected | property | ||
| DependencySerializationTrait:: | protected | property | ||
| DependencySerializationTrait:: | public | function | 2 | |
| DependencySerializationTrait:: | public | function | 2 | |
| MessengerTrait:: | protected | property | The messenger. | 27 | 
| MessengerTrait:: | public | function | Gets the messenger. | 27 | 
| MessengerTrait:: | public | function | Sets the messenger. | |
| PluginBase:: | protected | property | Configuration information passed into the plugin. | 1 | 
| PluginBase:: | protected | property | The plugin implementation definition. | 1 | 
| PluginBase:: | protected | property | The plugin_id. | |
| PluginBase:: | constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
| PluginBase:: | public | function | Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: | |
| PluginBase:: | public | function | Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: | |
| PluginBase:: | public | function | Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: | |
| PluginBase:: | public | function | Determines if the plugin is configurable. | |
| PluginWithFormsTrait:: | public | function | Implements \Drupal\Core\Plugin\PluginWithFormsInterface::getFormClass(). | |
| PluginWithFormsTrait:: | public | function | Implements \Drupal\Core\Plugin\PluginWithFormsInterface::hasFormClass(). | |
| StringTranslationTrait:: | protected | property | The string translation service. | 4 | 
| StringTranslationTrait:: | protected | function | Formats a string containing a count of items. | |
| StringTranslationTrait:: | protected | function | Returns the number of plurals supported by a given language. | |
| StringTranslationTrait:: | protected | function | Gets the string translation service. | |
| StringTranslationTrait:: | public | function | Sets the string translation service to use. | 2 | 
| StringTranslationTrait:: | protected | function | Translates a string to the current language or to a given language. | |
| SystemBreadcrumbBlock:: | protected | property | The breadcrumb manager. | |
| SystemBreadcrumbBlock:: | protected | property | The current route match. | |
| SystemBreadcrumbBlock:: | public static | function | Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface:: | |
| SystemBreadcrumbBlock:: | public | function | Constructs a new SystemBreadcrumbBlock object. Overrides BlockPluginTrait:: | 
