diff --git a/composer.json b/composer.json index d2afcd27..b747693a 100644 --- a/composer.json +++ b/composer.json @@ -26,6 +26,7 @@ "drupal/geocoder": "^3.20", "drupal/geofield": "^1.22", "drupal/hreflang": "^1.9", + "drupal/iframe": "^2.21", "drupal/image_field_caption": "^1.1", "drupal/imce": "^2.4", "drupal/leaflet": "^2.1", diff --git a/composer.lock b/composer.lock index b3561994..3176ee51 100644 --- a/composer.lock +++ b/composer.lock @@ -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": "8ce19b9b3d6c361bfc8cd8ceac3ad67f", + "content-hash": "6e11ee7deda8667c1f02cea8f0ac98e3", "packages": [ { "name": "ajgl/breakpoint-twig-extension", @@ -5896,6 +5896,61 @@ "source": "https://git.drupalcode.org/project/hreflang" } }, + { + "name": "drupal/iframe", + "version": "2.21.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/iframe.git", + "reference": "8.x-2.21" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/iframe-8.x-2.21.zip", + "reference": "8.x-2.21", + "shasum": "9eab9a2473fbc9c9717a4d8bd5d49a182e3dd32a" + }, + "require": { + "drupal/core": "^8.8 || ^9 || ^10" + }, + "require-dev": { + "drupal/token": "^1.0", + "mglaman/phpstan-drupal": "^1.1", + "palantirnet/drupal-rector": "^0.12", + "phpspec/prophecy-phpunit": "^2.0", + "phpstan/phpstan": "^1.3", + "phpunit/phpunit": "^9.5", + "symfony/phpunit-bridge": "^6.0" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-2.21", + "datestamp": "1671581281", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Steffen Schuessler", + "homepage": "https://www.drupal.org/user/340152", + "email": "drupal@neffets.de", + "role": "Developer" + } + ], + "description": "Defines a simple iframe field type.", + "homepage": "http://drupal.org/project/iframe", + "support": { + "source": "https://git.drupalcode.org/project/iframe" + } + }, { "name": "drupal/image_field_caption", "version": "1.2.0", diff --git a/config/sync/core.base_field_override.node.iframe.promote.yml b/config/sync/core.base_field_override.node.iframe.promote.yml new file mode 100644 index 00000000..8ceabd6c --- /dev/null +++ b/config/sync/core.base_field_override.node.iframe.promote.yml @@ -0,0 +1,22 @@ +uuid: 0c02dd41-2dec-4cbf-b889-d0941b4fcb92 +langcode: fr +status: true +dependencies: + config: + - node.type.iframe +id: node.iframe.promote +field_name: promote +entity_type: node +bundle: iframe +label: 'Promu en page d''accueil' +description: '' +required: false +translatable: true +default_value: + - + value: 0 +default_value_callback: '' +settings: + on_label: Activé + off_label: Désactivé +field_type: boolean diff --git a/config/sync/core.entity_form_display.node.iframe.default.yml b/config/sync/core.entity_form_display.node.iframe.default.yml new file mode 100644 index 00000000..e2a18c31 --- /dev/null +++ b/config/sync/core.entity_form_display.node.iframe.default.yml @@ -0,0 +1,95 @@ +uuid: 52d6640e-1538-4982-9b6f-4bdc3715879f +langcode: fr +status: true +dependencies: + config: + - field.field.node.iframe.field_iframe + - node.type.iframe + module: + - iframe + - path +id: node.iframe.default +targetEntityType: node +bundle: iframe +mode: default +content: + created: + type: datetime_timestamp + weight: 10 + region: content + settings: { } + third_party_settings: { } + field_iframe: + type: iframe_urlwidthheight + weight: 121 + region: content + settings: + headerlevel: '3' + class: '' + frameborder: '0' + scrolling: auto + transparency: '0' + allowfullscreen: '0' + tokensupport: '0' + width: '' + height: '' + expose_class: false + third_party_settings: { } + langcode: + type: language_select + weight: 2 + region: content + settings: + include_locked: true + third_party_settings: { } + path: + type: path + weight: 30 + region: content + settings: { } + third_party_settings: { } + promote: + type: boolean_checkbox + weight: 15 + region: content + settings: + display_label: true + third_party_settings: { } + status: + type: boolean_checkbox + weight: 120 + region: content + settings: + display_label: true + third_party_settings: { } + sticky: + type: boolean_checkbox + weight: 16 + region: content + settings: + display_label: true + third_party_settings: { } + title: + type: string_textfield + weight: -5 + region: content + settings: + size: 60 + placeholder: '' + third_party_settings: { } + uid: + type: entity_reference_autocomplete + weight: 5 + region: content + settings: + match_operator: CONTAINS + match_limit: 10 + size: 60 + placeholder: '' + third_party_settings: { } + url_redirects: + weight: 50 + region: content + settings: { } + third_party_settings: { } +hidden: { } diff --git a/config/sync/core.entity_view_display.node.iframe.default.yml b/config/sync/core.entity_view_display.node.iframe.default.yml new file mode 100644 index 00000000..75623724 --- /dev/null +++ b/config/sync/core.entity_view_display.node.iframe.default.yml @@ -0,0 +1,44 @@ +uuid: 081de4d4-1ad7-4163-857d-4e8226cf82a3 +langcode: fr +status: true +dependencies: + config: + - field.field.node.iframe.field_iframe + - node.type.iframe + module: + - iframe + - panelizer + - user +third_party_settings: + panelizer: + enable: false + custom: false + allow: false + default: default +id: node.iframe.default +targetEntityType: node +bundle: iframe +mode: default +content: + field_iframe: + type: iframe_only + label: hidden + settings: + url: '' + title: '' + headerlevel: '3' + class: '' + frameborder: '0' + scrolling: '' + transparency: '0' + allowfullscreen: '0' + tokensupport: '0' + width: '' + height: '' + third_party_settings: { } + weight: 101 + region: content +hidden: + langcode: true + links: true + search_api_excerpt: true diff --git a/config/sync/core.entity_view_display.node.iframe.teaser.yml b/config/sync/core.entity_view_display.node.iframe.teaser.yml new file mode 100644 index 00000000..83ea280f --- /dev/null +++ b/config/sync/core.entity_view_display.node.iframe.teaser.yml @@ -0,0 +1,24 @@ +uuid: f021abc2-af88-46e6-b661-5afea3651e4a +langcode: fr +status: true +dependencies: + config: + - core.entity_view_mode.node.teaser + - field.field.node.iframe.field_iframe + - node.type.iframe + module: + - user +id: node.iframe.teaser +targetEntityType: node +bundle: iframe +mode: teaser +content: + links: + settings: { } + third_party_settings: { } + weight: 100 + region: content +hidden: + field_iframe: true + langcode: true + search_api_excerpt: true diff --git a/config/sync/core.extension.yml b/config/sync/core.extension.yml index 8b446695..4cf207aa 100644 --- a/config/sync/core.extension.yml +++ b/config/sync/core.extension.yml @@ -65,6 +65,7 @@ module: help: 0 honeypot: 0 hreflang: 0 + iframe: 0 image: 0 image_field_caption: 0 imce: 0 diff --git a/config/sync/field.field.node.iframe.field_iframe.yml b/config/sync/field.field.node.iframe.field_iframe.yml new file mode 100644 index 00000000..43f60ee3 --- /dev/null +++ b/config/sync/field.field.node.iframe.field_iframe.yml @@ -0,0 +1,31 @@ +uuid: d0f0bd5d-107d-47a3-bacc-ebee877ca405 +langcode: fr +status: true +dependencies: + config: + - field.storage.node.field_iframe + - node.type.iframe + module: + - iframe +id: node.iframe.field_iframe +field_name: field_iframe +entity_type: node +bundle: iframe +label: Iframe +description: '' +required: true +translatable: false +default_value: { } +default_value_callback: '' +settings: + title: null + headerlevel: '3' + class: '' + frameborder: '0' + scrolling: auto + transparency: '0' + allowfullscreen: '1' + tokensupport: '2' + width: null + height: null +field_type: iframe diff --git a/config/sync/field.storage.node.field_iframe.yml b/config/sync/field.storage.node.field_iframe.yml new file mode 100644 index 00000000..015a51e1 --- /dev/null +++ b/config/sync/field.storage.node.field_iframe.yml @@ -0,0 +1,19 @@ +uuid: 84e70d62-831e-496f-a7a9-e6225d2dd1a4 +langcode: fr +status: true +dependencies: + module: + - iframe + - node +id: node.field_iframe +field_name: field_iframe +entity_type: node +type: iframe +settings: { } +module: iframe +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/config/sync/language.content_settings.node.iframe.yml b/config/sync/language.content_settings.node.iframe.yml new file mode 100644 index 00000000..1ab9e971 --- /dev/null +++ b/config/sync/language.content_settings.node.iframe.yml @@ -0,0 +1,11 @@ +uuid: 6ab4b8d1-9c74-4a9a-95de-7d6b27a129d9 +langcode: fr +status: true +dependencies: + config: + - node.type.iframe +id: node.iframe +target_entity_type_id: node +target_bundle: iframe +default_langcode: site_default +language_alterable: false diff --git a/config/sync/node.type.iframe.yml b/config/sync/node.type.iframe.yml new file mode 100644 index 00000000..18a58cc7 --- /dev/null +++ b/config/sync/node.type.iframe.yml @@ -0,0 +1,20 @@ +uuid: 1e7594b5-4cd0-4ee9-9fab-45a537169d0e +langcode: fr +status: true +dependencies: + module: + - menu_ui +third_party_settings: + menu_ui: + available_menus: + - main + - tools + - footer + parent: 'main:' +name: Iframe +type: iframe +description: '' +help: '' +new_revision: true +preview_mode: 1 +display_submitted: false diff --git a/config/sync/pathauto.pattern.static_iframe.yml b/config/sync/pathauto.pattern.static_iframe.yml new file mode 100644 index 00000000..80316776 --- /dev/null +++ b/config/sync/pathauto.pattern.static_iframe.yml @@ -0,0 +1,23 @@ +uuid: 6a174966-dddf-4f90-96e9-09817460a3ef +langcode: fr +status: true +dependencies: + module: + - node +id: static_iframe +label: 'Static & iframe' +type: 'canonical_entities:node' +pattern: '[node:title]' +selection_criteria: + 178283d5-16a2-40ce-b88d-2d9ac55b321b: + id: 'entity_bundle:node' + negate: false + uuid: 178283d5-16a2-40ce-b88d-2d9ac55b321b + context_mapping: + node: node + bundles: + iframe: iframe + static: static +selection_logic: and +weight: -5 +relationships: { } diff --git a/config/sync/user.role.admin.yml b/config/sync/user.role.admin.yml index d4e7bcc8..427f7bee 100644 --- a/config/sync/user.role.admin.yml +++ b/config/sync/user.role.admin.yml @@ -6,6 +6,7 @@ dependencies: - filter.format.wysiwyg - node.type.actualite - node.type.evenement + - node.type.iframe - node.type.programme - node.type.projet - node.type.ressource @@ -75,14 +76,17 @@ permissions: - 'delete all revisions' - 'delete any actualite content' - 'delete any evenement content' + - 'delete any iframe content' - 'delete any programme content' - 'delete any projet content' - 'delete any ressource content' - 'delete any static content' - 'delete any theme content' - 'delete evenement revisions' + - 'delete iframe revisions' - 'delete own actualite content' - 'delete own evenement content' + - 'delete own iframe content' - 'delete own programme content' - 'delete own projet content' - 'delete own ressource content' @@ -100,6 +104,7 @@ permissions: - 'delete theme revisions' - 'edit any actualite content' - 'edit any evenement content' + - 'edit any iframe content' - 'edit any programme content' - 'edit any projet content' - 'edit any ressource content' @@ -107,6 +112,7 @@ permissions: - 'edit any theme content' - 'edit own actualite content' - 'edit own evenement content' + - 'edit own iframe content' - 'edit own programme content' - 'edit own projet content' - 'edit own ressource content' @@ -135,6 +141,7 @@ permissions: - 'revert actualite revisions' - 'revert all revisions' - 'revert evenement revisions' + - 'revert iframe revisions' - 'revert programme revisions' - 'revert projet revisions' - 'revert ressource revisions' @@ -148,6 +155,7 @@ permissions: - 'view actualite revisions' - 'view all revisions' - 'view evenement revisions' + - 'view iframe revisions' - 'view own unpublished content' - 'view programme revisions' - 'view projet revisions' diff --git a/config/sync/user.role.editeur.yml b/config/sync/user.role.editeur.yml index 5b7d8dc8..bb725713 100644 --- a/config/sync/user.role.editeur.yml +++ b/config/sync/user.role.editeur.yml @@ -6,6 +6,7 @@ dependencies: - filter.format.wysiwyg - node.type.actualite - node.type.evenement + - node.type.iframe - node.type.programme - node.type.projet - node.type.ressource @@ -52,6 +53,7 @@ permissions: - 'delete any ressource content' - 'edit any actualite content' - 'edit any evenement content' + - 'edit any iframe content' - 'edit any programme content' - 'edit any projet content' - 'edit any ressource content' @@ -65,6 +67,7 @@ permissions: - 'revert actualite revisions' - 'revert all revisions' - 'revert evenement revisions' + - 'revert iframe revisions' - 'revert programme revisions' - 'revert projet revisions' - 'revert ressource revisions' @@ -74,6 +77,7 @@ permissions: - 'view actualite revisions' - 'view all revisions' - 'view evenement revisions' + - 'view iframe revisions' - 'view own unpublished content' - 'view programme revisions' - 'view projet revisions' diff --git a/config/sync/views.view.content.yml b/config/sync/views.view.content.yml index bb186630..06c9e72d 100644 --- a/config/sync/views.view.content.yml +++ b/config/sync/views.view.content.yml @@ -27,6 +27,7 @@ dependencies: - image.style.thumbnail - node.type.actualite - node.type.evenement + - node.type.iframe - node.type.programme - node.type.projet - node.type.ressource @@ -3473,7 +3474,7 @@ display: display_plugin: page position: 1 display_options: - title: Statiques + title: 'Statiques & Iframe' fields: node_bulk_form: id: node_bulk_form @@ -3785,6 +3786,7 @@ display: plugin_id: bundle operator: in value: + iframe: iframe static: static group: 1 exposed: false @@ -3936,7 +3938,7 @@ display: path: admin/content/Statics menu: type: tab - title: Statics + title: 'Statics & Iframe' description: '' weight: -10 expanded: false diff --git a/web/modules/custom/editors_menus/editors_menus.links.action.yml b/web/modules/custom/editors_menus/editors_menus.links.action.yml index 1f0e05b8..71ee6804 100644 --- a/web/modules/custom/editors_menus/editors_menus.links.action.yml +++ b/web/modules/custom/editors_menus/editors_menus.links.action.yml @@ -30,6 +30,14 @@ editors_menus.static_add: appears_on: - view.content.page_4 +editors_menus.iframe_add: + route_name: node.add + route_parameters: + node_type: 'iframe' + title: 'Add Iframe' + appears_on: + - view.content.page_4 + editors_menus.ressource_add: route_name: node.add route_parameters: