diff --git a/composer.json b/composer.json index 137f04e897..2178803e63 100644 --- a/composer.json +++ b/composer.json @@ -33,8 +33,8 @@ "drupal/better_exposed_filters": "^6.0", "drupal/cer": "^5.0@beta", "drupal/change_labels": "dev-3326097-remove-dependency-on-drupal-autoservices#7f92f90b456ac2f394dd434257e39e1d9b3086eb", - "drupal/clientside_validation": "^4.0", "drupal/ckeditor_abbreviation": "^4.0@alpha", + "drupal/clientside_validation": "^4.0", "drupal/coder": "^8.3", "drupal/codit_menu_tools": "^1.0@alpha", "drupal/components": "^3.0@beta", @@ -60,6 +60,8 @@ "drupal/dropzonejs": "^2.0", "drupal/dynamic_entity_reference": "^3.0", "drupal/easy_breadcrumb": "^2.0", + "drupal/eca": "^1.1", + "drupal/eca_cm": "^1.0", "drupal/embed": "^1.3", "drupal/entity_block": "^1.0@beta", "drupal/entity_browser": "^2.4", diff --git a/composer.lock b/composer.lock index 9965b539df..305c3e9685 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": "2f007998a29adf11a319f62126b2dd24", + "content-hash": "c0265aabcf4e876c01f286498a53d195", "packages": [ { "name": "asm89/stack-cors", @@ -2190,6 +2190,67 @@ ], "time": "2023-05-17T18:32:04+00:00" }, + { + "name": "dragonmantank/cron-expression", + "version": "v3.3.3", + "source": { + "type": "git", + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0", + "webmozart/assert": "^1.0" + }, + "replace": { + "mtdowling/cron-expression": "^1.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-webmozart-assert": "^1.0", + "phpunit/phpunit": "^7.0|^8.0|^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Cron\\": "src/Cron/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Tankersley", + "email": "chris@ctankersley.com", + "homepage": "https://github.com/dragonmantank" + } + ], + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "keywords": [ + "cron", + "schedule" + ], + "support": { + "issues": "https://github.com/dragonmantank/cron-expression/issues", + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.3" + }, + "funding": [ + { + "url": "https://github.com/dragonmantank", + "type": "github" + } + ], + "time": "2023-08-10T19:36:49+00:00" + }, { "name": "drupal/address", "version": "1.12.0", @@ -5025,6 +5086,174 @@ "issues": "https://www.drupal.org/project/issues/easy_breadcrumb" } }, + { + "name": "drupal/eca", + "version": "1.1.4", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/eca.git", + "reference": "1.1.4" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/eca-1.1.4.zip", + "reference": "1.1.4", + "shasum": "fce478b8c6224997dc858bff1f8f57523c870de7" + }, + "require": { + "dragonmantank/cron-expression": "^3.1", + "drupal/core": "^9.4 || ^10", + "ext-dom": "*", + "ext-json": "*", + "mtownsend/xml-to-array": "^2.0", + "php": ">=7.4" + }, + "require-dev": { + "drupal/eca_ui": "*", + "drupal/token": "^1.10" + }, + "suggest": { + "drupal/context_stack": "Integrates ECA with Context Stacks for more fine-grained control", + "drupal/eca_state_machine": "Integrates ECA with State Machine functionality", + "drupal/eca_tamper": "Integrates ECA with the Tamper API", + "drupal/entity_share": "Integrates ECA with Entity Share functionality", + "drupal/group_action": "Integrates ECA with Group Actions if you're using groups", + "drupal/token": "Provides the token browser in the UI and offers more token values" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "1.1.4", + "datestamp": "1689338278", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + }, + "drush": { + "services": { + "drush.services.yml": "^9 || ^10 || ^11" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "boromino", + "homepage": "https://www.drupal.org/user/859722" + }, + { + "name": "danielspeicher", + "homepage": "https://www.drupal.org/user/3621778" + }, + { + "name": "jurgenhaas", + "homepage": "https://www.drupal.org/user/168924" + } + ], + "description": "Event, Conditions, Actions - powerful, versatile, and user-friendly rules engine for Drupal", + "homepage": "https://www.drupal.org/project/eca", + "support": { + "source": "https://drupal.org/project/eca", + "issues": "https://drupal.org/project/issues/eca" + } + }, + { + "name": "drupal/eca_cm", + "version": "1.0.7", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/eca_cm.git", + "reference": "1.0.7" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/eca_cm-1.0.7.zip", + "reference": "1.0.7", + "shasum": "86d9866232c41fbd71573b88f42bcb270bfcd3dc" + }, + "require": { + "drupal/core": "^9 || ^10", + "drupal/eca": "^1", + "drupal/eca_ui": "*" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "1.0.7", + "datestamp": "1692266259", + "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": "mxh", + "homepage": "https://www.drupal.org/user/1124384" + }, + { + "name": "qichanghai", + "homepage": "https://www.drupal.org/user/3092355" + } + ], + "description": "A Drupal module that provides a modeller for ECA solely built on top of Drupal core and ECA core.", + "homepage": "https://www.drupal.org/project/eca_cm", + "support": { + "source": "https://drupal.org/project/eca_cm", + "issues": "https://drupal.org/project/issues/eca_cm" + } + }, + { + "name": "drupal/eca_ui", + "version": "1.1.4", + "require": { + "drupal/core": "^9 || ^10", + "drupal/eca": "*" + }, + "type": "metapackage", + "extra": { + "drupal": { + "version": "1.1.4", + "datestamp": "1689338278", + "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": "boromino", + "homepage": "https://www.drupal.org/user/859722" + }, + { + "name": "danielspeicher", + "homepage": "https://www.drupal.org/user/3621778" + }, + { + "name": "jurgenhaas", + "homepage": "https://www.drupal.org/user/168924" + } + ], + "description": "Provides a user interface for managing ECA models.", + "homepage": "https://www.drupal.org/project/eca", + "support": { + "source": "https://git.drupalcode.org/project/eca" + } + }, { "name": "drupal/embed", "version": "1.7.0", @@ -10022,6 +10251,10 @@ "name": "shadcn", "homepage": "https://shadcn.com" }, + { + "name": "minnur", + "homepage": "https://www.drupal.org/user/702026" + }, { "name": "roaguicr", "homepage": "https://www.drupal.org/user/2334450" @@ -16958,6 +17191,59 @@ ], "time": "2023-10-27T15:25:26+00:00" }, + { + "name": "mtownsend/xml-to-array", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/mtownsend5512/xml-to-array.git", + "reference": "0734720a8462dba36d90fb8b2723bf46af0091f4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mtownsend5512/xml-to-array/zipball/0734720a8462dba36d90fb8b2723bf46af0091f4", + "reference": "0734720a8462dba36d90fb8b2723bf46af0091f4", + "shasum": "" + }, + "require": { + "php": "~7.0|~8.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.4" + }, + "type": "library", + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Mtownsend\\XmlToArray\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mark Townsend", + "email": "mtownsend5512@gmail.com", + "role": "Developer" + } + ], + "description": "Easily convert valid xml to a php array.", + "keywords": [ + "array", + "convert", + "laravel", + "xml" + ], + "support": { + "issues": "https://github.com/mtownsend5512/xml-to-array/issues", + "source": "https://github.com/mtownsend5512/xml-to-array/tree/2.0.0" + }, + "time": "2021-02-27T22:39:18+00:00" + }, { "name": "myclabs/deep-copy", "version": "1.11.1", diff --git a/config/sync/core.extension.yml b/config/sync/core.extension.yml index d7ad4a2d38..fea07b9194 100644 --- a/config/sync/core.extension.yml +++ b/config/sync/core.extension.yml @@ -58,6 +58,11 @@ module: dynamic_entity_reference: 0 dynamic_page_cache: 0 easy_breadcrumb: 0 + eca: 0 + eca_base: 0 + eca_cm: 0 + eca_ui: 0 + eca_views: 0 editor: 0 embed: 0 entity_block: 0 diff --git a/config/sync/eca.eca.test.yml b/config/sync/eca.eca.test.yml new file mode 100644 index 0000000000..039b2e051c --- /dev/null +++ b/config/sync/eca.eca.test.yml @@ -0,0 +1,13 @@ +uuid: 107ef63e-ce69-45fd-b6f4-4723b95f1994 +langcode: en +status: false +dependencies: { } +id: test +modeller: core +label: Test +version: null +weight: null +events: { } +conditions: { } +gateways: { } +actions: { } diff --git a/config/sync/eca.settings.yml b/config/sync/eca.settings.yml new file mode 100644 index 0000000000..b805adfeb1 --- /dev/null +++ b/config/sync/eca.settings.yml @@ -0,0 +1,10 @@ +_core: + default_config_hash: crbLzxE1culnNNbMcnjEQy5F_PmdYkkXBTvemcgc2kg +log_level: 3 +documentation_domain: 'https://ecaguide.org' +user: '' +dependency_calculation: + - bundle + - field_storage + - field_config + - new_field_config diff --git a/config/sync/language/es/views.view.eca_log.yml b/config/sync/language/es/views.view.eca_log.yml new file mode 100644 index 0000000000..11fe1a1101 --- /dev/null +++ b/config/sync/language/es/views.view.eca_log.yml @@ -0,0 +1,50 @@ +display: + default: + display_title: 'Por defecto' + display_options: + title: Registro + fields: + name: + label: Usuario + separator: ', ' + timestamp: + label: Hora + message: + label: Mensaje + variables: + label: Comodines + pager: + options: + tags: + next: ›› + previous: ‹‹ + first: '« Primero' + last: 'Último »' + expose: + items_per_page_label: 'Elementos por página' + items_per_page_options_all_label: '- Todo -' + offset_label: Desplazamiento + exposed_form: + options: + submit_button: Aplicar + reset_button_label: Restablecer + exposed_sorts_label: 'Ordenar por' + sort_asc_label: Asc + sort_desc_label: Desc + filters: + timestamp: + expose: + label: Desde + timestamp_1: + expose: + label: Para + page_1: + display_title: Página + display_options: + menu: + title: Registro + page_2: + display_title: 'Página 2' + display_options: + menu: + title: Registro diff --git a/config/sync/views.view.eca_log.yml b/config/sync/views.view.eca_log.yml new file mode 100644 index 0000000000..8fc374704f --- /dev/null +++ b/config/sync/views.view.eca_log.yml @@ -0,0 +1,619 @@ +uuid: f390cf15-8e20-45e7-8ec4-b7fad0e875ef +langcode: en +status: true +dependencies: + config: + - system.menu.admin + module: + - dblog + - smart_date + - user +_core: + default_config_hash: D_mojRjxWhgQElK_31fBHCqXm829yxmgsjq7MeInnMg +id: eca_log +label: 'ECA Log' +module: views +description: '' +tag: '' +base_table: watchdog +base_field: wid +display: + default: + id: default + display_title: Default + display_plugin: default + position: 0 + display_options: + title: Log + fields: + name: + id: name + table: users_field_data + field: name + relationship: uid + group_type: group + admin_label: '' + entity_type: user + entity_field: name + plugin_id: field + label: User + exclude: false + 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: true + 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: user_name + settings: + link_to_entity: false + 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 + timestamp: + id: timestamp + table: watchdog + field: timestamp + relationship: none + group_type: group + admin_label: '' + plugin_id: date + label: Time + exclude: false + 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: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + date_format: html_time + custom_date_format: '' + timezone: '' + message: + id: message + table: watchdog + field: message + relationship: none + group_type: group + admin_label: '' + plugin_id: dblog_message + label: Message + exclude: false + 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: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + replace_variables: true + variables: + id: variables + table: watchdog + field: variables + relationship: none + group_type: group + admin_label: '' + plugin_id: serialized + label: Tokens + 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: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + format: unserialized + key: '' + type: + id: type + table: watchdog + field: type + relationship: none + group_type: group + admin_label: '' + plugin_id: standard + 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 + pager: + type: full + options: + offset: 0 + items_per_page: 50 + total_pages: null + id: 0 + tags: + next: ›› + previous: ‹‹ + first: '« First' + last: 'Last »' + expose: + items_per_page: false + items_per_page_label: 'Items per page' + items_per_page_options: '5, 10, 25, 50' + items_per_page_options_all: false + items_per_page_options_all_label: '- All -' + offset: false + offset_label: Offset + quantity: 9 + exposed_form: + type: basic + options: + submit_button: Apply + reset_button: false + reset_button_label: Reset + exposed_sorts_label: 'Sort by' + expose_sort_order: true + sort_asc_label: Asc + sort_desc_label: Desc + access: + type: perm + options: + perm: 'administer eca' + cache: + type: none + options: { } + empty: { } + sorts: + wid: + id: wid + table: watchdog + field: wid + relationship: none + group_type: group + admin_label: '' + plugin_id: standard + order: ASC + expose: + label: '' + field_identifier: '' + exposed: false + arguments: { } + filters: + combine: + id: combine + table: views + field: combine + relationship: none + group_type: group + admin_label: '' + plugin_id: combine + operator: '=' + value: eca + 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 + placeholder: '' + is_grouped: false + group_info: + label: '' + description: '' + identifier: '' + optional: true + widget: select + multiple: false + remember: false + default_group: All + default_group_multiple: { } + group_items: { } + fields: + type: type + variables: + id: variables + table: watchdog + field: variables + relationship: none + group_type: group + admin_label: '' + plugin_id: string + operator: contains + value: '' + group: 1 + exposed: true + expose: + operator_id: variables_op + label: 'Message contains' + description: '' + use_operator: false + operator: variables_op + operator_limit_selection: false + operator_list: { } + identifier: variables + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + anonymous: '0' + content_editor: '0' + administrator: '0' + placeholder: '' + is_grouped: false + group_info: + label: '' + description: '' + identifier: '' + optional: true + widget: select + multiple: false + remember: false + default_group: All + default_group_multiple: { } + group_items: { } + timestamp: + id: timestamp + table: watchdog + field: timestamp + relationship: none + group_type: group + admin_label: '' + plugin_id: date + operator: '>=' + value: + min: '' + max: '' + value: '-1 hour' + type: offset + group: 1 + exposed: true + expose: + operator_id: timestamp_op + label: From + description: '' + use_operator: false + operator: timestamp_op + operator_limit_selection: false + operator_list: { } + identifier: from + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + anonymous: '0' + content_editor: '0' + administrator: '0' + min_placeholder: '' + max_placeholder: '' + placeholder: '' + is_grouped: false + group_info: + label: '' + description: '' + identifier: '' + optional: true + widget: select + multiple: false + remember: false + default_group: All + default_group_multiple: { } + group_items: { } + timestamp_1: + id: timestamp_1 + table: watchdog + field: timestamp + relationship: none + group_type: group + admin_label: '' + plugin_id: date + operator: '<=' + value: + min: '' + max: '' + value: now + type: offset + group: 1 + exposed: true + expose: + operator_id: timestamp_1_op + label: To + description: '' + use_operator: false + operator: timestamp_1_op + operator_limit_selection: false + operator_list: { } + identifier: to + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + anonymous: '0' + content_editor: '0' + administrator: '0' + min_placeholder: '' + max_placeholder: '' + placeholder: '' + is_grouped: false + group_info: + label: '' + description: '' + identifier: '' + optional: true + widget: select + multiple: false + remember: false + default_group: All + default_group_multiple: { } + group_items: { } + filter_groups: + operator: AND + groups: + 1: AND + style: + type: table + row: + type: fields + query: + type: views_query + options: + query_comment: '' + disable_sql_rewrite: false + distinct: false + replica: false + query_tags: { } + relationships: + uid: + id: uid + table: watchdog + field: uid + relationship: none + group_type: group + admin_label: uid + plugin_id: standard + required: false + header: { } + footer: { } + display_extenders: { } + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - url + - url.query_args + - user.permissions + tags: { } + page_1: + id: page_1 + display_title: Page + display_plugin: page + position: 1 + display_options: + display_extenders: { } + path: admin/config/workflow/eca/log + menu: + type: tab + title: Log + description: '' + weight: 99 + expanded: false + menu_name: admin + parent: entity.eca.collection + context: '0' + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - url + - url.query_args + - user.permissions + tags: { } + page_2: + id: page_2 + display_title: 'Page 2' + display_plugin: page + position: 2 + display_options: + display_extenders: { } + path: admin/config/workflow/eca/log + menu: + type: normal + title: Log + description: '' + weight: 99 + expanded: false + menu_name: admin + parent: entity.eca.collection + context: '0' + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - url + - url.query_args + - user.permissions + tags: { }