You are here

public function ImagemagickArgumentsImageEffect::buildConfigurationForm in Image Effects 8

Same name and namespace in other branches
  1. 8.3 src/Plugin/ImageEffect/ImagemagickArgumentsImageEffect.php \Drupal\image_effects\Plugin\ImageEffect\ImagemagickArgumentsImageEffect::buildConfigurationForm()
  2. 8.2 src/Plugin/ImageEffect/ImagemagickArgumentsImageEffect.php \Drupal\image_effects\Plugin\ImageEffect\ImagemagickArgumentsImageEffect::buildConfigurationForm()

Form constructor.

Plugin forms are embedded in other forms. In order to know where the plugin form is located in the parent form, #parents and #array_parents must be known, but these are not available during the initial build phase. In order to have these properties available when building the plugin form's elements, let this method return a form element that has a #process callback and build the rest of the form in the callback. By the time the callback is executed, the element's #parents and #array_parents properties will have been set by the form API. For more documentation on #parents and #array_parents, see \Drupal\Core\Render\Element\FormElement.

Parameters

array $form: An associative array containing the initial structure of the plugin form.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form. Calling code should pass on a subform state created through \Drupal\Core\Form\SubformState::createForSubform().

Return value

array The form structure.

Overrides PluginFormInterface::buildConfigurationForm

File

src/Plugin/ImageEffect/ImagemagickArgumentsImageEffect.php, line 46

Class

ImagemagickArgumentsImageEffect
Class ImagemagickArgumentsImageEffect.

Namespace

Drupal\image_effects\Plugin\ImageEffect

Code

public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
  $form['command_line'] = [
    '#type' => 'textarea',
    '#title' => $this
      ->t('Command line arguments'),
    '#default_value' => $this->configuration['command_line'],
    '#description' => $this
      ->t('<strong>Enter the command line <em>arguments</em> only.</strong><br/>Remember to escape parenthesis (and remember escaping is platform specific, use \\ on *nix and ^ on Windows).<br />Do not add an input or output file. Drupal ImageAPI will add "convert" before and a "-quality" option after based on the toolkit configuration settings.'),
    '#rows' => '5',
    '#resizable' => 'TRUE',
    '#required' => 'TRUE',
  ];
  $form['dimensions_method'] = [
    '#type' => 'radios',
    '#title' => t('Dimensions'),
    '#description' => $this
      ->t("Dimensions are stored in the Drupal image object and used for output HTML image (img) element <em>width</em> and <em>height</em> attributes. <em>They have no effect on the real size of the image, but may affect the display.</em><br />It's not possible to detect the dimensions of the Imagemagick command's result image in the scope of this effect, so you have to decide what dimensions to pass to ImageAPI here."),
    '#default_value' => $this->configuration['dimensions_method'],
    '#options' => [
      'keep' => $this
        ->t("<strong>Keep dimensions.</strong> Pass through the current image dimensions. Use if the arguments specified above do not change image size."),
      'value' => $this
        ->t('<strong>Manual input.</strong> If you know the size of the image that the arguments specified above will produce, specify them below, either in pixels or as % of the current image dimensions.'),
      'strip' => $this
        ->t("<strong>Strip dimensions.</strong> This won't pass on any image dimensions. Images will have no HTML <em>width</em> and <em>height</em> attributes if this effect is the last in the image style. Use this if you have another dimension altering effect after this."),
    ],
    '#required' => TRUE,
  ];
  $form['dimensions'] = [
    '#type' => 'details',
    '#title' => $this
      ->t('Width and Height'),
    '#description' => $this
      ->t('Indicate width and height.'),
    '#open' => TRUE,
    '#collapsible' => FALSE,
    '#states' => [
      'visible' => [
        ':input[name="data[dimensions_method]"]' => [
          'value' => 'value',
        ],
      ],
    ],
  ];
  $form['dimensions']['width'] = [
    '#type' => 'image_effects_px_perc',
    '#title' => $this
      ->t('Width'),
    '#default_value' => $this->configuration['width'],
    '#required' => FALSE,
    '#size' => 5,
  ];
  $form['dimensions']['height'] = [
    '#type' => 'image_effects_px_perc',
    '#title' => $this
      ->t('Height'),
    '#default_value' => $this->configuration['height'],
    '#required' => FALSE,
    '#size' => 5,
  ];
  return $form;
}