Commit 0fb8a447 authored by Sven Berg Ryen's avatar Sven Berg Ryen Committed by Sven Berg Ryen
Browse files

Issue #3274977 by svenryen: 7.x: Enable "deny all" button on "opt-in with categories" method

parent 00cbc3db
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@
  display: inline-block;
  text-align: left;
  width: 100%;
  position: relative;
}

#sliding-popup .popup-content #popup-buttons {
@@ -196,6 +197,22 @@
  display: none;
}

.eu-cookie-compliance-close-button {
  background: url('../images/close.png');
  width: 24px;
  height: 24px;
  border-width: 0;
  font-size: 0px;
  position: absolute;
  right: 2px;
  top: -12px;
  cursor: pointer;
}

body:not(.eu-cookie-compliance-popup-open) .eu-cookie-compliance-close-button {
  display: none;
}

@media screen and (max-width: 600px) {
  #sliding-popup .popup-content {
    max-width: 95%;
+69 −0
Original line number Diff line number Diff line
@@ -488,6 +488,62 @@ function eu_cookie_compliance_admin_form(array $form, array $form_state) {
    '#description' => t('This button will withdraw consent when clicked.'),
  );

  $form['reject_button'] = array(
    '#type' => 'fieldset',
    '#collapsible' => TRUE,
    '#collapsed' => FALSE,
    '#title' => t('Reject button and close box'),
    '#states' => array(
      'visible' => array('input[name="eu_cookie_compliance[method]"]' => array('value' => 'categories')),
    ),
  );

  $form['reject_button']['eu_cookie_compliance'] = array(
    '#type' => 'item',
    '#tree' => TRUE,
  );

  $form['reject_button']['eu_cookie_compliance']['reject_button_enabled'] = array(
    '#type' => 'checkbox',
    '#title' => t('Enable "Reject/deny all" button'),
    '#default_value' => $popup_settings['reject_button_enabled'],
  );

  $form['reject_button']['eu_cookie_compliance']['reject_button_label'] = array(
    '#type' => 'textfield',
    '#title' => t('Reject button label'),
    '#default_value' => $popup_settings['reject_button_label'],
    '#states' => array(
      'visible' => array(
        "input[name='eu_cookie_compliance[reject_button_enabled]']" => array('checked' => TRUE),
      ),
    ),
  );

  $form['reject_button']['eu_cookie_compliance']['close_button_enabled'] = array(
    '#type' => 'checkbox',
    '#title' => t('Close button/box enabled'),
    '#default_value' => $popup_settings['close_button_enabled'],
  );

  $form['reject_button']['eu_cookie_compliance']['close_button_action'] = array(
    '#type' => 'select',
    '#title' => t('Close button action'),
    '#options' => array(
      'close_banner' => t('Close banner'),
      'accept_all_cookies' => t('Accept all cookies'),
      'reject_all_cookies' => t('Reject all cookies'),
      'save_preferences' => t('Trigger Save preferences (for banner with categories)'),
    ),
    '#default_value' => $popup_settings['close_button_action'],
    '#states' => array(
      'visible' => array(
        "input[name='eu_cookie_compliance[close_button_enabled]']" => array('checked' => TRUE),
      ),
    ),
    '#description' => t('The default position of the close button is in the top right corner of the banner.'),
  );

  $form['thank_you'] = array(
    '#type' => 'fieldset',
    '#collapsible' => TRUE,
@@ -1042,6 +1098,19 @@ function eu_cookie_compliance_admin_form_validate(array $form, array &$form_stat
    $form_state['values']['eu_cookie_compliance']['withdraw_enabled'] = FALSE;
  }

  if ($form_state['values']['eu_cookie_compliance']['method'] !== 'categories') {
    $form_state['values']['eu_cookie_compliance']['close_button_enabled'] = 0;
    $form_state['values']['eu_cookie_compliance']['reject_button_enabled'] = 0;
  }

  if (!$form_state['values']['eu_cookie_compliance']['close_button_enabled']) {
    $form_state['values']['eu_cookie_compliance']['close_button_action'] = 'close_banner';
  }

  if (!$form_state['values']['eu_cookie_compliance']['reject_button_enabled']) {
    $form_state['values']['eu_cookie_compliance']['reject_button_label'] = '';
  }

  // Validate cookie name against valid characters.
  if (preg_match('/[&\'\x00-\x20\x22\x28-\x29\x2c\x2f\x3a-\x40\x5b-\x5d\x7b\x7d\x7f]/', $form_state['values']['eu_cookie_compliance']['cookie_name'])) {
    form_set_error('eu_cookie_compliance][cookie_name', t('Invalid cookie name, please remove any special characters and try again.'));
+40 −0
Original line number Diff line number Diff line
@@ -240,6 +240,10 @@ function _eu_cookie_compliance_get_popup_default_setting() {
    'allowed_cookies' => '',
    'withdraw_button_on_info_popup' => 0,
    'containing_element' => 'body',
    'close_button_enabled' => 0,
    'close_button_action' => 'close_banner',
    'reject_button_enabled' => 0,
    'reject_button_label' => '',
  );
}

@@ -824,3 +828,39 @@ function _migrate_cookie_categories_to_separate_structure(array $categories, arr
  }
  return $categories;
}

/**
 * Add defaults for reject button.
 */
function eu_cookie_compliance_update_7020() {
  $eu_cookie_settings = variable_get('eu_cookie_compliance', array());
  $new_settings = array(
    'close_button_enabled' => FALSE,
    'close_button_action' => 'close_banner',
    'reject_button_enabled' => FALSE,
    'reject_button_label' => '',
  );
  variable_set('eu_cookie_compliance', $eu_cookie_settings + $new_settings);

  if (module_exists('i18n_variable')) {
    $languages = language_list();
    foreach (array_keys($languages) as $langcode) {
      $settings = i18n_variable_get('eu_cookie_compliance', $langcode);
      if (!empty($settings)) {
        $updated_setting = $settings + $new_settings;
        variable_realm_set('language', $langcode, 'eu_cookie_compliance', $updated_setting, FALSE);
      }
    }
  }

  // Set configuration variables for all domains.
  if (module_exists('domain_settings') && module_exists('domain_conf')) {
    $domains = domain_domains();
    foreach ($domains as $domain_data) {
      $domain_id = $domain_data['domain_id'];
      $settings = domain_conf_variable_get($domain_id, 'eu_cookie_compliance');
      $updated_settings = $settings + $new_settings;
      domain_conf_variable_save($domain_id, 'eu_cookie_compliance', $updated_settings);
    }
  }
}
+17 −1
Original line number Diff line number Diff line
@@ -275,6 +275,10 @@ function eu_cookie_compliance_page_build(&$page) {
        'new' => 'eu_cookie_compliance_popup_info',
      );

      $tertiary_button_label = '';
      $tertiary_button_class = '';
      $close_button_enabled = FALSE;

      switch ($method) {
        case 'default':
          $click_confirmation = isset($popup_settings['popup_clicking_confirmation']) ? $popup_settings['popup_clicking_confirmation'] : TRUE;
@@ -313,6 +317,9 @@ function eu_cookie_compliance_page_build(&$page) {
          $primary_button_class = 'agree-button eu-cookie-compliance-default-button';
          $secondary_button_label = $popup_settings['withdraw_action_button_label'];
          $secondary_button_class = 'eu-cookie-withdraw-button eu-cookie-compliance-hidden';
          $tertiary_button_label = $popup_settings['reject_button_label'];
          $tertiary_button_class = 'decline-button eu-cookie-compliance-default-button eu-cookie-compliance-reject-button';
          $close_button_enabled = !empty($popup_settings['close_button_enabled']) ? filter_xss($popup_settings['close_button_enabled']) : FALSE;
          $privacy_settings_tab_label = $withdraw_button_on_info_popup ? $popup_settings['withdraw_tab_button_label'] : FALSE;
          $popup_info_template = $info_templates[$popup_settings['info_template']];
          break;
@@ -356,6 +363,9 @@ function eu_cookie_compliance_page_build(&$page) {
        'secondary_button_label' => $secondary_button_label,
        'primary_button_class' => $primary_button_class,
        'secondary_button_class' => $secondary_button_class,
        'tertiary_button_label' => $tertiary_button_label,
        'tertiary_button_class' => $tertiary_button_class,
        'close_button_enabled' => $close_button_enabled,
        'cookie_categories' => $cookie_categories,
        'save_preferences_button_label' => $save_preferences_button_label,
        'privacy_settings_tab_label' => $privacy_settings_tab_label,
@@ -369,6 +379,9 @@ function eu_cookie_compliance_page_build(&$page) {
        'secondary_button_label' => $secondary_button_label,
        'primary_button_class' => $primary_button_class,
        'secondary_button_class' => $secondary_button_class,
        'tertiary_button_label' => $tertiary_button_label,
        'tertiary_button_class' => $tertiary_button_class,
        'close_button_enabled' => $close_button_enabled,
        'cookie_categories' => $cookie_categories,
        'save_preferences_button_label' => $save_preferences_button_label,
        'privacy_settings_tab_label' => $privacy_settings_tab_label,
@@ -439,6 +452,7 @@ function eu_cookie_compliance_page_build(&$page) {
        'cookie_value_agreed' => !empty($popup_settings['cookie_value_agreed']) ? $popup_settings['cookie_value_agreed'] : '2',
        'containing_element' => !empty($popup_settings['containing_element']) ? $popup_settings['containing_element'] : 'body',
        'automatic_cookies_removal' => !empty($popup_settings['automatic_cookies_removal']) ? $popup_settings['automatic_cookies_removal'] : '',
        'close_button_action' => !empty($popup_settings['close_button_action']) ? $popup_settings['close_button_action'] : '',
      );
      // For some reason, we're getting the wrong language when editing the
      // localized form, so we shouldn't cache.
@@ -591,7 +605,9 @@ function eu_cookie_compliance_theme() {
        'primary_button_class' => NULL,
        'secondary_button_class' => NULL,
        'privacy_settings_tab_label' => NULL,
        'cookie_categories' => NULL,
        'tertiary_button_label' => NULL,
        'tertiary_button_class' => NULL,
        'close_button_enabled' => NULL,
        'method' => 'default',
      ),
      'path' => $path,

images/close.png

0 → 100644
+3.69 KiB
Loading image diff...
Loading