Mercurial > hg > isophonics-drupal-site
diff core/lib/Drupal/Core/Block/BlockPluginInterface.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | af1871eacc83 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/lib/Drupal/Core/Block/BlockPluginInterface.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,156 @@ +<?php + +namespace Drupal\Core\Block; + +use Drupal\Component\Plugin\DerivativeInspectionInterface; +use Drupal\Core\Cache\CacheableDependencyInterface; +use Drupal\Component\Plugin\PluginInspectionInterface; +use Drupal\Component\Plugin\ConfigurablePluginInterface; +use Drupal\Core\Form\FormStateInterface; +use Drupal\Core\Plugin\PluginFormInterface; +use Drupal\Core\Session\AccountInterface; + +/** + * Defines the required interface for all block plugins. + * + * @todo Add detailed documentation here explaining the block system's + * architecture and the relationships between the various objects, including + * brief references to the important components that are not coupled to the + * interface. + * + * @ingroup block_api + */ +interface BlockPluginInterface extends ConfigurablePluginInterface, PluginFormInterface, PluginInspectionInterface, CacheableDependencyInterface, DerivativeInspectionInterface { + + /** + * Indicates the block label (title) should be displayed to end users. + */ + const BLOCK_LABEL_VISIBLE = 'visible'; + + /** + * Returns the user-facing block label. + * + * @todo Provide other specific label-related methods in + * https://www.drupal.org/node/2025649. + * + * @return string + * The block label. + */ + public function label(); + + /** + * Indicates whether the block should be shown. + * + * This method allows base implementations to add general access restrictions + * that should apply to all extending block plugins. + * + * @param \Drupal\Core\Session\AccountInterface $account + * The user session for which to check access. + * @param bool $return_as_object + * (optional) Defaults to FALSE. + * + * @return bool|\Drupal\Core\Access\AccessResultInterface + * The access result. Returns a boolean if $return_as_object is FALSE (this + * is the default) and otherwise an AccessResultInterface object. + * When a boolean is returned, the result of AccessInterface::isAllowed() is + * returned, i.e. TRUE means access is explicitly allowed, FALSE means + * access is either explicitly forbidden or "no opinion". + * + * @see \Drupal\block\BlockAccessControlHandler + */ + public function access(AccountInterface $account, $return_as_object = FALSE); + + /** + * Builds and returns the renderable array for this block plugin. + * + * If a block should not be rendered because it has no content, then this + * method must also ensure to return no content: it must then only return an + * empty array, or an empty array with #cache set (with cacheability metadata + * indicating the circumstances for it being empty). + * + * @return array + * A renderable array representing the content of the block. + * + * @see \Drupal\block\BlockViewBuilder + */ + public function build(); + + /** + * Sets a particular value in the block settings. + * + * @param string $key + * The key of PluginBase::$configuration to set. + * @param mixed $value + * The value to set for the provided key. + * + * @todo This doesn't belong here. Move this into a new base class in + * https://www.drupal.org/node/1764380. + * @todo This does not set a value in \Drupal::config(), so the name is confusing. + * + * @see \Drupal\Component\Plugin\PluginBase::$configuration + */ + public function setConfigurationValue($key, $value); + + /** + * Returns the configuration form elements specific to this block plugin. + * + * Blocks that need to add form elements to the normal block configuration + * form should implement this method. + * + * @param array $form + * The form definition array for the block configuration form. + * @param \Drupal\Core\Form\FormStateInterface $form_state + * The current state of the form. + * + * @return array + * The renderable form array representing the entire configuration form. + */ + public function blockForm($form, FormStateInterface $form_state); + + /** + * Adds block type-specific validation for the block form. + * + * Note that this method takes the form structure and form state for the full + * block configuration form as arguments, not just the elements defined in + * BlockPluginInterface::blockForm(). + * + * @param array $form + * The form definition array for the full block configuration form. + * @param \Drupal\Core\Form\FormStateInterface $form_state + * The current state of the form. + * + * @see \Drupal\Core\Block\BlockPluginInterface::blockForm() + * @see \Drupal\Core\Block\BlockPluginInterface::blockSubmit() + */ + public function blockValidate($form, FormStateInterface $form_state); + + /** + * Adds block type-specific submission handling for the block form. + * + * Note that this method takes the form structure and form state for the full + * block configuration form as arguments, not just the elements defined in + * BlockPluginInterface::blockForm(). + * + * @param array $form + * The form definition array for the full block configuration form. + * @param \Drupal\Core\Form\FormStateInterface $form_state + * The current state of the form. + * + * @see \Drupal\Core\Block\BlockPluginInterface::blockForm() + * @see \Drupal\Core\Block\BlockPluginInterface::blockValidate() + */ + public function blockSubmit($form, FormStateInterface $form_state); + + /** + * Suggests a machine name to identify an instance of this block. + * + * The block plugin need not verify that the machine name is at all unique. It + * is only responsible for providing a baseline suggestion; calling code is + * responsible for ensuring whatever uniqueness is required for the use case. + * + * @return string + * The suggested machine name. + */ + public function getMachineNameSuggestion(); + +}