/** * {@inheritdoc} */ public function form(array $form, FormStateInterface $form_state) { $user_input = $form_state->getUserInput(); $form['#title'] = $this->t('Edit style %name', array('%name' => $this->entity->label())); $form['#tree'] = TRUE; $form['#attached']['library'][] = 'image/admin'; // Show the thumbnail preview. $preview_arguments = array('#theme' => 'image_style_preview', '#style' => $this->entity); $form['preview'] = array('#type' => 'item', '#title' => $this->t('Preview'), '#markup' => drupal_render($preview_arguments), '#weight' => -5); // Build the list of existing image effects for this image style. $form['effects'] = array('#type' => 'table', '#header' => array($this->t('Effect'), $this->t('Weight'), $this->t('Operations')), '#tabledrag' => array(array('action' => 'order', 'relationship' => 'sibling', 'group' => 'image-effect-order-weight')), '#attributes' => array('id' => 'image-style-effects'), '#empty' => t('There are currently no effects in this style. Add one by selecting an option below.'), '#weight' => 5); foreach ($this->entity->getEffects() as $effect) { $key = $effect->getUuid(); $form['effects'][$key]['#attributes']['class'][] = 'draggable'; $form['effects'][$key]['#weight'] = isset($user_input['effects']) ? $user_input['effects'][$key]['weight'] : NULL; $form['effects'][$key]['effect'] = array('#tree' => FALSE, 'data' => array('label' => array('#plain_text' => $effect->label()))); $summary = $effect->getSummary(); if (!empty($summary)) { $summary['#prefix'] = ' '; $form['effects'][$key]['effect']['data']['summary'] = $summary; } $form['effects'][$key]['weight'] = array('#type' => 'weight', '#title' => $this->t('Weight for @title', array('@title' => $effect->label())), '#title_display' => 'invisible', '#default_value' => $effect->getWeight(), '#attributes' => array('class' => array('image-effect-order-weight'))); $links = array(); $is_configurable = $effect instanceof ConfigurableImageEffectInterface; if ($is_configurable) { $links['edit'] = array('title' => $this->t('Edit'), 'url' => Url::fromRoute('image.effect_edit_form', ['image_style' => $this->entity->id(), 'image_effect' => $key])); } $links['delete'] = array('title' => $this->t('Delete'), 'url' => Url::fromRoute('image.effect_delete', ['image_style' => $this->entity->id(), 'image_effect' => $key])); $form['effects'][$key]['operations'] = array('#type' => 'operations', '#links' => $links); } // Build the new image effect addition form and add it to the effect list. $new_effect_options = array(); $effects = $this->imageEffectManager->getDefinitions(); uasort($effects, function ($a, $b) { return strcasecmp($a['id'], $b['id']); }); foreach ($effects as $effect => $definition) { $new_effect_options[$effect] = $definition['label']; } $form['effects']['new'] = array('#tree' => FALSE, '#weight' => isset($user_input['weight']) ? $user_input['weight'] : NULL, '#attributes' => array('class' => array('draggable'))); $form['effects']['new']['effect'] = array('data' => array('new' => array('#type' => 'select', '#title' => $this->t('Effect'), '#title_display' => 'invisible', '#options' => $new_effect_options, '#empty_option' => $this->t('Select a new effect')), array('add' => array('#type' => 'submit', '#value' => $this->t('Add'), '#validate' => array('::effectValidate'), '#submit' => array('::submitForm', '::effectSave')))), '#prefix' => '<div class="image-style-new">', '#suffix' => '</div>'); $form['effects']['new']['weight'] = array('#type' => 'weight', '#title' => $this->t('Weight for new effect'), '#title_display' => 'invisible', '#default_value' => count($this->entity->getEffects()) + 1, '#attributes' => array('class' => array('image-effect-order-weight'))); $form['effects']['new']['operations'] = array('data' => array()); return parent::form($form, $form_state); }
/** * {@inheritdoc} */ public function form(array $form, array &$form_state) { $form['#title'] = $this->t('Edit style %name', array('%name' => $this->entity->label())); $form['#tree'] = TRUE; $form['#attached']['css'][drupal_get_path('module', 'image') . '/css/image.admin.css'] = array(); // Show the thumbnail preview. $preview_arguments = array('#theme' => 'image_style_preview', '#style' => $this->entity); $form['preview'] = array('#type' => 'item', '#title' => $this->t('Preview'), '#markup' => drupal_render($preview_arguments), '#weight' => -5); // Build the list of existing image effects for this image style. $form['effects'] = array('#theme' => 'image_style_effects', '#weight' => 5); foreach ($this->entity->getEffects() as $effect) { $key = $effect->getUuid(); $form['effects'][$key]['#weight'] = isset($form_state['input']['effects']) ? $form_state['input']['effects'][$key]['weight'] : NULL; $form['effects'][$key]['label'] = array('#markup' => String::checkPlain($effect->label())); $form['effects'][$key]['summary'] = $effect->getSummary(); $form['effects'][$key]['weight'] = array('#type' => 'weight', '#title' => $this->t('Weight for @title', array('@title' => $effect->label())), '#title_display' => 'invisible', '#default_value' => $effect->getWeight()); $links = array(); $is_configurable = $effect instanceof ConfigurableImageEffectInterface; if ($is_configurable) { $links['edit'] = array('title' => $this->t('Edit'), 'href' => 'admin/config/media/image-styles/manage/' . $this->entity->id() . '/effects/' . $key); } $links['delete'] = array('title' => $this->t('Delete'), 'href' => 'admin/config/media/image-styles/manage/' . $this->entity->id() . '/effects/' . $key . '/delete'); $form['effects'][$key]['operations'] = array('#type' => 'operations', '#links' => $links); $form['effects'][$key]['configure'] = array('#type' => 'link', '#title' => $this->t('Edit'), '#href' => 'admin/config/media/image-styles/manage/' . $this->entity->id() . '/effects/' . $key, '#access' => $is_configurable); $form['effects'][$key]['remove'] = array('#type' => 'link', '#title' => $this->t('Delete'), '#href' => 'admin/config/media/image-styles/manage/' . $this->entity->id() . '/effects/' . $key . '/delete'); } // Build the new image effect addition form and add it to the effect list. $new_effect_options = array(); $effects = $this->imageEffectManager->getDefinitions(); uasort($effects, function ($a, $b) { return strcasecmp($a['id'], $b['id']); }); foreach ($effects as $effect => $definition) { $new_effect_options[$effect] = $definition['label']; } $form['effects']['new'] = array('#tree' => FALSE, '#weight' => isset($form_state['input']['weight']) ? $form_state['input']['weight'] : NULL); $form['effects']['new']['new'] = array('#type' => 'select', '#title' => $this->t('Effect'), '#title_display' => 'invisible', '#options' => $new_effect_options, '#empty_option' => $this->t('Select a new effect')); $form['effects']['new']['weight'] = array('#type' => 'weight', '#title' => $this->t('Weight for new effect'), '#title_display' => 'invisible', '#default_value' => count($form['effects']) - 1); $form['effects']['new']['add'] = array('#type' => 'submit', '#value' => $this->t('Add'), '#validate' => array(array($this, 'effectValidate')), '#submit' => array(array($this, 'effectSave'))); return parent::form($form, $form_state); }