diff --git a/config/sync/page_manager.page_variant.node-panels_variant-0.yml b/config/sync/page_manager.page_variant.node-panels_variant-0.yml index aa02d9ee..0622f349 100644 --- a/config/sync/page_manager.page_variant.node-panels_variant-0.yml +++ b/config/sync/page_manager.page_variant.node-panels_variant-0.yml @@ -116,6 +116,7 @@ variant_settings: weight: 0 uuid: 9c5741a0-e8e2-4895-88a7-c36d3825e33c context_mapping: { } + link_title: Ressources c80f54a0-8f21-4c56-8341-eab59b009329: id: 'entity_field:node:field_document' label: 'Pour aller plus loin' @@ -133,6 +134,16 @@ variant_settings: uuid: c80f54a0-8f21-4c56-8341-eab59b009329 context_mapping: entity: node + f5f0169e-5c85-4b7e-b726-abd246152f83: + id: prog_ressource_link + label: 'Prog ressource link' + provider: popsu_link_block + label_display: '0' + region: bottom + weight: 0 + uuid: f5f0169e-5c85-4b7e-b726-abd246152f83 + context_mapping: { } + link_title: 'voir toutes les ressources de [node:title]' id: panels_variant uuid: 9752d3e8-fdc6-419d-95bb-079a2c3088b3 label: null diff --git a/web/modules/custom/popsu_link_block/src/Plugin/Block/ProgRessourceLink.php b/web/modules/custom/popsu_link_block/src/Plugin/Block/ProgRessourceLink.php index 4cff6e8e..610c3eec 100644 --- a/web/modules/custom/popsu_link_block/src/Plugin/Block/ProgRessourceLink.php +++ b/web/modules/custom/popsu_link_block/src/Plugin/Block/ProgRessourceLink.php @@ -3,8 +3,10 @@ namespace Drupal\popsu_link_block\Plugin\Block; use Drupal\Core\Block\BlockBase; +use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Url; use Drupal\Core\Link; +// use Drupal\Core\Utility\Token; /** * Provides a 'ProgRessourceLink' block. @@ -16,27 +18,63 @@ use Drupal\Core\Link; */ class ProgRessourceLink extends BlockBase { + public function blockForm($form, FormStateInterface $form_state) { + $form = parent::blockForm($form, $form_state); + + $config = $this->getConfiguration(); + + $form['link_title_wrapper'] = [ + '#type' => 'container' + ]; + + $form['link_title_wrapper']['link_title'] = [ + '#type' => 'textfield', + '#title' => 'Link title', + '#default_value' => isset($config['link_title']) ? $config['link_title'] : "Ressources", + '#element_validate' => array('token_element_validate'), + '#token_types' => array('node'), + ]; + + $form['link_title_wrapper']['token_tree'] = array( + '#theme' => 'token_tree_link', + '#token_types' => array('node'), + '#show_restricted' => TRUE, + '#global_types' => FALSE, + '#weight' => 90, + ); + + return $form; + } + + public function blockSubmit($form, FormStateInterface $form_state) + { + parent::blockSubmit($form, $form_state); + $values = $form_state->getValues(); + $link_title = $values['link_title_wrapper']['link_title']; + $this->configuration['link_title'] = $link_title; + } + + /** * {@inheritdoc} */ public function build() { + $config = $this->getConfiguration(); $build = []; $node = \Drupal::routeMatch()->getParameter('node'); if ($node instanceof \Drupal\node\Entity\Node) { - // You can get nid and anything else you need from the node object. $nid = $node->id(); - + // $title = $config["link_title"]; + $token_service = \Drupal::token(); + $title = $token_service->replace($config["link_title"], array('node' => $node)); $url = Url::fromRoute("view.centre_de_ressources.page_1"); $url->setRouteParameter("programme", $nid); $url->setOption('attributes', array("class"=>array('prog-ressources-link'))); $build['prog_ressource_link'] = array( - '#title' => "Ressources", + '#title' => $title, '#type' => 'link', - '#url' => $url, + '#url' => $url ); - - $t="t"; - } return $build; }