class SystemCompactLink
Same name in other branches
- 8.9.x core/lib/Drupal/Core/Render/Element/SystemCompactLink.php \Drupal\Core\Render\Element\SystemCompactLink
- 10 core/lib/Drupal/Core/Render/Element/SystemCompactLink.php \Drupal\Core\Render\Element\SystemCompactLink
- 11.x core/lib/Drupal/Core/Render/Element/SystemCompactLink.php \Drupal\Core\Render\Element\SystemCompactLink
Provides a link to show or hide help text on administration pages.
Usage example:
$form['system_compact_link'] = [
'#type' => 'system_compact_link',
];
Plugin annotation
@RenderElement("system_compact_link");
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements \Drupal\Component\Plugin\PluginInspectionInterface, \Drupal\Component\Plugin\DerivativeInspectionInterface
- class \Drupal\Core\Plugin\PluginBase extends \Drupal\Component\Plugin\PluginBase uses \Drupal\Core\StringTranslation\StringTranslationTrait, \Drupal\Core\DependencyInjection\DependencySerializationTrait, \Drupal\Core\Messenger\MessengerTrait
- class \Drupal\Core\Render\Element\RenderElement extends \Drupal\Core\Plugin\PluginBase implements \Drupal\Core\Render\Element\ElementInterface
- class \Drupal\Core\Render\Element\Link extends \Drupal\Core\Render\Element\RenderElement
- class \Drupal\Core\Render\Element\SystemCompactLink extends \Drupal\Core\Render\Element\Link
- class \Drupal\Core\Render\Element\Link extends \Drupal\Core\Render\Element\RenderElement
- class \Drupal\Core\Render\Element\RenderElement extends \Drupal\Core\Plugin\PluginBase implements \Drupal\Core\Render\Element\ElementInterface
- class \Drupal\Core\Plugin\PluginBase extends \Drupal\Component\Plugin\PluginBase uses \Drupal\Core\StringTranslation\StringTranslationTrait, \Drupal\Core\DependencyInjection\DependencySerializationTrait, \Drupal\Core\Messenger\MessengerTrait
Expanded class hierarchy of SystemCompactLink
4 #type uses of SystemCompactLink
- RenderElementTypesTest::testSystemCompactLink in core/
tests/ Drupal/ KernelTests/ Core/ Render/ Element/ RenderElementTypesTest.php - Tests system #type 'system_compact_link'.
- template_preprocess_admin_page in core/
modules/ system/ system.admin.inc - Prepares variables for administrative index page templates.
- template_preprocess_system_admin_index in core/
modules/ system/ system.admin.inc - Prepares variables for admin index templates.
- UserPermissionsForm::buildForm in core/
modules/ user/ src/ Form/ UserPermissionsForm.php - Form constructor.
File
-
core/
lib/ Drupal/ Core/ Render/ Element/ SystemCompactLink.php, line 21
Namespace
Drupal\Core\Render\ElementView source
class SystemCompactLink extends Link {
/**
* {@inheritdoc}
*/
public function getInfo() {
$class = static::class;
return [
'#pre_render' => [
[
$class,
'preRenderCompactLink',
],
[
$class,
'preRenderLink',
],
],
'#theme_wrappers' => [
'container' => [
'#attributes' => [
'class' => [
'compact-link',
],
],
],
],
];
}
/**
* Pre-render callback: Renders a link into #markup.
*
* Doing so during pre_render gives modules a chance to alter the link parts.
*
* @param array $element
* A structured array whose keys form the arguments to Drupal::l():
* - #title: The link text to pass as argument to Drupal::l().
* - One of the following:
* - #route_name and (optionally) a #route_parameters array; The route
* name and route parameters which will be passed into the link
* generator.
* - #href: The system path or URL to pass as argument to Drupal::l().
* - #options: (optional) An array of options to pass to Drupal::l() or the
* link generator.
*
* @return array
* The passed-in element containing the system compact link default values.
*/
public static function preRenderCompactLink($element) {
// By default, link options to pass to l() are normally set in #options.
$element += [
'#options' => [],
];
if (system_admin_compact_mode()) {
$element['#title'] = t('Show descriptions');
$element['#url'] = BaseUrl::fromRoute('system.admin_compact_page', [
'mode' => 'off',
]);
$element['#options'] = [
'attributes' => [
'title' => t('Expand layout to include descriptions.'),
],
'query' => \Drupal::destination()->getAsArray(),
];
}
else {
$element['#title'] = t('Hide descriptions');
$element['#url'] = BaseUrl::fromRoute('system.admin_compact_page', [
'mode' => 'on',
]);
$element['#options'] = [
'attributes' => [
'title' => t('Compress layout by hiding descriptions.'),
],
'query' => \Drupal::destination()->getAsArray(),
];
}
$options = NestedArray::mergeDeep($element['#url']->getOptions(), $element['#options']);
$element['#markup'] = BaseLink::fromTextAndUrl($element['#title'], $element['#url']->setOptions($options))
->toString();
return $element;
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title | Overrides |
---|---|---|---|---|---|
Link::preRenderLink | public static | function | Pre-render callback: Renders a link into #markup. | ||
Link::preRenderLinks | public static | function | Pre-render callback: Collects child links into a single array. | ||
PluginInspectionInterface::getPluginDefinition | public | function | Gets the definition of the plugin implementation. | 6 | |
PluginInspectionInterface::getPluginId | public | function | Gets the plugin_id of the plugin instance. | 2 | |
RenderElement::preRenderAjaxForm | public static | function | Adds Ajax information about an element to communicate with JavaScript. | ||
RenderElement::preRenderGroup | public static | function | Adds members of this group as actual elements for rendering. | ||
RenderElement::processAjaxForm | public static | function | Form element processing handler for the #ajax form property. | 1 | |
RenderElement::processGroup | public static | function | Arranges elements into groups. | ||
RenderElement::setAttributes | public static | function | Sets a form element's class attribute. | Overrides ElementInterface::setAttributes | |
SystemCompactLink::getInfo | public | function | Returns the element properties for this element. | Overrides Link::getInfo | |
SystemCompactLink::preRenderCompactLink | public static | function | Pre-render callback: Renders a link into #markup. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.