From 81909ab7ce7d1d5bd16084cfeb804118f6b927f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mads=20N=C3=B8rgaard?= Date: Fri, 5 Nov 2021 11:25:59 +0100 Subject: [PATCH 1/2] Merge develop with master (#90) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 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 --- composer.json | 4 ---- os2forms_forloeb.info.yml | 3 --- 2 files changed, 7 deletions(-) diff --git a/composer.json b/composer.json index a299701..07c9386 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", @@ -52,7 +49,6 @@ "drupal/webform_scheduled_tasks": "^2.0", "drupal/webform_views": "^5.0@alpha", "drupal/workflow_participants": "^2.4", - "os2forms/os2forms_forloeb_profile": "^1.0", "webmozart/path-util": "2.3.0", "zaporylie/composer-drupal-optimizations": "1.2.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 74f846bb8d64c4242b546f88c75e86a6d9dc1eb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mads=20N=C3=B8rgaard?= Date: Mon, 29 Nov 2021 14:37:01 +0100 Subject: [PATCH 2/2] Pre-release PR develop into master (#95) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 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> --- ...pathauto.pattern.anonymous_submissions.yml | 13 ++ .../webform.webform.grundskabelon.yml | 6 +- .../EngineTasks/MaestroWebformInheritTask.php | 154 ++++++++++++++++++ 3 files changed, 170 insertions(+), 3 deletions(-) create mode 100644 config/optional/pathauto.pattern.anonymous_submissions.yml create mode 100644 src/Plugin/EngineTasks/MaestroWebformInheritTask.php 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: { } 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: { } diff --git a/src/Plugin/EngineTasks/MaestroWebformInheritTask.php b/src/Plugin/EngineTasks/MaestroWebformInheritTask.php new file mode 100644 index 0000000..cde3022 --- /dev/null +++ b/src/Plugin/EngineTasks/MaestroWebformInheritTask.php @@ -0,0 +1,154 @@ +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) { + + // 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'); + } + + /** + * {@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." + ); + return FALSE; + } + // 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) + ); + return FALSE; + } + // 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); + } +}