clean install

This commit is contained in:
2024-12-10 15:08:16 +01:00
commit e14eb2d8fd
31193 changed files with 3555714 additions and 0 deletions

View File

@@ -0,0 +1,81 @@
<?php
namespace Drupal\geofield\Plugin\Field\FieldWidget;
use Drupal\Core\Field\FieldItemListInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\geofield\DmsConverter;
use Drupal\geofield\DmsPoint;
/**
* Plugin implementation of the 'geofield_dms' widget.
*
* @FieldWidget(
* id = "geofield_dms",
* label = @Translation("Degrees Minutes Seconds"),
* field_types = {
* "geofield"
* }
* )
*/
class GeofieldDmsWidget extends GeofieldBaseWidget {
/**
* {@inheritdoc}
*/
public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) {
$element = parent::formElement($items, $delta, $element, $form, $form_state);
/** @var \Drupal\geofield\Plugin\Field\FieldType\GeofieldItem $geofield_item */
$geofield_item = $items->getValue()[$delta];
if (empty($geofield_item) || $geofield_item['geo_type'] == 'Point') {
$latlon_value = [];
foreach (['lat', 'lon'] as $component) {
$latlon_value[$component] = isset($items[$delta]->{$component}) ? floatval($items[$delta]->{$component}) : '';
}
$element['value'] += [
'#type' => 'geofield_dms',
'#default_value' => $latlon_value,
];
}
else {
$widget_label = $this->getPluginDefinition()['label']->render();
$element['value'] += [
'#prefix' => '<div class="geofield-warning">' . $this->t('The "@widget_label" widget cannot be applied because it doesn\'t support Geometries (Polylines, Polygons, etc.).', [
'@widget_label' => $widget_label,
]) . '</div>',
'#type' => 'textarea',
'#default_value' => $items[$delta]->value ?: NULL,
];
}
return $element;
}
/**
* {@inheritdoc}
*/
public function massageFormValues(array $values, array $form, FormStateInterface $form_state) {
foreach ($values as $delta => $value) {
// Generate a valid Geofield only if the DMS coordinates are valid.
if (
is_numeric($value['value']['lon']['degrees']) &&
is_numeric($value['value']['lon']['minutes']) &&
is_numeric($value['value']['lon']['seconds']) &&
is_numeric($value['value']['lat']['degrees']) &&
is_numeric($value['value']['lat']['minutes']) &&
is_numeric($value['value']['lat']['seconds'])
) {
$components = DmsConverter::dmsToDecimal(new DmsPoint($value['value']['lon'], $value['value']['lat']));
$values[$delta]['value'] = $this->geofieldBackendValue($this->wktGenerator->wktGeneratePoint($components));
}
// Otherwise delete the entry.
else {
$values[$delta]['value'] = NULL;
}
}
return $values;
}
}