class IframeItem in Iframe 8
Same name and namespace in other branches
- 8.2 src/Plugin/Field/FieldType/IframeItem.php \Drupal\iframe\Plugin\Field\FieldType\IframeItem
Plugin implementation of the 'Iframe' field type.
Plugin annotation
@FieldType(
id = "iframe",
label = @Translation("Iframe"),
description = @Translation("The Iframe module defines an iframe field type for the Field module. Further definable are attributes for styling the iframe, like: URL, width, height, title, class, frameborder, scrolling and transparency."),
default_widget = "iframe_urlwidthheight",
default_formatter = "iframe_default"
)
Hierarchy
- class \Drupal\Core\TypedData\TypedData implements PluginInspectionInterface, TypedDataInterface uses DependencySerializationTrait, StringTranslationTrait, TypedDataTrait
- class \Drupal\Core\TypedData\Plugin\DataType\Map implements \Drupal\Core\TypedData\Plugin\DataType\IteratorAggregate, ComplexDataInterface
- class \Drupal\Core\Field\FieldItemBase implements FieldItemInterface
- class \Drupal\iframe\Plugin\Field\FieldType\IframeItem
- class \Drupal\Core\Field\FieldItemBase implements FieldItemInterface
- class \Drupal\Core\TypedData\Plugin\DataType\Map implements \Drupal\Core\TypedData\Plugin\DataType\IteratorAggregate, ComplexDataInterface
Expanded class hierarchy of IframeItem
File
- src/
Plugin/ Field/ FieldType/ IframeItem.php, line 23
Namespace
Drupal\iframe\Plugin\Field\FieldTypeView source
class IframeItem extends FieldItemBase {
/**
* {@inheritdoc}
*/
public static function defaultFieldSettings() {
return [
'title' => NULL,
'class' => NULL,
'height' => NULL,
'width' => NULL,
'frameborder' => NULL,
'scrolling' => NULL,
'transparency' => NULL,
'tokensupport' => NULL,
'allowfullscreen' => NULL,
] + parent::defaultFieldSettings();
}
/**
* {@inheritdoc}
*/
public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) {
// url as 'string' for token support. Validation of url will occur later
$properties['url'] = DataDefinition::create('string')
->setLabel(t('URL'));
$properties['title'] = DataDefinition::create('string')
->setLabel(t('Title text'));
$properties['width'] = DataDefinition::create('string')
->setLabel(t('Width'));
$properties['height'] = DataDefinition::create('string')
->setLabel(t('Height'));
$properties['class'] = DataDefinition::create('string')
->setLabel(t('Css class'));
$properties['frameborder'] = DataDefinition::create('string')
->setLabel(t('Frameborder'));
$properties['scrolling'] = DataDefinition::create('string')
->setLabel(t('Scrolling'));
$properties['transparency'] = DataDefinition::create('string')
->setLabel(t('Transparency'));
$properties['tokensupport'] = DataDefinition::create('string')
->setLabel(t('Token support'));
$properties['allowfullscreen'] = DataDefinition::create('string')
->setLabel(t('Allow fullscreen'));
return $properties;
}
/**
* Implements hook_field_schema().
*/
public static function schema(FieldStorageDefinitionInterface $field_definition) {
return [
'columns' => [
'url' => [
'description' => 'The URL of the iframe.',
'type' => 'varchar',
'length' => 2048,
'not null' => FALSE,
'sortable' => TRUE,
'default' => '',
],
'title' => [
'description' => 'The iframe title text.',
'type' => 'varchar',
'length' => 255,
'not null' => FALSE,
'sortable' => TRUE,
'default' => '',
],
'class' => [
'description' => 'When output, this iframe will have this CSS class attribute. Multiple classes should be separated by spaces.',
'type' => 'varchar',
'length' => '255',
'not null' => FALSE,
'default' => '',
],
'width' => [
'description' => 'The iframe width.',
'type' => 'varchar',
'length' => 4,
'not null' => FALSE,
'default' => '600',
],
'height' => [
'description' => 'The iframe height.',
'type' => 'varchar',
'length' => 4,
'not null' => FALSE,
'default' => '800',
],
'frameborder' => [
'description' => 'Frameborder is the border around the iframe. Most people want it removed, so the default value for frameborder is zero (0), or no border.',
'type' => 'int',
'size' => 'tiny',
'not null' => TRUE,
'default' => 0,
],
'scrolling' => [
'description' => 'Scrollbars help the user to reach all iframe content despite the real height of the iframe content. Please disable it only if you know what you are doing.',
'type' => 'varchar',
'length' => 4,
'not null' => TRUE,
'default' => 'auto',
],
'transparency' => [
'description' => 'Allow transparency per CSS in the outer iframe tag. You have to set background-color:transparent in your iframe body tag too!',
'type' => 'int',
'size' => 'tiny',
'not null' => TRUE,
'default' => 0,
],
'tokensupport' => [
'description' => 'Are tokens allowed for users to use in title or URL field?',
'type' => 'int',
'size' => 'tiny',
'not null' => TRUE,
'default' => 0,
],
'allowfullscreen' => [
'description' => 'Allow fullscreen for iframe. The iframe can activate fullscreen mode by calling the requestFullscreen() method.',
'type' => 'int',
'size' => 'tiny',
'not null' => TRUE,
'default' => 0,
],
],
'indexes' => [
'url' => [
'url',
],
],
];
}
/**
* Global field settings for iframe field.
*
* In contenttype-field-settings "Manage fields" -> "Edit"
* admin/structure/types/manage/CONTENTTYPE/fields/node.CONTENTTYPE.FIELDNAME.
*/
public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
$element = [];
$settings = $this
->getSettings() + self::defaultFieldSettings();
// \iframe_debug(4, __METHOD__ . " settings", $settings);
$element['class'] = [
'#type' => 'textfield',
'#title' => $this
->t('CSS Class'),
// ''
'#default_value' => $settings['class'],
];
$element['frameborder'] = [
'#type' => 'radios',
'#title' => $this
->t('Frameborder'),
// '0'
'#default_value' => $settings['frameborder'],
'#options' => [
'0' => $this
->t('No frameborder'),
'1' => $this
->t('Show frameborder'),
],
];
$element['scrolling'] = [
'#type' => 'radios',
'#title' => $this
->t('Scrolling'),
// 'auto'
'#default_value' => $settings['scrolling'],
'#options' => [
'auto' => $this
->t('Automatic'),
'no' => $this
->t('Disabled'),
'yes' => $this
->t('Enabled'),
],
];
$element['transparency'] = [
'#type' => 'radios',
'#title' => $this
->t('Transparency'),
// '0'
'#default_value' => $settings['transparency'],
'#options' => [
'0' => $this
->t('No transparency'),
'1' => $this
->t('Allow transparency'),
],
'#description' => $this
->t('Allow transparency per CSS in the outer iframe tag. You have to set background-color:transparent in your iframe body tag too!'),
];
$element['allowfullscreen'] = [
'#type' => 'select',
'#title' => $this
->t('Allow fullscreen'),
'#options' => [
'0' => $this
->t('false'),
'1' => $this
->t('true'),
],
// 0
'#default_value' => $settings['allowfullscreen'],
'#description' => $this
->t('Allow fullscreen for iframe. The iframe can activate fullscreen mode by calling the requestFullscreen() method.'),
];
$element['tokensupport'] = [
'#type' => 'radios',
'#title' => $this
->t('Token Support'),
// '0'
'#default_value' => $settings['tokensupport'],
'#options' => [
'0' => $this
->t('No tokens allowed'),
'1' => $this
->t('Tokens only in title field'),
'2' => $this
->t('Tokens for title and URL field'),
],
'#description' => $this
->t('Are tokens allowed for users to use in title or URL field?'),
];
if (!\Drupal::moduleHandler()
->moduleExists('token')) {
$element['tokensupport']['#description'] .= ' ' . t('Attention: Token module is not currently enabled!');
}
return $element;
}
/**
* {@inheritdoc}
*/
public static function generateSampleValue(FieldDefinitionInterface $field_definition) {
// Set of possible top-level domains.
$tlds = [
'com',
'net',
'gov',
'org',
'edu',
'biz',
'info',
];
// Set random length for the domain name.
$domain_length = mt_rand(7, 15);
$random = new Random();
switch ($field_definition
->getSetting('title')) {
case DRUPAL_DISABLED:
$values['title'] = '';
break;
case DRUPAL_REQUIRED:
$values['title'] = $random
->sentences(4);
break;
case DRUPAL_OPTIONAL:
// In case of optional title, randomize its generation.
$values['title'] = mt_rand(0, 1) ? $random
->sentences(4) : '';
break;
}
$values['url'] = 'https://www.' . $random
->word($domain_length) . '.' . $tlds[mt_rand(0, count($tlds) - 1)];
return $values;
}
/**
* {@inheritdoc}
*/
public function isEmpty() {
$value = $this
->get('url')
->getValue();
return $value === NULL || $value === '';
}
/**
* {@inheritdoc}
*/
public static function mainPropertyName() {
return 'url';
}
/**
* Get token support setting.
*/
public function getTokenSupport() {
$value = $this
->getSetting('tokensupport');
$value = empty($value) ? 0 : (int) $value;
return $value;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
FieldItemBase:: |
public static | function |
Calculates dependencies for field items. Overrides FieldItemInterface:: |
2 |
FieldItemBase:: |
public static | function |
Calculates dependencies for field items on the storage level. Overrides FieldItemInterface:: |
1 |
FieldItemBase:: |
public static | function |
Defines the storage-level settings for this plugin. Overrides FieldItemInterface:: |
10 |
FieldItemBase:: |
public | function |
Defines custom delete behavior for field values. Overrides FieldItemInterface:: |
2 |
FieldItemBase:: |
public | function |
Defines custom revision delete behavior for field values. Overrides FieldItemInterface:: |
|
FieldItemBase:: |
public static | function |
Returns a settings array in the field type's canonical representation. Overrides FieldItemInterface:: |
1 |
FieldItemBase:: |
public static | function |
Returns a settings array that can be stored as a configuration value. Overrides FieldItemInterface:: |
1 |
FieldItemBase:: |
public | function |
Gets the entity that field belongs to. Overrides FieldItemInterface:: |
|
FieldItemBase:: |
public | function |
Gets the field definition. Overrides FieldItemInterface:: |
|
FieldItemBase:: |
public | function |
Gets the langcode of the field values held in the object. Overrides FieldItemInterface:: |
|
FieldItemBase:: |
protected | function | Returns the value of a field setting. | |
FieldItemBase:: |
protected | function | Returns the array of field settings. | |
FieldItemBase:: |
public static | function |
Informs the plugin that a dependency of the field will be deleted. Overrides FieldItemInterface:: |
1 |
FieldItemBase:: |
public | function |
Defines custom post-save behavior for field values. Overrides FieldItemInterface:: |
2 |
FieldItemBase:: |
public | function |
Defines custom presave behavior for field values. Overrides FieldItemInterface:: |
7 |
FieldItemBase:: |
public | function |
Sets the data value. Overrides Map:: |
4 |
FieldItemBase:: |
public | function |
Returns a form for the storage-level settings. Overrides FieldItemInterface:: |
8 |
FieldItemBase:: |
public static | function |
Returns a settings array in the field type's canonical representation. Overrides FieldItemInterface:: |
2 |
FieldItemBase:: |
public static | function |
Returns a settings array that can be stored as a configuration value. Overrides FieldItemInterface:: |
2 |
FieldItemBase:: |
public | function |
Returns a renderable array for a single field item. Overrides FieldItemInterface:: |
|
FieldItemBase:: |
protected | function |
Different to the parent Map class, we avoid creating property objects as
far as possible in order to optimize performance. Thus we just update
$this->values if no property object has been created yet. Overrides Map:: |
|
FieldItemBase:: |
public | function |
Constructs a TypedData object given its definition and context. Overrides TypedData:: |
1 |
FieldItemBase:: |
public | function |
Magic method: Gets a property value. Overrides FieldItemInterface:: |
2 |
FieldItemBase:: |
public | function |
Magic method: Determines whether a property is set. Overrides FieldItemInterface:: |
|
FieldItemBase:: |
public | function |
Magic method: Sets a property value. Overrides FieldItemInterface:: |
1 |
FieldItemBase:: |
public | function |
Magic method: Unsets a property. Overrides FieldItemInterface:: |
|
IframeItem:: |
public static | function |
Defines the field-level settings for this plugin. Overrides FieldItemBase:: |
|
IframeItem:: |
public | function |
Global field settings for iframe field. Overrides FieldItemBase:: |
|
IframeItem:: |
public static | function |
Generates placeholder field values. Overrides FieldItemBase:: |
|
IframeItem:: |
public | function | Get token support setting. | |
IframeItem:: |
public | function |
Determines whether the data structure is empty. Overrides Map:: |
|
IframeItem:: |
public static | function |
Returns the name of the main property, if any. Overrides FieldItemBase:: |
|
IframeItem:: |
public static | function |
Defines field item properties. Overrides FieldItemInterface:: |
|
IframeItem:: |
public static | function |
Implements hook_field_schema(). Overrides FieldItemInterface:: |
|
Map:: |
protected | property |
The data definition. Overrides TypedData:: |
|
Map:: |
protected | property | The array of properties. | |
Map:: |
protected | property | An array of values for the contained properties. | |
Map:: |
public | function |
Applies the default value. Overrides TypedData:: |
4 |
Map:: |
public | function |
Gets a property object. Overrides ComplexDataInterface:: |
|
Map:: |
public | function | ||
Map:: |
public | function |
Gets an array of property objects. Overrides ComplexDataInterface:: |
|
Map:: |
public | function |
Returns a string representation of the data. Overrides TypedData:: |
|
Map:: |
public | function |
Gets the data value. Overrides TypedData:: |
1 |
Map:: |
public | function |
Overrides TraversableTypedDataInterface:: |
4 |
Map:: |
public | function |
Sets a property value. Overrides ComplexDataInterface:: |
|
Map:: |
public | function |
Returns an array of all property values. Overrides ComplexDataInterface:: |
1 |
Map:: |
public | function | Magic method: Implements a deep clone. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. | |
TypedData:: |
protected | property | The property name. | |
TypedData:: |
protected | property | The parent typed data object. | |
TypedData:: |
public static | function |
Constructs a TypedData object given its definition and context. Overrides TypedDataInterface:: |
|
TypedData:: |
public | function |
Gets a list of validation constraints. Overrides TypedDataInterface:: |
9 |
TypedData:: |
public | function |
Gets the data definition. Overrides TypedDataInterface:: |
|
TypedData:: |
public | function |
Returns the name of a property or item. Overrides TypedDataInterface:: |
|
TypedData:: |
public | function |
Returns the parent data structure; i.e. either complex data or a list. Overrides TypedDataInterface:: |
|
TypedData:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
|
TypedData:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
TypedData:: |
public | function |
Returns the property path of the data. Overrides TypedDataInterface:: |
|
TypedData:: |
public | function |
Returns the root of the typed data tree. Overrides TypedDataInterface:: |
|
TypedData:: |
public | function |
Sets the context of a property or item via a context aware parent. Overrides TypedDataInterface:: |
|
TypedData:: |
public | function |
Validates the currently set data value. Overrides TypedDataInterface:: |
|
TypedDataTrait:: |
protected | property | The typed data manager used for creating the data types. | |
TypedDataTrait:: |
public | function | Gets the typed data manager. | 2 |
TypedDataTrait:: |
public | function | Sets the typed data manager. | 2 |