Skip to content

Commit

Permalink
Merge pull request #629 from usdoj/develop
Browse files Browse the repository at this point in the history
Latest from develop
  • Loading branch information
ameshkin authored Jul 9, 2024
2 parents ea149d0 + 4051dd9 commit e486646
Show file tree
Hide file tree
Showing 8 changed files with 500 additions and 130 deletions.
3 changes: 3 additions & 0 deletions config/default/editor.editor.rich_text_wizard.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,7 @@ settings:
-
label: 'Square link'
element: '<a class="square">'
-
label: 'Eyebrow text'
element: '<span class="eyebrow">'
image_upload: { }
151 changes: 98 additions & 53 deletions config/default/foia_wizard.settings.yml

Large diffs are not rendered by default.

267 changes: 267 additions & 0 deletions config/default/webform.webform.wizard_feedback.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,267 @@
uuid: 30c4f56c-4259-45db-9e38-f55462d90b10
langcode: en
status: open
dependencies:
module:
- foia_webform
weight: 0
open: null
close: null
uid: 1
template: false
archive: false
id: wizard_feedback
title: 'Wizard Feedback'
description: '<p>User feedback on results generated by the FOIA Wizard Tool.</p>'
categories: { }
elements: |-
results_meet_expectations:
'#type': webform_likert
'#title': 'Results meet expectations'
'#questions':
'How well do these results meet your expectations?': 'How well do these results meet your expectations?'
'#answers':
1: '1 -- Not at all'
2: '2'
3: '3'
4: '4'
5: '5 -- Very well'
results_relevant_to_search:
'#type': webform_likert
'#title': 'Results relevant to search'
'#questions':
'How relevant were the results to your search?': 'How relevant were the results to your search?'
'#answers':
1: '1 -- Not Relevant'
2: '2'
3: '3'
4: '4'
5: '5 -- Very Relevant'
other_feedback:
'#type': textarea
'#title': 'Other Feedback'
'#counter_type': character
'#counter_minimum': 1
'#counter_maximum': 2000
css: ''
javascript: ''
settings:
ajax: false
ajax_scroll_top: form
ajax_progress_type: ''
ajax_effect: ''
ajax_speed: null
page: true
page_submit_path: ''
page_confirm_path: ''
page_theme_name: ''
form_title: both
form_submit_once: false
form_open_message: ''
form_close_message: ''
form_exception_message: ''
form_previous_submissions: true
form_confidential: false
form_confidential_message: ''
form_disable_remote_addr: false
form_convert_anonymous: false
form_prepopulate: false
form_prepopulate_source_entity: false
form_prepopulate_source_entity_required: false
form_prepopulate_source_entity_type: ''
form_unsaved: false
form_disable_back: false
form_submit_back: false
form_disable_autocomplete: false
form_novalidate: false
form_disable_inline_errors: false
form_required: false
form_autofocus: false
form_details_toggle: false
form_reset: false
form_access_denied: default
form_access_denied_title: ''
form_access_denied_message: ''
form_access_denied_attributes: { }
form_file_limit: ''
form_attributes: { }
form_method: ''
form_action: ''
share: false
share_node: false
share_theme_name: ''
share_title: true
share_page_body_attributes: { }
submission_label: ''
submission_exception_message: ''
submission_locked_message: ''
submission_log: false
submission_excluded_elements: { }
submission_exclude_empty: false
submission_exclude_empty_checkbox: false
submission_views: { }
submission_views_replace: { }
submission_user_columns: { }
submission_user_duplicate: false
submission_access_denied: default
submission_access_denied_title: ''
submission_access_denied_message: ''
submission_access_denied_attributes: { }
previous_submission_message: ''
previous_submissions_message: ''
autofill: false
autofill_message: ''
autofill_excluded_elements: { }
wizard_progress_bar: true
wizard_progress_pages: false
wizard_progress_percentage: false
wizard_progress_link: false
wizard_progress_states: false
wizard_start_label: ''
wizard_preview_link: false
wizard_confirmation: true
wizard_confirmation_label: ''
wizard_auto_forward: true
wizard_auto_forward_hide_next_button: false
wizard_keyboard: true
wizard_track: ''
wizard_prev_button_label: ''
wizard_next_button_label: ''
wizard_toggle: false
wizard_toggle_show_label: ''
wizard_toggle_hide_label: ''
wizard_page_type: container
wizard_page_title_tag: h2
preview: 0
preview_label: ''
preview_title: ''
preview_message: ''
preview_attributes: { }
preview_excluded_elements: { }
preview_exclude_empty: true
preview_exclude_empty_checkbox: false
draft: none
draft_multiple: false
draft_auto_save: false
draft_saved_message: ''
draft_loaded_message: ''
draft_pending_single_message: ''
draft_pending_multiple_message: ''
confirmation_type: page
confirmation_url: ''
confirmation_title: ''
confirmation_message: ''
confirmation_attributes: { }
confirmation_back: true
confirmation_back_label: ''
confirmation_back_attributes: { }
confirmation_exclude_query: false
confirmation_exclude_token: false
confirmation_update: false
limit_total: null
limit_total_interval: null
limit_total_message: ''
limit_total_unique: false
limit_user: null
limit_user_interval: null
limit_user_message: ''
limit_user_unique: false
entity_limit_total: null
entity_limit_total_interval: null
entity_limit_user: null
entity_limit_user_interval: null
purge: 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:
foia_submission_queue:
id: foia_submission_queue
handler_id: foia_submission_queue
label: 'FOIA Submission Queue'
notes: ''
status: true
conditions: { }
weight: 0
settings:
states:
- completed
to_mail: ''
to_options: { }
bcc_mail: ''
bcc_options: { }
cc_mail: ''
cc_options: { }
from_mail: default
from_options: { }
from_name: default
reply_to: ''
return_path: ''
sender_mail: ''
sender_name: ''
subject: 'FOIA Request Submission'
body: '[webform_submission:values:message:value]'
excluded_elements: { }
ignore_access: false
exclude_empty: true
html: true
attachments: false
debug: false
exclude_empty_checkbox: false
exclude_attachments: false
twig: false
theme_name: ''
parameters: { }
variants: { }
1 change: 1 addition & 0 deletions config/default/webform_template.webform.yml
Original file line number Diff line number Diff line change
Expand Up @@ -520,3 +520,4 @@ nara_lp_bho_form: 1
ondc_form: 1
doj_atj_form: 1
dhs_fps: 1
wizard_feedback: 0
Original file line number Diff line number Diff line change
Expand Up @@ -128,8 +128,11 @@ public function post($data) {
$this->logSubmission($statusCode, $message);
return new ModifiedResourceResponse(['errors' => $message], $statusCode);
}
$websiteRequest = isset($_SERVER["HTTP_X_API_USER_ID"]) && $_SERVER["HTTP_X_API_USER_ID"] === \Drupal::config('foia.secrets')->get('api_user_id');
if (!$websiteRequest) {

// If the site has API User ID configured, require clients to provide it.
$api_user_id = \Drupal::config('foia.secrets')->get('api_user_id');
$given_user_id_header = $_SERVER["HTTP_X_API_USER_ID"] ?? '';
if ($api_user_id && $given_user_id_header !== $api_user_id) {
$statusCode = 400;
$message = t("To submit FOIA requests using FOIA.gov, you must use the request forms on the site.");
$this->logSubmission($statusCode, "api_submission: $message");
Expand Down Expand Up @@ -159,7 +162,7 @@ public function post($data) {
}

$agencyComponent = $this->agencyLookupService->getComponentFromWebform($webformId);
if (!$agencyComponent) {
if ($webformId !== 'wizard_feedback' && !$agencyComponent) {
$statusCode = 422;
$message = t('Submission attempt against webform unassociated with agency component.');
$this->logSubmission($statusCode, $message);
Expand Down Expand Up @@ -191,7 +194,7 @@ public function post($data) {
// Validate submission.
$submissionErrors = WebformSubmissionForm::validateFormValues($values);
$errors = $fileErrors ? array_merge((array) $submissionErrors, $fileErrors) : $submissionErrors;
if (empty($errors)) {
if ($webformId !== 'wizard_feedback' && empty($errors)) {
// Validate emal, phone and address,
// any one of those three not blank, it should pass.
$email = isset($data['email']) && $data['email'];
Expand All @@ -212,6 +215,19 @@ public function post($data) {
];
}
}
if ($webformId == 'wizard_feedback' && empty($errors)) {
// Must include a response to either of the three items.
$relevance = !empty($data['results_relevant_to_search']['How relevant were the results to your search?']);
$expectations = !empty($data['results_meet_expectations']['How well do these results meet your expectations?']);
$other_feedback = !empty($data['other_feedback']);

if (!$other_feedback && !$expectations && !$relevance) {
$message = '<em>Please provide at least one response.</em>';
$errors = [
'all_items' => $message,
];
}
}
if (!empty($errors)) {
// Delete any created attachments on invalid submissions.
if ($fileAttachmentsOnSubmission && $fileEntities) {
Expand Down
Loading

0 comments on commit e486646

Please sign in to comment.