public function IframeWidgetBase::formElement in Iframe 8
Same name and namespace in other branches
- 8.2 src/Plugin/Field/FieldWidget/IframeWidgetBase.php \Drupal\iframe\Plugin\Field\FieldWidget\IframeWidgetBase::formElement()
It is .
Used: (1) at admin edit fields.
Used: (2) at add-story for creation content.
Overrides WidgetInterface::formElement
3 calls to IframeWidgetBase::formElement()
- IframeUrlheightWidget::formElement in src/
Plugin/ Field/ FieldWidget/ IframeUrlheightWidget.php - It is .
- IframeUrlWidget::formElement in src/
Plugin/ Field/ FieldWidget/ IframeUrlWidget.php - It is .
- IframeUrlwidthheightWidget::formElement in src/
Plugin/ Field/ FieldWidget/ IframeUrlwidthheightWidget.php - It is .
3 methods override IframeWidgetBase::formElement()
- IframeUrlheightWidget::formElement in src/
Plugin/ Field/ FieldWidget/ IframeUrlheightWidget.php - It is .
- IframeUrlWidget::formElement in src/
Plugin/ Field/ FieldWidget/ IframeUrlWidget.php - It is .
- IframeUrlwidthheightWidget::formElement in src/
Plugin/ Field/ FieldWidget/ IframeUrlwidthheightWidget.php - It is .
File
- src/
Plugin/ Field/ FieldWidget/ IframeWidgetBase.php, line 182
Class
- IframeWidgetBase
- Plugin implementation base functions.
Namespace
Drupal\iframe\Plugin\Field\FieldWidgetCode
public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) {
// 1) Shows the "default fields" in the edit-type-field page
// -- (on_admin_page = true).
// 2) Edit-fields on the article-edit-page (on_admin_page = false).
// Global settings.
$field_settings = $this
->getFieldSettings();
$settings = $this
->getSettings() + $field_settings + self::defaultSettings();
/** @var \Drupal\iframe\Plugin\Field\FieldType\IframeItem $item */
$item =& $items[$delta];
$field_definition = $item
->getFieldDefinition();
$on_admin_page = isset($element['#field_parents'][0]) && 'default_value_input' == $element['#field_parents'][0];
$is_new = $item
->getEntity()
->isNew();
// \iframe_debug(0, 'add-story formElement field_setting', $field_settings);
// \iframe_debug(0, 'add-story formElement setting', $settings);
$values = $item
->toArray();
if ($is_new || $on_admin_page) {
foreach ($values as $vkey => $vval) {
if ($vval !== NULL && $vval !== '') {
$settings[$vkey] = $vval;
}
}
}
else {
if (isset($settings['expose_class']) && $settings['expose_class']) {
$this->allowedAttributes['class'] = 1;
}
foreach ($this->allowedAttributes as $attribute => $attrAllowed) {
if ($attrAllowed) {
$settings[$attribute] = $values[$attribute];
}
}
}
// \iframe_debug(0, 'add-story formElement final setting', $settings);
foreach ($settings as $attribute => $attrValue) {
$item
->setValue($attribute, $attrValue);
}
$element += [
'#type' => 'fieldset',
'#collapsible' => TRUE,
'#open' => TRUE,
];
if (!$on_admin_page) {
$element['#title'] = $field_definition
->getLabel();
}
$element['title'] = [
'#type' => 'textfield',
'#title' => $this
->t('Iframe Title'),
'#placeholder' => '',
'#default_value' => $settings['title'],
'#size' => 80,
'#maxlength' => 1024,
'#weight' => 2,
];
$element['url'] = [
'#type' => 'textfield',
'#title' => $this
->t('Iframe URL'),
'#placeholder' => 'https://',
'#default_value' => isset($settings['url']) ? $settings['url'] : '',
'#size' => 80,
'#maxlength' => 1024,
'#weight' => 1,
'#element_validate' => [
[
get_class($this),
'validateUrl',
],
],
];
$element['width'] = [
'#title' => $this
->t('Iframe Width'),
'#type' => 'textfield',
'#default_value' => isset($settings['width']) ? $settings['width'] : '',
'#description' => self::getSizedescription(),
'#maxlength' => 4,
'#size' => 4,
'#weight' => 3,
'#element_validate' => [
[
get_class($this),
'validateWidth',
],
],
];
$element['height'] = [
'#type' => 'textfield',
'#title' => $this
->t('Iframe Height'),
'#default_value' => isset($settings['height']) ? $settings['height'] : '',
'#description' => self::getSizedescription(),
'#maxlength' => 4,
'#size' => 4,
'#weight' => 4,
'#element_validate' => [
[
get_class($this),
'validateHeight',
],
],
];
if (isset($settings['expose_class']) && $settings['expose_class']) {
$element['class'] = [
'#type' => 'textfield',
'#title' => $this
->t('Additional CSS Class'),
// ''
'#default_value' => $settings['class'],
'#description' => $this
->t('When output, this iframe will have this class attribute. Multiple classes should be separated by spaces.'),
'#weight' => 5,
];
}
// \iframe_debug(0, 'formElement', $element);
return $element;
}