You are here

function eu_cookie_compliance_admin_category_form in EU Cookie Compliance (GDPR Compliance) 7.2

Same name and namespace in other branches
  1. 7 eu_cookie_compliance.admin.categories.inc \eu_cookie_compliance_admin_category_form()

Provides form for adding / editing a cookie consent category.

Parameters

array $form: Form array.

array $form_state: For state array.

string $machine_name: The machine name of the category.

Return value

array Form render array.

1 string reference to 'eu_cookie_compliance_admin_category_form'
eu_cookie_compliance_menu in ./eu_cookie_compliance.module
Implements hook_menu().

File

./eu_cookie_compliance.admin.categories.inc, line 194
This file provides administration forms for the cookie categories.

Code

function eu_cookie_compliance_admin_category_form(array $form, array $form_state, $machine_name = NULL) {
  $form = array();
  $categories = variable_get('eu_cookie_compliance_categories', array());

  // Add this so i18n can add what it needs.
  $form['eu_cookie_compliance_categories'] = array(
    '#type' => 'hidden',
  );
  $form['#submit'][] = 'eu_cookie_compliance_admin_category_form_submit';

  // We are in edit mode.
  if ($machine_name !== NULL) {
    $category = isset($categories[$machine_name]) ? $categories[$machine_name] : NULL;
    if (!$category) {
      drupal_set_message(t('You are tying to edit an invalid cookie category: %name.', array(
        '%name' => $machine_name,
      )), 'error');
      drupal_goto('admin/config/system/eu-cookie-compliance/categories');
    }
  }
  else {
    $category = array(
      'machine_name' => '',
      'label' => '',
      'description' => '',
      'checkbox_default_state' => 'unchecked',
      'weight' => 0,
    );
  }
  $form['category'] = array(
    '#type' => 'value',
    '#value' => $category,
  );
  $form['label'] = array(
    '#type' => 'textfield',
    '#title' => t('Label'),
    '#description' => t('The name that will be shown to the visitor.'),
    '#required' => TRUE,
    '#default_value' => check_plain($category['label']) ?: '',
  );
  $form['machine_name'] = array(
    '#type' => 'machine_name',
    '#default_value' => check_plain($category['machine_name']),
    '#machine_name' => array(
      'exists' => 'eu_cookie_compliance_admin_category_exists',
      'source' => array(
        'label',
      ),
    ),
    '#disabled' => !empty($category['machine_name']),
  );
  $form['description'] = array(
    '#type' => 'textarea',
    '#title' => t('Description'),
    '#description' => t('The description that will be shown to the visitor.'),
    '#required' => FALSE,
    '#default_value' => check_plain($category['description']) ?: '',
  );
  $form['checkbox_default_state'] = array(
    '#type' => 'radios',
    '#title' => t('Checkbox default state'),
    '#description' => t("Determines the default state of this category's selection checkbox on the cookie consent popup."),
    '#options' => _eu_cookie_compliance_get_category_checkbox_default_state_options_list(),
    '#required' => TRUE,
    '#default_value' => isset($category['checkbox_default_state']) ? $category['checkbox_default_state'] : 'unchecked',
  );
  $form = system_settings_form($form);
  $options = array();

  // Adapt links to follow realm language if present.
  $query_parameters = drupal_get_query_parameters();
  if (isset($query_parameters['variable_realm_key_language'])) {
    $language_list = language_list();
    $language = $language_list[$query_parameters['variable_realm_key_language']] ?: FALSE;
    if ($language) {
      $options['language'] = $language;
    }
  }
  if ($category['machine_name']) {
    $form['actions']['delete'] = array(
      '#type' => 'markup',
      '#markup' => l(t('Delete'), 'admin/config/system/eu-cookie-compliance/categories/' . check_plain($category['machine_name']) . '/delete', $options),
    );
  }
  return $form;
}