added prog's child TOC menu #1459

This commit is contained in:
Bachir Soussi Chiadmi 2021-12-09 13:52:57 +01:00
parent 70d2ffc4c7
commit 552f407a8c
6 changed files with 641 additions and 27 deletions

View File

@ -45,6 +45,7 @@
"drupal/structure_sync": "^2.0",
"drupal/twig_xdebug": "^1.2",
"drupal/video_embed_field": "^2.4",
"drupal/views_argument_token": "2.0.x-dev@dev",
"drupal/views_conditional": "^1.4",
"geocoder-php/google-maps-provider": "^4.6",
"geocoder-php/mapquest-provider": "^4.2",

71
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "9d194093362fe369bebc140060e38193",
"content-hash": "71c9833e93d4a0ac121d68314e543665",
"packages": [
{
"name": "ajgl/breakpoint-twig-extension",
@ -9404,6 +9404,72 @@
"source": "https://git.drupalcode.org/project/video_embed_field"
}
},
{
"name": "drupal/views_argument_token",
"version": "dev-2.0.x",
"source": {
"type": "git",
"url": "https://git.drupalcode.org/project/views_argument_token.git",
"reference": "2953247cfc4b41d1658fe0666ed76fb5a4fbd1c6"
},
"require": {
"drupal/core": "^8 || ^9"
},
"type": "drupal-module",
"extra": {
"branch-alias": {
"dev-2.0.x": "2.0.x-dev"
},
"drupal": {
"version": "2.0.0+1-dev",
"datestamp": "1629465811",
"security-coverage": {
"status": "not-covered",
"message": "Project has not opted into security advisory coverage!"
}
}
},
"notification-url": "https://packages.drupal.org/8/downloads",
"license": [
"GPL-2.0+"
],
"authors": [
{
"name": "eme",
"homepage": "https://www.drupal.org/u/eme"
},
{
"name": "Mohamed Anis Taktak",
"homepage": "https://www.drupal.org/u/matio89"
},
{
"name": "Dakwamine",
"homepage": "https://www.drupal.org/u/dakwamine"
},
{
"name": "Stephen Mulvihill",
"homepage": "https://www.drupal.org/u/smulvih2"
},
{
"name": "mh.marouan",
"homepage": "https://www.drupal.org/user/3203501"
},
{
"name": "smulvih2",
"homepage": "https://www.drupal.org/user/795442"
},
{
"name": "snake_plissken",
"homepage": "https://www.drupal.org/user/3624793"
}
],
"description": "Views Token Argument allows you to use token as contextual filter for Views.",
"homepage": "http://drupal.org/project/views_argument_token",
"support": {
"source": "https://git.drupalcode.org/project/views_argument_token",
"issues": "https://www.drupal.org/project/issues/views_argument_token"
}
},
{
"name": "drupal/views_bulk_edit",
"version": "2.6.0",
@ -15819,6 +15885,7 @@
"drupal/paragraphs": 20,
"drupal/perimeter": 20,
"drupal/selective_better_exposed_filters": 20,
"drupal/views_argument_token": 20,
"drupal/autocomplete_deluxe": 5,
"drupal/bulkdelete": 20,
"drupal/cshs": 20,
@ -15854,5 +15921,5 @@
"prefer-lowest": false,
"platform": [],
"platform-dev": [],
"plugin-api-version": "2.1.0"
"plugin-api-version": "2.0.0"
}

View File

@ -138,6 +138,7 @@ module:
user: 0
video_embed_field: 0
video_embed_wysiwyg: 0
views_argument_token: 0
views_bulk_edit: 0
views_bulk_operations: 0
views_conditional: 0

View File

