From 260aaae70a8d8508f95caee5b82311b3d9662309 Mon Sep 17 00:00:00 2001 From: protitude Date: Tue, 18 Nov 2025 16:27:26 -0700 Subject: [PATCH 1/7] form_alter: UCBoulder/oit_dingo#1093 Button to add/remove captcha on webform from node --- oit.module | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/oit.module b/oit.module index c2cdc90..e7e031c 100644 --- a/oit.module +++ b/oit.module @@ -85,6 +85,59 @@ function oit_preprocess(&$variables, $hook) { * Implements hook_form_alter(). */ function oit_form_alter(&$form, FormStateInterface $form_state, $form_id) { + + if (array_key_exists('#webform_id', $form)) { + // Get node id current webform is on. + $node = \Drupal::routeMatch()->getParameter('node'); + $node_id = is_string($node) ? 0 : $node->id(); + $current_user = \Drupal::currentUser(); + $roles = $current_user->getRoles(); + + if ($node_id && in_array('administrator', $roles)) { + $node_type = is_string($node) ? '' : $node->getType(); + $webform_id = $form['#webform_id']; + $config = \Drupal::config('webform.webform.' . $webform_id); + $roles = $config->get('access.create.roles'); + + $annon_set = FALSE; + foreach ($roles as $key => $role) { + if ($role == 'anonymous') { + $annon_set = TRUE; + } + } + + if ($annon_set) { + $captcha_config = \Drupal::config('captcha.captcha_point.webform_add_' . $node_id)->isNew(); + + if ($captcha_config) { + $button_text = t('Add captcha to form'); + $form['#prefix'] = "$button_text

"; + } + else { + $button_text = t('Remove captcha from form'); + $form['#prefix'] = "$button_text

"; + } + + } + } + } + + // admin/config/people/captcha/captcha-points/add + // Set defaults if 'webform_id' is in query string. + if ($form_id == 'captcha_point_add_form') { + // Get 'webform_id' from query string. + $request = \Drupal::request(); + $webform_id = $request->get('webform_id'); + $webform_id = is_numeric($webform_id) ? intval($webform_id) : 0; + + if ($webform_id == 0) { + return; + } + + $form['label']['#default_value'] = 'webform_submission_oit_project_accessibility_review_node_' . $webform_id . '_add_form'; + $form['formId']['#default_value'] = 'webform_add_' . $webform_id; + } + if ($form_id == 'node_news_form' || $form_id == 'node_news_edit_form' || $form_id == 'node_service_alert_form' || $form_id == 'node_service_alert_edit_form' ) { From 630a55c1b9418d86f2c217a8a9bdd5849fd15e0d Mon Sep 17 00:00:00 2001 From: protitude Date: Wed, 19 Nov 2025 17:53:38 -0700 Subject: [PATCH 2/7] captcha links: UCBoulder/oit_dingo#1093 make links red --- oit.module | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/oit.module b/oit.module index e7e031c..3bb215b 100644 --- a/oit.module +++ b/oit.module @@ -111,11 +111,11 @@ function oit_form_alter(&$form, FormStateInterface $form_state, $form_id) { if ($captcha_config) { $button_text = t('Add captcha to form'); - $form['#prefix'] = "$button_text

"; + $form['#prefix'] = ""; } else { $button_text = t('Remove captcha from form'); - $form['#prefix'] = "$button_text

