Code Coverage  | 
     ||||||||||
Classes and Traits  | 
      Functions and Methods  | 
      Lines  | 
     ||||||||
| Total |         | 
      0.00%  | 
      0 / 1  | 
              | 
      0.00%  | 
      0 / 4  | 
      CRAP |         | 
      0.00%  | 
      0 / 57  | 
     
| ImageEffectFormBase |         | 
      0.00%  | 
      0 / 1  | 
              | 
      20.00%  | 
      1 / 5  | 
      90 |         | 
      0.00%  | 
      0 / 57  | 
     
| getFormId |         | 
      0.00%  | 
      0 / 1  | 
      2 |         | 
      0.00%  | 
      0 / 2  | 
     |||
| buildForm |         | 
      0.00%  | 
      0 / 1  | 
      20 |         | 
      0.00%  | 
      0 / 39  | 
     |||
| validateForm |         | 
      0.00%  | 
      0 / 1  | 
      2 |         | 
      0.00%  | 
      0 / 4  | 
     |||
| submitForm |         | 
      0.00%  | 
      0 / 1  | 
      6 |         | 
      0.00%  | 
      0 / 12  | 
     |||
| prepareImageEffect |         | 
      100.00%  | 
      1 / 1  | 
      1 |         | 
      100.00%  | 
      0 / 0  | 
     |||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\image\Form\ImageEffectFormBase. | |
| */ | |
| namespace Drupal\image\Form; | |
| use Drupal\Core\Form\FormBase; | |
| use Drupal\Core\Form\FormState; | |
| use Drupal\Core\Form\FormStateInterface; | |
| use Drupal\image\ConfigurableImageEffectInterface; | |
| use Drupal\image\ImageStyleInterface; | |
| use Drupal\Component\Plugin\Exception\PluginNotFoundException; | |
| use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; | |
| /** | |
| * Provides a base form for image effects. | |
| */ | |
| abstract class ImageEffectFormBase extends FormBase { | |
| /** | |
| * The image style. | |
| * | |
| * @var \Drupal\image\ImageStyleInterface | |
| */ | |
| protected $imageStyle; | |
| /** | |
| * The image effect. | |
| * | |
| * @var \Drupal\image\ImageEffectInterface | |
| */ | |
| protected $imageEffect; | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getFormId() { | |
| return 'image_effect_form'; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| * | |
| * @param \Drupal\image\ImageStyleInterface $image_style | |
| * The image style. | |
| * @param string $image_effect | |
| * The image effect ID. | |
| * | |
| * @return array | |
| * The form structure. | |
| * | |
| * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException | |
| */ | |
| public function buildForm(array $form, FormStateInterface $form_state, ImageStyleInterface $image_style = NULL, $image_effect = NULL) { | |
| $this->imageStyle = $image_style; | |
| try { | |
| $this->imageEffect = $this->prepareImageEffect($image_effect); | |
| } | |
| catch (PluginNotFoundException $e) { | |
| throw new NotFoundHttpException("Invalid effect id: '$image_effect'."); | |
| } | |
| $request = $this->getRequest(); | |
| if (!($this->imageEffect instanceof ConfigurableImageEffectInterface)) { | |
| throw new NotFoundHttpException(); | |
| } | |
| $form['#attached']['library'][] = 'image/admin'; | |
| $form['uuid'] = array( | |
| '#type' => 'value', | |
| '#value' => $this->imageEffect->getUuid(), | |
| ); | |
| $form['id'] = array( | |
| '#type' => 'value', | |
| '#value' => $this->imageEffect->getPluginId(), | |
| ); | |
| $form['data'] = $this->imageEffect->buildConfigurationForm(array(), $form_state); | |
| $form['data']['#tree'] = TRUE; | |
| // Check the URL for a weight, then the image effect, otherwise use default. | |
| $form['weight'] = array( | |
| '#type' => 'hidden', | |
| '#value' => $request->query->has('weight') ? (int) $request->query->get('weight') : $this->imageEffect->getWeight(), | |
| ); | |
| $form['actions'] = array('#type' => 'actions'); | |
| $form['actions']['submit'] = array( | |
| '#type' => 'submit', | |
| '#button_type' => 'primary', | |
| ); | |
| $form['actions']['cancel'] = array( | |
| '#type' => 'link', | |
| '#title' => $this->t('Cancel'), | |
| '#url' => $this->imageStyle->urlInfo('edit-form'), | |
| '#attributes' => ['class' => ['button']], | |
| ); | |
| return $form; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function validateForm(array &$form, FormStateInterface $form_state) { | |
| // The image effect configuration is stored in the 'data' key in the form, | |
| // pass that through for validation. | |
| $effect_data = (new FormState())->setValues($form_state->getValue('data')); | |
| $this->imageEffect->validateConfigurationForm($form, $effect_data); | |
| // Update the original form values. | |
| $form_state->setValue('data', $effect_data->getValues()); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function submitForm(array &$form, FormStateInterface $form_state) { | |
| $form_state->cleanValues(); | |
| // The image effect configuration is stored in the 'data' key in the form, | |
| // pass that through for submission. | |
| $effect_data = (new FormState())->setValues($form_state->getValue('data')); | |
| $this->imageEffect->submitConfigurationForm($form, $effect_data); | |
| // Update the original form values. | |
| $form_state->setValue('data', $effect_data->getValues()); | |
| $this->imageEffect->setWeight($form_state->getValue('weight')); | |
| if (!$this->imageEffect->getUuid()) { | |
| $this->imageStyle->addImageEffect($this->imageEffect->getConfiguration()); | |
| } | |
| $this->imageStyle->save(); | |
| drupal_set_message($this->t('The image effect was successfully applied.')); | |
| $form_state->setRedirectUrl($this->imageStyle->urlInfo('edit-form')); | |
| } | |
| /** | |
| * Converts an image effect ID into an object. | |
| * | |
| * @param string $image_effect | |
| * The image effect ID. | |
| * | |
| * @return \Drupal\image\ImageEffectInterface | |
| * The image effect object. | |
| */ | |
| abstract protected function prepareImageEffect($image_effect); | |
| } |