From 712bc78021ac005579182bd28692513121655d48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mads=20N=C3=B8rgaard?= Date: Fri, 8 Oct 2021 10:33:05 +0200 Subject: [PATCH 01/40] =?UTF-8?q?Fixing=20composer.lock=20to=20fetch=20fix?= =?UTF-8?q?ed=20Forl=C3=B8b=20module=20release.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...maestro_template.multiple_parties_flow.yml | 253 ++++++++++++++++++ ...rm.webform.start_forloeb_med_to_parter.yml | 213 +++++++++++++++ 2 files changed, 466 insertions(+) create mode 100644 config/optional/maestro.maestro_template.multiple_parties_flow.yml create mode 100644 config/optional/webform.webform.start_forloeb_med_to_parter.yml diff --git a/config/optional/maestro.maestro_template.multiple_parties_flow.yml b/config/optional/maestro.maestro_template.multiple_parties_flow.yml new file mode 100644 index 0000000..d19fa4d --- /dev/null +++ b/config/optional/maestro.maestro_template.multiple_parties_flow.yml @@ -0,0 +1,253 @@ +status: true +dependencies: + enforced: + module: + - os2forms_forloeb +id: multiple_parties_flow +label: 'Flow med to parter' +app_group: 0 +canvas_height: 900 +canvas_width: 1000 +default_workflow_timeline_stage_count: 4 +show_details: true +validated: false +views_attached: + maestro_entity_identifiers: + view_machine_name: maestro_entity_identifiers + view_weight: -10 + view_display: 'taskconsole_display;Task Console Display' + maestro_completed_tasks: + view_machine_name: maestro_completed_tasks + view_weight: -9 + view_display: default;Master +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: '' + part_one_id: + variable_id: part_one_id + variable_value: '' + part_two_id: + variable_id: part_two_id + variable_value: '' +initiator: null +workflow_timeline_stage_count: null +workflow_current_stage: null +workflow_current_stage_message: null +tasks: + start: + id: start + tasktype: MaestroStart + label: Start + nextstep: 'form2,form_parent' + nextfalsestep: '' + top: '20' + left: '260' + assignby: fixed + assignto: engine + end: + id: end + tasktype: MaestroEnd + label: End + nextstep: '' + nextfalsestep: '' + top: '710' + left: '270' + assignby: fixed + assignto: engine + form_parent: + id: form_parent + label: 'Formular part 2' + tasktype: MaestroWebform + nextstep: all + nextfalsestep: '' + top: '190' + left: '470' + assignby: fixed + assignto: '' + raphael: '' + to: '' + pointedfrom: '' + falsebranch: '' + lines: { } + data: + unique_id: submission + webform_machine_name: start_forloeb_med_to_parter + modal: notmodal + skip_webform_handlers: 1 + webform_nodes_attached_to: none + use_nodes_attached: 0 + webform_nodes_attached_variable: none + redirect_to: taskconsole + show_edit_form: 1 + assigned: 'user:variable:part_two_id' + runonce: false + handler: '' + showindetail: true + participate_in_workflow_status_stage: true + workflow_status_stage_number: 1 + workflow_status_stage_message: 'Afventer accept fra part 2' + notifications: + notification_assignment_subject: '' + notification_assignment: '' + notification_reminder_subject: '' + notification_reminder: '' + notification_escalation_subject: '' + notification_escalation: '' + reminder_after: 0 + escalation_after: 0 + notification_assignments: 'user:variable:part_two_id:assignment' + send: + id: send + label: Afsend + tasktype: MaestroBatchFunction + nextstep: end + nextfalsestep: '' + top: '620' + left: '270' + assignby: fixed + assignto: '' + raphael: '' + to: '' + pointedfrom: '' + falsebranch: '' + lines: { } + handler: end_notification_batch_function + assigned: '' + runonce: false + showindetail: true + participate_in_workflow_status_stage: false + workflow_status_stage_number: 0 + workflow_status_stage_message: '' + notifications: + notification_assignment_subject: null + notification_assignment: null + notification_reminder_subject: null + notification_reminder: null + notification_escalation_subject: null + notification_escalation: null + reminder_after: null + escalation_after: null + form2: + id: form2 + label: 'Formular forælder 1' + tasktype: MaestroWebform + nextstep: all + nextfalsestep: '' + top: '180' + left: '40' + assignby: fixed + assignto: '' + raphael: '' + to: '' + pointedfrom: '' + falsebranch: '' + lines: { } + data: + unique_id: submission + webform_machine_name: start_forloeb_med_to_parter + modal: notmodal + skip_webform_handlers: 1 + webform_nodes_attached_to: none + use_nodes_attached: 0 + webform_nodes_attached_variable: none + redirect_to: taskconsole + show_edit_form: 1 + assigned: 'user:variable:part_one_id' + runonce: false + handler: '' + showindetail: true + participate_in_workflow_status_stage: true + workflow_status_stage_number: 1 + workflow_status_stage_message: 'Afventer accept fra part 1' + notifications: + notification_assignment_subject: '' + notification_assignment: '' + notification_reminder_subject: '' + notification_reminder: '' + notification_escalation_subject: '' + notification_escalation: '' + reminder_after: 0 + escalation_after: 0 + all: + id: all + label: 'alle svaret' + tasktype: MaestroAnd + nextstep: submission_review + nextfalsestep: '' + top: '420' + left: '260' + assignby: fixed + assignto: '' + raphael: '' + to: '' + pointedfrom: '' + falsebranch: '' + lines: { } + assigned: '' + runonce: false + handler: '' + showindetail: true + participate_in_workflow_status_stage: true + workflow_status_stage_number: 3 + workflow_status_stage_message: 'Alle parter har svaret' + notifications: + notification_assignment_subject: null + notification_assignment: null + notification_reminder_subject: null + notification_reminder: null + notification_escalation_subject: null + notification_escalation: null + reminder_after: null + escalation_after: null + submission_review: + id: submission_review + label: 'Se samlet' + tasktype: MaestroWebform + nextstep: send + nextfalsestep: '' + top: '522' + left: '262' + assignby: fixed + assignto: '' + raphael: '' + to: '' + pointedfrom: '' + falsebranch: '' + lines: { } + data: + unique_id: submission + webform_machine_name: start_forloeb_med_to_parter + modal: notmodal + skip_webform_handlers: 1 + webform_nodes_attached_to: none + use_nodes_attached: 0 + webform_nodes_attached_variable: none + redirect_to: taskconsole + show_edit_form: 0 + assigned: 'user:variable:initiator' + runonce: false + handler: '' + showindetail: true + participate_in_workflow_status_stage: true + workflow_status_stage_number: 4 + workflow_status_stage_message: 'Review submission data' + notifications: + notification_assignment_subject: '' + notification_assignment: '' + notification_reminder_subject: '' + notification_reminder: '' + notification_escalation_subject: '' + notification_escalation: '' + reminder_after: 0 + escalation_after: 0 + notification_assignments: 'user:variable:initiator:assignment' diff --git a/config/optional/webform.webform.start_forloeb_med_to_parter.yml b/config/optional/webform.webform.start_forloeb_med_to_parter.yml new file mode 100644 index 0000000..8fe8230 --- /dev/null +++ b/config/optional/webform.webform.start_forloeb_med_to_parter.yml @@ -0,0 +1,213 @@ +uuid: cbddd0e0-b410-4d6b-a5ae-cefdc418f08e +langcode: en +status: open +dependencies: + module: + - maestro_webform + - webform_revisions +third_party_settings: + webform_revisions: + contentEntity_id: '3' +open: null +close: null +weight: 0 +uid: 1 +template: false +archive: false +id: start_forloeb_med_to_parter +title: 'Start forløb med to parter' +description: 'Flow til a starte sagsbehandlingsforløb med to parter.' +category: MBU +elements: "side_1:\n '#type': webform_wizard_page\n '#title': 'Angiv parter'\n part1:\n '#type': entity_autocomplete\n '#title': part1\n '#target_type': user\n '#selection_handler': 'default:user'\n '#selection_settings':\n include_anonymous: false\n filter:\n type: _none\n part2:\n '#type': entity_autocomplete\n '#title': part2\n '#target_type': user\n '#selection_handler': 'default:user'\n '#selection_settings':\n include_anonymous: false\n filter:\n type: _none\nactions:\n '#type': webform_actions\n '#title': 'Send knap(per)'\n '#draft_hide': true\n '#draft__label': insend\n '#update__label': Opdater\n '#wizard_prev__label': tilbage\n '#wizard_next__label': frem" +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_exception_message: '' + form_open_message: '' + form_close_message: '' + form_previous_submissions: true + form_confidential: false + form_confidential_message: '' + form_remote_addr: true + form_convert_anonymous: false + form_prepopulate: false + form_prepopulate_source_entity: false + form_prepopulate_source_entity_required: false + form_prepopulate_source_entity_type: '' + form_reset: false + form_disable_autocomplete: false + form_novalidate: false + form_disable_inline_errors: false + form_required: false + form_unsaved: false + form_disable_back: false + form_submit_back: false + form_autofocus: false + form_details_toggle: false + form_access_denied: default + form_access_denied_title: '' + form_access_denied_message: '' + form_access_denied_attributes: { } + form_file_limit: '' + share: false + share_node: false + share_theme_name: '' + share_title: true + share_page_body_attributes: { } + submission_label: '' + submission_log: true + submission_views: { } + submission_views_replace: { } + submission_user_columns: { } + submission_user_duplicate: false + submission_access_denied: page + submission_access_denied_title: '' + submission_access_denied_message: '' + submission_access_denied_attributes: { } + submission_exception_message: '' + submission_locked_message: '' + submission_excluded_elements: { } + submission_exclude_empty: false + submission_exclude_empty_checkbox: false + 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_auto_forward: true + wizard_auto_forward_hide_next_button: false + wizard_keyboard: true + wizard_start_label: '' + wizard_preview_link: false + wizard_confirmation: true + wizard_confirmation_label: '' + 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: all + 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_title: '' + confirmation_message: '' + confirmation_url: '' + 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: true + 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 + label: 'Opret forløb med to parter' + notes: '' + handler_id: opret_forloeb_fra_flow + status: true + conditions: { } + weight: -48 + settings: + maestro_template: multiple_parties_flow + maestro_message_success: '' + maestro_message_failure: '' +variants: { } From 5837092850827311b1fc78dd7583812f08429f06 Mon Sep 17 00:00:00 2001 From: Carsten Agger Date: Mon, 11 Oct 2021 09:53:06 +0200 Subject: [PATCH 02/40] Add function to set username from webform submission. --- os2forms_forloeb.module | 47 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/os2forms_forloeb.module b/os2forms_forloeb.module index 0393ed2..39876b4 100644 --- a/os2forms_forloeb.module +++ b/os2forms_forloeb.module @@ -158,3 +158,50 @@ function os2forms_forloeb_webform_create(\Drupal\webform\WebformInterface $webfo $webform->setSetting('purge_days', '30'); } +/** + * Set Process Variable (SPV) function. + * + * Uses the webform's unique identifier referenced in the Maestro "webforms" + * process variable to read a value from the webform submission and return it + * to the SPV task to set the process variable in the task. + * The function assumes that the value to be extracted is the SID of a user + * and returns the username instead. + * This seems to be the easiest way to accomplish this. + * + * The "webforms" process variable is set by the Maestro Webforms + * submission handler which sets a "submission:xxx" value + * in the "webforms" process variable, where "xxx" is the unique ID + * of the submission, or is set by the Maestro Webform Task Type's + * "Unique Identifier" setting when editing a Maestro Webform Task. + * + * @param string $uniqueWebformIdentifier + * The webform's "Unique Identifier" as stored + * in the "webforms" process variable. + * @param string $webformFieldMachineName + * The webform field's machine name + * (listed as "KEY" in the webform builder) you wish to pull the value from. + * @param int $queueID + * Provided by the executing SPV task -- the QueueID of the SPV task. + * @param int $processID + * Provided by the executing SPV task -- the ProcessID of the workflow + * running the SPV task. + */ +function os2forms_forloeb_spv_fetch_entity_username($uniqueWebformIdentifier, $webformFieldMachineName, $queueID, $processID) { + $returnValue = 'unset'; + // This is the submission we're eventually after. + $sid = FALSE; + $sid = MaestroEngine::getEntityIdentiferByUniqueID($processID, $uniqueWebformIdentifier); + if ($sid) { + $webform_submission = WebformSubmission::load($sid); + } + if ($webform_submission && array_key_exists($webformFieldMachineName, $webform_submission->getData())) { + $returnValue = $webform_submission->getData()[$webformFieldMachineName]; + } + // At this point, the submission's value OR 'unset' is in the $returnValue. + if ($returnValue == 'unset' or !$returnValue) { + return $returnValue; + } + $account = User::load($returnValue); + $username = $account->getUsername(); + return $username; +} From 52181c6f87346a33b77016b16aef89c1cae1558b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mads=20N=C3=B8rgaard?= Date: Mon, 11 Oct 2021 14:44:49 +0200 Subject: [PATCH 03/40] Adding example webforms to enable flow with multiple webforms. --- ...bform.opsamlingsformular_til_flere_par.yml | 199 ++++++++++++++++++ .../webform.webform.part_1_formular.yml | 199 ++++++++++++++++++ .../webform.webform.part_2_formular.yml | 199 ++++++++++++++++++ 3 files changed, 597 insertions(+) create mode 100644 config/optional/webform.webform.opsamlingsformular_til_flere_par.yml create mode 100644 config/optional/webform.webform.part_1_formular.yml create mode 100644 config/optional/webform.webform.part_2_formular.yml diff --git a/config/optional/webform.webform.opsamlingsformular_til_flere_par.yml b/config/optional/webform.webform.opsamlingsformular_til_flere_par.yml new file mode 100644 index 0000000..9f1431b --- /dev/null +++ b/config/optional/webform.webform.opsamlingsformular_til_flere_par.yml @@ -0,0 +1,199 @@ +langcode: da +status: open +dependencies: + module: + - webform_revisions +third_party_settings: + webform_revisions: + contentEntity_id: '11' +open: null +close: null +weight: 0 +uid: 1 +template: false +archive: false +id: opsamlingsformular_til_flere_par +title: 'Opsamlingsformular til flere parter' +description: 'Et eksempel på den formular, der opsamler feltdata fra parterne i et sagsbehandlingsforløb.' +category: Maestro +elements: "part1_indsendelse:\n '#type': fieldset\n '#title': 'Part1 indsendelse'\n part1_navn:\n '#type': textfield\n '#title': Navn\n part1_adresse:\n '#type': os2forms_dawa_address\n '#title': Adresse\n part1_cpr_nummer:\n '#type': textfield\n '#title': CPR-nummer\n part1_e_mail:\n '#type': email\n '#title': E-mail\n part1_telefon:\n '#type': tel\n '#title': Telefon\n part1_beskrivelse:\n '#type': textarea\n '#title': Beskrivelse\npart2_indsendelse:\n '#type': fieldset\n '#title': 'Part2 indsendelse'\n part2_navn:\n '#type': textfield\n '#title': Navn\n part2_adresse:\n '#type': os2forms_dawa_address\n '#title': Adresse\n part2_cpr_nummer:\n '#type': textfield\n '#title': CPR-nummer\n part2_e_mail:\n '#type': email\n '#title': E-mail\n part2_telefon:\n '#type': tel\n '#title': Telefon\n part2_beskrivelse:\n '#type': textarea\n '#title': Beskrivelse\nsagsbehandler_beskrivelse:\n '#type': textarea\n '#title': 'Sagsbehandler beskrivelse'" +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_exception_message: '' + form_open_message: '' + form_close_message: '' + form_previous_submissions: true + form_confidential: false + form_confidential_message: '' + form_remote_addr: true + form_convert_anonymous: false + form_prepopulate: false + form_prepopulate_source_entity: false + form_prepopulate_source_entity_required: false + form_prepopulate_source_entity_type: '' + form_reset: false + form_disable_autocomplete: false + form_novalidate: false + form_disable_inline_errors: false + form_required: false + form_unsaved: false + form_disable_back: false + form_submit_back: false + form_autofocus: false + form_details_toggle: false + form_access_denied: default + form_access_denied_title: '' + form_access_denied_message: '' + form_access_denied_attributes: { } + form_file_limit: '' + share: false + share_node: false + share_theme_name: '' + share_title: true + share_page_body_attributes: { } + submission_label: '' + submission_log: 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: { } + submission_exception_message: '' + submission_locked_message: '' + submission_excluded_elements: { } + submission_exclude_empty: false + submission_exclude_empty_checkbox: false + 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_auto_forward: true + wizard_auto_forward_hide_next_button: false + wizard_keyboard: true + wizard_start_label: '' + wizard_preview_link: false + wizard_confirmation: true + wizard_confirmation_label: '' + 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_title: '' + confirmation_message: '' + confirmation_url: '' + 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/config/optional/webform.webform.part_1_formular.yml b/config/optional/webform.webform.part_1_formular.yml new file mode 100644 index 0000000..d707e42 --- /dev/null +++ b/config/optional/webform.webform.part_1_formular.yml @@ -0,0 +1,199 @@ +langcode: da +status: open +dependencies: + module: + - webform_revisions +third_party_settings: + webform_revisions: + contentEntity_id: '8' +open: null +close: null +weight: 0 +uid: 1 +template: false +archive: false +id: part_1_formular +title: 'Part 1 formular' +description: 'Et eksempel på en formular til første part i et selvebetjeningsforløb.' +category: Maestro +elements: "part1_navn:\n '#type': textfield\n '#title': Navn\npart1_adresse:\n '#type': os2forms_dawa_address\n '#title': Adresse\npart1_cpr_nummer:\n '#type': textfield\n '#title': CPR-nummer\npart1_e_mail:\n '#type': email\n '#title': E-mail\npart1_telefon:\n '#type': tel\n '#title': Telefon\npart1_beskrivelse:\n '#type': textarea\n '#title': Beskrivelse" +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_exception_message: '' + form_open_message: '' + form_close_message: '' + form_previous_submissions: true + form_confidential: false + form_confidential_message: '' + form_remote_addr: true + form_convert_anonymous: false + form_prepopulate: false + form_prepopulate_source_entity: false + form_prepopulate_source_entity_required: false + form_prepopulate_source_entity_type: '' + form_reset: false + form_disable_autocomplete: false + form_novalidate: false + form_disable_inline_errors: false + form_required: false + form_unsaved: false + form_disable_back: false + form_submit_back: false + form_autofocus: false + form_details_toggle: false + form_access_denied: default + form_access_denied_title: '' + form_access_denied_message: '' + form_access_denied_attributes: { } + form_file_limit: '' + share: false + share_node: false + share_theme_name: '' + share_title: true + share_page_body_attributes: { } + submission_label: '' + submission_log: 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: { } + submission_exception_message: '' + submission_locked_message: '' + submission_excluded_elements: { } + submission_exclude_empty: false + submission_exclude_empty_checkbox: false + 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_auto_forward: true + wizard_auto_forward_hide_next_button: false + wizard_keyboard: true + wizard_start_label: '' + wizard_preview_link: false + wizard_confirmation: true + wizard_confirmation_label: '' + 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_title: '' + confirmation_message: '' + confirmation_url: '' + 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/config/optional/webform.webform.part_2_formular.yml b/config/optional/webform.webform.part_2_formular.yml new file mode 100644 index 0000000..644409d --- /dev/null +++ b/config/optional/webform.webform.part_2_formular.yml @@ -0,0 +1,199 @@ +langcode: da +status: open +dependencies: + module: + - webform_revisions +third_party_settings: + webform_revisions: + contentEntity_id: '10' +open: null +close: null +weight: 0 +uid: 1 +template: false +archive: false +id: part_2_formular +title: 'Part 2 formular' +description: 'Et eksempel på en formular til anden part i et selvebetjeningsforløb.' +category: Maestro +elements: "part2_navn:\n '#type': textfield\n '#title': Navn\npart2_adresse:\n '#type': os2forms_dawa_address\n '#title': Adresse\npart2_cpr_nummer:\n '#type': textfield\n '#title': CPR-nummer\npart2_e_mail:\n '#type': email\n '#title': E-mail\npart2_telefon:\n '#type': tel\n '#title': Telefon\npart2_beskrivelse:\n '#type': textarea\n '#title': Beskrivelse" +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_exception_message: '' + form_open_message: '' + form_close_message: '' + form_previous_submissions: true + form_confidential: false + form_confidential_message: '' + form_remote_addr: true + form_convert_anonymous: false + form_prepopulate: false + form_prepopulate_source_entity: false + form_prepopulate_source_entity_required: false + form_prepopulate_source_entity_type: '' + form_reset: false + form_disable_autocomplete: false + form_novalidate: false + form_disable_inline_errors: false + form_required: false + form_unsaved: false + form_disable_back: false + form_submit_back: false + form_autofocus: false + form_details_toggle: false + form_access_denied: default + form_access_denied_title: '' + form_access_denied_message: '' + form_access_denied_attributes: { } + form_file_limit: '' + share: false + share_node: false + share_theme_name: '' + share_title: true + share_page_body_attributes: { } + submission_label: '' + submission_log: 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: { } + submission_exception_message: '' + submission_locked_message: '' + submission_excluded_elements: { } + submission_exclude_empty: false + submission_exclude_empty_checkbox: false + 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_auto_forward: true + wizard_auto_forward_hide_next_button: false + wizard_keyboard: true + wizard_start_label: '' + wizard_preview_link: false + wizard_confirmation: true + wizard_confirmation_label: '' + 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_title: '' + confirmation_message: '' + confirmation_url: '' + 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: { } From e8fbebc88093d24b022caa421fef405097b9e0c2 Mon Sep 17 00:00:00 2001 From: Carsten Agger Date: Tue, 12 Oct 2021 10:28:20 +0200 Subject: [PATCH 04/40] Make basic workflow work, without copying of fields. --- ...maestro_template.multiple_parties_flow.yml | 125 ++++++++++++++---- os2forms_forloeb.module | 6 +- 2 files changed, 103 insertions(+), 28 deletions(-) diff --git a/config/optional/maestro.maestro_template.multiple_parties_flow.yml b/config/optional/maestro.maestro_template.multiple_parties_flow.yml index d19fa4d..037bb33 100644 --- a/config/optional/maestro.maestro_template.multiple_parties_flow.yml +++ b/config/optional/maestro.maestro_template.multiple_parties_flow.yml @@ -1,8 +1,9 @@ +langcode: en status: true dependencies: enforced: module: - - os2forms_forloeb + - os2forms_forloeb id: multiple_parties_flow label: 'Flow med to parter' app_group: 0 @@ -10,7 +11,7 @@ canvas_height: 900 canvas_width: 1000 default_workflow_timeline_stage_count: 4 show_details: true -validated: false +validated: true views_attached: maestro_entity_identifiers: view_machine_name: maestro_entity_identifiers @@ -48,10 +49,10 @@ tasks: id: start tasktype: MaestroStart label: Start - nextstep: 'form2,form_parent' + nextstep: 'set_part_1,set_part_2' nextfalsestep: '' - top: '20' - left: '260' + top: '15' + left: '285' assignby: fixed assignto: engine end: @@ -70,8 +71,8 @@ tasks: tasktype: MaestroWebform nextstep: all nextfalsestep: '' - top: '190' - left: '470' + top: '235' + left: '465' assignby: fixed assignto: '' raphael: '' @@ -80,8 +81,8 @@ tasks: falsebranch: '' lines: { } data: - unique_id: submission - webform_machine_name: start_forloeb_med_to_parter + unique_id: part2 + webform_machine_name: part_2_formular modal: notmodal skip_webform_handlers: 1 webform_nodes_attached_to: none @@ -95,7 +96,7 @@ tasks: showindetail: true participate_in_workflow_status_stage: true workflow_status_stage_number: 1 - workflow_status_stage_message: 'Afventer accept fra part 2' + workflow_status_stage_message: 'Afventer svar fra part 2' notifications: notification_assignment_subject: '' notification_assignment: '' @@ -112,8 +113,8 @@ tasks: tasktype: MaestroBatchFunction nextstep: end nextfalsestep: '' - top: '620' - left: '270' + top: '612' + left: '262' assignby: fixed assignto: '' raphael: '' @@ -139,12 +140,12 @@ tasks: escalation_after: null form2: id: form2 - label: 'Formular forælder 1' + label: 'Formular part 1' tasktype: MaestroWebform nextstep: all nextfalsestep: '' - top: '180' - left: '40' + top: '260' + left: '90' assignby: fixed assignto: '' raphael: '' @@ -153,8 +154,8 @@ tasks: falsebranch: '' lines: { } data: - unique_id: submission - webform_machine_name: start_forloeb_med_to_parter + unique_id: part1 + webform_machine_name: part_1_formular modal: notmodal skip_webform_handlers: 1 webform_nodes_attached_to: none @@ -162,7 +163,7 @@ tasks: webform_nodes_attached_variable: none redirect_to: taskconsole show_edit_form: 1 - assigned: 'user:variable:part_one_id' + assigned: 'user:variable:part_one_id,user:variable:part_one_id' runonce: false handler: '' showindetail: true @@ -184,8 +185,8 @@ tasks: tasktype: MaestroAnd nextstep: submission_review nextfalsestep: '' - top: '420' - left: '260' + top: '415' + left: '255' assignby: fixed assignto: '' raphael: '' @@ -198,7 +199,7 @@ tasks: handler: '' showindetail: true participate_in_workflow_status_stage: true - workflow_status_stage_number: 3 + workflow_status_stage_number: 2 workflow_status_stage_message: 'Alle parter har svaret' notifications: notification_assignment_subject: null @@ -215,8 +216,8 @@ tasks: tasktype: MaestroWebform nextstep: send nextfalsestep: '' - top: '522' - left: '262' + top: '506' + left: '246' assignby: fixed assignto: '' raphael: '' @@ -225,8 +226,8 @@ tasks: falsebranch: '' lines: { } data: - unique_id: submission - webform_machine_name: start_forloeb_med_to_parter + unique_id: opsamling + webform_machine_name: opsamlingsformular_til_flere_par modal: notmodal skip_webform_handlers: 1 webform_nodes_attached_to: none @@ -239,7 +240,7 @@ tasks: handler: '' showindetail: true participate_in_workflow_status_stage: true - workflow_status_stage_number: 4 + workflow_status_stage_number: 3 workflow_status_stage_message: 'Review submission data' notifications: notification_assignment_subject: '' @@ -251,3 +252,75 @@ tasks: reminder_after: 0 escalation_after: 0 notification_assignments: 'user:variable:initiator:assignment' + set_part_1: + id: set_part_1 + label: 'Set Part 1 Responsible' + tasktype: MaestroSetProcessVariable + nextstep: form2 + nextfalsestep: '' + top: '117' + left: '127' + assignby: fixed + assignto: '' + raphael: '' + to: '' + pointedfrom: '' + falsebranch: '' + lines: { } + data: + spv: + variable: part_one_id + method: bycontentfunction + variable_value: 'os2forms_forloeb_spv_fetch_entity_username:submission,part1' + assigned: '' + runonce: false + handler: '' + showindetail: true + participate_in_workflow_status_stage: false + workflow_status_stage_number: 0 + workflow_status_stage_message: '' + notifications: + notification_assignment_subject: null + notification_assignment: null + notification_reminder_subject: null + notification_reminder: null + notification_escalation_subject: null + notification_escalation: null + reminder_after: null + escalation_after: null + set_part_2: + id: set_part_2 + label: 'Set Part 2 Responsible' + tasktype: MaestroSetProcessVariable + nextstep: form_parent + nextfalsestep: '' + top: '122' + left: '422' + assignby: fixed + assignto: '' + raphael: '' + to: '' + pointedfrom: '' + falsebranch: '' + lines: { } + data: + spv: + variable: part_two_id + method: bycontentfunction + variable_value: 'os2forms_forloeb_spv_fetch_entity_username:submission,part2' + assigned: '' + runonce: false + handler: '' + showindetail: true + participate_in_workflow_status_stage: false + workflow_status_stage_number: 0 + workflow_status_stage_message: '' + notifications: + notification_assignment_subject: null + notification_assignment: null + notification_reminder_subject: null + notification_reminder: null + notification_escalation_subject: null + notification_escalation: null + reminder_after: null + escalation_after: null diff --git a/os2forms_forloeb.module b/os2forms_forloeb.module index 39876b4..06bee59 100644 --- a/os2forms_forloeb.module +++ b/os2forms_forloeb.module @@ -1,5 +1,9 @@ save(); } -use Drupal\maestro\Engine\MaestroEngine; - /** * Implements hook_maestro_interactive_handlers() for the return of an Array * of function names and help text that will be displayed in the edit task From 4ea9b759ce6e94458bda10096f7c55ebf8f6ffbd Mon Sep 17 00:00:00 2001 From: Carsten Agger Date: Tue, 12 Oct 2021 13:34:49 +0200 Subject: [PATCH 05/40] New task class in place - now ready to implement the functionality. --- ...maestro_template.multiple_parties_flow.yml | 99 +++++++++---------- .../MaestroWebformMultipleTask.php | 69 +++++++++++++ 2 files changed, 118 insertions(+), 50 deletions(-) create mode 100644 src/Plugin/EngineTasks/MaestroWebformMultipleTask.php diff --git a/config/optional/maestro.maestro_template.multiple_parties_flow.yml b/config/optional/maestro.maestro_template.multiple_parties_flow.yml index 037bb33..e7710d5 100644 --- a/config/optional/maestro.maestro_template.multiple_parties_flow.yml +++ b/config/optional/maestro.maestro_template.multiple_parties_flow.yml @@ -62,7 +62,7 @@ tasks: nextstep: '' nextfalsestep: '' top: '710' - left: '270' + left: '290' assignby: fixed assignto: engine form_parent: @@ -113,8 +113,8 @@ tasks: tasktype: MaestroBatchFunction nextstep: end nextfalsestep: '' - top: '612' - left: '262' + top: '610' + left: '290' assignby: fixed assignto: '' raphael: '' @@ -144,8 +144,8 @@ tasks: tasktype: MaestroWebform nextstep: all nextfalsestep: '' - top: '260' - left: '90' + top: '250' + left: '100' assignby: fixed assignto: '' raphael: '' @@ -183,10 +183,10 @@ tasks: id: all label: 'alle svaret' tasktype: MaestroAnd - nextstep: submission_review + nextstep: se_samlet nextfalsestep: '' - top: '415' - left: '255' + top: '400' + left: '290' assignby: fixed assignto: '' raphael: '' @@ -210,48 +210,6 @@ tasks: notification_escalation: null reminder_after: null escalation_after: null - submission_review: - id: submission_review - label: 'Se samlet' - tasktype: MaestroWebform - nextstep: send - nextfalsestep: '' - top: '506' - left: '246' - assignby: fixed - assignto: '' - raphael: '' - to: '' - pointedfrom: '' - falsebranch: '' - lines: { } - data: - unique_id: opsamling - webform_machine_name: opsamlingsformular_til_flere_par - modal: notmodal - skip_webform_handlers: 1 - webform_nodes_attached_to: none - use_nodes_attached: 0 - webform_nodes_attached_variable: none - redirect_to: taskconsole - show_edit_form: 0 - assigned: 'user:variable:initiator' - runonce: false - handler: '' - showindetail: true - participate_in_workflow_status_stage: true - workflow_status_stage_number: 3 - workflow_status_stage_message: 'Review submission data' - notifications: - notification_assignment_subject: '' - notification_assignment: '' - notification_reminder_subject: '' - notification_reminder: '' - notification_escalation_subject: '' - notification_escalation: '' - reminder_after: 0 - escalation_after: 0 - notification_assignments: 'user:variable:initiator:assignment' set_part_1: id: set_part_1 label: 'Set Part 1 Responsible' @@ -324,3 +282,44 @@ tasks: notification_escalation: null reminder_after: null escalation_after: null + se_samlet: + id: se_samlet + label: 'Se samlet' + tasktype: MaestroWebformMultiple + nextstep: send + nextfalsestep: '' + top: '497' + left: '277' + assignby: fixed + assignto: '' + raphael: '' + to: '' + pointedfrom: '' + falsebranch: '' + lines: { } + data: + unique_id: se_samlet + webform_machine_name: opsamlingsformular_til_flere_par + 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: 0 + assigned: 'user:variable:initiator' + runonce: false + handler: '' + showindetail: true + participate_in_workflow_status_stage: false + workflow_status_stage_number: 0 + workflow_status_stage_message: '' + notifications: + notification_assignment_subject: '' + notification_assignment: '' + notification_reminder_subject: '' + notification_reminder: '' + notification_escalation_subject: '' + notification_escalation: '' + reminder_after: 0 + escalation_after: 0 diff --git a/src/Plugin/EngineTasks/MaestroWebformMultipleTask.php b/src/Plugin/EngineTasks/MaestroWebformMultipleTask.php new file mode 100644 index 0000000..f1c224c --- /dev/null +++ b/src/Plugin/EngineTasks/MaestroWebformMultipleTask.php @@ -0,0 +1,69 @@ +processID = $configuration[0]; + $this->queueID = $configuration[1]; + } + } + + + /** + * {@inheritDoc} + */ + public function shortDescription() { + return t('Webform task with Multiple Submissions'); + } + + /** + * {@inheritDoc} + */ + public function description() { + return $this->t('Webform task with Multiple Submissions'); + } + + /** + * {@inheritDoc} + * + * @see \Drupal\Component\Plugin\PluginBase::getPluginId() + */ + public function getPluginId() { + return 'MaestroWebformMultiple'; + } + + /** + * {@inheritDoc} + */ + public function getExecutableForm($modal, MaestroExecuteInteractive $parent) + { + $returnValue = parent::getExecutableForm($modal, $parent); + \Drupal::logger('os2forms_forloeb')->notice + ("Called with return value: " . $returnValue); + + return $returnValue; + } +} From f9a51082e9b289f3cdde6514585d5c1b82f2e374 Mon Sep 17 00:00:00 2001 From: Carsten Agger Date: Tue, 12 Oct 2021 16:20:24 +0200 Subject: [PATCH 06/40] Commit day's work. --- .../MaestroWebformMultipleTask.php | 57 ++++++++++++++++++- 1 file changed, 55 insertions(+), 2 deletions(-) diff --git a/src/Plugin/EngineTasks/MaestroWebformMultipleTask.php b/src/Plugin/EngineTasks/MaestroWebformMultipleTask.php index f1c224c..02eacfc 100644 --- a/src/Plugin/EngineTasks/MaestroWebformMultipleTask.php +++ b/src/Plugin/EngineTasks/MaestroWebformMultipleTask.php @@ -2,8 +2,12 @@ namespace Drupal\os2forms_forloeb\Plugin\EngineTasks; +use Drupal\webform\Entity\WebformSubmission; +use Drupal\webform\Entity\Webform; +use Drupal\webform\WebformSubmissionForm; use Drupal\maestro_webform\Plugin\EngineTasks\MaestroWebformTask; use Drupal\maestro\Form\MaestroExecuteInteractive; +use Drupal\maestro\Engine\MaestroEngine; /** * Maestro Webform Task Plugin for Multiple Submissions. @@ -61,9 +65,58 @@ public function getPluginId() { public function getExecutableForm($modal, MaestroExecuteInteractive $parent) { $returnValue = parent::getExecutableForm($modal, $parent); - \Drupal::logger('os2forms_forloeb')->notice - ("Called with return value: " . $returnValue); + // Get task, submission ID and web form ID. + $templateTask = MaestroEngine::getTemplateTaskByQueueID($this->queueID); + $taskUniqueSubmissionId = $templateTask['data']['unique_id']; + $webformMachineName = $templateTask['data']['webform_machine_name']; + + \Drupal::logger('os2forms_forloeb')->notice( + "Task: " . json_encode($templateTask) + ); + + // If this is done properly, there's no submission associated with + // taskUniqueSubmissionId. We need to create a submission as described here: + // https://www.drupal.org/docs/8/modules/webform/webform-cookbook/how-to-programmatically-create-and-update-a-submission + + // First, get hold of the interesting previous tasks. + $templateMachineName = MaestroEngine::getTemplateIdFromProcessId($this->processID); + $taskMachineName = MaestroEngine::getTaskIdFromQueueId($this->queueID); + + $pointers = MaestroEngine::getTaskPointersFromTemplate( + $templateMachineName, $taskMachineName + ); + // Now, there can only be one task preceding this, the AND + // task collecting the submissions. + $pointers = MaestroEngine::getTaskPointersFromTemplate( + $templateMachineName, $pointers[0] + ); + \Drupal::logger('os2forms_forloeb')->notice( + "Pointers: " . json_encode($pointers) + ); + // Now, we query the queue to find the actual tasks pointing to the AND + // task. + $query = \Drupal::entityQuery('maestro_queue'); + $andMainConditions = $query->andConditionGroup() + ->condition('process_id', $this->processID); + $orConditionGroup = $query->orConditionGroup(); + foreach ($pointers as $taskID) { + $orConditionGroup->condition('task_id', $taskID); + } + $andMainConditions->condition($orConditionGroup); + $query->condition($andMainConditions); + $entityIDs = $query->execute(); + + + foreach ($entityIDs as $entityID) { + // Load the Maestro task with ID $pid. + $queueRecord = \Drupal::entityTypeManager()->getStorage('maestro_queue')->load($entityID); + \Drupal::logger('os2forms_forloeb')->notice( + "Queue Record: " . json_encode($queueRecord) + ); + // Load its corresponding webform submission. + // Copy the fields of the webform submission to the values array. + } return $returnValue; } } From 85886adf29e2974ccbdf1501af2ed1620212831a Mon Sep 17 00:00:00 2001 From: Carsten Agger Date: Wed, 13 Oct 2021 11:18:49 +0200 Subject: [PATCH 07/40] Added form_alter hook to intercept submit on WebformMultiple task. --- os2forms_forloeb.module | 51 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/os2forms_forloeb.module b/os2forms_forloeb.module index 06bee59..168d6d9 100644 --- a/os2forms_forloeb.module +++ b/os2forms_forloeb.module @@ -1,5 +1,6 @@ getUsername(); return $username; } + +/** + * Implements hook_form_alter() for MaestroWebformMultiple task type. + */ +function os2forms_forloeb_form_alter(&$form, FormStateInterface $form_state, $form_id) { + $queueID = intval(\Drupal::request()->query->get('queueid', 0)); + $isMaestro = intval(\Drupal::request()->query->get('maestro', 0)); + // Both these keys need to exist. + if ($isMaestro && $queueID) { + $templateTask = MaestroEngine::getTemplateTaskByQueueID($queueID); + // We only care about Maestro Webform Multiple tasks. + if ($templateTask && $templateTask['tasktype'] == 'MaestroWebformMultiple') { + $storage = $form_state->getStorage(); + if ($storage && array_key_exists('form_display', $storage)) { + $webformTypes = \Drupal::entityTypeManager()->getStorage('node_type')->loadMultiple(); + $thisForm = $storage['form_display']->get('bundle'); + $targetEntityType = $storage['form_display']->get('targetEntityType'); + if ($isMaestro == 1 && + $targetEntityType == 'webform_submission' && + $templateTask['data']['webform_machine_name'] == $thisForm) { + // We now know this is a webform submission. We are going to add in our own form fields here. + $form['maestro'] = [ + '#tree' => TRUE, + ]; + + $form['maestro']['type'] = [ + '#type' => 'hidden', + '#default_value' => $thisForm, + '#required' => TRUE, + ]; + + $form['maestro']['queue_id'] = [ + '#type' => 'hidden', + '#default_value' => $queueID, + '#required' => TRUE, + ]; + + $form['maestro']['process_id'] = [ + '#type' => 'hidden', + '#default_value' => MaestroEngine::getProcessIdFromQueueId($queueID), + '#required' => TRUE, + ]; + + $form['actions']['submit']['#submit'][] = 'maestro_webform_webform_type_task_submit'; + + } + } + } + } +} From 0dc6257cda262cf79215b01254360e73ec52e716 Mon Sep 17 00:00:00 2001 From: Carsten Agger Date: Wed, 13 Oct 2021 14:39:57 +0200 Subject: [PATCH 08/40] It works, next step some prettification. --- ...maestro_template.multiple_parties_flow.yml | 18 ++--- .../MaestroWebformMultipleTask.php | 81 +++++++++++++------ 2 files changed, 67 insertions(+), 32 deletions(-) diff --git a/config/optional/maestro.maestro_template.multiple_parties_flow.yml b/config/optional/maestro.maestro_template.multiple_parties_flow.yml index e7710d5..6070e21 100644 --- a/config/optional/maestro.maestro_template.multiple_parties_flow.yml +++ b/config/optional/maestro.maestro_template.multiple_parties_flow.yml @@ -65,8 +65,8 @@ tasks: left: '290' assignby: fixed assignto: engine - form_parent: - id: form_parent + form2: + id: form2 label: 'Formular part 2' tasktype: MaestroWebform nextstep: all @@ -138,8 +138,8 @@ tasks: notification_escalation: null reminder_after: null escalation_after: null - form2: - id: form2 + form1: + id: form1 label: 'Formular part 1' tasktype: MaestroWebform nextstep: all @@ -214,7 +214,7 @@ tasks: id: set_part_1 label: 'Set Part 1 Responsible' tasktype: MaestroSetProcessVariable - nextstep: form2 + nextstep: form1 nextfalsestep: '' top: '117' left: '127' @@ -250,7 +250,7 @@ tasks: id: set_part_2 label: 'Set Part 2 Responsible' tasktype: MaestroSetProcessVariable - nextstep: form_parent + nextstep: form2 nextfalsestep: '' top: '122' left: '422' @@ -288,8 +288,8 @@ tasks: tasktype: MaestroWebformMultiple nextstep: send nextfalsestep: '' - top: '497' - left: '277' + top: '489' + left: '269' assignby: fixed assignto: '' raphael: '' @@ -306,7 +306,7 @@ tasks: use_nodes_attached: 0 webform_nodes_attached_variable: none redirect_to: taskconsole - show_edit_form: 0 + show_edit_form: 1 assigned: 'user:variable:initiator' runonce: false handler: '' diff --git a/src/Plugin/EngineTasks/MaestroWebformMultipleTask.php b/src/Plugin/EngineTasks/MaestroWebformMultipleTask.php index 02eacfc..af89ba1 100644 --- a/src/Plugin/EngineTasks/MaestroWebformMultipleTask.php +++ b/src/Plugin/EngineTasks/MaestroWebformMultipleTask.php @@ -64,19 +64,8 @@ public function getPluginId() { */ public function getExecutableForm($modal, MaestroExecuteInteractive $parent) { - $returnValue = parent::getExecutableForm($modal, $parent); - - // Get task, submission ID and web form ID. - $templateTask = MaestroEngine::getTemplateTaskByQueueID($this->queueID); - $taskUniqueSubmissionId = $templateTask['data']['unique_id']; - $webformMachineName = $templateTask['data']['webform_machine_name']; - - \Drupal::logger('os2forms_forloeb')->notice( - "Task: " . json_encode($templateTask) - ); - - // If this is done properly, there's no submission associated with - // taskUniqueSubmissionId. We need to create a submission as described here: + // If this is used properly, there's no submission associated with + // the current task. We need to create a submission as described here: // https://www.drupal.org/docs/8/modules/webform/webform-cookbook/how-to-programmatically-create-and-update-a-submission // First, get hold of the interesting previous tasks. @@ -91,9 +80,6 @@ public function getExecutableForm($modal, MaestroExecuteInteractive $parent) $pointers = MaestroEngine::getTaskPointersFromTemplate( $templateMachineName, $pointers[0] ); - \Drupal::logger('os2forms_forloeb')->notice( - "Pointers: " . json_encode($pointers) - ); // Now, we query the queue to find the actual tasks pointing to the AND // task. $query = \Drupal::entityQuery('maestro_queue'); @@ -105,18 +91,67 @@ public function getExecutableForm($modal, MaestroExecuteInteractive $parent) } $andMainConditions->condition($orConditionGroup); $query->condition($andMainConditions); - $entityIDs = $query->execute(); + $queueIDs = $query->execute(); + + // This array will hold the key => value pairs for the fields + // to be copied to the final form. + $field_values = []; - foreach ($entityIDs as $entityID) { + foreach ($queueIDs as $queueID) { // Load the Maestro task with ID $pid. - $queueRecord = \Drupal::entityTypeManager()->getStorage('maestro_queue')->load($entityID); - \Drupal::logger('os2forms_forloeb')->notice( - "Queue Record: " . json_encode($queueRecord) - ); + $currentTask = MaestroEngine::getTemplateTaskByQueueID($queueID); // Load its corresponding webform submission. + $taskUniqueSubmissionId = $currentTask['data']['unique_id']; + $webformMachineName = $currentTask['data']['webform_machine_name']; + $sid = MaestroEngine::getEntityIdentiferByUniqueID($this->processID, $taskUniqueSubmissionId); + if ($sid) { + $webform_submission = WebformSubmission::load($sid); + } + if (!$webform_submission) { + \Drupal::logger('os2forms_forloeb')->error( + "Predecessors MUSt have submissions with this task type." + ); + // @todo This is an error, throw an exception or something. + } // Copy the fields of the webform submission to the values array. + foreach ($webform_submission->getData() as $key => $value) { + if ($value) { + $field_values[$key] = $value; + } + } } - return $returnValue; + + // Now create webform submission, submit and attach to current task. + + // Get task, submission ID and web form ID. + $templateTask = MaestroEngine::getTemplateTaskByQueueID($this->queueID); + $taskUniqueSubmissionId = $templateTask['data']['unique_id']; + $webformMachineName = $templateTask['data']['webform_machine_name']; + + $webform = Webform::load($webformMachineName); + $values = []; + $values['webform_id'] = $webformMachineName; + $values['data'] = $field_values; + + $new_submission = WebformSubmission::create($values); + + $errors = WebformSubmissionForm::validateWebformSubmission($webform_submission); + + if (!empty($errors)) { + \Drupal::logger('os2forms_forloeb')->error( + "Can't create new submission: " . json_encode($errors) + ); + } + + $new_submission = WebformSubmissionForm::submitWebformSubmission($new_submission); + + $sid = $new_submission->id(); + MaestroEngine::createEntityIdentifier( + $this->processID, $new_submission->getEntityTypeId(), + $new_submission->bundle(), $taskUniqueSubmissionId, $sid + ); + + return parent::getExecutableForm($modal, $parent); } } From 1bcd8b690783a787d21242c8c66ea9f14958116f Mon Sep 17 00:00:00 2001 From: Carsten Agger Date: Wed, 13 Oct 2021 15:05:57 +0200 Subject: [PATCH 09/40] Lint changes. --- .../EngineTasks/MaestroSelectContentTask.php | 3 ++- .../MaestroWebformMultipleTask.php | 20 +++++++------------ 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/src/Plugin/EngineTasks/MaestroSelectContentTask.php b/src/Plugin/EngineTasks/MaestroSelectContentTask.php index cc2d6ca..1f24e7a 100644 --- a/src/Plugin/EngineTasks/MaestroSelectContentTask.php +++ b/src/Plugin/EngineTasks/MaestroSelectContentTask.php @@ -323,7 +323,8 @@ public function handleExecuteSubmit(array &$form, FormStateInterface $form_state $processID = MaestroEngine::getProcessIdFromQueueId($queueID); if (strstr($triggeringElement['#id'], 'edit-submit') !== FALSE && $queueID > 0) { - // If existing self-service page is chosen simply assign it to this process + // If existing self-service page is chosen simply assign it to this + // process. // If a new self-service is chosen create that self-service page // and assign it to this process. if ($form_state->getValue('new_webform')) { diff --git a/src/Plugin/EngineTasks/MaestroWebformMultipleTask.php b/src/Plugin/EngineTasks/MaestroWebformMultipleTask.php index af89ba1..7fb40a3 100644 --- a/src/Plugin/EngineTasks/MaestroWebformMultipleTask.php +++ b/src/Plugin/EngineTasks/MaestroWebformMultipleTask.php @@ -1,4 +1,4 @@ -processID); $taskMachineName = MaestroEngine::getTaskIdFromQueueId($this->queueID); @@ -75,7 +72,7 @@ public function getExecutableForm($modal, MaestroExecuteInteractive $parent) $pointers = MaestroEngine::getTaskPointersFromTemplate( $templateMachineName, $taskMachineName ); - // Now, there can only be one task preceding this, the AND + // Now, there can only be one task preceding this, the AND // task collecting the submissions. $pointers = MaestroEngine::getTaskPointersFromTemplate( $templateMachineName, $pointers[0] @@ -84,7 +81,7 @@ public function getExecutableForm($modal, MaestroExecuteInteractive $parent) // task. $query = \Drupal::entityQuery('maestro_queue'); $andMainConditions = $query->andConditionGroup() - ->condition('process_id', $this->processID); + ->condition('process_id', $this->processID); $orConditionGroup = $query->orConditionGroup(); foreach ($pointers as $taskID) { $orConditionGroup->condition('task_id', $taskID); @@ -93,10 +90,9 @@ public function getExecutableForm($modal, MaestroExecuteInteractive $parent) $query->condition($andMainConditions); $queueIDs = $query->execute(); - // This array will hold the key => value pairs for the fields // to be copied to the final form. - $field_values = []; + $field_values = []; foreach ($queueIDs as $queueID) { // Load the Maestro task with ID $pid. @@ -123,13 +119,10 @@ public function getExecutableForm($modal, MaestroExecuteInteractive $parent) } // Now create webform submission, submit and attach to current task. - - // Get task, submission ID and web form ID. $templateTask = MaestroEngine::getTemplateTaskByQueueID($this->queueID); $taskUniqueSubmissionId = $templateTask['data']['unique_id']; $webformMachineName = $templateTask['data']['webform_machine_name']; - $webform = Webform::load($webformMachineName); $values = []; $values['webform_id'] = $webformMachineName; $values['data'] = $field_values; @@ -143,7 +136,7 @@ public function getExecutableForm($modal, MaestroExecuteInteractive $parent) "Can't create new submission: " . json_encode($errors) ); } - + $new_submission = WebformSubmissionForm::submitWebformSubmission($new_submission); $sid = $new_submission->id(); @@ -154,4 +147,5 @@ public function getExecutableForm($modal, MaestroExecuteInteractive $parent) return parent::getExecutableForm($modal, $parent); } + } From 6b55456b82e8cf34ac715f525c4386b76dbfddb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mads=20N=C3=B8rgaard?= Date: Thu, 14 Oct 2021 08:02:00 +0200 Subject: [PATCH 10/40] Fix notification by variable for part1 --- ...maestro_template.multiple_parties_flow.yml | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/config/optional/maestro.maestro_template.multiple_parties_flow.yml b/config/optional/maestro.maestro_template.multiple_parties_flow.yml index 6070e21..6c34476 100644 --- a/config/optional/maestro.maestro_template.multiple_parties_flow.yml +++ b/config/optional/maestro.maestro_template.multiple_parties_flow.yml @@ -1,9 +1,8 @@ -langcode: en status: true dependencies: enforced: module: - - os2forms_forloeb + - os2forms_forloeb id: multiple_parties_flow label: 'Flow med to parter' app_group: 0 @@ -51,8 +50,8 @@ tasks: label: Start nextstep: 'set_part_1,set_part_2' nextfalsestep: '' - top: '15' - left: '285' + top: '50' + left: '280' assignby: fixed assignto: engine end: @@ -71,8 +70,8 @@ tasks: tasktype: MaestroWebform nextstep: all nextfalsestep: '' - top: '235' - left: '465' + top: '227' + left: '457' assignby: fixed assignto: '' raphael: '' @@ -144,8 +143,8 @@ tasks: tasktype: MaestroWebform nextstep: all nextfalsestep: '' - top: '250' - left: '100' + top: '245' + left: '95' assignby: fixed assignto: '' raphael: '' @@ -179,6 +178,7 @@ tasks: notification_escalation: '' reminder_after: 0 escalation_after: 0 + notification_assignments: 'user:variable:part_one_id:assignment' all: id: all label: 'alle svaret' @@ -288,8 +288,8 @@ tasks: tasktype: MaestroWebformMultiple nextstep: send nextfalsestep: '' - top: '489' - left: '269' + top: '500' + left: '290' assignby: fixed assignto: '' raphael: '' From 909db4670e1994afc17227d43ced22b5ce09ca05 Mon Sep 17 00:00:00 2001 From: Carsten Agger Date: Thu, 14 Oct 2021 09:27:43 +0200 Subject: [PATCH 11/40] Changed so that field names in source forms are prefixed with unique ID. --- config/optional/webform.webform.part_1_formular.yml | 2 +- config/optional/webform.webform.part_2_formular.yml | 2 +- src/Plugin/EngineTasks/MaestroWebformMultipleTask.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config/optional/webform.webform.part_1_formular.yml b/config/optional/webform.webform.part_1_formular.yml index d707e42..873c3a6 100644 --- a/config/optional/webform.webform.part_1_formular.yml +++ b/config/optional/webform.webform.part_1_formular.yml @@ -16,7 +16,7 @@ id: part_1_formular title: 'Part 1 formular' description: 'Et eksempel på en formular til første part i et selvebetjeningsforløb.' category: Maestro -elements: "part1_navn:\n '#type': textfield\n '#title': Navn\npart1_adresse:\n '#type': os2forms_dawa_address\n '#title': Adresse\npart1_cpr_nummer:\n '#type': textfield\n '#title': CPR-nummer\npart1_e_mail:\n '#type': email\n '#title': E-mail\npart1_telefon:\n '#type': tel\n '#title': Telefon\npart1_beskrivelse:\n '#type': textarea\n '#title': Beskrivelse" +elements: "navn:\n '#type': textfield\n '#title': Navn\nadresse:\n '#type': os2forms_dawa_address\n '#title': Adresse\ncpr_nummer:\n '#type': textfield\n '#title': CPR-nummer\ne_mail:\n '#type': email\n '#title': E-mail\ntelefon:\n '#type': tel\n '#title': Telefon\nbeskrivelse:\n '#type': textarea\n '#title': Beskrivelse" css: '' javascript: '' settings: diff --git a/config/optional/webform.webform.part_2_formular.yml b/config/optional/webform.webform.part_2_formular.yml index 644409d..8f5cc84 100644 --- a/config/optional/webform.webform.part_2_formular.yml +++ b/config/optional/webform.webform.part_2_formular.yml @@ -16,7 +16,7 @@ id: part_2_formular title: 'Part 2 formular' description: 'Et eksempel på en formular til anden part i et selvebetjeningsforløb.' category: Maestro -elements: "part2_navn:\n '#type': textfield\n '#title': Navn\npart2_adresse:\n '#type': os2forms_dawa_address\n '#title': Adresse\npart2_cpr_nummer:\n '#type': textfield\n '#title': CPR-nummer\npart2_e_mail:\n '#type': email\n '#title': E-mail\npart2_telefon:\n '#type': tel\n '#title': Telefon\npart2_beskrivelse:\n '#type': textarea\n '#title': Beskrivelse" +elements: "navn:\n '#type': textfield\n '#title': Navn\nadresse:\n '#type': os2forms_dawa_address\n '#title': Adresse\ncpr_nummer:\n '#type': textfield\n '#title': CPR-nummer\ne_mail:\n '#type': email\n '#title': E-mail\ntelefon:\n '#type': tel\n '#title': Telefon\nbeskrivelse:\n '#type': textarea\n '#title': Beskrivelse" css: '' javascript: '' settings: diff --git a/src/Plugin/EngineTasks/MaestroWebformMultipleTask.php b/src/Plugin/EngineTasks/MaestroWebformMultipleTask.php index 7fb40a3..3745f3a 100644 --- a/src/Plugin/EngineTasks/MaestroWebformMultipleTask.php +++ b/src/Plugin/EngineTasks/MaestroWebformMultipleTask.php @@ -113,7 +113,7 @@ public function getExecutableForm($modal, MaestroExecuteInteractive $parent) { // Copy the fields of the webform submission to the values array. foreach ($webform_submission->getData() as $key => $value) { if ($value) { - $field_values[$key] = $value; + $field_values[$taskUniqueSubmissionId . '_' . $key] = $value; } } } From de627623851a9a6cabcf226cbb448bbc82101ba8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mads=20N=C3=B8rgaard?= Date: Thu, 14 Oct 2021 10:01:12 +0200 Subject: [PATCH 12/40] Remove composer update from CI check --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index c14689f..3906d8d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,7 +25,6 @@ install: - export REQUIRE_REPLACE='"require":{"os2forms\/os2forms_forloeb":"\*",' - sed -i "s/$REPOSITORIES/$REPOSITORIES_REPLACE/g" composer.json - sed -i "s/$REQUIRE/$REQUIRE_REPLACE/g" composer.json -- composer update os2forms/os2forms_forloeb - PROJECT_PATH=$DRUPAL_ROOT/modules/contrib/os2forms_forloeb - cd $DRUPAL_ROOT/core - yarn install From a77e7011d1490dd8a157e39713a5885d1c7d77f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mads=20N=C3=B8rgaard?= Date: Thu, 14 Oct 2021 10:12:00 +0200 Subject: [PATCH 13/40] Set composer update to get latest version per tag --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 3906d8d..fbea305 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,6 +25,7 @@ install: - export REQUIRE_REPLACE='"require":{"os2forms\/os2forms_forloeb":"\*",' - sed -i "s/$REPOSITORIES/$REPOSITORIES_REPLACE/g" composer.json - sed -i "s/$REQUIRE/$REQUIRE_REPLACE/g" composer.json +- composer update os2forms/os2forms_forloeb:^1.5.1 - PROJECT_PATH=$DRUPAL_ROOT/modules/contrib/os2forms_forloeb - cd $DRUPAL_ROOT/core - yarn install From 6219777907baf3ed05383ac43c1af0e2d810e2bb Mon Sep 17 00:00:00 2001 From: Carsten Agger Date: Thu, 14 Oct 2021 10:21:46 +0200 Subject: [PATCH 14/40] Brushup before review. --- os2forms_forloeb.module | 5 +++++ .../MaestroWebformMultipleTask.php | 20 ++++++++++--------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/os2forms_forloeb.module b/os2forms_forloeb.module index 168d6d9..8ba70a0 100644 --- a/os2forms_forloeb.module +++ b/os2forms_forloeb.module @@ -211,6 +211,11 @@ function os2forms_forloeb_spv_fetch_entity_username($uniqueWebformIdentifier, $w /** * Implements hook_form_alter() for MaestroWebformMultiple task type. + * + * This has been copied from + * maestro/maestro_webform/maestro_webform.module with a minimal but + * necessary change. See https://www.drupal.org/project/maestro/issues/3243510 + * */ function os2forms_forloeb_form_alter(&$form, FormStateInterface $form_state, $form_id) { $queueID = intval(\Drupal::request()->query->get('queueid', 0)); diff --git a/src/Plugin/EngineTasks/MaestroWebformMultipleTask.php b/src/Plugin/EngineTasks/MaestroWebformMultipleTask.php index 3745f3a..62449cc 100644 --- a/src/Plugin/EngineTasks/MaestroWebformMultipleTask.php +++ b/src/Plugin/EngineTasks/MaestroWebformMultipleTask.php @@ -63,8 +63,9 @@ public function getPluginId() { */ public function getExecutableForm($modal, MaestroExecuteInteractive $parent) { // If this is used properly, there's no submission associated with - // the current task. We need to create a submission as described here: - // https://www.drupal.org/docs/8/modules/webform/webform-cookbook/how-to-programmatically-create-and-update-a-submission + // the current task. We will gather data from its predecessor tasks + // (collected by an AND task) and create a submission using their fields. + // // First, get hold of the interesting previous tasks. $templateMachineName = MaestroEngine::getTemplateIdFromProcessId($this->processID); $taskMachineName = MaestroEngine::getTaskIdFromQueueId($this->queueID); @@ -73,12 +74,12 @@ public function getExecutableForm($modal, MaestroExecuteInteractive $parent) { $templateMachineName, $taskMachineName ); // Now, there can only be one task preceding this, the AND - // task collecting the submissions. + // task collecting the submissions. Get the predecessors of the AND task. $pointers = MaestroEngine::getTaskPointersFromTemplate( $templateMachineName, $pointers[0] ); - // Now, we query the queue to find the actual tasks pointing to the AND - // task. + // Now, we query the queue to find the actual tasks (Maestro queue IDs) + // pointing to the AND task. $query = \Drupal::entityQuery('maestro_queue'); $andMainConditions = $query->andConditionGroup() ->condition('process_id', $this->processID); @@ -106,9 +107,8 @@ public function getExecutableForm($modal, MaestroExecuteInteractive $parent) { } if (!$webform_submission) { \Drupal::logger('os2forms_forloeb')->error( - "Predecessors MUSt have submissions with this task type." + "Predecessors MUSt have submissions with webforms attached." ); - // @todo This is an error, throw an exception or something. } // Copy the fields of the webform submission to the values array. foreach ($webform_submission->getData() as $key => $value) { @@ -118,7 +118,7 @@ public function getExecutableForm($modal, MaestroExecuteInteractive $parent) { } } - // Now create webform submission, submit and attach to current task. + // Now create webform submission, submit and attach to current process. $templateTask = MaestroEngine::getTemplateTaskByQueueID($this->queueID); $taskUniqueSubmissionId = $templateTask['data']['unique_id']; $webformMachineName = $templateTask['data']['webform_machine_name']; @@ -127,6 +127,7 @@ public function getExecutableForm($modal, MaestroExecuteInteractive $parent) { $values['webform_id'] = $webformMachineName; $values['data'] = $field_values; + // Create submission. $new_submission = WebformSubmission::create($values); $errors = WebformSubmissionForm::validateWebformSubmission($webform_submission); @@ -136,9 +137,10 @@ public function getExecutableForm($modal, MaestroExecuteInteractive $parent) { "Can't create new submission: " . json_encode($errors) ); } - + // Submit it. $new_submission = WebformSubmissionForm::submitWebformSubmission($new_submission); + // Attach it to the Maestro process. $sid = $new_submission->id(); MaestroEngine::createEntityIdentifier( $this->processID, $new_submission->getEntityTypeId(), From c87ff6af7fc7c395acc67db1e0e96ec8f35ccd00 Mon Sep 17 00:00:00 2001 From: Carsten Agger Date: Thu, 14 Oct 2021 10:29:37 +0200 Subject: [PATCH 15/40] Travis CI fix. --- composer.json | 1 - 1 file changed, 1 deletion(-) diff --git a/composer.json b/composer.json index 42c153a..3e416bf 100644 --- a/composer.json +++ b/composer.json @@ -53,7 +53,6 @@ "drupal/webform_views": "^5.0@alpha", "drupal/workflow_participants": "^2.4", "os2forms/os2forms_forloeb_profile": "^1.0", - "vlucas/phpdotenv": "^5.1", "webmozart/path-util": "2.3.0", "zaporylie/composer-drupal-optimizations": "1.2.0" }, From bf74ebc680c0c9481f2e2b1473bace6abd3acd18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mads=20N=C3=B8rgaard?= Date: Thu, 14 Oct 2021 10:36:30 +0200 Subject: [PATCH 16/40] Remove tag versioning of forloeb module --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index fbea305..c14689f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,7 +25,7 @@ install: - export REQUIRE_REPLACE='"require":{"os2forms\/os2forms_forloeb":"\*",' - sed -i "s/$REPOSITORIES/$REPOSITORIES_REPLACE/g" composer.json - sed -i "s/$REQUIRE/$REQUIRE_REPLACE/g" composer.json -- composer update os2forms/os2forms_forloeb:^1.5.1 +- composer update os2forms/os2forms_forloeb - PROJECT_PATH=$DRUPAL_ROOT/modules/contrib/os2forms_forloeb - cd $DRUPAL_ROOT/core - yarn install From b7bc1092e9820954d2329625f8a692ea30abc4f7 Mon Sep 17 00:00:00 2001 From: Carsten Agger Date: Thu, 14 Oct 2021 10:43:30 +0200 Subject: [PATCH 17/40] Fix linting error. --- src/Plugin/EngineTasks/MaestroSelectContentTask.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Plugin/EngineTasks/MaestroSelectContentTask.php b/src/Plugin/EngineTasks/MaestroSelectContentTask.php index 43e5e76..1f24e7a 100644 --- a/src/Plugin/EngineTasks/MaestroSelectContentTask.php +++ b/src/Plugin/EngineTasks/MaestroSelectContentTask.php @@ -325,7 +325,7 @@ public function handleExecuteSubmit(array &$form, FormStateInterface $form_state if (strstr($triggeringElement['#id'], 'edit-submit') !== FALSE && $queueID > 0) { // If existing self-service page is chosen simply assign it to this // process. - // If a new self-service is chosen create that self-service page + // If a new self-service is chosen create that self-service page // and assign it to this process. if ($form_state->getValue('new_webform')) { // Create the new self-service page entity. From e2dc176caa51203cb737ad195f1b75cde54dbc5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mads=20N=C3=B8rgaard?= Date: Fri, 15 Oct 2021 23:14:59 +0200 Subject: [PATCH 18/40] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0087cb3..8ebcf2c 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# OS2forms 2.1 med Forløb [![Build Status](https://travis-ci.com/OS2Forms/os2forms_forloeb.svg?branch=develop)](https://travis-ci.org/OS2Forms/os2forms_forloeb) +# OS2forms 2.1 med Forløb [![Build Status](https://app.travis-ci.com/OS2Forms/os2forms_forloeb.svg?branch=develop)](https://app.travis-ci.com/OS2Forms/os2forms_forloeb) Adds a Maestro workflow engine and advanced workflow functionality to OS2forms. ## Installing OS2forms 2.1 med Forløb From ef7e60ef939dc9249a4d833f4a1d29c8c4f1b233 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mads=20N=C3=B8rgaard?= Date: Mon, 18 Oct 2021 12:49:12 +0200 Subject: [PATCH 19/40] Refactor unused webforms and flows --- .../maestro.maestro_template.ppr_flow.yml | 393 ------------------ ...bform.barsel_erklaering_ved_graviditet.yml | 232 ----------- ...bform.indstilling_til_paedagogisk_psyk.yml | 194 --------- .../webform.webform.indstilling_til_ppr.yml | 202 --------- config/optional/webform.webform.ppr_test.yml | 194 --------- 5 files changed, 1215 deletions(-) delete mode 100644 config/optional/maestro.maestro_template.ppr_flow.yml delete mode 100644 config/optional/webform.webform.barsel_erklaering_ved_graviditet.yml delete mode 100644 config/optional/webform.webform.indstilling_til_paedagogisk_psyk.yml delete mode 100644 config/optional/webform.webform.indstilling_til_ppr.yml delete mode 100644 config/optional/webform.webform.ppr_test.yml diff --git a/config/optional/maestro.maestro_template.ppr_flow.yml b/config/optional/maestro.maestro_template.ppr_flow.yml deleted file mode 100644 index 2b4c04b..0000000 --- a/config/optional/maestro.maestro_template.ppr_flow.yml +++ /dev/null @@ -1,393 +0,0 @@ -langcode: da -status: true -dependencies: - enforced: - module: - - os2forms_forloeb -id: ppr_flow -label: 'PPR flow' -app_group: 0 -canvas_height: 900 -canvas_width: 800 -default_workflow_timeline_stage_count: 4 -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: '' -initiator: null -workflow_timeline_stage_count: null -workflow_current_stage: null -workflow_current_stage_message: null -tasks: - start: - id: start - tasktype: MaestroStart - label: Start - nextstep: form - nextfalsestep: '' - top: '0' - left: '270' - assignby: fixed - assignto: engine - end: - id: end - tasktype: MaestroEnd - label: End - nextstep: '' - nextfalsestep: '' - top: '630' - left: '270' - assignby: fixed - assignto: engine - form: - id: form - label: 'Formular PPR' - tasktype: MaestroWebform - nextstep: 'form_parent,form2' - nextfalsestep: '' - top: '75' - left: '265' - assignby: fixed - assignto: '' - raphael: '' - to: '' - pointedfrom: '' - falsebranch: '' - lines: { } - data: - unique_id: submission - webform_machine_name: ppr_test - 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: 0 - assigned: '' - runonce: false - handler: '' - showindetail: true - participate_in_workflow_status_stage: true - workflow_status_stage_number: 1 - workflow_status_stage_message: '' - notifications: - notification_assignment_subject: '' - notification_assignment: '' - notification_reminder_subject: '' - notification_reminder: '' - notification_escalation_subject: '' - notification_escalation: '' - reminder_after: 0 - escalation_after: 0 - parent1_accept: - id: parent1_accept - label: 'Forælder 1 accept' - tasktype: MaestroIf - nextstep: 'all,cancel' - nextfalsestep: '' - top: '322' - left: '482' - assignby: fixed - assignto: '' - raphael: '' - to: '' - pointedfrom: '' - falsebranch: '' - lines: { } - data: - if: - method: bylasttaskstatus - variable: initiator - operator: '=' - variable_value: '' - status: '1' - assigned: '' - runonce: false - handler: '' - showindetail: true - participate_in_workflow_status_stage: false - workflow_status_stage_number: 0 - workflow_status_stage_message: '' - notifications: - notification_assignment_subject: null - notification_assignment: null - notification_reminder_subject: null - notification_reminder: null - notification_escalation_subject: null - notification_escalation: null - reminder_after: null - escalation_after: null - parent2_accept: - id: parent2_accept - label: 'Forælder 2 accept' - tasktype: MaestroIf - nextstep: 'all,cancel' - nextfalsestep: '' - top: '335' - left: '5' - assignby: fixed - assignto: '' - raphael: '' - to: '' - pointedfrom: '' - falsebranch: '' - lines: { } - data: - if: - method: bylasttaskstatus - variable: initiator - operator: '=' - variable_value: '' - status: '1' - assigned: '' - runonce: false - handler: '' - showindetail: true - participate_in_workflow_status_stage: false - workflow_status_stage_number: 0 - workflow_status_stage_message: '' - notifications: - notification_assignment_subject: null - notification_assignment: null - notification_reminder_subject: null - notification_reminder: null - notification_escalation_subject: null - notification_escalation: null - reminder_after: null - escalation_after: null - form_parent: - id: form_parent - label: 'Formular forælder' - tasktype: MaestroWebform - nextstep: parent1_accept - nextfalsestep: '' - top: '190' - left: '370' - assignby: fixed - assignto: '' - raphael: '' - to: '' - pointedfrom: '' - falsebranch: '' - lines: { } - data: - unique_id: submission - webform_machine_name: indstilling_til_paedagogisk_psyk - 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: 0 - assigned: '' - runonce: false - handler: '' - showindetail: true - participate_in_workflow_status_stage: true - workflow_status_stage_number: 2 - workflow_status_stage_message: '' - notifications: - notification_assignment_subject: '' - notification_assignment: '' - notification_reminder_subject: '' - notification_reminder: '' - notification_escalation_subject: '' - notification_escalation: '' - reminder_after: 0 - escalation_after: 0 - send: - id: send - label: Afsend - tasktype: MaestroBatchFunction - nextstep: end - nextfalsestep: '' - top: '520' - left: '270' - assignby: fixed - assignto: '' - raphael: '' - to: '' - pointedfrom: '' - falsebranch: '' - lines: { } - handler: maestro_dummy_batch_function - assigned: '' - runonce: false - showindetail: true - participate_in_workflow_status_stage: false - workflow_status_stage_number: 0 - workflow_status_stage_message: '' - notifications: - notification_assignment_subject: null - notification_assignment: null - notification_reminder_subject: null - notification_reminder: null - notification_escalation_subject: null - notification_escalation: null - reminder_after: null - escalation_after: null - form2: - id: form2 - label: 'Formular forælder' - tasktype: MaestroWebform - nextstep: parent2_accept - nextfalsestep: '' - top: '180' - left: '170' - assignby: fixed - assignto: '' - raphael: '' - to: '' - pointedfrom: '' - falsebranch: '' - lines: { } - data: - unique_id: submission - webform_machine_name: indstilling_til_paedagogisk_psyk - 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: 0 - assigned: '' - runonce: false - handler: '' - showindetail: true - participate_in_workflow_status_stage: true - workflow_status_stage_number: 2 - workflow_status_stage_message: '' - notifications: - notification_assignment_subject: '' - notification_assignment: '' - notification_reminder_subject: '' - notification_reminder: '' - notification_escalation_subject: '' - notification_escalation: '' - reminder_after: 0 - escalation_after: 0 - all: - id: all - label: 'alle svaret' - tasktype: MaestroAnd - nextstep: send - nextfalsestep: '' - top: '430' - left: '270' - assignby: fixed - assignto: '' - raphael: '' - to: '' - pointedfrom: '' - falsebranch: '' - lines: { } - assigned: '' - runonce: false - handler: '' - showindetail: true - participate_in_workflow_status_stage: true - workflow_status_stage_number: 3 - workflow_status_stage_message: '' - notifications: - notification_assignment_subject: null - notification_assignment: null - notification_reminder_subject: null - notification_reminder: null - notification_escalation_subject: null - notification_escalation: null - reminder_after: null - escalation_after: null - cancel: - id: cancel - label: 'PPR afvist af forældre' - tasktype: MaestroInteractive - nextstep: message - nextfalsestep: '' - top: '250' - left: '270' - assignby: fixed - assignto: '' - raphael: '' - to: '' - pointedfrom: '' - falsebranch: '' - lines: { } - handler: maestro_show_message_form - data: - modal: modal - redirect_to: taskconsole - assigned: 'user:variable:initiator' - runonce: false - showindetail: true - participate_in_workflow_status_stage: false - workflow_status_stage_number: 0 - workflow_status_stage_message: '' - notifications: - notification_assignment_subject: '' - notification_assignment: '' - notification_reminder_subject: '' - notification_reminder: '' - notification_escalation_subject: '' - notification_escalation: '' - reminder_after: 0 - escalation_after: 0 - notification_assignments: 'user:variable:initiator:assignment' - message: - id: message - label: message - tasktype: MaestroSetProcessVariable - nextstep: '' - nextfalsestep: '' - top: '335' - left: '265' - assignby: fixed - assignto: '' - raphael: '' - to: '' - pointedfrom: '' - falsebranch: '' - lines: { } - data: - spv: - variable: initiator - method: hardcoded - variable_value: 'En af forældrene har afvist PPR indstillingen og den bliver derfor ikke igangsat.' - assigned: '' - runonce: false - handler: '' - showindetail: true - participate_in_workflow_status_stage: false - workflow_status_stage_number: 0 - workflow_status_stage_message: '' - notifications: - notification_assignment_subject: null - notification_assignment: null - notification_reminder_subject: null - notification_reminder: null - notification_escalation_subject: null - notification_escalation: null - reminder_after: null - escalation_after: null diff --git a/config/optional/webform.webform.barsel_erklaering_ved_graviditet.yml b/config/optional/webform.webform.barsel_erklaering_ved_graviditet.yml deleted file mode 100644 index d3c6472..0000000 --- a/config/optional/webform.webform.barsel_erklaering_ved_graviditet.yml +++ /dev/null @@ -1,232 +0,0 @@ -langcode: da -status: open -dependencies: - module: - - maestro_webform - - os2forms - - webform_entity_print - - webform_revisions -third_party_settings: - webform_revisions: - contentEntity_id: '2' - os2forms: - os2forms_nemid: - webform_type: '' - nemlogin_auto_redirect: 0 - webform_entity_print: - template: - header: '' - footer: '' - css: '' - export_types: - pdf: - enabled: true - link_text: '' - link_attributes: { } - word_docx: - enabled: false - link_text: '' - link_attributes: { } -open: null -close: null -weight: 0 -uid: 4 -template: false -archive: false -id: barsel_erklaering_ved_graviditet -title: 'Barsel: Erklæring ved graviditet' -description: '' -category: '' -elements: "send_til:\n '#type': hidden\n '#title': 'Send til'\n '#default_value': mn@magenta-aps.dk\n '#prepopulate': true\nflow_type:\n '#type': hidden\n '#title': 'Flow type'\n '#default_value': barsel\nside:\n '#type': webform_wizard_page\n '#title': Side\n fulde_navn:\n '#type': textfield\n '#title': 'Fulde navn'\n '#required': true\n az_ident:\n '#type': textfield\n '#title': Az-ident\n '#required': true\n privat_e_mail:\n '#type': email\n '#title': 'Privat e-mail'\n '#required': true\n privat_telefonnummer:\n '#type': tel\n '#title': 'Privat telefonnummer'\n '#required': true\n forventet_foedsel_termin_:\n '#type': date\n '#title': 'Forventet fødsel (termin)'\n '#required': true\n '#default_value': '2021-08-16'\n '#datepicker': true\n '#date_date_format': d-m-Y\n orlov_foer_foedsel:\n '#type': date\n '#title': 'Orlov før fødsel'\n '#required': true\n '#datepicker': true\n '#date_date_format': d-m-Y" -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_exception_message: '' - form_open_message: '' - form_close_message: '' - form_previous_submissions: true - form_confidential: false - form_confidential_message: '' - form_remote_addr: true - form_convert_anonymous: false - form_prepopulate: false - form_prepopulate_source_entity: false - form_prepopulate_source_entity_required: false - form_prepopulate_source_entity_type: '' - form_reset: false - form_disable_autocomplete: false - form_novalidate: false - form_disable_inline_errors: false - form_required: false - form_unsaved: false - form_disable_back: false - form_submit_back: false - form_autofocus: false - form_details_toggle: false - form_access_denied: default - form_access_denied_title: '' - form_access_denied_message: '' - form_access_denied_attributes: { } - form_file_limit: '' - share: false - share_node: false - share_theme_name: '' - share_title: true - share_page_body_attributes: { } - submission_label: '' - submission_log: 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: { } - submission_exception_message: '' - submission_locked_message: '' - submission_excluded_elements: { } - submission_exclude_empty: false - submission_exclude_empty_checkbox: false - 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_auto_forward: true - wizard_auto_forward_hide_next_button: false - wizard_keyboard: true - wizard_start_label: '' - wizard_preview_link: false - wizard_confirmation: true - wizard_confirmation_label: '' - 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_title: '' - confirmation_message: '' - confirmation_url: '' - 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: none - purge_days: null - 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 - label: 'Opret forløb fra Flow' - notes: '' - handler_id: opret_forloeb_fra_flow - status: true - conditions: { } - weight: 0 - settings: - maestro_template: review_webform_submission - maestro_message_success: 'Din indsendelse vedrørende barsel er modtaget.' - maestro_message_failure: 'Der er sket en fejl med din indsendelse.' -variants: { } diff --git a/config/optional/webform.webform.indstilling_til_paedagogisk_psyk.yml b/config/optional/webform.webform.indstilling_til_paedagogisk_psyk.yml deleted file mode 100644 index e47c5a3..0000000 --- a/config/optional/webform.webform.indstilling_til_paedagogisk_psyk.yml +++ /dev/null @@ -1,194 +0,0 @@ -langcode: da -status: open -dependencies: { } -open: null -close: null -weight: 0 -uid: 10 -template: false -archive: false -id: indstilling_til_paedagogisk_psyk -title: 'Indstilling til Pædagogisk Psykoligisk Rådgivning (PPR) - forælder accept' -description: 'Forælder godkendelse.' -category: MBU -elements: "godkendelse_af_indstilling:\n '#type': webform_wizard_page\n '#title': 'Godkendelse af indstilling'\n navn:\n '#type': os2forms_nemid_name\n '#title': Navn\n '#multiple': false\n '#readonly': true\n terms_of_service:\n '#type': webform_terms_of_service\n '#title': Accepter\n '#terms_title': 'Accepter at dine og dit barns oplysninger sendes videre til PPR og at der igangsættes et PPR forløb.'\n '#terms_content': 'Bla bla'" -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_exception_message: '' - form_open_message: '' - form_close_message: '' - form_previous_submissions: true - form_confidential: false - form_confidential_message: '' - form_remote_addr: true - form_convert_anonymous: false - form_prepopulate: false - form_prepopulate_source_entity: false - form_prepopulate_source_entity_required: false - form_prepopulate_source_entity_type: '' - form_reset: false - form_disable_autocomplete: false - form_novalidate: false - form_disable_inline_errors: false - form_required: false - form_unsaved: false - form_disable_back: false - form_submit_back: false - form_autofocus: false - form_details_toggle: false - form_access_denied: default - form_access_denied_title: '' - form_access_denied_message: '' - form_access_denied_attributes: { } - form_file_limit: '' - share: false - share_node: false - share_theme_name: '' - share_title: true - share_page_body_attributes: { } - submission_label: '' - submission_log: 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: { } - submission_exception_message: '' - submission_locked_message: '' - submission_excluded_elements: { } - submission_exclude_empty: false - submission_exclude_empty_checkbox: false - 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_auto_forward: true - wizard_auto_forward_hide_next_button: false - wizard_keyboard: true - wizard_start_label: '' - wizard_preview_link: false - wizard_confirmation: true - wizard_confirmation_label: '' - 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_title: '' - confirmation_message: '' - confirmation_url: '' - 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: none - purge_days: null - 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/config/optional/webform.webform.indstilling_til_ppr.yml b/config/optional/webform.webform.indstilling_til_ppr.yml deleted file mode 100644 index 1bd4b41..0000000 --- a/config/optional/webform.webform.indstilling_til_ppr.yml +++ /dev/null @@ -1,202 +0,0 @@ -langcode: da -status: open -dependencies: - module: - - os2forms - - webform_entity_print -third_party_settings: - os2forms: - os2forms_nemid: - webform_type: '' - nemlogin_auto_redirect: 0 - webform_entity_print: - template: - header: '' - footer: '' - css: '' - export_types: - pdf: - enabled: false - link_text: '' - link_attributes: { } - word_docx: - enabled: false - link_text: '' - link_attributes: { } - webform_revisions: - contentEntity_id: null -open: null -close: null -weight: 0 -uid: 1 -template: false -archive: false -id: indstilling_til_ppr -title: 'Indstilling til Pædagogisk Psykoligisk Rådgivning (PPR)' -description: "Indstillingsskemaet anvendes, når der ønskes sparring/vejledning/vurdering ift. enkelte børn
\n \n" -category: MBU -elements: "institution_og_dagtilbud_skole_page:\n '#type': webform_wizard_page\n '#title': 'Institution og dagtilbud/skole'\n institution_og_dagtilbud_skole_section:\n '#type': webform_section\n '#title': 'Institution og dagtilbud/skole'\n institution_og_dagtilbud_eller_skole_select:\n '#type': select\n '#title': 'Institution og dagtilbud eller skole'\n '#options':\n institution_og_dagtilbud: 'Institution og dagtilbud'\n skole: Skole\n navn_institution_og_dagtilbud_text:\n '#type': textfield\n '#title': 'Navn institution og dagtilbud'\n '#states':\n visible:\n ':input[name=\"institution_og_dagtilbud_eller_skole_select\"]':\n value: institution_og_dagtilbud\n navn_skole_text:\n '#type': textfield\n '#title': 'Navn skole'\n '#states':\n visible:\n ':input[name=\"institution_og_dagtilbud_eller_skole_select\"]':\n value: skole\n institution_og_dagtilbud_skole_adresse_dawa:\n '#type': os2forms_dawa_address\n '#title': Adresse\n '#states':\n visible:\n ':input[name=\"institution_og_dagtilbud_eller_skole_select\"]':\n filled: true\n institution_og_dagtilbud_skole_telefon_telephone:\n '#type': tel\n '#title': Telefon\n '#states':\n visible:\n ':input[name=\"institution_og_dagtilbud_eller_skole_select\"]':\n filled: true\n '#international_preferred_countries': { }\n institution_og_dagtilbud_skole_email_email:\n '#type': email\n '#title': Email\n '#states':\n visible:\n ':input[name=\"institution_og_dagtilbud_eller_skole_select\"]':\n filled: true\n institution_og_dagtilbud_skole_leder_text:\n '#type': textfield\n '#title': Leder\n '#states':\n visible:\n ':input[name=\"institution_og_dagtilbud_eller_skole_select\"]':\n filled: true\nbarn_page:\n '#type': webform_wizard_page\n '#title': Barn\n barn_section:\n '#type': webform_section\n '#title': Barn\n barn_navn_text:\n '#type': textfield\n '#title': Navn\n barn_cpr_nr_text:\n '#type': textfield\n '#title': CPR-nr\n barn_adresse_dawa:\n '#type': os2forms_dawa_address\n '#title': Adresse\n barn_klasse_text:\n '#type': textfield\n '#title': Klasse\n '#states':\n visible:\n ':input[name=\"institution_og_dagtilbud_eller_skole_select\"]':\n value: skole\nforaeldreoplysninger_page:\n '#type': webform_wizard_page\n '#title': Forældreoplysninger\n foraeldreoplysninger_section:\n '#type': webform_section\n '#title': Forældreoplysninger\n foraeldreoplysninger_navn_first_parent_text:\n '#type': textfield\n '#title': Navn\n foraeldreoplysninger_cpr_nr_first_parent_text:\n '#type': textfield\n '#title': CPR-nr\n foraeldreoplysninger_adresse_first_parent_dawa:\n '#type': os2forms_dawa_address\n '#title': Adresse\n foraeldreoplysninger_telefon_privat_first_parent_telephone:\n '#type': tel\n '#title': 'Tlf. privat'\n '#international_preferred_countries': { }\n foraeldreoplysninger_telefon_arbejde_first_parent_telephone:\n '#type': tel\n '#title': 'Tlf. arbejde'\n '#international_preferred_countries': { }\n foraeldreoplysninger_foraeldremyndighedsindehaver_first_parent:\n '#type': checkbox\n '#title': 'Forældremyndighedsindehaver '\n foraeldreoplysninger_horizontal_rule:\n '#type': webform_horizontal_rule\n foraeldreoplysninger_navn_second_parent_text:\n '#type': textfield\n '#title': Navn\n foraeldreoplysninger_cpr_nr_second_parent_text:\n '#type': textfield\n '#title': CPR-nr\n foraeldreoplysninger_adresse_second_parent_dawa:\n '#type': os2forms_dawa_address\n '#title': Adresse\n foraeldreoplysninger_telefon_privat_second_parent_telephone:\n '#type': tel\n '#title': 'Tlf. privat'\n '#international_preferred_countries': { }\n foraeldreoplysninger_telefon_arbejde_second_parent_telephone:\n '#type': tel\n '#title': 'Tlf. arbejde'\n '#international_preferred_countries': { }\n foraeldreoplysninger_foraeldremyndighedsindehaver_second_parent:\n '#type': checkbox\n '#title': Forældremyndighedsindehaver\n foraeldreoplysninger_horizontal_rule_1:\n '#type': webform_horizontal_rule\n foraeldreoplysninger_der_bor_bruges_tolk_ved_kontakt_til_hjemmet:\n '#type': checkbox\n '#title': 'Der bør bruges tolk ved kontakt til hjemmet'\n foraeldreoplysninger_hvilket_sprog_text:\n '#type': textfield\n '#title': 'Hvilket sprog'\n '#states':\n visible:\n ':input[name=\"foraeldreoplysninger_der_bor_bruges_tolk_ved_kontakt_til_hjemmet\"]':\n checked: true\nindstilling_med_henblik_paa_page:\n '#type': webform_wizard_page\n '#title': 'Indstilling med henblik på'\n indstilling_med_henblik_paa_section:\n '#type': webform_section\n '#title': 'Indstilling med henblik på'\n indstilling_med_henblik_paa_vurdering_af_tale_sprog_sparring:\n '#type': checkbox\n '#title': 'Vurdering af tale-sprog/sparring - efter aftale på Trivselsmøde/Specialcentermøde'\n indstilling_med_henblik_paa_psykologisk_vurdering_sparring:\n '#type': checkbox\n '#title': 'Psykologisk vurdering/sparring - efter aftale på Trivselsmøde/Specialcentermøde '\n har_barnet_vaeret_er_barnet_indstillet_til_section:\n '#type': webform_section\n '#title': 'Har barnet været/er barnet indstillet til'\n har_barnet_vaeret_indstillet_kommunikation_og_handicap_checkbox:\n '#type': checkbox\n '#title': 'Institut for Kommunikation og Handicap'\n har_barnet_vaeret_indstillet_boerne_og_ungdomspsykiatrisk:\n '#type': checkbox\n '#title': 'Børne- og Ungdomspsykiatrisk Afdeling'\n har_barnet_vaeret_indstillet_socialforvaltningen:\n '#type': checkbox\n '#title': Socialforvaltningen\noplysninger_fra_dagtilbud_skole_page:\n '#type': webform_wizard_page\n '#title': 'Oplysninger fra dagtilbud/skole'\n oplysninger_fra_dagtilbud_skole_section:\n '#type': webform_section\n '#title': 'Oplysninger fra dagtilbud/skole'\n dato_for_droeftelse_af_indstillingen_i_trivselsmoede_specialcent:\n '#type': date\n '#title': 'Dato for drøftelse af indstillingen i Trivselsmøde/Specialcentermøde'\n '#datepicker': true\n '#datepicker_button': true\n referat_el_lign_skal_vedlaegges_:\n '#type': managed_file\n '#title': 'Referat el.lign. skal vedlægges:'\n hvad_har_givet_anledning_til_indstillingen_:\n '#type': textarea\n '#title': 'Hvad har givet anledning til indstillingen?'\n i_hvilke_sammenhaenge_forekommer_vanskelighederne_hyppigst_sjael:\n '#type': textarea\n '#title': 'I hvilke sammenhænge forekommer vanskelighederne hyppigst/sjældent?'\n beskriv_barnets_sproglige_og_kommunikative_funktionsniveau:\n '#type': textarea\n '#title': 'Beskriv barnets sproglige og kommunikative funktionsniveau'\n barnet_er_undersoegt_af_en_oerelaege:\n '#type': checkbox\n '#title': 'Barnet er undersøgt af en ørelæge'\n beskriv_barnets_foelelsesmaessige_udvikling:\n '#type': textarea\n '#title': 'Beskriv barnets følelsesmæssige udvikling'\n beskriv_barnets_faglige_funktionsniveau_i_dansk_og_matematik:\n '#type': textarea\n '#title': 'Beskriv barnets faglige funktionsniveau i dansk og matematik'\n hvilke_fokusomraader_har_personalet_haft_i_forhold_til_barnet:\n '#type': textarea\n '#title': 'Hvilke fokusområder har personalet haft i forhold til barnet'\n beskriv_barnets_sociale_kompetencer:\n '#type': textarea\n '#title': 'Beskriv barnets sociale kompetencer'\n beskriv_boernefaellesskabet_og_hvordan_barnet_indgaar_der:\n '#type': textarea\n '#title': 'Beskriv børnefællesskabet og hvordan barnet indgår der'\n hvordan_samarbejder_i_med_foraeldrene:\n '#type': textarea\n '#title': 'Hvordan samarbejder I med forældrene'\n andre_relevante_oplysninger:\n '#type': textarea\n '#title': 'Andre relevante oplysninger'\n hvilke_forventninger_har_i_til_ppr:\n '#type': textarea\n '#title': 'Hvilke forventninger har I til PPR'\n eventuelle_bemaerkninger_til_indstillingen_fra_foraeldremyndighe:\n '#type': textarea\n '#title': 'Eventuelle bemærkninger til indstillingen fra forældremyndighedsindehaver(e)'\n" -css: '' -javascript: '' -settings: - ajax: false - ajax_scroll_top: '' - ajax_progress_type: '' - ajax_effect: '' - ajax_speed: null - page: true - page_submit_path: '' - page_confirm_path: '' - page_admin_theme: false - form_title: both - form_submit_once: false - form_exception_message: '' - form_open_message: '' - form_close_message: '' - form_previous_submissions: true - form_confidential: false - form_confidential_message: '' - form_remote_addr: true - form_convert_anonymous: false - form_prepopulate: false - form_prepopulate_source_entity: false - form_prepopulate_source_entity_required: false - form_prepopulate_source_entity_type: '' - form_reset: false - form_disable_autocomplete: false - form_novalidate: false - form_disable_inline_errors: false - form_required: false - form_unsaved: false - form_disable_back: false - form_submit_back: false - form_autofocus: false - form_details_toggle: false - form_access_denied: default - form_access_denied_title: '' - form_access_denied_message: '' - form_access_denied_attributes: { } - form_file_limit: '' - submission_label: '' - submission_log: 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: { } - submission_exception_message: '' - submission_locked_message: '' - submission_excluded_elements: { } - submission_exclude_empty: false - submission_exclude_empty_checkbox: false - 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_track: '' - 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_title: '' - confirmation_message: '' - confirmation_url: '' - 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: none - purge_days: null - results_disabled: false - results_disabled_ignore: false - token_view: false - token_update: 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/config/optional/webform.webform.ppr_test.yml b/config/optional/webform.webform.ppr_test.yml deleted file mode 100644 index d4cd568..0000000 --- a/config/optional/webform.webform.ppr_test.yml +++ /dev/null @@ -1,194 +0,0 @@ -langcode: da -status: open -dependencies: { } -open: null -close: null -weight: 0 -uid: 10 -template: false -archive: false -id: ppr_test -title: 'PPR Test' -description: 'test af flow' -category: MBU -elements: "side_1:\n '#type': webform_wizard_page\n '#title': 'Side 1'\n foraelder_1_id:\n '#type': textfield\n '#title': 'Forælder 1 id'\n foraelder_2_id:\n '#type': textfield\n '#title': 'Forælder 2 id'" -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_exception_message: '' - form_open_message: '' - form_close_message: '' - form_previous_submissions: true - form_confidential: false - form_confidential_message: '' - form_remote_addr: true - form_convert_anonymous: false - form_prepopulate: false - form_prepopulate_source_entity: false - form_prepopulate_source_entity_required: false - form_prepopulate_source_entity_type: '' - form_reset: false - form_disable_autocomplete: false - form_novalidate: false - form_disable_inline_errors: false - form_required: false - form_unsaved: false - form_disable_back: false - form_submit_back: false - form_autofocus: false - form_details_toggle: false - form_access_denied: default - form_access_denied_title: '' - form_access_denied_message: '' - form_access_denied_attributes: { } - form_file_limit: '' - share: false - share_node: false - share_theme_name: '' - share_title: true - share_page_body_attributes: { } - submission_label: '' - submission_log: 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: { } - submission_exception_message: '' - submission_locked_message: '' - submission_excluded_elements: { } - submission_exclude_empty: false - submission_exclude_empty_checkbox: false - 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_auto_forward: true - wizard_auto_forward_hide_next_button: false - wizard_keyboard: true - wizard_start_label: '' - wizard_preview_link: false - wizard_confirmation: true - wizard_confirmation_label: '' - 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_title: '' - confirmation_message: '' - confirmation_url: '' - 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: none - purge_days: null - 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: { } From e3616a5c597b854b72f92785d380d3bdd1ef122b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mads=20N=C3=B8rgaard?= Date: Mon, 18 Oct 2021 13:20:29 +0200 Subject: [PATCH 20/40] Add, install and configure r4032login module --- composer.json | 1 + config/optional/r4032login.settings.yml | 12 ++++++++++++ os2forms_forloeb.info.yml | 1 + 3 files changed, 14 insertions(+) create mode 100644 config/optional/r4032login.settings.yml diff --git a/composer.json b/composer.json index 3e416bf..a432e6a 100644 --- a/composer.json +++ b/composer.json @@ -37,6 +37,7 @@ "drupal/masquerade": "2.0.0-beta4", "drupal/queue_mail": "1.3.0", "drupal/queue_ui": "^2.1", + "drupal/r4032login": "^2.1", "drupal/rules": "3.0.0-alpha6", "drupal/rules_token": "1.2.0", "drupal/rules_webform": "1.5.0", diff --git a/config/optional/r4032login.settings.yml b/config/optional/r4032login.settings.yml new file mode 100644 index 0000000..f42e581 --- /dev/null +++ b/config/optional/r4032login.settings.yml @@ -0,0 +1,12 @@ +display_denied_message: true +access_denied_message: 'Du skal logge på for at få se denne side.' +access_denied_message_type: status +redirect_authenticated_users_to: '' +user_login_path: /user/login +default_redirect_code: 307 +destination_parameter_override: '' +match_noredirect_pages: '' +redirect_to_destination: true +langcode: da +_core: + default_config_hash: PMB0aJrA5afgG0swQ81b31o6ax8keNE22FKGnQH81EQ diff --git a/os2forms_forloeb.info.yml b/os2forms_forloeb.info.yml index ca5348c..1c59b7e 100644 --- a/os2forms_forloeb.info.yml +++ b/os2forms_forloeb.info.yml @@ -24,6 +24,7 @@ dependencies: - os2forms_sbsys - os2web_simplesaml - pathauto + - r4032login - redirect - rules - rules_token From 826a82777a77e0026004b42818d1d10dab1ae93d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mads=20N=C3=B8rgaard?= Date: Mon, 18 Oct 2021 15:16:58 +0200 Subject: [PATCH 21/40] Adjust description text --- config/optional/webform.webform.start_forloeb_med_to_parter.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/optional/webform.webform.start_forloeb_med_to_parter.yml b/config/optional/webform.webform.start_forloeb_med_to_parter.yml index 8fe8230..bc7ae70 100644 --- a/config/optional/webform.webform.start_forloeb_med_to_parter.yml +++ b/config/optional/webform.webform.start_forloeb_med_to_parter.yml @@ -16,7 +16,7 @@ template: false archive: false id: start_forloeb_med_to_parter title: 'Start forløb med to parter' -description: 'Flow til a starte sagsbehandlingsforløb med to parter.' +description: 'Et eksempel på en formular til at starte sagsbehandlingsforløb med to parter.' category: MBU elements: "side_1:\n '#type': webform_wizard_page\n '#title': 'Angiv parter'\n part1:\n '#type': entity_autocomplete\n '#title': part1\n '#target_type': user\n '#selection_handler': 'default:user'\n '#selection_settings':\n include_anonymous: false\n filter:\n type: _none\n part2:\n '#type': entity_autocomplete\n '#title': part2\n '#target_type': user\n '#selection_handler': 'default:user'\n '#selection_settings':\n include_anonymous: false\n filter:\n type: _none\nactions:\n '#type': webform_actions\n '#title': 'Send knap(per)'\n '#draft_hide': true\n '#draft__label': insend\n '#update__label': Opdater\n '#wizard_prev__label': tilbage\n '#wizard_next__label': frem" css: '' From c583af7319882b0afda152e7a0aca38cddb77a04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mads=20N=C3=B8rgaard?= Date: Mon, 18 Oct 2021 15:19:10 +0200 Subject: [PATCH 22/40] Rename template --- ..._grundskabelon.yml => webform.webform.grundskabelon.yml} | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename config/optional/{webform.webform.hk_grundskabelon.yml => webform.webform.grundskabelon.yml} (99%) diff --git a/config/optional/webform.webform.hk_grundskabelon.yml b/config/optional/webform.webform.grundskabelon.yml similarity index 99% rename from config/optional/webform.webform.hk_grundskabelon.yml rename to config/optional/webform.webform.grundskabelon.yml index c6375e8..e40953d 100644 --- a/config/optional/webform.webform.hk_grundskabelon.yml +++ b/config/optional/webform.webform.grundskabelon.yml @@ -33,9 +33,9 @@ weight: 0 uid: 4 template: false archive: false -id: hk_grundskabelon -title: 'HK grundskabelon' -description: 'Denne webform er oprettet ud fra HK's grundskabelon' +id: grundskabelon +title: 'Grundskabelon' +description: 'Denne webform er oprettet ud fra Holstebro Kommunes grundskabelon' category: '' elements: "forlob_type:\n '#type': hidden\n '#title': 'Forløb type'\nsbsip_rules_flow:\n '#type': value\n '#title': 'A SBSIP Afleveringsregel'\n '#value': |\n //Her skal slette de regler som ikke gælder for denne formular.\n //Hvis der skal afleveres til SBSYS skal du også redigere sbsip_xml elementet\n sbsys_standard //Hvis sag eksisterer bliver dokument tilføjet eller ny sag\n sbsys_ny //Opret altid en ny SBSYS sag\n sbsys_direkte_sag_2 //aflever direkte til en sag, husk at udfylde sbsys_sags_nr\n digital_post //Aflever kvittering til digital post\n \n '#default_value': digital_post\nsbsys_sags_nr:\n '#type': value\n '#title': 'B sbsys_sags_nr // bruges ved sbsys_direkte_sag_2 ellers tom'\nsbsip_xml:\n '#type': webform_attachment_os2forms_sbsys_xml\n '#os2formsId': _custom_\n '#os2formsId_custom': angiv_uuid_her\n '#sagSkabelonId': _custom_\n '#sagSkabelonId_custom': 'angiv SBSYS sagsskabelon id'\n '#nemid_cpr': default_nemid_value\n '#nemid_name': default_nemid_value\n '#nemid_address': default_nemid_value\n '#nemid_zipcode': default_nemid_value\n '#nemid_city': default_nemid_value\n '#bodyText': _custom_\n '#bodyText_custom': |\n Tak - vi har nu modtaget de indtastede oplysninger. Du kan se dem i den vedhæftede kvittering.\n \n Venlig hilsen\n Holstebro Kommune\n \n '#MaaSendesTilDFF': ja\n '#title': 'C SBSIP XML // 1 ) Angiv altid UUID, 2) Angiv SBSYS skabelon id ved sbsip_rules_flow(sbsys_standard eller sbsys_ny)'\n '#filename': os2forms.xml\nlogind_oplysninger:\n '#type': webform_wizard_page\n '#title': Start\n cpr:\n '#type': os2forms_nemid_cpr\n '#title': Cpr\n '#multiple': false\n '#title_display': none\n '#readonly': true\n '#wrapper_attributes':\n style: 'display:none'\n navn:\n '#type': os2forms_nemid_name\n '#title': Navn\n '#multiple': false\n '#title_display': none\n '#readonly': true\n '#wrapper_attributes':\n style: 'display:none'\n privat_adresse:\n '#type': os2forms_nemid_address\n '#title': Adresse\n '#multiple': false\n '#title_display': none\n '#readonly': true\n '#wrapper_attributes':\n style: 'display:none'\n cvr:\n '#type': os2forms_nemid_company_cvr\n '#title': CVR\n '#multiple': false\n '#title_display': none\n '#readonly': true\n '#wrapper_attributes':\n style: 'display:none'\n firmanavn:\n '#type': os2forms_nemid_company_name\n '#title': Firmanavn\n '#multiple': false\n '#title_display': none\n '#readonly': true\n '#wrapper_attributes':\n style: 'display:none'\n adresse:\n '#type': os2forms_nemid_company_address\n '#title': Adresse\n '#multiple': false\n '#title_display': none\n '#readonly': true\n '#wrapper_attributes':\n style: 'display:none'\n firma_by:\n '#type': os2forms_nemid_company_city\n '#title': 'Postnummer og By'\n '#multiple': false\n '#title_display': none\n '#readonly': true\n '#wrapper_attributes':\n style: 'display:none'\n flexboxlogind:\n '#type': webform_flexbox\n introtekstfeltgruppe:\n '#type': fieldset\n '#title': Kontaktoplysninger\n '#title_display': invisible\n '#flex': 3\n introtekst:\n '#type': processed_text\n '#text': |\n

(Evt. beskriv hvad brugeren skal have klar på forhånd, eller anden vigtig information) 

\n \n

Du er allerede logget ind. Du kan logge ud igen med linket i højre kolonne under dine personoplysninger.

\n \n

 

\n \n '#format': full_html\n flexbox_01:\n '#type': webform_flexbox\n oplysninger:\n '#type': container\n '#flex': 3\n e_mail_:\n '#type': email\n '#title': E-mail\n '#states_clear': false\n telefon:\n '#type': tel\n '#title': Telefon\n '#states_clear': false\n '#telephone_validation_format': '2'\n '#telephone_validation_country': DK\n tom:\n '#type': container\n '#flex': 3\n du_er_logget_ind_som:\n '#type': fieldset\n '#title': 'Du er logget ind som'\n brugerinformation_1:\n '#type': webform_computed_token\n '#title': 'Du er logget ind som:'\n '#title_display': invisible\n '#display_on': form\n '#template': |\n [webform_submission:values:navn][current-user:display-name][webform_submission:values:firmanavn]
\n [webform_submission:values:e_mail_]
\n [webform_submission:values:telefon]\n \n '#hide_empty': true\n '#ajax': true\n nemidlogin:\n '#type': os2forms_nemid_nemlogin_link\n '#nemlogin_link_login_text': 'Log på'\n '#nemlogin_link_logout_text': 'Log af'\n samtykkeerklaering:\n '#type': fieldset\n '#title': 'Samtykke eller oplysningspligt'\n '#flex': 3\n databeskyttelse:\n '#type': checkboxes\n '#title': Databeskyttelse\n '#title_display': none\n '#options':\n 'Ja, jeg accepterer kommunens registrering og eventuelle videregivelse af oplysninger.': 'Jeg accepterer kommunens registrering og eventuelle videregivelse af oplysninger.'\n '#options_all_value': ''\n '#options_all_text': ''\n '#options_none_value': ''\n '#options_none_text': ''\n databeskyttelsestekst:\n '#type': webform_more\n '#more_title': 'Læs mere om samtykke'\n '#more': |\n


\n Holstebro Kommune registrerer dine oplysninger og kan videregive disse til andre offentlige myndigheder, private virksomheder m.fl., der har lovmæssigt krav på oplysningerne eller samarbejder med kommunen. Du har ret til at kende de oplysninger, kommunen har registreret om dig lige som du kan kræve forkerte oplysninger rettet eller slettet.

\n \n

Du kan kontakte Holstebro Kommunes databeskyttelsesrådgiveren om de rettigheder, du har i henhold til databeskyttelseslovgivningen. Du har ret til at klage til Datatilsynet over kommunens behandling af dine personlige oplysninger. På www.holstebro.dk/databeskyttelse kan du læse mere og finde kontaktoplysninger.
\n  

\n \n oplysningspligt:\n '#type': webform_more\n '#more_title': 'Læs mere om oplysningspligt'\n '#more': |\n


\n Holstebro Kommune er dataansvarlig for behandlingen af de personoplysninger, som vi har modtaget om dig.

\n \n

Kontaktoplysninger:
\n Mail: 
\n Evt. Tlf:

\n \n

Vi behandler dine personoplysninger til følgende formål

\n \n

(skriv kort og forståeligt, hvad formålene er med at behandle personoplysningerne)

\n \n

Retsgrundlaget for vores behandling af dine personoplysninger følger af

\n \n

(Beskriv retsgrundlaget/retsgrundlagene for behandlingen, herunder f.eks. kapitlet i den lov eller bekendtgørelse, der pålægger jer at indsamle personoplysningerne. Hvis behandlingen er baseret på databeskyttelsesforordningens eller databeskyttelseslovens behandlingsbestemmelser, skal du henvise til den relevante bestemmelse.)

\n \n

Vi behandler følgende kategorier af personoplysninger om dig

\n \n

 (Skriv hvilken slags oplysninger der behandles fx kontaktoplysninger og cpr, økonomiske forhold, uddannelse. Hvis nogle af følgende kategorier behandles, skal det fremgå: Oplysninger om straffedomme eller lovovertrædelser, helbred, religion, fagforening, politisk eller filosofisk overbevisning, race eller etnicitet, seksuel orientering, biometrisk data til identifikation.)

\n \n

Vi videregiver eller overlader dine personoplysninger til

\n \n

(Skriv hvem der modtager oplysningerne fx SKAT, UDK, politiet, samarbejdspartnere eller virksomheder)

\n \n

Vi henter personoplysninger om dig fra (HVIS RELEVANT)

\n \n

(skriv hvor oplysninger hentes, fx fra SKAT, Folkeregistret, BBR , andre offentlige myndigheder.)

\n \n

Vi gemmer dine personoplysninger i (HVIS RELEVANT)

\n \n

(angiv tidsrum fx 5 år efter sagen er afsluttet, 6 måneder efter vi har afsluttet ansættelsen etc. Hvis ikke det er muligt at angive præcis tidsrum, skriv i stedet hvilke kriterier der lægger til grund for opbevaringstiden) Vi foretager en automatisk afgørelse ud fra (beskriv hvilken afgørelse der træffes og ud fra hvilke kriterier det sker. Skriv hvilken konsekvens det kan få for den registrerede)

\n \n

Du har mulighed for at trække dit samtykke tilbage

\n \n

Det gør du ved at kontakte os på ovenstående kontaktoplysninger. Hvis du trækker dit samtykke tilbage, påvirker det kun den fremadrettede behandling af dine personoplysninger.

\n \n

Du har følgende rettigheder jf. databeskyttelsesforordningen

\n \n
    \n \t
  • Indsigtsret: Du har ret til at se de oplysninger vi behandler om dig. 
  • \n \t
  • Rettelse: Du har ret til at få urigtige oplysninger om dig rettet
  • \n \t
  • Sletning: Du kan i sjældne tilfælde have ret til at få slettet oplysninger om dig inden vores normale slettefrist indtræder
  • \n \t
  • Begrænsning af behandling: Du har i visse tilfælde ret til at få behandling af dine personoplysninger begrænset.
  • \n \t
  • Indsigelse: Du har i visse tilfælde ret til at gøre indsigelse mod vores behandling af dine personoplysninger.
  • \n
\n \n

Du har ret til at klage til Datatilsynet, hvis du er utilfreds med vores behandling af dine personoplysninger. Se mere på datatilsynet.dk

\n \nudfyld:\n '#type': webform_wizard_page\n '#title': Udfyld\n flexbox_kontaktopl:\n '#type': webform_flexbox\n tekst_side2:\n '#type': fieldset\n '#title': 'Skriv forklarende overskrift'\n '#flex': 3\n tekst:\n '#type': textarea\n '#title': tekst\n '#title_display': none\n '#flex': 3\n du_er_logget_ind_som_3:\n '#type': fieldset\n '#title': 'Du er logget ind som:'\n brugerinformation_2:\n '#type': webform_computed_token\n '#title': 'Du er logget ind som:'\n '#title_display': invisible\n '#display_on': form\n '#template': |\n [webform_submission:values:navn][current-user:display-name][webform_submission:values:firmanavn]
\n [webform_submission:values:e_mail_]
\n [webform_submission:values:telefon]\n \n '#hide_empty': true\n '#ajax': true\nudfyld_2:\n '#type': webform_wizard_page\n '#title': 'Udfyld 2'\n flexbox_02:\n '#type': webform_flexbox\n skriv_forklarende_overskrift:\n '#type': fieldset\n '#title': 'Skriv forklarende overskrift'\n '#flex': 3\n tekst2:\n '#type': textarea\n '#title': tekst\n '#title_display': none\n '#flex': 3\n du_er_logget_ind_som_4:\n '#type': fieldset\n '#title': 'Du er logget ind som'\n brugerinformation_3:\n '#type': webform_computed_token\n '#title': 'Du er logget ind som:'\n '#title_display': invisible\n '#display_on': form\n '#template': |\n [webform_submission:values:navn][current-user:display-name][webform_submission:values:firmanavn]
\n [webform_submission:values:e_mail_]
\n [webform_submission:values:telefon]\n \n '#hide_empty': true\n '#ajax': true\nudfyld_3:\n '#type': webform_wizard_page\n '#title': 'Udfyld 3'\n flexbox_03:\n '#type': webform_flexbox\n skriv_forklarende_overskrift_6:\n '#type': fieldset\n '#title': 'Skriv forklarende overskrift'\n '#flex': 3\n tekst10:\n '#type': textarea\n '#title': tekst\n '#title_display': none\n '#flex': 3\n du_er_logget_ind_som_7:\n '#type': fieldset\n '#title': 'Du er logget ind som'\n brugerinformation_4:\n '#type': webform_computed_token\n '#title': 'Du er logget ind som:'\n '#title_display': invisible\n '#display_on': form\n '#template': |\n [webform_submission:values:navn][current-user:display-name][webform_submission:values:firmanavn]
\n [webform_submission:values:e_mail_]
\n [webform_submission:values:telefon]\n \n '#hide_empty': true\n '#ajax': true\nafslut_det_videre_forloeb:\n '#type': webform_wizard_page\n '#title': Afslut\n afslutning:\n '#type': processed_text\n '#text': |\n

(Beskriv efterfølgende forløb - Hvad kan borgeren forvente nu?

\n \n

Eksempelvis: Din ansøgning vil blive behandlet snarest og du vil modtage en afgørelse inden for 14 dage.)

\n \n '#format': full_html\nactions:\n '#type': webform_actions\n '#title': 'Submit button(s)'\n '#submit__label': 'Send XXX'\nvedhaeftet_pdf:\n '#type': 'webform_entity_print_attachment:pdf'\n '#title': 'D Vedhæftet PDF'\n '#filename': HK-Kvittering.pdf\n '#link_title': Kvittering\n '#view_mode': twig\n '#template': |\n

Kvittering

\n

[webform:title]

\n

Indsendt den [webform_submission:created:custom:d-m-Y - H:i]

\n \n [webform_submission:values:logind_oplysninger:html]\n \n [webform_submission:values:udfyld:format:html]\n \n [webform_submission:values:udfyld_2:format:html]\n \n [webform_submission:values:udfyld_3:format:html]" css: '' From d7cfba75c6f6e42f9cdbd4768f5b89df134e2a15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mads=20N=C3=B8rgaard?= Date: Mon, 18 Oct 2021 15:20:28 +0200 Subject: [PATCH 23/40] Change category --- config/optional/webform.webform.start_forloeb_med_to_parter.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/optional/webform.webform.start_forloeb_med_to_parter.yml b/config/optional/webform.webform.start_forloeb_med_to_parter.yml index bc7ae70..2e88bbb 100644 --- a/config/optional/webform.webform.start_forloeb_med_to_parter.yml +++ b/config/optional/webform.webform.start_forloeb_med_to_parter.yml @@ -17,7 +17,7 @@ archive: false id: start_forloeb_med_to_parter title: 'Start forløb med to parter' description: 'Et eksempel på en formular til at starte sagsbehandlingsforløb med to parter.' -category: MBU +category: Maestro elements: "side_1:\n '#type': webform_wizard_page\n '#title': 'Angiv parter'\n part1:\n '#type': entity_autocomplete\n '#title': part1\n '#target_type': user\n '#selection_handler': 'default:user'\n '#selection_settings':\n include_anonymous: false\n filter:\n type: _none\n part2:\n '#type': entity_autocomplete\n '#title': part2\n '#target_type': user\n '#selection_handler': 'default:user'\n '#selection_settings':\n include_anonymous: false\n filter:\n type: _none\nactions:\n '#type': webform_actions\n '#title': 'Send knap(per)'\n '#draft_hide': true\n '#draft__label': insend\n '#update__label': Opdater\n '#wizard_prev__label': tilbage\n '#wizard_next__label': frem" css: '' javascript: '' From 6fbfd75c7e7c60daeeda0d3a76225c810ea3601f Mon Sep 17 00:00:00 2001 From: Toke Fritzemeier Date: Tue, 19 Oct 2021 08:33:38 +0200 Subject: [PATCH 24/40] Remove custom_theme and gin dependencies. The os2forms_forloeb module shouldn't make decisions about which theme to use. Leave that up to whichever install profile is being used. --- composer.json | 1 - config/install/.gitkeep | 0 config/install/switch_page_theme.settings.yml | 37 ------------------- os2forms_forloeb.module | 25 ------------- 4 files changed, 63 deletions(-) delete mode 100644 config/install/.gitkeep delete mode 100644 config/install/switch_page_theme.settings.yml diff --git a/composer.json b/composer.json index 3e416bf..1337c88 100644 --- a/composer.json +++ b/composer.json @@ -25,7 +25,6 @@ "drupal/config_entity_revisions": "1.7.0", "drupal/events_logging": "1.4.0", "drupal/embed": "1.4.0", - "drupal/gin": "^3.0", "drupal/header_and_footer_scripts": "2.2.0", "drupal/image_widget_crop": "2.3.0", "drupal/ldap": "^3.0@beta", diff --git a/config/install/.gitkeep b/config/install/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/config/install/switch_page_theme.settings.yml b/config/install/switch_page_theme.settings.yml deleted file mode 100644 index 4465c73..0000000 --- a/config/install/switch_page_theme.settings.yml +++ /dev/null @@ -1,37 +0,0 @@ -spt_table: - 1: - status: '1' - pages: "/user/*\r\n\r\n/sagsbehandler-overblik/*\r\n/sagsbehandler-overblik\r\n/maestro-all-flows\r\n/outstanding-tasks\r\n/taskconsole\r\n/maestro/*\r\n/maestro-all-in-production-tasks" - theme: gin - roles: - anonymous: anonymous - authenticated: authenticated - administrator: administrator - flowdesigner: flowdesigner - selvbetjeningsdesigner: selvbetjeningsdesigner - sagsbehandler: sagsbehandler - medarbejder: medarbejder - leder: leder - language: - da: da - en: en - weight: '-10' - remove: Remove - 0: - status: '1' - pages: "/node/*\r\n*/submission/*/edit" - theme: custom_theme - roles: - anonymous: anonymous - authenticated: authenticated - administrator: administrator - flowdesigner: flowdesigner - selvbetjeningsdesigner: selvbetjeningsdesigner - sagsbehandler: sagsbehandler - medarbejder: medarbejder - leder: leder - language: - da: da - en: en - weight: '-9' - remove: Remove diff --git a/os2forms_forloeb.module b/os2forms_forloeb.module index 0393ed2..b1c8bc8 100644 --- a/os2forms_forloeb.module +++ b/os2forms_forloeb.module @@ -5,30 +5,6 @@ * Install, update and uninstall functions for the os2forms_forloeb_profile installation profile. */ -/** - * Implements hook_install(). - */ -function os2forms_forloeb_install() { - $theme_list = [ - 'claro', - 'gin', - 'bootstrap', - 'custom_theme' - ]; - - // Install themes - \Drupal::service('theme_installer')->install($theme_list); - - // Get theme manager - $system_theme = \Drupal::configFactory()->getEditable('system.theme'); - - // Set default and admin themes - $system_theme - ->set('default', 'custom_theme') - ->set('admin', 'gin') - ->save(); -} - use Drupal\maestro\Engine\MaestroEngine; /** @@ -157,4 +133,3 @@ function os2forms_forloeb_webform_create(\Drupal\webform\WebformInterface $webfo // Set purge of submissions more than 30 days old. $webform->setSetting('purge_days', '30'); } - From 3df55e27692d13f0d6f5200e7d5d1dc560427506 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mads=20N=C3=B8rgaard?= Date: Wed, 3 Nov 2021 15:05:36 +0100 Subject: [PATCH 25/40] Remove rules modules as dependency --- composer.json | 3 --- os2forms_forloeb.info.yml | 3 --- 2 files changed, 6 deletions(-) diff --git a/composer.json b/composer.json index a299701..d21c91b 100644 --- a/composer.json +++ b/composer.json @@ -37,9 +37,6 @@ "drupal/queue_mail": "1.3.0", "drupal/queue_ui": "^2.1", "drupal/r4032login": "^2.1", - "drupal/rules": "3.0.0-alpha6", - "drupal/rules_token": "1.2.0", - "drupal/rules_webform": "1.5.0", "drupal/simple_ldap": "1.0.0-alpha3", "drupal/simplesamlphp_auth": "3.2.0", "drupal/switch_page_theme": "1.0", diff --git a/os2forms_forloeb.info.yml b/os2forms_forloeb.info.yml index 1c59b7e..0acdc21 100644 --- a/os2forms_forloeb.info.yml +++ b/os2forms_forloeb.info.yml @@ -26,9 +26,6 @@ dependencies: - pathauto - r4032login - redirect - - rules - - rules_token - - rules_webform - smtp - system - switch_page_theme From b9508ede11bc1e6cdc9e164db337aa781f77d14f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mads=20N=C3=B8rgaard?= Date: Wed, 3 Nov 2021 16:14:38 +0100 Subject: [PATCH 26/40] lock to dev branch --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index d21c91b..49f5d6f 100644 --- a/composer.json +++ b/composer.json @@ -49,7 +49,7 @@ "drupal/webform_scheduled_tasks": "^2.0", "drupal/webform_views": "^5.0@alpha", "drupal/workflow_participants": "^2.4", - "os2forms/os2forms_forloeb_profile": "^1.0", + "os2forms/os2forms_forloeb_profile": "dev-remove_rules", "webmozart/path-util": "2.3.0", "zaporylie/composer-drupal-optimizations": "1.2.0" }, From 2d12123c2852ae8d63edc40a3bb23bce2320cee8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mads=20N=C3=B8rgaard?= Date: Thu, 4 Nov 2021 14:48:13 +0100 Subject: [PATCH 27/40] =?UTF-8?q?Remove=20Forl=C3=B8b=20profile=20as=20a?= =?UTF-8?q?=20dependency?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- composer.json | 1 - 1 file changed, 1 deletion(-) diff --git a/composer.json b/composer.json index 49f5d6f..07c9386 100644 --- a/composer.json +++ b/composer.json @@ -49,7 +49,6 @@ "drupal/webform_scheduled_tasks": "^2.0", "drupal/webform_views": "^5.0@alpha", "drupal/workflow_participants": "^2.4", - "os2forms/os2forms_forloeb_profile": "dev-remove_rules", "webmozart/path-util": "2.3.0", "zaporylie/composer-drupal-optimizations": "1.2.0" }, From 8bd8d5c7d100286ba1b9e6e2784485c2f3d788ed Mon Sep 17 00:00:00 2001 From: mb Date: Fri, 5 Nov 2021 16:07:25 +0100 Subject: [PATCH 28/40] [#46780] Removed all parts of HK/Holstebro, to make the webform generic and reusable for everyone. --- config/optional/webform.webform.grundskabelon.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config/optional/webform.webform.grundskabelon.yml b/config/optional/webform.webform.grundskabelon.yml index e40953d..08cc6c5 100644 --- a/config/optional/webform.webform.grundskabelon.yml +++ b/config/optional/webform.webform.grundskabelon.yml @@ -35,9 +35,9 @@ template: false archive: false id: grundskabelon title: 'Grundskabelon' -description: 'Denne webform er oprettet ud fra Holstebro Kommunes grundskabelon' +description: 'Denne webform er en grundskabelon.' category: '' -elements: "forlob_type:\n '#type': hidden\n '#title': 'Forløb type'\nsbsip_rules_flow:\n '#type': value\n '#title': 'A SBSIP Afleveringsregel'\n '#value': |\n //Her skal slette de regler som ikke gælder for denne formular.\n //Hvis der skal afleveres til SBSYS skal du også redigere sbsip_xml elementet\n sbsys_standard //Hvis sag eksisterer bliver dokument tilføjet eller ny sag\n sbsys_ny //Opret altid en ny SBSYS sag\n sbsys_direkte_sag_2 //aflever direkte til en sag, husk at udfylde sbsys_sags_nr\n digital_post //Aflever kvittering til digital post\n \n '#default_value': digital_post\nsbsys_sags_nr:\n '#type': value\n '#title': 'B sbsys_sags_nr // bruges ved sbsys_direkte_sag_2 ellers tom'\nsbsip_xml:\n '#type': webform_attachment_os2forms_sbsys_xml\n '#os2formsId': _custom_\n '#os2formsId_custom': angiv_uuid_her\n '#sagSkabelonId': _custom_\n '#sagSkabelonId_custom': 'angiv SBSYS sagsskabelon id'\n '#nemid_cpr': default_nemid_value\n '#nemid_name': default_nemid_value\n '#nemid_address': default_nemid_value\n '#nemid_zipcode': default_nemid_value\n '#nemid_city': default_nemid_value\n '#bodyText': _custom_\n '#bodyText_custom': |\n Tak - vi har nu modtaget de indtastede oplysninger. Du kan se dem i den vedhæftede kvittering.\n \n Venlig hilsen\n Holstebro Kommune\n \n '#MaaSendesTilDFF': ja\n '#title': 'C SBSIP XML // 1 ) Angiv altid UUID, 2) Angiv SBSYS skabelon id ved sbsip_rules_flow(sbsys_standard eller sbsys_ny)'\n '#filename': os2forms.xml\nlogind_oplysninger:\n '#type': webform_wizard_page\n '#title': Start\n cpr:\n '#type': os2forms_nemid_cpr\n '#title': Cpr\n '#multiple': false\n '#title_display': none\n '#readonly': true\n '#wrapper_attributes':\n style: 'display:none'\n navn:\n '#type': os2forms_nemid_name\n '#title': Navn\n '#multiple': false\n '#title_display': none\n '#readonly': true\n '#wrapper_attributes':\n style: 'display:none'\n privat_adresse:\n '#type': os2forms_nemid_address\n '#title': Adresse\n '#multiple': false\n '#title_display': none\n '#readonly': true\n '#wrapper_attributes':\n style: 'display:none'\n cvr:\n '#type': os2forms_nemid_company_cvr\n '#title': CVR\n '#multiple': false\n '#title_display': none\n '#readonly': true\n '#wrapper_attributes':\n style: 'display:none'\n firmanavn:\n '#type': os2forms_nemid_company_name\n '#title': Firmanavn\n '#multiple': false\n '#title_display': none\n '#readonly': true\n '#wrapper_attributes':\n style: 'display:none'\n adresse:\n '#type': os2forms_nemid_company_address\n '#title': Adresse\n '#multiple': false\n '#title_display': none\n '#readonly': true\n '#wrapper_attributes':\n style: 'display:none'\n firma_by:\n '#type': os2forms_nemid_company_city\n '#title': 'Postnummer og By'\n '#multiple': false\n '#title_display': none\n '#readonly': true\n '#wrapper_attributes':\n style: 'display:none'\n flexboxlogind:\n '#type': webform_flexbox\n introtekstfeltgruppe:\n '#type': fieldset\n '#title': Kontaktoplysninger\n '#title_display': invisible\n '#flex': 3\n introtekst:\n '#type': processed_text\n '#text': |\n

(Evt. beskriv hvad brugeren skal have klar på forhånd, eller anden vigtig information) 

\n \n

Du er allerede logget ind. Du kan logge ud igen med linket i højre kolonne under dine personoplysninger.

\n \n

 

\n \n '#format': full_html\n flexbox_01:\n '#type': webform_flexbox\n oplysninger:\n '#type': container\n '#flex': 3\n e_mail_:\n '#type': email\n '#title': E-mail\n '#states_clear': false\n telefon:\n '#type': tel\n '#title': Telefon\n '#states_clear': false\n '#telephone_validation_format': '2'\n '#telephone_validation_country': DK\n tom:\n '#type': container\n '#flex': 3\n du_er_logget_ind_som:\n '#type': fieldset\n '#title': 'Du er logget ind som'\n brugerinformation_1:\n '#type': webform_computed_token\n '#title': 'Du er logget ind som:'\n '#title_display': invisible\n '#display_on': form\n '#template': |\n [webform_submission:values:navn][current-user:display-name][webform_submission:values:firmanavn]
\n [webform_submission:values:e_mail_]
\n [webform_submission:values:telefon]\n \n '#hide_empty': true\n '#ajax': true\n nemidlogin:\n '#type': os2forms_nemid_nemlogin_link\n '#nemlogin_link_login_text': 'Log på'\n '#nemlogin_link_logout_text': 'Log af'\n samtykkeerklaering:\n '#type': fieldset\n '#title': 'Samtykke eller oplysningspligt'\n '#flex': 3\n databeskyttelse:\n '#type': checkboxes\n '#title': Databeskyttelse\n '#title_display': none\n '#options':\n 'Ja, jeg accepterer kommunens registrering og eventuelle videregivelse af oplysninger.': 'Jeg accepterer kommunens registrering og eventuelle videregivelse af oplysninger.'\n '#options_all_value': ''\n '#options_all_text': ''\n '#options_none_value': ''\n '#options_none_text': ''\n databeskyttelsestekst:\n '#type': webform_more\n '#more_title': 'Læs mere om samtykke'\n '#more': |\n


\n Holstebro Kommune registrerer dine oplysninger og kan videregive disse til andre offentlige myndigheder, private virksomheder m.fl., der har lovmæssigt krav på oplysningerne eller samarbejder med kommunen. Du har ret til at kende de oplysninger, kommunen har registreret om dig lige som du kan kræve forkerte oplysninger rettet eller slettet.

\n \n

Du kan kontakte Holstebro Kommunes databeskyttelsesrådgiveren om de rettigheder, du har i henhold til databeskyttelseslovgivningen. Du har ret til at klage til Datatilsynet over kommunens behandling af dine personlige oplysninger. På www.holstebro.dk/databeskyttelse kan du læse mere og finde kontaktoplysninger.
\n  

\n \n oplysningspligt:\n '#type': webform_more\n '#more_title': 'Læs mere om oplysningspligt'\n '#more': |\n


\n Holstebro Kommune er dataansvarlig for behandlingen af de personoplysninger, som vi har modtaget om dig.

\n \n

Kontaktoplysninger:
\n Mail: 
\n Evt. Tlf:

\n \n

Vi behandler dine personoplysninger til følgende formål

\n \n

(skriv kort og forståeligt, hvad formålene er med at behandle personoplysningerne)

\n \n

Retsgrundlaget for vores behandling af dine personoplysninger følger af

\n \n

(Beskriv retsgrundlaget/retsgrundlagene for behandlingen, herunder f.eks. kapitlet i den lov eller bekendtgørelse, der pålægger jer at indsamle personoplysningerne. Hvis behandlingen er baseret på databeskyttelsesforordningens eller databeskyttelseslovens behandlingsbestemmelser, skal du henvise til den relevante bestemmelse.)

\n \n

Vi behandler følgende kategorier af personoplysninger om dig

\n \n

 (Skriv hvilken slags oplysninger der behandles fx kontaktoplysninger og cpr, økonomiske forhold, uddannelse. Hvis nogle af følgende kategorier behandles, skal det fremgå: Oplysninger om straffedomme eller lovovertrædelser, helbred, religion, fagforening, politisk eller filosofisk overbevisning, race eller etnicitet, seksuel orientering, biometrisk data til identifikation.)

\n \n

Vi videregiver eller overlader dine personoplysninger til

\n \n

(Skriv hvem der modtager oplysningerne fx SKAT, UDK, politiet, samarbejdspartnere eller virksomheder)

\n \n

Vi henter personoplysninger om dig fra (HVIS RELEVANT)

\n \n

(skriv hvor oplysninger hentes, fx fra SKAT, Folkeregistret, BBR , andre offentlige myndigheder.)

\n \n

Vi gemmer dine personoplysninger i (HVIS RELEVANT)

\n \n

(angiv tidsrum fx 5 år efter sagen er afsluttet, 6 måneder efter vi har afsluttet ansættelsen etc. Hvis ikke det er muligt at angive præcis tidsrum, skriv i stedet hvilke kriterier der lægger til grund for opbevaringstiden) Vi foretager en automatisk afgørelse ud fra (beskriv hvilken afgørelse der træffes og ud fra hvilke kriterier det sker. Skriv hvilken konsekvens det kan få for den registrerede)

\n \n

Du har mulighed for at trække dit samtykke tilbage

\n \n

Det gør du ved at kontakte os på ovenstående kontaktoplysninger. Hvis du trækker dit samtykke tilbage, påvirker det kun den fremadrettede behandling af dine personoplysninger.

\n \n

Du har følgende rettigheder jf. databeskyttelsesforordningen

\n \n
    \n \t
  • Indsigtsret: Du har ret til at se de oplysninger vi behandler om dig. 
  • \n \t
  • Rettelse: Du har ret til at få urigtige oplysninger om dig rettet
  • \n \t
  • Sletning: Du kan i sjældne tilfælde have ret til at få slettet oplysninger om dig inden vores normale slettefrist indtræder
  • \n \t
  • Begrænsning af behandling: Du har i visse tilfælde ret til at få behandling af dine personoplysninger begrænset.
  • \n \t
  • Indsigelse: Du har i visse tilfælde ret til at gøre indsigelse mod vores behandling af dine personoplysninger.
  • \n
\n \n

Du har ret til at klage til Datatilsynet, hvis du er utilfreds med vores behandling af dine personoplysninger. Se mere på datatilsynet.dk

\n \nudfyld:\n '#type': webform_wizard_page\n '#title': Udfyld\n flexbox_kontaktopl:\n '#type': webform_flexbox\n tekst_side2:\n '#type': fieldset\n '#title': 'Skriv forklarende overskrift'\n '#flex': 3\n tekst:\n '#type': textarea\n '#title': tekst\n '#title_display': none\n '#flex': 3\n du_er_logget_ind_som_3:\n '#type': fieldset\n '#title': 'Du er logget ind som:'\n brugerinformation_2:\n '#type': webform_computed_token\n '#title': 'Du er logget ind som:'\n '#title_display': invisible\n '#display_on': form\n '#template': |\n [webform_submission:values:navn][current-user:display-name][webform_submission:values:firmanavn]
\n [webform_submission:values:e_mail_]
\n [webform_submission:values:telefon]\n \n '#hide_empty': true\n '#ajax': true\nudfyld_2:\n '#type': webform_wizard_page\n '#title': 'Udfyld 2'\n flexbox_02:\n '#type': webform_flexbox\n skriv_forklarende_overskrift:\n '#type': fieldset\n '#title': 'Skriv forklarende overskrift'\n '#flex': 3\n tekst2:\n '#type': textarea\n '#title': tekst\n '#title_display': none\n '#flex': 3\n du_er_logget_ind_som_4:\n '#type': fieldset\n '#title': 'Du er logget ind som'\n brugerinformation_3:\n '#type': webform_computed_token\n '#title': 'Du er logget ind som:'\n '#title_display': invisible\n '#display_on': form\n '#template': |\n [webform_submission:values:navn][current-user:display-name][webform_submission:values:firmanavn]
\n [webform_submission:values:e_mail_]
\n [webform_submission:values:telefon]\n \n '#hide_empty': true\n '#ajax': true\nudfyld_3:\n '#type': webform_wizard_page\n '#title': 'Udfyld 3'\n flexbox_03:\n '#type': webform_flexbox\n skriv_forklarende_overskrift_6:\n '#type': fieldset\n '#title': 'Skriv forklarende overskrift'\n '#flex': 3\n tekst10:\n '#type': textarea\n '#title': tekst\n '#title_display': none\n '#flex': 3\n du_er_logget_ind_som_7:\n '#type': fieldset\n '#title': 'Du er logget ind som'\n brugerinformation_4:\n '#type': webform_computed_token\n '#title': 'Du er logget ind som:'\n '#title_display': invisible\n '#display_on': form\n '#template': |\n [webform_submission:values:navn][current-user:display-name][webform_submission:values:firmanavn]
\n [webform_submission:values:e_mail_]
\n [webform_submission:values:telefon]\n \n '#hide_empty': true\n '#ajax': true\nafslut_det_videre_forloeb:\n '#type': webform_wizard_page\n '#title': Afslut\n afslutning:\n '#type': processed_text\n '#text': |\n

(Beskriv efterfølgende forløb - Hvad kan borgeren forvente nu?

\n \n

Eksempelvis: Din ansøgning vil blive behandlet snarest og du vil modtage en afgørelse inden for 14 dage.)

\n \n '#format': full_html\nactions:\n '#type': webform_actions\n '#title': 'Submit button(s)'\n '#submit__label': 'Send XXX'\nvedhaeftet_pdf:\n '#type': 'webform_entity_print_attachment:pdf'\n '#title': 'D Vedhæftet PDF'\n '#filename': HK-Kvittering.pdf\n '#link_title': Kvittering\n '#view_mode': twig\n '#template': |\n

Kvittering

\n

[webform:title]

\n

Indsendt den [webform_submission:created:custom:d-m-Y - H:i]

\n \n [webform_submission:values:logind_oplysninger:html]\n \n [webform_submission:values:udfyld:format:html]\n \n [webform_submission:values:udfyld_2:format:html]\n \n [webform_submission:values:udfyld_3:format:html]" +elements: "forlob_type:\n '#type': hidden\n '#title': 'Forløb type'\nsbsip_rules_flow:\n '#type': value\n '#title': 'A SBSIP Afleveringsregel'\n '#value': |\n //Her skal slette de regler som ikke gælder for denne formular.\n //Hvis der skal afleveres til SBSYS skal du også redigere sbsip_xml elementet\n sbsys_standard //Hvis sag eksisterer bliver dokument tilføjet eller ny sag\n sbsys_ny //Opret altid en ny SBSYS sag\n sbsys_direkte_sag_2 //aflever direkte til en sag, husk at udfylde sbsys_sags_nr\n digital_post //Aflever kvittering til digital post\n \n '#default_value': digital_post\nsbsys_sags_nr:\n '#type': value\n '#title': 'B sbsys_sags_nr // bruges ved sbsys_direkte_sag_2 ellers tom'\nsbsip_xml:\n '#type': webform_attachment_os2forms_sbsys_xml\n '#os2formsId': _custom_\n '#os2formsId_custom': angiv_uuid_her\n '#sagSkabelonId': _custom_\n '#sagSkabelonId_custom': 'angiv SBSYS sagsskabelon id'\n '#nemid_cpr': default_nemid_value\n '#nemid_name': default_nemid_value\n '#nemid_address': default_nemid_value\n '#nemid_zipcode': default_nemid_value\n '#nemid_city': default_nemid_value\n '#bodyText': _custom_\n '#bodyText_custom': |\n Tak - vi har nu modtaget de indtastede oplysninger. Du kan se dem i den vedhæftede kvittering.\n \n Venlig hilsen\n ****Indsæt firmanavn\n \n '#MaaSendesTilDFF': ja\n '#title': 'C SBSIP XML // 1 ) Angiv altid UUID, 2) Angiv SBSYS skabelon id ved sbsip_rules_flow(sbsys_standard eller sbsys_ny)'\n '#filename': os2forms.xml\nlogind_oplysninger:\n '#type': webform_wizard_page\n '#title': Start\n cpr:\n '#type': os2forms_nemid_cpr\n '#title': Cpr\n '#multiple': false\n '#title_display': none\n '#readonly': true\n '#wrapper_attributes':\n style: 'display:none'\n navn:\n '#type': os2forms_nemid_name\n '#title': Navn\n '#multiple': false\n '#title_display': none\n '#readonly': true\n '#wrapper_attributes':\n style: 'display:none'\n privat_adresse:\n '#type': os2forms_nemid_address\n '#title': Adresse\n '#multiple': false\n '#title_display': none\n '#readonly': true\n '#wrapper_attributes':\n style: 'display:none'\n cvr:\n '#type': os2forms_nemid_company_cvr\n '#title': CVR\n '#multiple': false\n '#title_display': none\n '#readonly': true\n '#wrapper_attributes':\n style: 'display:none'\n firmanavn:\n '#type': os2forms_nemid_company_name\n '#title': Firmanavn\n '#multiple': false\n '#title_display': none\n '#readonly': true\n '#wrapper_attributes':\n style: 'display:none'\n adresse:\n '#type': os2forms_nemid_company_address\n '#title': Adresse\n '#multiple': false\n '#title_display': none\n '#readonly': true\n '#wrapper_attributes':\n style: 'display:none'\n firma_by:\n '#type': os2forms_nemid_company_city\n '#title': 'Postnummer og By'\n '#multiple': false\n '#title_display': none\n '#readonly': true\n '#wrapper_attributes':\n style: 'display:none'\n flexboxlogind:\n '#type': webform_flexbox\n introtekstfeltgruppe:\n '#type': fieldset\n '#title': Kontaktoplysninger\n '#title_display': invisible\n '#flex': 3\n introtekst:\n '#type': processed_text\n '#text': |\n

(Evt. beskriv hvad brugeren skal have klar på forhånd, eller anden vigtig information) 

\n \n

Du er allerede logget ind. Du kan logge ud igen med linket i højre kolonne under dine personoplysninger.

\n \n

 

\n \n '#format': full_html\n flexbox_01:\n '#type': webform_flexbox\n oplysninger:\n '#type': container\n '#flex': 3\n e_mail_:\n '#type': email\n '#title': E-mail\n '#states_clear': false\n telefon:\n '#type': tel\n '#title': Telefon\n '#states_clear': false\n '#telephone_validation_format': '2'\n '#telephone_validation_country': DK\n tom:\n '#type': container\n '#flex': 3\n du_er_logget_ind_som:\n '#type': fieldset\n '#title': 'Du er logget ind som'\n brugerinformation_1:\n '#type': webform_computed_token\n '#title': 'Du er logget ind som:'\n '#title_display': invisible\n '#display_on': form\n '#template': |\n [webform_submission:values:navn][current-user:display-name][webform_submission:values:firmanavn]
\n [webform_submission:values:e_mail_]
\n [webform_submission:values:telefon]\n \n '#hide_empty': true\n '#ajax': true\n nemidlogin:\n '#type': os2forms_nemid_nemlogin_link\n '#nemlogin_link_login_text': 'Log på'\n '#nemlogin_link_logout_text': 'Log af'\n samtykkeerklaering:\n '#type': fieldset\n '#title': 'Samtykke eller oplysningspligt'\n '#flex': 3\n databeskyttelse:\n '#type': checkboxes\n '#title': Databeskyttelse\n '#title_display': none\n '#options':\n 'Ja, jeg accepterer kommunens registrering og eventuelle videregivelse af oplysninger.': 'Jeg accepterer kommunens registrering og eventuelle videregivelse af oplysninger.'\n '#options_all_value': ''\n '#options_all_text': ''\n '#options_none_value': ''\n '#options_none_text': ''\n databeskyttelsestekst:\n '#type': webform_more\n '#more_title': 'Læs mere om samtykke'\n '#more': '

***Indsæt tekst om samtykke

'\n oplysningspligt:\n '#type': webform_more\n '#more_title': 'Læs mere om oplysningspligt'\n '#more': '

***Indsæt tekst om oplysningspligt

'\nudfyld:\n '#type': webform_wizard_page\n '#title': Udfyld\n flexbox_kontaktopl:\n '#type': webform_flexbox\n tekst_side2:\n '#type': fieldset\n '#title': 'Skriv forklarende overskrift'\n '#flex': 3\n tekst:\n '#type': textarea\n '#title': tekst\n '#title_display': none\n '#flex': 3\n du_er_logget_ind_som_3:\n '#type': fieldset\n '#title': 'Du er logget ind som:'\n brugerinformation_2:\n '#type': webform_computed_token\n '#title': 'Du er logget ind som:'\n '#title_display': invisible\n '#display_on': form\n '#template': |\n [webform_submission:values:navn][current-user:display-name][webform_submission:values:firmanavn]
\n [webform_submission:values:e_mail_]
\n [webform_submission:values:telefon]\n \n '#hide_empty': true\n '#ajax': true\nudfyld_2:\n '#type': webform_wizard_page\n '#title': 'Udfyld 2'\n flexbox_02:\n '#type': webform_flexbox\n skriv_forklarende_overskrift:\n '#type': fieldset\n '#title': 'Skriv forklarende overskrift'\n '#flex': 3\n tekst2:\n '#type': textarea\n '#title': tekst\n '#title_display': none\n '#flex': 3\n du_er_logget_ind_som_4:\n '#type': fieldset\n '#title': 'Du er logget ind som'\n brugerinformation_3:\n '#type': webform_computed_token\n '#title': 'Du er logget ind som:'\n '#title_display': invisible\n '#display_on': form\n '#template': |\n [webform_submission:values:navn][current-user:display-name][webform_submission:values:firmanavn]
\n [webform_submission:values:e_mail_]
\n [webform_submission:values:telefon]\n \n '#hide_empty': true\n '#ajax': true\nudfyld_3:\n '#type': webform_wizard_page\n '#title': 'Udfyld 3'\n flexbox_03:\n '#type': webform_flexbox\n skriv_forklarende_overskrift_6:\n '#type': fieldset\n '#title': 'Skriv forklarende overskrift'\n '#flex': 3\n tekst10:\n '#type': textarea\n '#title': tekst\n '#title_display': none\n '#flex': 3\n du_er_logget_ind_som_7:\n '#type': fieldset\n '#title': 'Du er logget ind som'\n brugerinformation_4:\n '#type': webform_computed_token\n '#title': 'Du er logget ind som:'\n '#title_display': invisible\n '#display_on': form\n '#template': |\n [webform_submission:values:navn][current-user:display-name][webform_submission:values:firmanavn]
\n [webform_submission:values:e_mail_]
\n [webform_submission:values:telefon]\n \n '#hide_empty': true\n '#ajax': true\nafslut_det_videre_forloeb:\n '#type': webform_wizard_page\n '#title': Afslut\n afslutning:\n '#type': processed_text\n '#text': |\n

(Beskriv efterfølgende forløb - Hvad kan borgeren forvente nu?

\n \n

Eksempelvis: Din ansøgning vil blive behandlet snarest og du vil modtage en afgørelse inden for 14 dage.)

\n \n '#format': full_html\nactions:\n '#type': webform_actions\n '#title': 'Submit button(s)'\n '#submit__label': 'Send XXX'\nvedhaeftet_pdf:\n '#type': 'webform_entity_print_attachment:pdf'\n '#title': 'Vedhæftet PDF'\n '#filename': Example-Kvittering.pdf\n '#link_title': Kvittering\n '#view_mode': twig\n '#template': |\n

Kvittering

\n

[webform:title]

\n

Indsendt den [webform_submission:created:custom:d-m-Y - H:i]

\n \n [webform_submission:values:logind_oplysninger:html]\n \n [webform_submission:values:udfyld:format:html]\n \n [webform_submission:values:udfyld_2:format:html]\n \n [webform_submission:values:udfyld_3:format:html]" css: '' javascript: '' settings: @@ -232,7 +232,7 @@ handlers: settings: states: - completed - to_mail: formularinput@holstebro.dk + to_mail: example@example.dk to_options: { } cc_mail: '' cc_options: { } From 991b5616051870f3380f1e22a07d3c90fbe44d14 Mon Sep 17 00:00:00 2001 From: mb Date: Tue, 23 Nov 2021 15:08:41 +0100 Subject: [PATCH 29/40] [#46800] Created new task-type for inheriting webform in flow --- .../EngineTasks/MaestroWebformInheritTask.php | 150 ++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 src/Plugin/EngineTasks/MaestroWebformInheritTask.php diff --git a/src/Plugin/EngineTasks/MaestroWebformInheritTask.php b/src/Plugin/EngineTasks/MaestroWebformInheritTask.php new file mode 100644 index 0000000..752c387 --- /dev/null +++ b/src/Plugin/EngineTasks/MaestroWebformInheritTask.php @@ -0,0 +1,150 @@ +processID = $configuration[0]; + $this->queueID = $configuration[1]; + } + } + + /** + * {@inheritDoc} + */ + public function shortDescription() { + return t('Webform with Inherited submission'); + } + + /** + * {@inheritDoc} + */ + public function description() { + return $this->t('Webform with Inherited submission'); + } + + /** + * {@inheritDoc} + * + * @see \Drupal\Component\Plugin\PluginBase::getPluginId() + */ + public function getPluginId() { + return 'MaestroWebformInherit'; + } + + /** + * {@inheritDoc} + */ + public function getTaskEditForm(array $task, $templateMachineName) { + + // We call the parent, as we need to add a field to the inherited form + $form = parent::getTaskEditForm($task, $templateMachineName); + $form['inherit_webform_unique_id'] = [ + '#type' => 'textfield', + '#title' => $this->t('Inherit Webform from:'), + '#description' => $this->t('Put the unique identifier of the webform you want to inherit from (start-task=submission'), + '#default_value' => $task['data']['inherit_webform_unique_id'] ?? '', + '#required' => TRUE, + ]; + return $form; + } + + /** + * {@inheritDoc} + */ + public function prepareTaskForSave(array &$form, FormStateInterface $form_state, array &$task) { + + // The field added in getTaskEditForm, needs to be included here, otherwise it won't be saved. + $task['data']['inherit_webform_unique_id'] = $form_state->getValue('inherit_webform_unique_id'); + } + + /** + * {@inheritDoc} + */ + public function getExecutableForm($modal, MaestroExecuteInteractive $parent) { + + // First, get hold of the interesting previous tasks. + $templateMachineName = MaestroEngine::getTemplateIdFromProcessId($this->processID); + $taskMachineName = MaestroEngine::getTaskIdFromQueueId($this->queueID); + $task = MaestroEngine::getTemplateTaskByID($templateMachineName, $taskMachineName); + + // Get user input from 'inherit_webform_unique_id' + $webformInheritID = $task['data']['inherit_webform_unique_id']; + + // Load its corresponding webform submission. + $sid = MaestroEngine::getEntityIdentiferByUniqueID($this->processID, $webformInheritID); + if ($sid) { + $webform_submission = WebformSubmission::load($sid); + } + if (!isset($webform_submission)) { + \Drupal::logger('os2forms_forloeb')->error( + "Predecessors must have submissions with webforms attached." + ); + } + // Copy the fields of the webform submission to the values array. + foreach ($webform_submission->getData() as $key => $value) { + if ($value) { + $field_values[$webformInheritID . '_' . $key] = $value; + } + } + // Now create webform submission, submit and attach to current process. + $templateTask = MaestroEngine::getTemplateTaskByQueueID($this->queueID); + $taskUniqueSubmissionId = $templateTask['data']['unique_id']; + $webformMachineName = $templateTask['data']['webform_machine_name']; + + $values = []; + $values['webform_id'] = $webformMachineName; + $values['data'] = $field_values; + + // Create submission. + $new_submission = WebformSubmission::create($values); + + $errors = WebformSubmissionForm::validateWebformSubmission($webform_submission); + + if (!empty($errors)) { + \Drupal::logger('os2forms_forloeb')->error( + "Can't create new submission: " . json_encode($errors) + ); + } + // Submit it. + $new_submission = WebformSubmissionForm::submitWebformSubmission($new_submission); + + // Attach it to the Maestro process. + $sid = $new_submission->id(); + MaestroEngine::createEntityIdentifier( + $this->processID, $new_submission->getEntityTypeId(), + $new_submission->bundle(), $taskUniqueSubmissionId, $sid + ); + + return parent::getExecutableForm($modal, $parent); + } +} From 9b0d930fc769e2d2c87743f47cbe3518db8d50e2 Mon Sep 17 00:00:00 2001 From: mb Date: Fri, 26 Nov 2021 10:49:39 +0100 Subject: [PATCH 30/40] [#46800] adding returns after logs --- src/Plugin/EngineTasks/MaestroWebformInheritTask.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Plugin/EngineTasks/MaestroWebformInheritTask.php b/src/Plugin/EngineTasks/MaestroWebformInheritTask.php index 752c387..289c06d 100644 --- a/src/Plugin/EngineTasks/MaestroWebformInheritTask.php +++ b/src/Plugin/EngineTasks/MaestroWebformInheritTask.php @@ -109,6 +109,7 @@ public function getExecutableForm($modal, MaestroExecuteInteractive $parent) { \Drupal::logger('os2forms_forloeb')->error( "Predecessors must have submissions with webforms attached." ); + return FALSE; } // Copy the fields of the webform submission to the values array. foreach ($webform_submission->getData() as $key => $value) { @@ -134,6 +135,7 @@ public function getExecutableForm($modal, MaestroExecuteInteractive $parent) { \Drupal::logger('os2forms_forloeb')->error( "Can't create new submission: " . json_encode($errors) ); + return FALSE; } // Submit it. $new_submission = WebformSubmissionForm::submitWebformSubmission($new_submission); From b258d2d16aa4cb32aeb5e14d66163226ac5cf3f6 Mon Sep 17 00:00:00 2001 From: mb Date: Sat, 27 Nov 2021 16:43:36 +0100 Subject: [PATCH 31/40] [#46800] Adding all form fields to 'prepareTaskForSave' --- src/Plugin/EngineTasks/MaestroWebformInheritTask.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/Plugin/EngineTasks/MaestroWebformInheritTask.php b/src/Plugin/EngineTasks/MaestroWebformInheritTask.php index 289c06d..7cdccda 100644 --- a/src/Plugin/EngineTasks/MaestroWebformInheritTask.php +++ b/src/Plugin/EngineTasks/MaestroWebformInheritTask.php @@ -85,6 +85,17 @@ public function prepareTaskForSave(array &$form, FormStateInterface $form_state, // The field added in getTaskEditForm, needs to be included here, otherwise it won't be saved. $task['data']['inherit_webform_unique_id'] = $form_state->getValue('inherit_webform_unique_id'); + // If we don't add all the fields from the Inherited Class 'MaestroWebformTask', they won't be saved. + $task['data']['unique_id'] = $form_state->getValue('unique_id'); + $task['data']['webform_machine_name'] = $form_state->getValue('webform_machine_name'); + // Forcing this task to not be modal. + $task['data']['modal'] = 'notmodal'; + $task['data']['skip_webform_handlers'] = $form_state->getValue('skip_webform_handlers'); + $task['data']['webform_nodes_attached_to'] = $form_state->getValue('webform_nodes_attached_to'); + $task['data']['use_nodes_attached'] = $form_state->getValue('use_nodes_attached'); + $task['data']['webform_nodes_attached_variable'] = $form_state->getValue('webform_nodes_attached_variable'); + $task['data']['redirect_to'] = $form_state->getValue('redirect_to'); + $task['data']['show_edit_form'] = $form_state->getValue('show_edit_form'); } /** From 77cd8c40fc382af64e71cc2c3a3f106c718c38f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mads=20N=C3=B8rgaard?= Date: Mon, 29 Nov 2021 10:24:26 +0100 Subject: [PATCH 32/40] Enable URL override for webform submissions and hashed url patterns (#93) * Enable URL override for webform submissions and hashed url patterns * Move pathauto.settings.yml to profile --- .../pathauto.pattern.anonymous_submissions.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 config/optional/pathauto.pattern.anonymous_submissions.yml diff --git a/config/optional/pathauto.pattern.anonymous_submissions.yml b/config/optional/pathauto.pattern.anonymous_submissions.yml new file mode 100644 index 0000000..274848c --- /dev/null +++ b/config/optional/pathauto.pattern.anonymous_submissions.yml @@ -0,0 +1,13 @@ +status: true +dependencies: + module: + - ctools + - webform +id: anonymous_submissions +label: 'Anonymisering af indsendelser' +type: 'canonical_entities:webform_submission' +pattern: 'indsendelse/[random:hash:sha1]' +selection_criteria: { } +selection_logic: and +weight: 0 +relationships: { } From c4275f4dda67f9a9726058d60751e1419a5b6a20 Mon Sep 17 00:00:00 2001 From: mb Date: Mon, 29 Nov 2021 12:51:09 +0100 Subject: [PATCH 33/40] [#46800] Added custom field to parent prepareTaskForSave method --- .../EngineTasks/MaestroWebformInheritTask.php | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/src/Plugin/EngineTasks/MaestroWebformInheritTask.php b/src/Plugin/EngineTasks/MaestroWebformInheritTask.php index 7cdccda..cde3022 100644 --- a/src/Plugin/EngineTasks/MaestroWebformInheritTask.php +++ b/src/Plugin/EngineTasks/MaestroWebformInheritTask.php @@ -82,20 +82,11 @@ public function getTaskEditForm(array $task, $templateMachineName) { * {@inheritDoc} */ public function prepareTaskForSave(array &$form, FormStateInterface $form_state, array &$task) { - - // The field added in getTaskEditForm, needs to be included here, otherwise it won't be saved. + + // Inherit from parent + parent::prepareTaskForSave($form, $form_state, $task); + // Add custom field(s) to the inherited prepareTaskForSave method. $task['data']['inherit_webform_unique_id'] = $form_state->getValue('inherit_webform_unique_id'); - // If we don't add all the fields from the Inherited Class 'MaestroWebformTask', they won't be saved. - $task['data']['unique_id'] = $form_state->getValue('unique_id'); - $task['data']['webform_machine_name'] = $form_state->getValue('webform_machine_name'); - // Forcing this task to not be modal. - $task['data']['modal'] = 'notmodal'; - $task['data']['skip_webform_handlers'] = $form_state->getValue('skip_webform_handlers'); - $task['data']['webform_nodes_attached_to'] = $form_state->getValue('webform_nodes_attached_to'); - $task['data']['use_nodes_attached'] = $form_state->getValue('use_nodes_attached'); - $task['data']['webform_nodes_attached_variable'] = $form_state->getValue('webform_nodes_attached_variable'); - $task['data']['redirect_to'] = $form_state->getValue('redirect_to'); - $task['data']['show_edit_form'] = $form_state->getValue('show_edit_form'); } /** From 75707aab0270a2e8386ab5919760cd2456016c0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mads=20N=C3=B8rgaard?= Date: Wed, 1 Dec 2021 08:30:47 +0100 Subject: [PATCH 34/40] Merge master with develop (#97) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Merge develop with master (#90) * Fixing composer.lock to fetch fixed Forløb module release. * Add function to set username from webform submission. * Adding example webforms to enable flow with multiple webforms. * Make basic workflow work, without copying of fields. * New task class in place - now ready to implement the functionality. * Commit day's work. * Added form_alter hook to intercept submit on WebformMultiple task. * It works, next step some prettification. * Lint changes. * Fix notification by variable for part1 * Changed so that field names in source forms are prefixed with unique ID. * Remove composer update from CI check * Set composer update to get latest version per tag * Brushup before review. * Travis CI fix. * Remove tag versioning of forloeb module * Fix linting error. * Update README.md * Refactor unused webforms and flows * Add, install and configure r4032login module * Adjust description text * Rename template * Change category * Remove custom_theme and gin dependencies. The os2forms_forloeb module shouldn't make decisions about which theme to use. Leave that up to whichever install profile is being used. * Remove rules modules as dependency * lock to dev branch * Remove Forløb profile as a dependency Co-authored-by: Carsten Agger Co-authored-by: Carsten Agger Co-authored-by: Toke Fritzemeier * Pre-release PR develop into master (#95) * Fixing composer.lock to fetch fixed Forløb module release. * Add function to set username from webform submission. * Adding example webforms to enable flow with multiple webforms. * Make basic workflow work, without copying of fields. * New task class in place - now ready to implement the functionality. * Commit day's work. * Added form_alter hook to intercept submit on WebformMultiple task. * It works, next step some prettification. * Lint changes. * Fix notification by variable for part1 * Changed so that field names in source forms are prefixed with unique ID. * Remove composer update from CI check * Set composer update to get latest version per tag * Brushup before review. * Travis CI fix. * Remove tag versioning of forloeb module * Fix linting error. * Update README.md * Refactor unused webforms and flows * Add, install and configure r4032login module * Adjust description text * Rename template * Change category * Remove custom_theme and gin dependencies. The os2forms_forloeb module shouldn't make decisions about which theme to use. Leave that up to whichever install profile is being used. * Remove rules modules as dependency * lock to dev branch * Remove Forløb profile as a dependency * [#46780] Removed all parts of HK/Holstebro, to make the webform generic and reusable for everyone. * [#46800] Created new task-type for inheriting webform in flow * [#46800] adding returns after logs * [#46800] Adding all form fields to 'prepareTaskForSave' * Enable URL override for webform submissions and hashed url patterns (#93) * Enable URL override for webform submissions and hashed url patterns * Move pathauto.settings.yml to profile * [#46800] Added custom field to parent prepareTaskForSave method Co-authored-by: Carsten Agger Co-authored-by: Carsten Agger Co-authored-by: Toke Fritzemeier Co-authored-by: mb Co-authored-by: mBoegvald <36398987+mBoegvald@users.noreply.github.com> Co-authored-by: Carsten Agger Co-authored-by: Carsten Agger Co-authored-by: Toke Fritzemeier Co-authored-by: mb Co-authored-by: mBoegvald <36398987+mBoegvald@users.noreply.github.com> From 8a7c2d0874ed58bf5a6dbc2aa7cb58b5cca028ab Mon Sep 17 00:00:00 2001 From: mb Date: Wed, 1 Dec 2021 10:42:56 +0100 Subject: [PATCH 35/40] [#46800] Adding MaestroWebformInherit to os2forms_forloeb.module --- os2forms_forloeb.module | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/os2forms_forloeb.module b/os2forms_forloeb.module index 45345e1..23d650a 100644 --- a/os2forms_forloeb.module +++ b/os2forms_forloeb.module @@ -200,7 +200,7 @@ function os2forms_forloeb_form_alter(&$form, FormStateInterface $form_state, $fo if ($isMaestro && $queueID) { $templateTask = MaestroEngine::getTemplateTaskByQueueID($queueID); // We only care about Maestro Webform Multiple tasks. - if ($templateTask && $templateTask['tasktype'] == 'MaestroWebformMultiple') { + if ($templateTask && ($templateTask['tasktype'] == 'MaestroWebformMultiple' || $templateTask['tasktype'] == 'MaestroWebformInherit')) { $storage = $form_state->getStorage(); if ($storage && array_key_exists('form_display', $storage)) { $webformTypes = \Drupal::entityTypeManager()->getStorage('node_type')->loadMultiple(); From 11085fc09cddef8fca9f7b0a810369a47250f8f0 Mon Sep 17 00:00:00 2001 From: mb Date: Mon, 6 Dec 2021 14:52:37 +0100 Subject: [PATCH 36/40] [#46800] Added function that returns array of custom task-types and cleaned logic of if-statement --- os2forms_forloeb.module | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/os2forms_forloeb.module b/os2forms_forloeb.module index 23d650a..7205006 100644 --- a/os2forms_forloeb.module +++ b/os2forms_forloeb.module @@ -185,12 +185,21 @@ function os2forms_forloeb_spv_fetch_entity_username($uniqueWebformIdentifier, $w return $username; } +/** + * Returns array of custom task-types for OS2forms + * + */ +function os2forms_forloeb_get_custom_task_types() { + return ['MaestroWebformMultiple', 'MaestroWebformInherit']; +} + /** * Implements hook_form_alter() for MaestroWebformMultiple task type. * * This has been copied from * maestro/maestro_webform/maestro_webform.module with a minimal but * necessary change. See https://www.drupal.org/project/maestro/issues/3243510 + * When that issue has been fixed, this hook implementation can be safely deleted. * */ function os2forms_forloeb_form_alter(&$form, FormStateInterface $form_state, $form_id) { @@ -199,8 +208,10 @@ function os2forms_forloeb_form_alter(&$form, FormStateInterface $form_state, $fo // Both these keys need to exist. if ($isMaestro && $queueID) { $templateTask = MaestroEngine::getTemplateTaskByQueueID($queueID); - // We only care about Maestro Webform Multiple tasks. - if ($templateTask && ($templateTask['tasktype'] == 'MaestroWebformMultiple' || $templateTask['tasktype'] == 'MaestroWebformInherit')) { + // Get array of custom task-types + $os2forms_forloeb_custom_task_types = os2forms_forloeb_get_custom_task_types(); + // We only care about custom Task-types defined in os2forms_forloeb_get_custom_task_types() + if ($templateTask && in_array($templateTask['tasktype'], $os2forms_forloeb_custom_task_types)) { $storage = $form_state->getStorage(); if ($storage && array_key_exists('form_display', $storage)) { $webformTypes = \Drupal::entityTypeManager()->getStorage('node_type')->loadMultiple(); From 28fb26fe96da9426ee5cda2bd652bf6d6efe36ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mads=20N=C3=B8rgaard?= Date: Tue, 7 Dec 2021 14:53:43 +0100 Subject: [PATCH 37/40] Refactor redundant menu link (#101) --- ...ws.view.forlob_og_webformularer_til_sagsbehandling.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/config/optional/views.view.forlob_og_webformularer_til_sagsbehandling.yml b/config/optional/views.view.forlob_og_webformularer_til_sagsbehandling.yml index fbb077e..83a3d0d 100644 --- a/config/optional/views.view.forlob_og_webformularer_til_sagsbehandling.yml +++ b/config/optional/views.view.forlob_og_webformularer_til_sagsbehandling.yml @@ -16,7 +16,7 @@ dependencies: module: - os2forms_forloeb id: forlob_og_webformularer_til_sagsbehandling -label: 'Forløb og webformularer til sagsbehandling' +label: 'Selvbetjeningsløsninger' module: views description: '' tag: '' @@ -651,7 +651,7 @@ display: expose: label: '' granularity: second - title: 'Forløb og webformularer til sagsbehandling' + title: 'Selvbetjeningsløsninger' header: { } footer: { } empty: { } @@ -692,8 +692,8 @@ display: display_extenders: { } path: sagsbehandler-overblik menu: - type: normal - title: 'Forløb og webformularer til sagsbehandling' + type: none + title: 'Selvbetjeningsløsninger' description: '' expanded: false parent: system.admin From 8e02f9a94ec4c38f52844e99c0643e0110562f7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mads=20N=C3=B8rgaard?= Date: Tue, 7 Dec 2021 14:55:38 +0100 Subject: [PATCH 38/40] Generalise client specific translation (#98) --- translations/os2forms_forloeb.da.po | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/translations/os2forms_forloeb.da.po b/translations/os2forms_forloeb.da.po index 7dc6244..98d551b 100644 --- a/translations/os2forms_forloeb.da.po +++ b/translations/os2forms_forloeb.da.po @@ -1,4 +1,4 @@ -# Dansk translation of Selvbetjening Aarhus +# Dansk translation of OS2forms med Forløb # msgid "" msgstr "" @@ -272,8 +272,7 @@ msgstr "" msgid "Webform submission from: [webform_submission:source-title]" msgstr "" -"Formular udfyldt fra selvbetjening.aarhuskommune.dk: " -"[webform_submission:source-title]" +"Formular udfyldt fra [site:name]: [webform_submission:source-title]" msgid "" "Submitted on [webform_submission:created]\n" From 3b448b148aa57c974369485cda0bc4146838934b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mads=20N=C3=B8rgaard?= Date: Wed, 8 Dec 2021 08:24:31 +0100 Subject: [PATCH 39/40] Webform node element module as dependency. (#102) --- composer.json | 1 + os2forms_forloeb.info.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/composer.json b/composer.json index 07c9386..fcc3210 100644 --- a/composer.json +++ b/composer.json @@ -44,6 +44,7 @@ "drupal/ultimate_cron": "2.0.0-alpha5", "drupal/user_default_page": "2.0.0-rc1", "drupal/webform_composite": "1.0-rc2", + "drupal/webform_node_element": "1.2", "drupal/webform_remote_handlers": "^1.6.0", "drupal/webform_rest": "^4.0.0-beta2", "drupal/webform_scheduled_tasks": "^2.0", diff --git a/os2forms_forloeb.info.yml b/os2forms_forloeb.info.yml index 0acdc21..a11d23f 100644 --- a/os2forms_forloeb.info.yml +++ b/os2forms_forloeb.info.yml @@ -41,6 +41,7 @@ dependencies: - webform_entity_print - webform_entity_print_attachment - webform_migrate + - webform_node_element - webform_permissions_by_term - webform_remote_handlers - webform_rest From 56c21975e7ff0d7c0e51bd3d75a744370df1b38b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mads=20N=C3=B8rgaard?= Date: Wed, 8 Dec 2021 12:28:01 +0100 Subject: [PATCH 40/40] Fix to bug on default purge setting not saving. (#99) * Fix to bug on default purge setting not saving. * Better handling of submissions purge logic * Refactor and webform save error * Small change to purge logic * Remove save_webform check logic to always save changes. * Refactor upon review --- os2forms_forloeb.module | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/os2forms_forloeb.module b/os2forms_forloeb.module index 7205006..60b689f 100644 --- a/os2forms_forloeb.module +++ b/os2forms_forloeb.module @@ -128,13 +128,26 @@ function end_notification_batch_function($processID, $queueID) { /** * Implements hook_ENTITY_TYPE_create() - * Sets a global purge setting for all webform submissions to 30 days + * Sets a global purge setting for all webform submissions to 30 days. */ function os2forms_forloeb_webform_create(\Drupal\webform\WebformInterface $webform) { - // Set purge of all users submissions. - $webform->setSetting('purge', 'all'); - // Set purge of submissions more than 30 days old. - $webform->setSetting('purge_days', '30'); + // Set purge of all users submissions. + $webform->setSetting('purge', 'all'); + // Set purge of submissions more than 30 days old. + if (empty($webform->getSetting('purge_days'))) { + $webform->setSetting('purge_days', '30'); + } +} + +/** + * Implements hook_ENTITY_TYPE_presave() + * Update webform specific submissions purge settings. + */ +function os2forms_forloeb_webform_presave(\Drupal\webform\WebformInterface $webform) { + // Add a purge time frame if not set. + if (empty($webform->getSetting('purge_days'))) { + $webform->setSetting('purge_days', 30); + } } /**