From 7d7c1950ddd47b3ca0aaed92c27d9249db1b3590 Mon Sep 17 00:00:00 2001 From: Mikkel Ricky Date: Wed, 12 Oct 2022 14:32:14 +0200 Subject: [PATCH] Added flow example --- .../os2forms_selvbetjening_examples/README.md | 38 +++ .../maestro.maestro_template.example_flow.yml | 126 +++++++ ...tro.maestro_template.example_flow_page.yml | 126 +++++++ .../webform.webform.example_flow_step_1.yml | 309 ++++++++++++++++++ .../webform.webform.example_flow_step_2.yml | 229 +++++++++++++ .../drush.services.yml | 6 + .../os2forms_selvbetjening_examples.info.yml | 7 + .../os2forms_selvbetjening_examples.install | 32 ++ ...2forms_selvbetjening_examples.services.yml | 5 + .../src/Commands/MaestroCommands.php | 74 +++++ .../src/Helper.php | 101 ++++++ 11 files changed, 1053 insertions(+) create mode 100644 web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/README.md create mode 100644 web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/config/install/maestro.maestro_template.example_flow.yml create mode 100644 web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/config/install/maestro.maestro_template.example_flow_page.yml create mode 100644 web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/config/install/webform.webform.example_flow_step_1.yml create mode 100644 web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/config/install/webform.webform.example_flow_step_2.yml create mode 100644 web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/drush.services.yml create mode 100644 web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/os2forms_selvbetjening_examples.info.yml create mode 100644 web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/os2forms_selvbetjening_examples.install create mode 100644 web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/os2forms_selvbetjening_examples.services.yml create mode 100644 web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/src/Commands/MaestroCommands.php create mode 100644 web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/src/Helper.php diff --git a/web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/README.md b/web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/README.md new file mode 100644 index 00000000..bc4bca98 --- /dev/null +++ b/web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/README.md @@ -0,0 +1,38 @@ +# selvbetjening.aarhuskommune.dk examples + +```sh +docker-compose exec phpfpm vendor/bin/drush pm:enable os2forms_selvbetjening_examples +``` + +```sh +docker-compose exec phpfpm vendor/bin/drush pm:uninstall os2forms_selvbetjening_examples +docker-compose exec phpfpm vendor/bin/drush pm:enable os2forms_selvbetjening_examples +``` + +## Forms + +```sh +open "http://$(docker-compose port nginx 80)/admin/structure/webform?search=&category=Example" +``` + +/form/example-flow-step-1 + +### Clean up + +Remove webform submissions: + +```sh +docker-compose exec phpfpm vendor/bin/drush webform:purge +``` + +Maestro tasks: + +```sh +docker-compose exec phpfpm vendor/bin/drush os2forms-selvbetjening-examples:maestro:message +``` + +## Flows + +```sh +open "http://$(docker-compose port nginx 80)/maestro/templates/list" +``` diff --git a/web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/config/install/maestro.maestro_template.example_flow.yml b/web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/config/install/maestro.maestro_template.example_flow.yml new file mode 100644 index 00000000..671c119e --- /dev/null +++ b/web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/config/install/maestro.maestro_template.example_flow.yml @@ -0,0 +1,126 @@ +langcode: en +status: true +dependencies: + module: + - os2forms_permissions_by_term + - os2forms_selvbetjening_examples + enforced: + module: + - os2forms_selvbetjening_examples +third_party_settings: + os2forms_permissions_by_term: + maestro_template_permissions_by_term_settings: + 21: '21' + 30: 0 + 32: 0 + 29: 0 + 39: 0 + 28: 0 + 22: 0 + 26: 0 + 36: 0 + 23: 0 + 24: 0 + 37: 0 + 31: 0 + 25: 0 + 33: 0 + 38: 0 +id: example_flow +label: 'example flow' +app_group: 0 +canvas_height: 900 +canvas_width: 800 +default_workflow_timeline_stage_count: 0 +show_details: false +validated: true +views_attached: + maestro_completed_tasks: + view_machine_name: maestro_completed_tasks + view_weight: -9 + view_display: default;Master + maestro_entity_identifiers: + view_machine_name: maestro_entity_identifiers + view_weight: -10 + view_display: 'taskconsole_display;Task Console Display' +variables: + initiator: + variable_id: initiator + variable_value: '0' + workflow_timeline_stage_count: + variable_id: workflow_timeline_stage_count + variable_value: '' + workflow_current_stage: + variable_id: workflow_current_stage + variable_value: '' + workflow_current_stage_message: + variable_id: workflow_current_stage_message + variable_value: '' +tasks: + start: + id: start + tasktype: MaestroStart + label: Start + nextstep: example_flow_step_2 + nextfalsestep: '' + top: '50' + left: '40' + assignby: fixed + assignto: engine + end: + id: end + tasktype: MaestroEnd + label: End + nextstep: '' + nextfalsestep: '' + top: '50' + left: '360' + assignby: fixed + assignto: engine + example_flow_step_2: + id: example_flow_step_2 + tasktype: MaestroWebformInherit + label: 'example flow step 2' + nextstep: end + nextfalsestep: '' + runonce: false + top: '50' + left: '200' + assignby: fixed + assignto: '' + assigned: 'role:fixed:administrator' + handler: '' + showindetail: true + participate_in_workflow_status_stage: false + workflow_status_stage_number: 0 + workflow_status_stage_message: '' + data: + unique_id: example_flow_step_2 + webform_machine_name: example_flow_step_2 + modal: notmodal + skip_webform_handlers: 0 + webform_nodes_attached_to: none + use_nodes_attached: 0 + webform_nodes_attached_variable: none + redirect_to: taskconsole + show_edit_form: 1 + inherit_webform_unique_id: submission + inherit_webform_create_submission: 1 + notifications: + notification_assignment: '' + notification_reminder: '' + notification_escalation: '' + escalation_after: 0 + reminder_after: 0 + notification_assignment_subject: '' + notification_reminder_subject: '' + notification_escalation_subject: '' + raphael: '' + to: '' + pointedfrom: '' + falsebranch: '' + lines: { } +initiator: null +workflow_timeline_stage_count: null +workflow_current_stage: null +workflow_current_stage_message: null diff --git a/web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/config/install/maestro.maestro_template.example_flow_page.yml b/web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/config/install/maestro.maestro_template.example_flow_page.yml new file mode 100644 index 00000000..8c1a6283 --- /dev/null +++ b/web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/config/install/maestro.maestro_template.example_flow_page.yml @@ -0,0 +1,126 @@ +langcode: en +status: true +dependencies: + module: + - os2forms_permissions_by_term + - os2forms_selvbetjening_examples + enforced: + module: + - os2forms_selvbetjening_examples +third_party_settings: + os2forms_permissions_by_term: + maestro_template_permissions_by_term_settings: + 21: '21' + 30: 0 + 32: 0 + 29: 0 + 39: 0 + 28: 0 + 22: 0 + 26: 0 + 36: 0 + 23: 0 + 24: 0 + 37: 0 + 31: 0 + 25: 0 + 33: 0 + 38: 0 +id: example_flow_page +label: 'example flow page' +app_group: 0 +canvas_height: 900 +canvas_width: 800 +default_workflow_timeline_stage_count: 0 +show_details: false +validated: true +views_attached: + maestro_completed_tasks: + view_machine_name: maestro_completed_tasks + view_weight: -9 + view_display: default;Master + maestro_entity_identifiers: + view_machine_name: maestro_entity_identifiers + view_weight: -10 + view_display: 'taskconsole_display;Task Console Display' +variables: + initiator: + variable_id: initiator + variable_value: '0' + workflow_timeline_stage_count: + variable_id: workflow_timeline_stage_count + variable_value: '' + workflow_current_stage: + variable_id: workflow_current_stage + variable_value: '' + workflow_current_stage_message: + variable_id: workflow_current_stage_message + variable_value: '' +tasks: + start: + id: start + tasktype: MaestroStart + label: Start + nextstep: example_flow_step_2 + nextfalsestep: '' + top: '50' + left: '40' + assignby: fixed + assignto: engine + end: + id: end + tasktype: MaestroEnd + label: End + nextstep: '' + nextfalsestep: '' + top: '50' + left: '360' + assignby: fixed + assignto: engine + example_flow_step_2: + id: example_flow_step_2 + tasktype: MaestroWebformInherit + label: 'example flow step 2' + nextstep: end + nextfalsestep: '' + runonce: false + top: '50' + left: '200' + assignby: fixed + assignto: '' + assigned: 'role:fixed:administrator' + handler: '' + showindetail: true + participate_in_workflow_status_stage: false + workflow_status_stage_number: 0 + workflow_status_stage_message: '' + data: + unique_id: example_flow_step_2 + webform_machine_name: example_flow_step_2 + modal: notmodal + skip_webform_handlers: 0 + webform_nodes_attached_to: none + use_nodes_attached: 1 + webform_nodes_attached_variable: none + redirect_to: taskconsole + show_edit_form: 1 + inherit_webform_unique_id: submission + inherit_webform_create_submission: 1 + notifications: + notification_assignment: '' + notification_reminder: '' + notification_escalation: '' + escalation_after: 0 + reminder_after: 0 + notification_assignment_subject: '' + notification_reminder_subject: '' + notification_escalation_subject: '' + raphael: '' + to: '' + pointedfrom: '' + falsebranch: '' + lines: { } +initiator: null +workflow_timeline_stage_count: null +workflow_current_stage: null +workflow_current_stage_message: null diff --git a/web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/config/install/webform.webform.example_flow_step_1.yml b/web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/config/install/webform.webform.example_flow_step_1.yml new file mode 100644 index 00000000..93b6277d --- /dev/null +++ b/web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/config/install/webform.webform.example_flow_step_1.yml @@ -0,0 +1,309 @@ +langcode: en +status: open +dependencies: + module: + - maestro_webform + - os2forms + - os2forms_permissions_by_term + - webform_entity_print + - webform_revisions + - os2forms_selvbetjening_examples + enforced: + module: + - os2forms_selvbetjening_examples +third_party_settings: + webform_revisions: + contentEntity_id: '237' + os2forms_permissions_by_term: + settings: + 21: '21' + 30: 0 + 32: 0 + 29: 0 + 39: 0 + 28: 0 + 22: 0 + 26: 0 + 36: 0 + 23: 0 + 24: 0 + 37: 0 + 31: 0 + 25: 0 + 33: 0 + 38: 0 + os2forms: + os2forms_nemid: + webform_type: '' + nemlogin_auto_redirect: 0 + os2forms_nemlogin_openid_connect: + authentication_settings: + user_claim: '' + element_key: '' + error_message: '' + os2forms_rest_api: + allowed_users: null + webform_entity_print: + template: + header: '' + footer: '' + css: '' + export_types: + pdf: + enabled: true + link_text: '' + link_attributes: { } +weight: 0 +open: null +close: null +uid: 1 +template: false +archive: false +id: example_flow_step_1 +title: 'example flow step 1' +description: '' +category: Example +elements: |- + email: + '#type': textfield + '#title': email + '#input_mask': '''alias'': ''email''' + '#required': true + '#default_value': test@example.com + expected_value: + '#type': textfield + '#title': 'expected value' + '#required': true + '#default_value': '1234567890' +css: '' +javascript: '' +settings: + ajax: false + ajax_scroll_top: form + ajax_progress_type: '' + ajax_effect: '' + ajax_speed: null + page: true + page_submit_path: '' + page_confirm_path: '' + page_theme_name: '' + form_title: both + form_submit_once: false + form_open_message: '' + form_close_message: '' + form_exception_message: '' + form_previous_submissions: true + form_confidential: false + form_confidential_message: '' + form_disable_remote_addr: false + form_convert_anonymous: false + form_prepopulate: false + form_prepopulate_source_entity: false + form_prepopulate_source_entity_required: false + form_prepopulate_source_entity_type: '' + form_unsaved: false + form_disable_back: false + form_submit_back: false + form_disable_autocomplete: false + form_novalidate: false + form_disable_inline_errors: false + form_required: false + form_autofocus: false + form_details_toggle: false + form_reset: false + form_access_denied: default + form_access_denied_title: '' + form_access_denied_message: '' + form_access_denied_attributes: { } + form_file_limit: '' + form_attributes: { } + form_method: '' + form_action: '' + share: false + share_node: false + share_theme_name: '' + share_title: true + share_page_body_attributes: { } + submission_label: '' + submission_exception_message: '' + submission_locked_message: '' + submission_log: false + submission_excluded_elements: { } + submission_exclude_empty: false + submission_exclude_empty_checkbox: false + submission_views: { } + submission_views_replace: { } + submission_user_columns: { } + submission_user_duplicate: false + submission_access_denied: default + submission_access_denied_title: '' + submission_access_denied_message: '' + submission_access_denied_attributes: { } + previous_submission_message: '' + previous_submissions_message: '' + autofill: false + autofill_message: '' + autofill_excluded_elements: { } + wizard_progress_bar: true + wizard_progress_pages: false + wizard_progress_percentage: false + wizard_progress_link: false + wizard_progress_states: false + wizard_start_label: '' + wizard_preview_link: false + wizard_confirmation: true + wizard_confirmation_label: '' + wizard_auto_forward: true + wizard_auto_forward_hide_next_button: false + wizard_keyboard: true + wizard_track: '' + wizard_prev_button_label: '' + wizard_next_button_label: '' + wizard_toggle: false + wizard_toggle_show_label: '' + wizard_toggle_hide_label: '' + preview: 0 + preview_label: '' + preview_title: '' + preview_message: '' + preview_attributes: { } + preview_excluded_elements: { } + preview_exclude_empty: true + preview_exclude_empty_checkbox: false + draft: none + draft_multiple: false + draft_auto_save: false + draft_saved_message: '' + draft_loaded_message: '' + draft_pending_single_message: '' + draft_pending_multiple_message: '' + confirmation_type: url_message + confirmation_url: /taskconsole + confirmation_title: '' + confirmation_message: 'Find your new task ("example flow step 2") in the list.' + confirmation_attributes: { } + confirmation_back: true + confirmation_back_label: '' + confirmation_back_attributes: { } + confirmation_exclude_query: false + confirmation_exclude_token: false + confirmation_update: false + limit_total: null + limit_total_interval: null + limit_total_message: '' + limit_total_unique: false + limit_user: null + limit_user_interval: null + limit_user_message: '' + limit_user_unique: false + entity_limit_total: null + entity_limit_total_interval: null + entity_limit_user: null + entity_limit_user_interval: null + purge: all + purge_days: 30 + results_disabled: false + results_disabled_ignore: false + results_customize: false + token_view: false + token_update: false + token_delete: false + serial_disabled: false +access: + create: + roles: + - anonymous + - authenticated + users: { } + permissions: { } + view_any: + roles: { } + users: { } + permissions: { } + update_any: + roles: { } + users: { } + permissions: { } + delete_any: + roles: { } + users: { } + permissions: { } + purge_any: + roles: { } + users: { } + permissions: { } + view_own: + roles: { } + users: { } + permissions: { } + update_own: + roles: { } + users: { } + permissions: { } + delete_own: + roles: { } + users: { } + permissions: { } + administer: + roles: { } + users: { } + permissions: { } + test: + roles: { } + users: { } + permissions: { } + configuration: + roles: { } + users: { } + permissions: { } +handlers: + opret_forloeb_fra_flow: + id: maestro + handler_id: opret_forloeb_fra_flow + label: 'Opret forløb fra Flow' + notes: '' + status: true + conditions: { } + weight: 0 + settings: + maestro_template: example_flow + maestro_message_success: '' + maestro_message_failure: '' + email: + id: email + handler_id: email + label: Email + notes: '' + status: true + conditions: { } + weight: 0 + settings: + states: + - completed + to_mail: '[webform_submission:values:email:raw]' + to_options: { } + bcc_mail: '' + bcc_options: { } + cc_mail: '' + cc_options: { } + from_mail: _default + from_options: { } + from_name: _default + reply_to: '' + return_path: '' + sender_mail: '' + sender_name: '' + subject: _default + body: '[webform_submission:os2forms_forloeb_execute_task]' + excluded_elements: { } + ignore_access: false + exclude_empty: true + exclude_empty_checkbox: false + exclude_attachments: false + html: true + attachments: false + twig: false + theme_name: '' + parameters: { } + debug: false +variants: { } diff --git a/web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/config/install/webform.webform.example_flow_step_2.yml b/web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/config/install/webform.webform.example_flow_step_2.yml new file mode 100644 index 00000000..3ddfeaf9 --- /dev/null +++ b/web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/config/install/webform.webform.example_flow_step_2.yml @@ -0,0 +1,229 @@ +langcode: en +status: open +dependencies: + module: + - os2forms_permissions_by_term + - webform_revisions + - os2forms_selvbetjening_examples + enforced: + module: + - os2forms_selvbetjening_examples +third_party_settings: + webform_revisions: + contentEntity_id: '238' + os2forms_permissions_by_term: + settings: + 21: '21' + 30: 0 + 32: 0 + 29: 0 + 39: 0 + 28: 0 + 22: 0 + 26: 0 + 36: 0 + 23: 0 + 24: 0 + 37: 0 + 31: 0 + 25: 0 + 33: 0 + 38: 0 +weight: 0 +open: null +close: null +uid: 1 +template: false +archive: false +id: example_flow_step_2 +title: 'example flow step 2' +description: '' +category: Example +elements: |- + expected_value: + '#type': textfield + '#title': 'expected value' + '#readonly': true +css: '' +javascript: '' +settings: + ajax: false + ajax_scroll_top: form + ajax_progress_type: '' + ajax_effect: '' + ajax_speed: null + page: true + page_submit_path: '' + page_confirm_path: '' + page_theme_name: '' + form_title: both + form_submit_once: false + form_open_message: '' + form_close_message: '' + form_exception_message: '' + form_previous_submissions: true + form_confidential: false + form_confidential_message: '' + form_disable_remote_addr: false + form_convert_anonymous: false + form_prepopulate: false + form_prepopulate_source_entity: false + form_prepopulate_source_entity_required: false + form_prepopulate_source_entity_type: '' + form_unsaved: false + form_disable_back: false + form_submit_back: false + form_disable_autocomplete: false + form_novalidate: false + form_disable_inline_errors: false + form_required: false + form_autofocus: false + form_details_toggle: false + form_reset: false + form_access_denied: default + form_access_denied_title: '' + form_access_denied_message: '' + form_access_denied_attributes: { } + form_file_limit: '' + form_attributes: { } + form_method: '' + form_action: '' + share: false + share_node: false + share_theme_name: '' + share_title: true + share_page_body_attributes: { } + submission_label: '' + submission_exception_message: '' + submission_locked_message: '' + submission_log: false + submission_excluded_elements: { } + submission_exclude_empty: false + submission_exclude_empty_checkbox: false + submission_views: { } + submission_views_replace: { } + submission_user_columns: { } + submission_user_duplicate: false + submission_access_denied: default + submission_access_denied_title: '' + submission_access_denied_message: '' + submission_access_denied_attributes: { } + previous_submission_message: '' + previous_submissions_message: '' + autofill: false + autofill_message: '' + autofill_excluded_elements: { } + wizard_progress_bar: true + wizard_progress_pages: false + wizard_progress_percentage: false + wizard_progress_link: false + wizard_progress_states: false + wizard_start_label: '' + wizard_preview_link: false + wizard_confirmation: true + wizard_confirmation_label: '' + wizard_auto_forward: true + wizard_auto_forward_hide_next_button: false + wizard_keyboard: true + wizard_track: '' + wizard_prev_button_label: '' + wizard_next_button_label: '' + wizard_toggle: false + wizard_toggle_show_label: '' + wizard_toggle_hide_label: '' + preview: 0 + preview_label: '' + preview_title: '' + preview_message: '' + preview_attributes: { } + preview_excluded_elements: { } + preview_exclude_empty: true + preview_exclude_empty_checkbox: false + draft: none + draft_multiple: false + draft_auto_save: false + draft_saved_message: '' + draft_loaded_message: '' + draft_pending_single_message: '' + draft_pending_multiple_message: '' + confirmation_type: page + confirmation_url: '' + confirmation_title: '' + confirmation_message: '' + confirmation_attributes: { } + confirmation_back: true + confirmation_back_label: '' + confirmation_back_attributes: { } + confirmation_exclude_query: false + confirmation_exclude_token: false + confirmation_update: false + limit_total: null + limit_total_interval: null + limit_total_message: '' + limit_total_unique: false + limit_user: null + limit_user_interval: null + limit_user_message: '' + limit_user_unique: false + entity_limit_total: null + entity_limit_total_interval: null + entity_limit_user: null + entity_limit_user_interval: null + purge: all + purge_days: 30 + results_disabled: false + results_disabled_ignore: false + results_customize: false + token_view: false + token_update: false + token_delete: false + serial_disabled: false +access: + create: + roles: + - anonymous + - authenticated + users: { } + permissions: { } + view_any: + roles: { } + users: { } + permissions: { } + update_any: + roles: { } + users: { } + permissions: { } + delete_any: + roles: { } + users: { } + permissions: { } + purge_any: + roles: { } + users: { } + permissions: { } + view_own: + roles: { } + users: { } + permissions: { } + update_own: + roles: { } + users: { } + permissions: { } + delete_own: + roles: { } + users: { } + permissions: { } + administer: + roles: { } + users: { } + permissions: { } + test: + roles: { } + users: { } + permissions: { } + configuration: + roles: { } + users: { } + permissions: { } +handlers: { } +variants: { } diff --git a/web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/drush.services.yml b/web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/drush.services.yml new file mode 100644 index 00000000..b4843cec --- /dev/null +++ b/web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/drush.services.yml @@ -0,0 +1,6 @@ +services: + Drupal\os2forms_selvbetjening_examples\Commands\MaestroCommands: + arguments: + - '@entity_type.manager' + tags: + - { name: drush.command } diff --git a/web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/os2forms_selvbetjening_examples.info.yml b/web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/os2forms_selvbetjening_examples.info.yml new file mode 100644 index 00000000..8644d029 --- /dev/null +++ b/web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/os2forms_selvbetjening_examples.info.yml @@ -0,0 +1,7 @@ +name: 'selvbetjening.aarhus.dk examples' +type: module +description: 'Provides example forms and flows for selvbetjening.aarhus.dk.' +package: 'OS2Forms' +core_version_requirement: ^9 +# dependencies: +# - 'webform:webform' diff --git a/web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/os2forms_selvbetjening_examples.install b/web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/os2forms_selvbetjening_examples.install new file mode 100644 index 00000000..b7b8e1f5 --- /dev/null +++ b/web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/os2forms_selvbetjening_examples.install @@ -0,0 +1,32 @@ +install(); +} + +/** + * Implements hook_uninstall(). + */ +function os2forms_selvbetjening_examples_uninstall() { + _os2forms_selvbetjening_examples_helper()->uninstall(); +} + +/** + * Get helper. + * + * @return \Drupal\os2forms_selvbetjening_examples\Helper + * The helper. + */ +function _os2forms_selvbetjening_examples_helper() { + return Drupal::service(Helper::class); +} diff --git a/web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/os2forms_selvbetjening_examples.services.yml b/web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/os2forms_selvbetjening_examples.services.yml new file mode 100644 index 00000000..d924ee62 --- /dev/null +++ b/web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/os2forms_selvbetjening_examples.services.yml @@ -0,0 +1,5 @@ +services: + Drupal\os2forms_selvbetjening_examples\Helper: + arguments: + - '@entity_type.manager' + - '@config.factory' diff --git a/web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/src/Commands/MaestroCommands.php b/web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/src/Commands/MaestroCommands.php new file mode 100644 index 00000000..797e4bed --- /dev/null +++ b/web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/src/Commands/MaestroCommands.php @@ -0,0 +1,74 @@ +taskStorage = $entityTypeManager->getStorage('maestro_queue'); + } + + /** + * Drush command that displays the given text. + * + * @param string $action + * The command to run; list (default) or purge. + * @param array $options + * The options. + * + * @command os2forms-selvbetjening-examples:maestro:task + * @usage os2forms-selvbetjening-examples:maestro:task cmd + */ + public function task($action = 'list', array $options = []) { + switch ($action) { + case 'list': + $tasks = $this->loadTasks(); + foreach ($tasks as $task) { + $this->output()->writeln(json_encode($task->toArray(), JSON_PRETTY_PRINT)); + } + break; + + case 'purge': + if ($options['yes']) { + $tasks = $this->loadTasks(); + foreach ($tasks as $task) { + $task->delete(); + } + } + break; + + default: + break; + } + } + + /** + * Load tasks. + * + * @return array|\Drupal\maestro\Entity\MaestroQueue[] + * The tasks. + */ + private function loadTasks(): array { + /** @var \Drupal\maestro\Entity\MaestroQueue[] $tasks */ + $tasks = $this->taskStorage->loadMultiple(); + + return $tasks; + } + +} diff --git a/web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/src/Helper.php b/web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/src/Helper.php new file mode 100644 index 00000000..19d53278 --- /dev/null +++ b/web/modules/custom/os2forms_selvbetjening/modules/os2forms_selvbetjening_examples/src/Helper.php @@ -0,0 +1,101 @@ +nodeStorage = $entityTypeManager->getStorage('node'); + $this->configFactory = $configFactory; + } + + /** + * Implements hook_install(). + */ + public function install() { + // hook_install() semms to be called twice (!) so we clean up before + // creating nodes. + $this->deleteFormNodes(); + $this->createFormNodes(); + } + + /** + * Implements hook_uninstall(). + */ + public function uninstall() { + $this->deleteFormNodes(); + } + + /** + * Create form nodes. + */ + private function createFormNodes() { + foreach ($this->nodeFormIds as $formId) { + $node = Node::create([ + 'type' => 'webform', + 'title' => sprintf('Webform node for form %s', $formId), + 'webform' => [ + 'target_id' => $formId, + ], + 'status' => Node::PUBLISHED, + 'moderation_state' => 'published', + ]); + $node->save(); + + if ('example_flow_step_2' === $formId) { + $config = $this->configFactory->getEditable('maestro.maestro_template.example_flow_page'); + $config->set('tasks.example_flow_step_2.data.webform_nodes_attached_to', 'node/' . $node->id()); + $config->save(); + } + } + } + + /** + * Delete form nodes. + */ + private function deleteFormNodes() { + $nodeIds = $this->nodeStorage + ->getQuery() + ->condition('webform', $this->nodeFormIds) + ->accessCheck(FALSE) + ->execute(); + $nodes = $this->nodeStorage->loadMultiple($nodeIds); + foreach ($nodes as $node) { + $node->delete(); + } + } + +}