@ -9,6 +9,7 @@ dependencies:
- ctools
- ctools_block
- panels
- popsu_link_block
- views
id: node-panels_variant-4
label: Projets
@ -147,7 +148,7 @@ variant_settings:
third_party_settings: { }
weight: 0
region: first
weight: -6
weight: -7
uuid: 516b4be2-1072-405a-9b08-7f5c6b629989
context_mapping:
entity: node
@ -219,18 +220,6 @@ variant_settings:
uuid: 80ceb299-5738-410f-8448-79f438df51e7
context_mapping:
entity: node
9879675e-0278-482d-9ae0-bdffb5241640:
id: 'views_block:programme_toc-block_4'
label: ''
provider: views
label_display: '0'
views_label: ''
items_per_page: none
region: first
weight: -5
uuid: 9879675e-0278-482d-9ae0-bdffb5241640
context_mapping:
field_programme_target_id: node
9417d800-7b65-44cb-ac9d-a9d78249824d:
id: 'entity_field:node:field_document'
label: 'Pour aller plus loin'
@ -248,6 +237,38 @@ variant_settings:
uuid: 9417d800-7b65-44cb-ac9d-a9d78249824d
context_mapping:
entity: node
7fd3954d-4223-48fd-8ed9-f719cdb706f0:
id: 'views_block:programme_toc-block_10'
label: ''
provider: views
label_display: '0'
views_label: ''
items_per_page: none
region: first
weight: -6
uuid: 7fd3954d-4223-48fd-8ed9-f719cdb706f0
context_mapping: { }
b12c9988-1636-44e6-8de3-9f1d07a0561e:
id: 'views_block:programme_toc-block_11'
label: ''
provider: views
label_display: '0'
views_label: ''
items_per_page: none
region: first
weight: -5
uuid: b12c9988-1636-44e6-8de3-9f1d07a0561e
context_mapping: { }
9d776e95-a9c0-4293-a62b-1689df4570cb:
id: prog_ressource_link
label: 'Prog ressource link'
provider: popsu_link_block
label_display: '0'
region: first
weight: -4
uuid: 9d776e95-a9c0-4293-a62b-1689df4570cb
link_title: Ressources
context_mapping: { }
id: panels_variant
uuid: 905f0d96-a78c-40f1-bb80-f259e145444f
label: null

View File

