View source
<?php
namespace Drupal\openlayers\Form;
use Drupal\Core\Form\FormBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Form\SubformState;
use Drupal\openlayers\ConfigurableImageEffectInterface;
use Drupal\openlayers\OpenlayersMapInterface;
use Drupal\openlayers\OpenlayersLayerInterface;
use Drupal\Component\Plugin\Exception\PluginNotFoundException;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Drupal\openlayers\MapInteraction;
abstract class MapInteractionFormBase extends FormBase {
protected $olMap;
protected $olLayer;
public function getFormId() {
return 'ol_map_layer_form';
}
public function buildForm(array $form, FormStateInterface $form_state, OpenlayersMapInterface $map = NULL, $layer = NULL) {
$request = $this
->getRequest();
$user_input = $form_state
->getUserInput();
$form['#attached']['library'][] = 'openlayers/admin';
$this->olMap = $map;
if (isset($this->olMap->layers[$layer])) {
$this->mapLayer = new MapLayer($this->olMap->layers[$layer], 'update');
}
else {
$this->mapLayer = new MapLayer($layer, 'add');
}
$form['uuid'] = [
'#type' => 'value',
'#value' => $this->mapLayer
->getUuid(),
];
$form['id'] = [
'#type' => 'value',
'#value' => $this->mapLayer
->id(),
];
$form['data'] = [];
$subform_state = SubformState::createForSubform($form['data'], $form, $form_state);
$form['data'] = $this->mapLayer
->buildConfigurationForm($form['data'], $subform_state);
$form['data']['#tree'] = TRUE;
$form['weight'] = [
'#type' => 'hidden',
'#value' => 0,
];
$form['actions'] = [
'#type' => 'actions',
];
$form['actions']['submit'] = [
'#type' => 'submit',
'#button_type' => 'primary',
];
$form['actions']['cancel'] = [
'#type' => 'link',
'#title' => $this
->t('Cancel'),
'#url' => $this->olMap
->toUrl('edit-form'),
'#attributes' => [
'class' => [
'button',
],
],
];
return $form;
}
public function validateForm(array &$form, FormStateInterface $form_state) {
}
public function submitForm(array &$form, FormStateInterface $form_state) {
$form_state
->cleanValues();
$this->mapLayer
->submitConfigurationForm($form['data'], SubformState::createForSubform($form['data'], $form, $form_state));
$this->mapLayer
->setWeight($form_state
->getValue('weight'));
if (!$this->mapLayer
->getUuid()) {
$this->olMap
->addMapLayer($this->mapLayer
->getConfiguration());
}
else {
$this->olMap
->updateMapLayer($this->mapLayer
->getConfiguration());
}
$this->olMap
->save();
$this
->messenger()
->addStatus($this
->t('The image effect was successfully applied.'));
$form_state
->setRedirectUrl($this->olMap
->toUrl('edit-form'));
}
protected abstract function prepareOpenlayersLayer($layer);
}