switched admin theme to GIN (plus custom module for terme_reference_tree display)

This commit is contained in:
2026-09-23 20:39:00 +02:00
parent 82354d58b2
commit 0e59bf5129
49 changed files with 318 additions and 181 deletions
+1
View File
@@ -102,6 +102,7 @@
"drupal/flood_control": "^3.0", "drupal/flood_control": "^3.0",
"drupal/gdpr": "^3.1", "drupal/gdpr": "^3.1",
"drupal/genpass": "^2.0", "drupal/genpass": "^2.0",
"drupal/gin": "^4.1",
"drupal/google_analytics": "4.0.3", "drupal/google_analytics": "4.0.3",
"drupal/graphql": "^4.7", "drupal/graphql": "^4.7",
"drupal/image_delta_formatter": "^1.2", "drupal/image_delta_formatter": "^1.2",
Generated
+130 -1
View File
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "607efcd894269e2d35cd5c0176f07299", "content-hash": "2db68d481a2770d815865a51dab2de3b",
"packages": [ "packages": [
{ {
"name": "asm89/stack-cors", "name": "asm89/stack-cors",
@@ -6926,6 +6926,135 @@
"irc": "irc://irc.freenode.org/drupal-contribute" "irc": "irc://irc.freenode.org/drupal-contribute"
} }
}, },
{
"name": "drupal/gin",
"version": "4.1.3",
"source": {
"type": "git",
"url": "https://git.drupalcode.org/project/gin.git",
"reference": "4.1.3"
},
"dist": {
"type": "zip",
"url": "https://ftp.drupal.org/files/projects/gin-4.1.3.zip",
"reference": "4.1.3",
"shasum": "20fa50955fd6ea65cc8d23dbd98a3bf87b853431"
},
"require": {
"drupal/core": "^10.3 || ^11 <11.2",
"drupal/gin_toolbar": "^2.0"
},
"type": "drupal-theme",
"extra": {
"drupal": {
"version": "4.1.3",
"datestamp": "1768553545",
"security-coverage": {
"status": "covered",
"message": "Covered by Drupal's security advisory policy"
}
}
},
"notification-url": "https://packages.drupal.org/8/downloads",
"scripts": {
"phpcs": [
"phpcs -s --runtime-set ignore_warnings_on_exit 1 --runtime-set ignore_errors_on_exit 0 'web/modules/custom'"
]
},
"license": [
"GPL-2.0-or-later"
],
"authors": [
{
"name": "Sascha Eggenberger (saschaeggi)",
"homepage": "https://www.drupal.org/u/saschaeggi",
"role": "Maintainer"
},
{
"name": "saschaeggi",
"homepage": "https://www.drupal.org/user/1999056"
}
],
"description": "For a better Admin and Content Editor Experience.",
"homepage": "https://www.drupal.org/project/gin",
"support": {
"source": "https://git.drupalcode.org/project/gin",
"issues": "https://www.drupal.org/project/issues/gin"
},
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/saschaeggi"
},
{
"type": "other",
"url": "https://paypal.me/saschaeggi"
}
]
},
{
"name": "drupal/gin_toolbar",
"version": "2.1.0",
"source": {
"type": "git",
"url": "https://git.drupalcode.org/project/gin_toolbar.git",
"reference": "2.1.0"
},
"dist": {
"type": "zip",
"url": "https://ftp.drupal.org/files/projects/gin_toolbar-2.1.0.zip",
"reference": "2.1.0",
"shasum": "b312a2dea5379ea5883d92c2a2e5f0499972a083"
},
"require": {
"drupal/core": "^10 || ^11 <11.2"
},
"type": "drupal-module",
"extra": {
"drupal": {
"version": "2.1.0",
"datestamp": "1750245881",
"security-coverage": {
"status": "covered",
"message": "Covered by Drupal's security advisory policy"
}
}
},
"notification-url": "https://packages.drupal.org/8/downloads",
"license": [
"GPL-2.0+"
],
"authors": [
{
"name": "Sascha Eggenberger (saschaeggi)",
"homepage": "https://www.drupal.org/u/saschaeggi",
"role": "Maintainer"
},
{
"name": "saschaeggi",
"homepage": "https://www.drupal.org/user/1999056"
}
],
"description": "Gin Toolbar for Frontend use",
"homepage": "https://www.drupal.org/project/gin_toolbar",
"keywords": [
"Drupal"
],
"support": {
"source": "http://cgit.drupalcode.org/gin_toolbar",
"issues": "https://www.drupal.org/project/issues/gin_toolbar"
},
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/saschaeggi"
},
{
"type": "other",
"url": "https://paypal.me/saschaeggi"
}
]
},
{ {
"name": "drupal/google_analytics", "name": "drupal/google_analytics",
"version": "4.0.3", "version": "4.0.3",
-9
View File
@@ -1,9 +0,0 @@
features:
node_user_picture: false
comment_user_picture: true
comment_user_verification: true
favicon: 1
logo:
use_default: 1
_core:
default_config_hash: Pawk313dlmTas62LfDspeCxjQbNtOVl3_Uyi3REvu1A
@@ -1,22 +0,0 @@
uuid: 00e949ca-6226-408c-99b4-51eb5cce1ae8
langcode: en
status: true
dependencies:
module:
- user
theme:
- adminimal_theme
_core:
default_config_hash: 862sIulDdHmF0vBU1s2j2_a_CwkxursrL0pIrMDzzOg
id: adminimal_theme_login
theme: adminimal_theme
region: content
weight: 10
provider: null
plugin: user_login_block
settings:
id: user_login_block
label: 'User login'
label_display: visible
provider: user
visibility: { }
@@ -1,15 +1,15 @@
uuid: e87279bd-129c-4d21-ab47-e65725cea7dd uuid: e58c9554-72a1-437e-a32c-175659241607
langcode: en langcode: en
status: true status: true
dependencies: dependencies:
module: module:
- system - system
theme: theme:
- adminimal_theme - claro
_core: _core:
default_config_hash: 8by5KRsb7ZpmjHj0ms1d7xAG_xH54AWsOX6spDLJ59U default_config_hash: NjcxOBrPOiK5-38t56DwFBDVY4yer7YSlbRWXFuHe7A
id: adminimal_theme_breadcrumbs id: claro_breadcrumbs
theme: adminimal_theme theme: claro
region: breadcrumb region: breadcrumb
weight: 0 weight: 0
provider: null provider: null
@@ -1,15 +1,15 @@
uuid: f39e652b-a559-493e-b51f-827f5754e0cc uuid: 37741b53-2634-405d-b8cd-2fc81e5240ec
langcode: en langcode: en
status: true status: true
dependencies: dependencies:
module: module:
- system - system
theme: theme:
- matminimal - claro
_core: _core:
default_config_hash: BlNSz6WPq_9ciuNhB084tFZB4h4tU_kMemH7FGemEWg default_config_hash: a0Yyx1GeyKarZ4T_yXQBR_ZFKnXiFLtxAb6gWLd8nr0
id: matminimal_content id: claro_content
theme: matminimal theme: claro
region: content region: content
weight: 0 weight: 0
provider: null provider: null
@@ -1,15 +1,15 @@
uuid: 3acdde3f-5b1d-4e30-b766-54cd3b9766a1 uuid: bf3e42aa-ea64-4c71-8f19-57c781b6b79c
langcode: en langcode: en
status: true status: true
dependencies: dependencies:
module: module:
- help - help
theme: theme:
- matminimal - claro
_core: _core:
default_config_hash: ucMk2FYh45Dz_S_GLmvzn8WbWXzifLBVy4JcDES87WM default_config_hash: jccFSSVqV0WCDb6NtML1VWAWTtDbZ-zn5YgTRMgMrIM
id: matminimal_help id: claro_help
theme: matminimal theme: claro
region: help region: help
weight: 0 weight: 0
provider: null provider: null
@@ -1,13 +1,13 @@
uuid: e3176c37-8d5d-47eb-b1d8-d42c094241d5 uuid: 011ec8b9-28da-4360-8df9-55b0c3c00bd6
langcode: en langcode: en
status: true status: true
dependencies: dependencies:
theme: theme:
- matminimal - claro
_core: _core:
default_config_hash: aCyPNuMz56ZbH8auMeZZeKGMKzO53IwX8rXiWcu_UCA default_config_hash: CdXfDmRgAvms7EQovxxWPdYi0GitxeRbVtScYK16ZH0
id: matminimal_local_actions id: claro_local_actions
theme: matminimal theme: claro
region: content region: content
weight: -10 weight: -10
provider: null provider: null
@@ -1,15 +1,15 @@
uuid: cded6c78-ecd4-4e31-b8e2-cfde506df5a6 uuid: 4d846cfb-f623-41c8-8d45-3467db7bed30
langcode: en langcode: en
status: true status: true
dependencies: dependencies:
module: module:
- system - system
theme: theme:
- matminimal - claro
_core: _core:
default_config_hash: 446KyRw4ws5QsAoohT2XtSZDr2WOEVSOu650fwm4T-k default_config_hash: '-Ac3ISpIT0PQ-whzD7_dw0SdKi6dAbRFNWdSjOiVDqg'
id: matminimal_messages id: claro_messages
theme: matminimal theme: claro
region: highlighted region: highlighted
weight: 0 weight: 0
provider: null provider: null
@@ -1,13 +1,13 @@
uuid: 403e7822-59c5-43b1-b625-2934c1fcab3d uuid: d570c63a-ebcd-4535-a71c-05fd58ba2c2d
langcode: en langcode: en
status: true status: true
dependencies: dependencies:
theme: theme:
- matminimal - claro
_core: _core:
default_config_hash: TrJQ5nNEMQI1XWnz-jxEzAuPu8RA4r6KmRqIEp8Jtqw default_config_hash: fNwDdW063tk_ktzSWzZVeQS9wzvLooVO280BQ9WrsIs
id: matminimal_page_title id: claro_page_title
theme: matminimal theme: claro
region: header region: header
weight: -30 weight: -30
provider: null provider: null
@@ -1,13 +1,13 @@
uuid: 6a239d6e-89b4-4e15-886d-6df296eeb40a uuid: 759758f6-4928-4005-9c51-e96985ca103b
langcode: en langcode: en
status: true status: true
dependencies: dependencies:
theme: theme:
- matminimal - claro
_core: _core:
default_config_hash: oI24LNAQnSK7BKcLSk5XxMohBFJKTzuoaZ0-5nQI6Ng default_config_hash: ACjBZI5shAMiiUpsz-inLYVXDqNNXRnSzAWV3kV_8Hw
id: matminimal_primary_local_tasks id: claro_primary_local_tasks
theme: matminimal theme: claro
region: header region: header
weight: 0 weight: 0
provider: null provider: null
@@ -1,13 +1,13 @@
uuid: bc3b02cb-de5d-45fd-b700-6e71847e05fd uuid: 0ab23859-0a62-4db7-839a-a907df5653b4
langcode: en langcode: en
status: true status: true
dependencies: dependencies:
theme: theme:
- matminimal - claro
_core: _core:
default_config_hash: hnshSujVSrLEmdnW_GsJk4o-DwwuUwTgGU2NNxyZy_E default_config_hash: 2L0geP-ixCbCkEpW6BVF6H7vDUZN4ea07_Y9CociQm4
id: matminimal_secondary_local_tasks id: claro_secondary_local_tasks
theme: matminimal theme: claro
region: pre_content region: pre_content
weight: 0 weight: 0
provider: null provider: null
@@ -0,0 +1,22 @@
uuid: 3a30a65d-4c69-4db9-942a-a84e2e1698b0
langcode: en
status: true
dependencies:
module:
- system
theme:
- gin
_core:
default_config_hash: y9X3xgCsO59pQyzNLzY1D3SDJJxCHILLWkpPnmuTJ2E
id: gin_breadcrumbs
theme: gin
region: breadcrumb
weight: 0
provider: null
plugin: system_breadcrumb_block
settings:
id: system_breadcrumb_block
label: Breadcrumbs
label_display: '0'
provider: system
visibility: { }
@@ -1,15 +1,15 @@
uuid: ac411d7b-fd31-4d97-b96f-0a74c66d18c0 uuid: 0eca51c0-6c89-496c-bd89-36259f9456fb
langcode: en langcode: en
status: true status: true
dependencies: dependencies:
module: module:
- system - system
theme: theme:
- adminimal_theme - gin
_core: _core:
default_config_hash: 80N66GdzEvwqi1m-_GZ-ulkk8AJG9beoXcZ4-pMVKjI default_config_hash: hBHXB7hC05XU7pDYzETt-GUcpFlogK1gkjyAsg0Ym58
id: adminimal_theme_content id: gin_content
theme: adminimal_theme theme: gin
region: content region: content
weight: 0 weight: 0
provider: null provider: null
@@ -1,15 +1,15 @@
uuid: af7eb2f8-8d22-4f50-bc9d-1f361f4d5314 uuid: 157367b3-9c92-403c-ac36-7b59788db4c8
langcode: en langcode: en
status: true status: true
dependencies: dependencies:
module: module:
- help - help
theme: theme:
- adminimal_theme - gin
_core: _core:
default_config_hash: PfozGAnWQRNy00G6KEnZjIu9b2lGuWg-j-GT_-Ejglc default_config_hash: 8nOAry2oKqJOr0zbrlJ3sZHDFJLIO6j-0vT0K_TYca4
id: adminimal_theme_help id: gin_help
theme: adminimal_theme theme: gin
region: help region: help
weight: 0 weight: 0
provider: null provider: null
@@ -1,13 +1,13 @@
uuid: fc91517b-1dbd-44d4-b074-02d0295d93af uuid: 7121f169-c890-4285-9c41-4ce557d292c0
langcode: en langcode: en
status: true status: true
dependencies: dependencies:
theme: theme:
- adminimal_theme - gin
_core: _core:
default_config_hash: ik4PTMlBD0MWansnSMpSXq5SUlWRJ1IVVt6C7AIbQmc default_config_hash: OQ9aJ-4qVwK1x00o9EOYK4eFDjQr_HLpbPiJaPSVZiQ
id: adminimal_theme_local_actions id: gin_local_actions
theme: adminimal_theme theme: gin
region: content region: content
weight: -10 weight: -10
provider: null provider: null
@@ -1,15 +1,15 @@
uuid: 32029ead-92c4-47d5-9f34-29989237c458 uuid: c226a098-94ea-43d5-8ccc-fc8acd965fae
langcode: en langcode: en
status: true status: true
dependencies: dependencies:
module: module:
- system - system
theme: theme:
- adminimal_theme - gin
_core: _core:
default_config_hash: YqKTtloWJ8FjLtfVNfrHaK6kVgxT67lC1cJ3j6i6WLo default_config_hash: WvPhI8OwllG0gE69-F8qL3ai3nd5SbYD6JpmEuZcyok
id: adminimal_theme_messages id: gin_messages
theme: adminimal_theme theme: gin
region: highlighted region: highlighted
weight: 0 weight: 0
provider: null provider: null
@@ -1,13 +1,13 @@
uuid: 239e4199-5465-451a-ade4-230f0e9c1a94 uuid: faa90181-7878-4a26-a19b-a2268605236e
langcode: en langcode: en
status: true status: true
dependencies: dependencies:
theme: theme:
- adminimal_theme - gin
_core: _core:
default_config_hash: Z3nlZUh2mSJP3apMrJWt-duS-aLyP79rcfu_0wpPmDs default_config_hash: HLQY2xgby8K3vN_98hiOSasOhm9pdCsH234-s0duJ8Q
id: adminimal_theme_page_title id: gin_page_title
theme: adminimal_theme theme: gin
region: header region: header
weight: -30 weight: -30
provider: null provider: null
@@ -1,13 +1,13 @@
uuid: cc6bfeb2-e3fe-42c2-96af-12c45092e478 uuid: 5a7eb531-08a5-4e27-8aa9-3f5724c165db
langcode: en langcode: en
status: true status: true
dependencies: dependencies:
theme: theme:
- adminimal_theme - gin
_core: _core:
default_config_hash: CyX_aDKAka2_eihevNLscCHDYrzDgIqwWzFVEFRKIww default_config_hash: Hh01DLj9k7UnNdPpOQXHZHW7GHf2OPNDQyCJF7_R9ac
id: adminimal_theme_primary_local_tasks id: gin_primary_local_tasks
theme: adminimal_theme theme: gin
region: header region: header
weight: 0 weight: 0
provider: null provider: null
@@ -1,13 +1,13 @@
uuid: e589835e-0479-452c-9686-46a63bae4fdc uuid: f9fb0521-8dc1-41c9-bfcb-59ac5bb00b9e
langcode: en langcode: en
status: true status: true
dependencies: dependencies:
theme: theme:
- adminimal_theme - gin
_core: _core:
default_config_hash: DJ7Om1C2xWr2GI8CjZaZtyWpP-0S3hRR3oROZl1oesc default_config_hash: BCWhood0xXFQYqxFgL1spXdb9KeIuXH1YvTdjIEedDg
id: adminimal_theme_secondary_local_tasks id: gin_secondary_local_tasks
theme: adminimal_theme theme: gin
region: pre_content region: pre_content
weight: 0 weight: 0
provider: null provider: null
@@ -1,30 +0,0 @@
uuid: 6844a7d0-31bc-4cea-a72b-c0bb4c29b530
langcode: en
status: true
dependencies:
module:
- system
- user
theme:
- matminimal
_core:
default_config_hash: 84K5xNLNmM7MeFs4CG09vGXFdHmNTNSYeppjzVQceL4
id: matminimal_breadcrumbs
theme: matminimal
region: breadcrumb
weight: 0
provider: null
plugin: system_breadcrumb_block
settings:
id: system_breadcrumb_block
label: Breadcrumbs
label_display: '0'
provider: system
visibility:
user_role:
id: user_role
negate: false
context_mapping:
user: '@user.current_user_context:current_user'
roles:
root: root
@@ -1,22 +0,0 @@
uuid: 7286997c-90ed-48da-a4e9-c18fb0feb974
langcode: en
status: true
dependencies:
module:
- user
theme:
- matminimal
_core:
default_config_hash: LH8eG33s_xdvbTg0S_jtOTku11tLnM9ZK62tjnZiEyk
id: matminimal_login
theme: matminimal
region: content
weight: 10
provider: null
plugin: user_login_block
settings:
id: user_login_block
label: 'User login'
label_display: visible
provider: user
visibility: { }
@@ -171,13 +171,16 @@ third_party_settings:
region: content region: content
parent_name: '' parent_name: ''
weight: 1 weight: 1
format_type: tab format_type: details_sidebar
format_settings: format_settings:
classes: '' classes: ''
show_empty_fields: false
id: '' id: ''
formatter: open label_as_html: false
open: true
description: '' description: ''
required_fields: true required_fields: true
weight: -100
id: node.materiau.default id: node.materiau.default
targetEntityType: node targetEntityType: node
bundle: materiau bundle: materiau
+4 -3
View File
@@ -95,6 +95,7 @@ module:
gdpr_fields: 0 gdpr_fields: 0
gdpr_tasks: 0 gdpr_tasks: 0
genpass: 0 genpass: 0
gin_toolbar: 0
graphql: 0 graphql: 0
help: 0 help: 0
honeypot: 0 honeypot: 0
@@ -126,6 +127,7 @@ module:
mailjet_event: 0 mailjet_event: 0
maillog: 0 maillog: 0
masquerade: 0 masquerade: 0
materio_admin: 0
materio_commerce: 0 materio_commerce: 0
materio_decoupled: 0 materio_decoupled: 0
materio_expo: 0 materio_expo: 0
@@ -239,8 +241,7 @@ module:
theme: theme:
stable: 0 stable: 0
classy: 0 classy: 0
seven: 0
adminimal_theme: 0
matminimal: 0
materiotheme: 0 materiotheme: 0
claro: 0
gin: 0
profile: figli_starter_kit profile: figli_starter_kit
+26
View File
@@ -0,0 +1,26 @@
_core:
default_config_hash: c8aZhkIY8zHUo0_UOll4vVs_l48dHL_gBqbvfuAM0Rs
favicon:
use_default: true
features:
comment_user_picture: true
comment_user_verification: true
favicon: true
node_user_picture: false
logo:
use_default: true
third_party_settings:
shortcut:
module_link: true
preset_accent_color: blue
preset_focus_color: gin
enable_darkmode: '1'
classic_toolbar: horizontal
secondary_toolbar_frontend: true
high_contrast_mode: false
accent_color: ''
focus_color: ''
layout_density: small
show_description_toggle: false
show_user_theme_settings: false
sticky_action_buttons: true
@@ -1,2 +0,0 @@
settings:
label: 'Connexion utilisateur'
@@ -1,2 +0,0 @@
settings:
label: 'Connexion utilisateur'
-12
View File
@@ -1,12 +0,0 @@
features:
node_user_picture: false
comment_user_picture: true
comment_user_verification: true
favicon: 1
logo:
use_default: 1
favicon:
use_default: 0
path: themes/custom/matminimal/icon.png
mimetype: image/png
custom_css: 0
+1 -1
View File
@@ -1,4 +1,4 @@
_core: _core:
default_config_hash: TpdA4rsOBAawnqeon9A-Ooht_4VO3hHKib79xyHcTyg default_config_hash: TpdA4rsOBAawnqeon9A-Ooht_4VO3hHKib79xyHcTyg
admin: matminimal admin: gin
default: materiotheme default: materiotheme
@@ -0,0 +1,17 @@
/**
* Term reference tree widget: selection tree on the left, sortable track
* list on the right. Transposed from the retired matminimal theme.
*/
.term-reference-tree > ul,
.term-reference-tree aside.term-reference-tree-track-list {
display: inline-block;
vertical-align: top;
}
.term-reference-tree > ul {
padding-right: 1em;
min-width: 45%;
}
.term-reference-tree aside.term-reference-tree-track-list {
border-left: 1px solid #aaa;
padding-left: 1em;
}
@@ -0,0 +1,7 @@
name: 'Materio Admin'
type: module
description: 'Admin back-office enhancements (widget layouts and theming support for the Gin admin theme).'
package: Materio
core_version_requirement: ^10 || ^11
dependencies:
- 'term_reference_tree'
@@ -0,0 +1,5 @@
term_reference_tree:
version: 1.0
css:
theme:
css/term-reference-tree.css: {}
@@ -0,0 +1,25 @@
<?php
/**
* @file
* Admin back-office enhancements.
*/
use Drupal\term_reference_tree\Plugin\Field\FieldWidget\TermReferenceTree;
/**
* Implements hook_field_widget_single_element_form_alter().
*
* Attaches the widget layout library wherever the term reference tree widget
* renders (thesaurus on materiau, etc.), so the selection tree (left) and the
* sortable track list (right) sit side by side.
*
* Transposed from the retired matminimal theme CSS, which was tied to the old
* adminimal-based admin theme. The selectors target the widget's own markup
* classes and are admin-theme agnostic (works under Gin 4 and Gin 5).
*/
function materio_admin_field_widget_single_element_form_alter(array &$element, \Drupal\Core\Form\FormStateInterface $form_state, array $context) {
if (isset($context['widget']) && $context['widget'] instanceof TermReferenceTree) {
$element['#attached']['library'][] = 'materio_admin/term_reference_tree';
}
}