Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 23 additions & 5 deletions src/Element/AddressLookupElement.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,22 @@ class AddressLookupElement extends FormElement {
*/
public static $addressType;

/**
* Static local custodian code.
*
* @var int
*/
public static $localCustodianCode;

/**
* Available Geocoder plugin ids.
*
* Maintained as a static variable for caching purposes.
*
* @var array
*/
public static $selectedGeocoderPluginIds = [];

/**
* Static address results.
*
Expand Down Expand Up @@ -301,14 +317,14 @@ public static function addressSelectLookup(string $address_search, array $addres

// Get the address type to lookup.
$address_type = $address_element['address_select']['address_select_list']['#address_type'];
$local_custodian_code = $address_element['#local_custodian_code'];
$selected_plugin_ids = $address_element['#geocoder_plugins'];

// Do address lookup.
// If its searching for the same address, return the static version.
// Else make a new request.
// This is to avoid multiple api lookup calls.
if ($address_search !== self::$searchString || $address_type !== self::$addressType) {
$selected_plugin_ids = $address_element['#geocoder_plugins'];
$local_custodian_code = $address_element['#local_custodian_code'];
if ($address_search !== self::$searchString || $address_type !== self::$addressType || $local_custodian_code !== self::$localCustodianCode || $selected_plugin_ids !== self::$selectedGeocoderPluginIds) {
self::$addressResults = \Drupal::service('localgov_forms.address_lookup')->search([$address_search], $selected_plugin_ids, $local_custodian_code);
}
$address_list = self::$addressResults;
Expand Down Expand Up @@ -348,8 +364,10 @@ public static function addressSelectLookup(string $address_search, array $addres
unset($address_element['address_select']['address_select_list']['#suffix']);
unset($address_element['address_select']['error']);

self::$searchString = $address_search;
self::$addressType = $address_type;
self::$searchString = $address_search;
self::$addressType = $address_type;
self::$localCustodianCode = $local_custodian_code;
self::$selectedGeocoderPluginIds = $selected_plugin_ids;

return $address_element['address_select']['address_select_list'];
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,313 @@
langcode: en
status: open
dependencies:
enforced:
module:
- webform
open: null
close: null
weight: 0
uid: 1
template: false
archive: false
id: contact3
title: Contact3
description: 'Basic email contact webform with two Address lookup fields for two local authorities.'
category: ''
elements: |-
name:
'#title': 'Your Name'
'#type': textfield
'#required': true
'#default_value': '[current-user:display-name]'
email:
'#title': 'Your Email'
'#type': email
'#required': true
'#default_value': '[current-user:mail]'
subject:
'#title': Subject
'#type': textfield
'#required': true
'#test': 'Testing contact webform from [site:name]'
message:
'#title': Message
'#type': textarea
'#required': true
'#test': 'Please ignore this email.'
address_brighton:
'#type': localgov_webform_uk_address
'#title': 'Brighton address'
'#geocoder_plugins':
localgov_mock_geocoder: localgov_mock_geocoder
nominatim: 0
random: 0
'#always_display_manual_address_entry_btn': 'yes'
'#local_custodian_code': 1445
address_croydon:
'#type': localgov_webform_uk_address
'#title': 'Croydon address'
'#geocoder_plugins':
localgov_mock_geocoder: localgov_mock_geocoder
nominatim: 0
random: 0
'#always_display_manual_address_entry_btn': 'yes'
'#local_custodian_code': 5240
actions:
'#type': webform_actions
'#title': 'Submit button(s)'
'#submit__label': 'Send message'
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: source_entity_webform
form_submit_once: false
form_exception_message: ''
form_open_message: ''
form_close_message: ''
form_previous_submissions: true
form_confidential: false
form_confidential_message: ''
form_disable_remote_addr: false
form_convert_anonymous: false
form_prepopulate: false
form_prepopulate_source_entity: false
form_prepopulate_source_entity_required: false
form_prepopulate_source_entity_type: ''
form_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: url_message
confirmation_title: ''
confirmation_message: 'Your message has been sent.'
confirmation_url: '<front>'
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:
email_confirmation:
id: email
label: 'Email confirmation'
notes: ''
handler_id: email_confirmation
status: true
conditions: { }
weight: 1
settings:
states:
- completed
to_mail: '[current-user:mail]'
to_options: { }
cc_mail: ''
cc_options: { }
bcc_mail: ''
bcc_options: { }
from_mail: _default
from_options: { }
from_name: _default
subject: '[webform_submission:values:subject:raw]'
body: '[webform_submission:values:message:value]'
excluded_elements: { }
ignore_access: false
exclude_empty: true
exclude_empty_checkbox: false
exclude_attachments: false
html: true
attachments: false
twig: false
theme_name: ''
parameters: { }
debug: false
reply_to: ''
return_path: ''
sender_mail: ''
sender_name: ''
email_notification:
id: email
label: 'Email notification'
notes: ''
handler_id: email_notification
status: true
conditions: { }
weight: 2
settings:
states:
- completed
to_mail: _default
to_options: { }
cc_mail: ''
cc_options: { }
bcc_mail: ''
bcc_options: { }
from_mail: '[webform_submission:values:email:raw]'
from_options: { }
from_name: '[webform_submission:values:name:raw]'
subject: '[webform_submission:values:subject:raw]'
body: '[webform_submission:values:message:value]'
excluded_elements: { }
ignore_access: false
exclude_empty: true
exclude_empty_checkbox: false
exclude_attachments: false
html: true
attachments: false
twig: false
theme_name: ''
parameters: { }
debug: false
reply_to: ''
return_path: ''
sender_mail: ''
sender_name: ''
variants: { }
Loading