"; + $form['#prefix'] = ""; } } From 22d9b0f1ac17f0b1d945ee97581efaed90105031 Mon Sep 17 00:00:00 2001 From: Miles Date: Mon, 1 Dec 2025 12:24:30 -0700 Subject: [PATCH 3/7] Update oit.module Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- oit.module | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/oit.module b/oit.module index 3bb215b..3a2d8af 100644 --- a/oit.module +++ b/oit.module @@ -99,14 +99,14 @@ function oit_form_alter(&$form, FormStateInterface $form_state, $form_id) { $config = \Drupal::config('webform.webform.' . $webform_id); $roles = $config->get('access.create.roles'); - $annon_set = FALSE; + $anonymous_set = FALSE; foreach ($roles as $key => $role) { if ($role == 'anonymous') { - $annon_set = TRUE; + $anonymous_set = TRUE; } } - if ($annon_set) { + if ($anonymous_set) { $captcha_config = \Drupal::config('captcha.captcha_point.webform_add_' . $node_id)->isNew(); if ($captcha_config) { From 1c89c8d386371788443f32b0e83e942a5cb070a5 Mon Sep 17 00:00:00 2001 From: Miles Date: Mon, 1 Dec 2025 12:26:07 -0700 Subject: [PATCH 4/7] Update oit.module Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- oit.module | 1 - 1 file changed, 1 deletion(-) diff --git a/oit.module b/oit.module index 3a2d8af..65bc881 100644 --- a/oit.module +++ b/oit.module @@ -94,7 +94,6 @@ function oit_form_alter(&$form, FormStateInterface $form_state, $form_id) { $roles = $current_user->getRoles(); if ($node_id && in_array('administrator', $roles)) { - $node_type = is_string($node) ? '' : $node->getType(); $webform_id = $form['#webform_id']; $config = \Drupal::config('webform.webform.' . $webform_id); $roles = $config->get('access.create.roles'); From f30fa99c4cb6140fd00a7cbf4d57e8e95be1a1ea Mon Sep 17 00:00:00 2001 From: protitude Date: Mon, 1 Dec 2025 12:40:41 -0700 Subject: [PATCH 5/7] webform captcha: UCBoulder/oit_dingo#1093 - Update label for new captchas - Add xss check even though I'm sure it's fine --- oit.module | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/oit.module b/oit.module index 65bc881..3aec42e 100644 --- a/oit.module +++ b/oit.module @@ -110,11 +110,11 @@ function oit_form_alter(&$form, FormStateInterface $form_state, $form_id) { if ($captcha_config) { $button_text = t('Add captcha to form'); - $form['#prefix'] = ""; + $form['#prefix'] = Xss::filter(""); } else { $button_text = t('Remove captcha from form'); - $form['#prefix'] = ""; + $form['#prefix'] = Xss::filter(""); } } @@ -133,7 +133,7 @@ function oit_form_alter(&$form, FormStateInterface $form_state, $form_id) { return; } - $form['label']['#default_value'] = 'webform_submission_oit_project_accessibility_review_node_' . $webform_id . '_add_form'; + $form['label']['#default_value'] = 'webform_' . $webform_id; $form['formId']['#default_value'] = 'webform_add_' . $webform_id; } From 3d332ccf636822bde305930ffeca49aca8bf917f Mon Sep 17 00:00:00 2001 From: protitude Date: Mon, 1 Dec 2025 12:53:06 -0700 Subject: [PATCH 6/7] webform captcha: d-1093 Update variable name --- oit.module | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/oit.module b/oit.module index 3aec42e..80566ad 100644 --- a/oit.module +++ b/oit.module @@ -96,11 +96,11 @@ function oit_form_alter(&$form, FormStateInterface $form_state, $form_id) { if ($node_id && in_array('administrator', $roles)) { $webform_id = $form['#webform_id']; $config = \Drupal::config('webform.webform.' . $webform_id); - $roles = $config->get('access.create.roles'); + $webform_roles = $config->get('access.create.roles'); $anonymous_set = FALSE; - foreach ($roles as $key => $role) { - if ($role == 'anonymous') { + foreach ($webform_roles as $key => $webform_role) { + if ($webform_role == 'anonymous') { $anonymous_set = TRUE; } } From f28be3a576580cf1538b788de5051ec40afb12fb Mon Sep 17 00:00:00 2001 From: protitude Date: Mon, 1 Dec 2025 12:57:00 -0700 Subject: [PATCH 7/7] webform captcha: d-1093 small cleanup --- oit.module | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/oit.module b/oit.module index 80566ad..c569f9a 100644 --- a/oit.module +++ b/oit.module @@ -97,9 +97,12 @@ function oit_form_alter(&$form, FormStateInterface $form_state, $form_id) { $webform_id = $form['#webform_id']; $config = \Drupal::config('webform.webform.' . $webform_id); $webform_roles = $config->get('access.create.roles'); + if (!is_array($roles)) { + $roles = []; + } $anonymous_set = FALSE; - foreach ($webform_roles as $key => $webform_role) { + foreach ($webform_roles as $webform_role) { if ($webform_role == 'anonymous') { $anonymous_set = TRUE; }