You are here

public static function WebformImageSelectImages::processWebformImageSelectImages in Webform 6.x

Same name and namespace in other branches
  1. 8.5 modules/webform_image_select/src/Element/WebformImageSelectImages.php \Drupal\webform_image_select\Element\WebformImageSelectImages::processWebformImageSelectImages()

Process images and build images widget.

File

modules/webform_image_select/src/Element/WebformImageSelectImages.php, line 58

Class

WebformImageSelectImages
Provides a form element to assist in creation of webform select image images.

Namespace

Drupal\webform_image_select\Element

Code

public static function processWebformImageSelectImages(&$element, FormStateInterface $form_state, &$complete_form) {
  $element['#tree'] = TRUE;

  // Add validate callback that extracts the associative array of images.
  $element['#element_validate'] = [
    [
      get_called_class(),
      'validateWebformImageSelectImages',
    ],
  ];

  // Wrap this $element in a <div> that handle #states.
  WebformElementHelper::fixStatesWrapper($element);
  $properties = [
    '#label',
    '#labels',
    '#min_items',
    '#empty_items',
    '#add_more_items',
  ];
  $element['images'] = array_intersect_key($element, array_combine($properties, $properties)) + [
    '#type' => 'webform_multiple',
    '#key' => 'value',
    '#header' => [
      [
        'data' => t('Image value'),
        'width' => '25%',
      ],
      [
        'data' => t('Image text'),
        'width' => '25%',
      ],
      [
        'data' => t('Image src'),
        'width' => '50%',
      ],
    ],
    '#element' => [
      'value' => [
        '#type' => 'textfield',
        '#title' => t('Image value'),
        '#title_display' => 'invisible',
        '#placeholder' => t('Enter value…'),
        '#error_no_message' => TRUE,
        '#attributes' => [
          'class' => [
            'js-webform-options-sync',
          ],
        ],
      ],
      'text' => [
        '#type' => 'textfield',
        '#title' => t('Image text'),
        '#title_display' => 'invisible',
        '#placeholder' => t('Enter text…'),
        '#error_no_message' => TRUE,
      ],
      'src' => [
        '#type' => 'textfield',
        '#title' => t('Image src'),
        '#title_display' => 'invisible',
        '#placeholder' => t('Enter image src…'),
        '#error_no_message' => TRUE,
      ],
    ],
    '#error_no_message' => TRUE,
    '#add_more_input_label' => t('more images'),
    '#default_value' => isset($element['#default_value']) ? $element['#default_value'] : [],
  ];
  if (function_exists('imce_process_url_element')) {
    $src_element =& $element['images']['#element']['src'];
    imce_process_url_element($src_element, 'link');
    $element['#attached']['library'][] = 'webform/imce.input';
  }
  elseif (\Drupal::currentUser()
    ->hasPermission('administer modules')) {
    $element['imce_message'] = [
      '#type' => 'webform_message',
      '#message_type' => 'warning',
      '#message_message' => t('Install the <a href=":href">IMCE module</a> to manage and uploaded image files.', [
        ':href' => 'https://www.drupal.org/project/imce',
      ]),
      '#message_close' => TRUE,
      '#message_id' => 'webform_imce_message',
      '#message_storage' => WebformMessage::STORAGE_LOCAL,
    ];
  }
  $element['#attached']['library'][] = 'webform/webform.element.options.admin';
  return $element;
}