You are here

public function SlickForm::edit_form_submit in Slick Carousel 7.3

Handle the submission of the edit form.

At this point, submission is successful. Our only responsibility is to copy anything out of values onto the item that we are able to edit.

If the keys all match up to the schema, this method will not need to be overridden.

Overrides ctools_export_ui::edit_form_submit

File

slick_ui/src/Form/SlickForm.php, line 831

Class

SlickForm
Extends base form for slick instance configuration form.

Namespace

Drupal\slick_ui\Form

Code

public function edit_form_submit(&$form, &$form_state) {
  parent::edit_form_submit($form, $form_state);

  // Optimized if so configured.
  $slick = $form_state['item'];
  $default = $slick->name == 'default';
  if ($default) {
    return;
  }
  $defaults = Slick::defaultSettings();
  $required = $this
    ->getOptionsRequiredByTemplate();
  $settings = $form_state['values']['options']['settings'];
  $optimized = $form_state['values']['optimized'];

  // Cast the values.
  Slick::typecast($settings);
  $main_settings = $settings;
  if ($optimized) {

    // Remove wasted dependent options if disabled, empty or not.
    $slick
      ->removeWastedDependentOptions($settings);
    $main = array_diff_assoc($defaults, $required);
    $main_settings = array_diff_assoc($settings, $main);
  }
  $slick
    ->setSettings($main_settings);
  if (isset($form_state['values']['options']['responsives']) && ($responsives = $form_state['values']['options']['responsives']['responsive'])) {
    foreach ($responsives as $delta => &$responsive) {
      settype($responsive['breakpoint'], 'int');
      settype($responsive['unslick'], 'bool');
      if (!empty($responsive['unslick'])) {
        $slick
          ->setResponsiveSettings([], $delta);
      }
      else {
        Slick::typecast($responsive['settings']);
        $responsive_settings = $responsive['settings'];
        if ($optimized) {
          $slick
            ->removeWastedDependentOptions($responsive['settings']);
          $responsive_settings = array_diff_assoc($responsive['settings'], $defaults);
        }
        $slick
          ->setResponsiveSettings($responsive_settings, $delta);
        $slick
          ->setResponsiveSettings($responsive['breakpoint'], $delta, 'breakpoint');
        $slick
          ->setResponsiveSettings($responsive['unslick'], $delta, 'unslick');
      }
    }
  }
}