@ -440,6 +440,502 @@ display:
- user.permissions
tags:
- 'config:field.storage.node.field_ville'
block_10:
display_plugin: block
id: block_10
display_title: 'Child Prog TOC Projets/villes Block'
position: 1
display_options:
display_extenders:
views_ef_fieldset: { }
block_category: 'Prog TOC (Views)'
display_description: ''
title: 'Child Prog TOC Projets/Villes'
defaults:
title: false
header: false
filters: false
filter_groups: false
fields: false
arguments: false
relationships: false
style: false
row: false
header:
result:
id: result
table: views
field: result
relationship: none
group_type: group
admin_label: ''
empty: false
content: '@total Villes'
plugin_id: result
filters:
status:
value: '1'
table: node_field_data
field: status
plugin_id: boolean
entity_type: node
entity_field: status
id: status
expose:
operator: ''
operator_limit_selection: false
operator_list: { }
group: 1
type:
id: type
table: node_field_data
field: type
relationship: none
group_type: group
admin_label: ''
operator: in
value:
projet: projet
group: 1
exposed: false
expose:
operator_id: ''
label: ''
description: ''
use_operator: false
operator: ''
operator_limit_selection: false
operator_list: { }
identifier: ''
required: false
remember: false
multiple: false
remember_roles:
authenticated: authenticated
reduce: false
is_grouped: false
group_info:
label: ''
description: ''
identifier: ''
optional: true
widget: select
multiple: false
remember: false
default_group: All
default_group_multiple: { }
group_items: { }
entity_type: node
entity_field: type
plugin_id: bundle
field_programme_target_id:
id: field_programme_target_id
table: node__field_programme
field: field_programme_target_id
relationship: none
group_type: group
admin_label: ''
operator: or
value:
4: '4'
5: '5'
6: '6'
7: '7'
group: 1
exposed: false
expose:
operator_id: ''
label: ''
description: ''
use_operator: false
operator: ''
operator_limit_selection: false
operator_list: { }
identifier: ''
required: false
remember: false
multiple: false
remember_roles:
authenticated: authenticated
reduce: false
is_grouped: false
group_info:
label: ''
description: ''
identifier: ''
optional: true
widget: select
multiple: false
remember: false
default_group: All
default_group_multiple: { }
group_items: { }
reduce_duplicates: false
handler: 'default:node'
handler_settings:
target_bundles:
programme: programme
sort:
field: _none
direction: ASC
auto_create: false
auto_create_bundle: ''
widget: select
plugin_id: entity_reference
filter_groups:
operator: AND
groups:
1: AND
fields:
field_ville:
id: field_ville
table: node__field_ville
field: field_ville
relationship: none
group_type: group
admin_label: ''
label: ''
exclude: true
alter:
alter_text: false
text: ''
make_link: false
path: ''
absolute: false
external: false
replace_spaces: false
path_case: none
trim_whitespace: false
alt: ''
rel: ''
link_class: ''
prefix: ''
suffix: ''
target: ''
nl2br: false
max_length: 0
word_boundary: true
ellipsis: true
more_link: false
more_link_text: ''
more_link_path: ''
strip_tags: false
trim: false
preserve_tags: ''
html: false
element_type: ''
element_class: ''
element_label_type: ''
element_label_class: ''
element_label_colon: false
element_wrapper_type: ''
element_wrapper_class: ''
element_default_classes: true
empty: ''
hide_empty: false
empty_zero: false
hide_alter_empty: true
click_sort_column: target_id
type: entity_reference_label
settings:
link: false
group_column: target_id
group_columns: { }
group_rows: true
delta_limit: 0
delta_offset: 0
delta_reversed: false
delta_first_last: false
multi_type: separator
separator: ', '
field_api_classes: false
plugin_id: field
title:
id: title
table: node_field_data
field: title
relationship: none
group_type: group
admin_label: ''
label: ''
exclude: false
alter:
alter_text: true
text: '{{ field_ville }}'
make_link: false
path: ''
absolute: false
external: false
replace_spaces: false
path_case: none
trim_whitespace: false
alt: ''
rel: ''
link_class: ''
prefix: ''
suffix: ''
target: ''
nl2br: false
max_length: 0
word_boundary: true
ellipsis: true
more_link: false
more_link_text: ''
more_link_path: ''
strip_tags: false
trim: false
preserve_tags: ''
html: false
element_type: ''
element_class: ''
element_label_type: ''
element_label_class: ''
element_label_colon: false
element_wrapper_type: ''
element_wrapper_class: ''
element_default_classes: true
empty: ''
hide_empty: false
empty_zero: false
hide_alter_empty: true
click_sort_column: value
type: string
settings:
link_to_entity: true
group_column: value
group_columns: { }
group_rows: true
delta_limit: 0
delta_offset: 0
delta_reversed: false
delta_first_last: false
multi_type: separator
separator: ', '
field_api_classes: false
plugin_id: field
arguments:
field_programme_target_id:
id: field_programme_target_id
table: node__field_programme
field: field_programme_target_id
relationship: none
group_type: group
admin_label: ''
default_action: default
exception:
value: all
title_enable: false
title: All
title_enable: false
title: ''
default_argument_type: token
default_argument_options:
argument: '[node:field_programme]'
process: '1'
and_or: ','
all_option: '1'
debug: 0
default_argument_skip_url: false
summary_options:
base_path: ''
count: true
items_per_page: 25
override: false
summary:
sort_order: asc
number_of_records: 0
format: default_summary
specify_validation: false
validate:
type: none
fail: 'not found'
validate_options: { }
break_phrase: false
not: false
plugin_id: numeric
allow:
configure_sorts: configure_sorts
items_per_page: false
offset: '0'
pager: '0'
hide_fields: '0'
sort_fields: '0'
disable_filters: '0'
relationships: { }
style:
type: default
options:
grouping: { }
row_class: ''
default_row_class: true
row:
type: fields
options:
default_field_elements: true
inline: { }
separator: ''
hide_empty: true
cache_metadata:
max-age: -1
contexts:
- 'languages:language_content'
- 'languages:language_interface'
- url
- 'user.node_grants:view'
- user.permissions
tags:
- 'config:field.storage.node.field_ville'
block_11:
display_plugin: block
id: block_11
display_title: 'Child Prog TOC Themes Block'
position: 1
display_options:
display_extenders:
views_ef_fieldset: { }
block_category: 'Prog TOC (Views)'
display_description: ''
filters:
status:
value: '1'
table: node_field_data
field: status
plugin_id: boolean
entity_type: node
entity_field: status
id: status
expose:
operator: ''
operator_limit_selection: false
operator_list: { }
group: 1
type:
id: type
table: node_field_data
field: type
value:
theme: theme
entity_type: node
entity_field: type
plugin_id: bundle
expose:
operator_limit_selection: false
operator_list: { }
field_programme_target_id:
id: field_programme_target_id
table: node__field_programme
field: field_programme_target_id
relationship: none
group_type: group
admin_label: ''
operator: or
value:
3: '3'
4: '4'
5: '5'
6: '6'
7: '7'
group: 1
exposed: false
expose:
operator_id: ''
label: ''
description: ''
use_operator: false
operator: ''
operator_limit_selection: false
operator_list: { }
identifier: ''
required: false
remember: false
multiple: false
remember_roles:
authenticated: authenticated
reduce: false
is_grouped: false
group_info:
label: ''
description: ''
identifier: ''
optional: true
widget: select
multiple: false
remember: false
default_group: All
default_group_multiple: { }
group_items: { }
reduce_duplicates: false
handler: 'default:node'
handler_settings:
target_bundles:
programme: programme
sort:
field: _none
direction: ASC
auto_create: false
auto_create_bundle: ''
widget: select
plugin_id: entity_reference
defaults:
filters: false
filter_groups: false
title: false
arguments: false
filter_groups:
operator: AND
groups:
1: AND
title: 'Child Prog TOC Themes'
arguments:
field_programme_target_id:
id: field_programme_target_id
table: node__field_programme
field: field_programme_target_id
relationship: none
group_type: group
admin_label: ''
default_action: default
exception:
value: all
title_enable: false
title: All
title_enable: false
title: ''
default_argument_type: token
default_argument_options:
argument: '[node:field_programme]'
process: '1'
and_or: +
all_option: '1'
debug: 0
default_argument_skip_url: false
summary_options:
base_path: ''
count: true
items_per_page: 25
override: false
summary:
sort_order: asc
number_of_records: 0
format: default_summary
specify_validation: false
validate:
type: none
fail: 'not found'
validate_options: { }
break_phrase: false
not: false
plugin_id: numeric
cache_metadata:
max-age: -1
contexts:
- 'languages:language_content'
- 'languages:language_interface'
- url
- 'user.node_grants:view'
- user.permissions
tags:
- 'config:field.storage.node.field_ville'
block_2:
display_plugin: block
id: block_2
@ -846,6 +1342,8 @@ display:
fields: false
arguments: false
relationships: false
style: false
row: false
header:
result:
id: result
@ -1147,6 +1645,19 @@ display:
sort_fields: '0'
disable_filters: '0'
relationships: { }
style:
type: default
options:
grouping: { }
row_class: ''
default_row_class: true
row:
type: fields
options:
default_field_elements: true
inline: { }
separator: ''
hide_empty: true
cache_metadata:
max-age: -1
contexts:

View File

@ -63,18 +63,31 @@ class ProgRessourceLink extends BlockBase {
$build = [];
$node = \Drupal::routeMatch()->getParameter('node');
if ($node instanceof \Drupal\node\Entity\Node) {
$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' => $title,
'#type' => 'link',
'#url' => $url
);
// todo check if programme
if($node->bundle() == 'programme'){
// todo if yes get id
$nid = $node->id();
}else{
// todo if not check if got field_programme
$prog = $node->get('field_programme')->referencedEntities();
if(count($prog)){
$nid = $prog[0]->id();
}
}
if($nid){
// $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' => $title,
'#type' => 'link',
'#url' => $url
);
}
}
return $build;
}