drowl_paragraphs-8.x-3.9/src/Plugin/Field/FieldType/DrowlParagraphsSettingsItem.php
src/Plugin/Field/FieldType/DrowlParagraphsSettingsItem.php
<?php
namespace Drupal\drowl_paragraphs\Plugin\Field\FieldType;
use Drupal\Core\TypedData\DataDefinition;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Field\FieldItemInterface;
use Drupal\Core\Field\FieldStorageDefinitionInterface;
use Drupal\Core\Field\FieldItemBase;
/**
* Field type "drowl_paragraphs_settings".
*
* @FieldType(
* id = "drowl_paragraphs_settings",
* label = @Translation("DROWL Paragraphs settings"),
* description = @Translation("DROWL Paragraphs settings field."),
* category = @Translation("DROWL Paragraphs settings"),
* default_widget = "drowl_paragraphs_settings_default",
* default_formatter = "drowl_paragraphs_settings_default",
* )
*/
class DrowlParagraphsSettingsItem extends FieldItemBase implements FieldItemInterface {
/**
* {@inheritdoc}
*/
public static function schema(FieldStorageDefinitionInterface $field_definition) {
$output = array();
$output['columns']['layout_sm_columns'] = array(
'type' => 'int',
'size' => 'tiny',
'unsigned' => FALSE,
);
$output['columns']['layout_sm_collapse'] = array(
'type' => 'int',
'size' => 'tiny',
'unsigned' => true,
);
$output['columns']['layout_sm_indent'] = array(
'type' => 'int',
'size' => 'tiny',
'unsigned' => TRUE,
);
$output['columns']['layout_sm_reverse_indent'] = array(
'type' => 'int',
'size' => 'tiny',
'unsigned' => TRUE,
);
$output['columns']['layout_md_columns'] = array(
'type' => 'int',
'size' => 'tiny',
'unsigned' => FALSE,
);
$output['columns']['layout_md_collapse'] = array(
'type' => 'int',
'size' => 'tiny',
'unsigned' => true,
);
$output['columns']['layout_md_indent'] = array(
'type' => 'int',
'size' => 'tiny',
'unsigned' => TRUE,
);
$output['columns']['layout_md_reverse_indent'] = array(
'type' => 'int',
'size' => 'tiny',
'unsigned' => TRUE,
);
$output['columns']['layout_lg_columns'] = array(
'type' => 'int',
'size' => 'tiny',
'unsigned' => FALSE,
);
$output['columns']['layout_lg_collapse'] = array(
'type' => 'int',
'size' => 'tiny',
'unsigned' => true,
);
$output['columns']['layout_lg_indent'] = array(
'type' => 'int',
'size' => 'tiny',
'unsigned' => TRUE,
);
$output['columns']['layout_lg_reverse_indent'] = array(
'type' => 'int',
'size' => 'tiny',
'unsigned' => TRUE,
);
$output['columns']['layout_margin_top'] = array(
'type' => 'varchar',
'length' => 16,
);
$output['columns']['layout_margin_right'] = array(
'type' => 'varchar',
'length' => 16,
);
$output['columns']['layout_margin_bottom'] = array(
'type' => 'varchar',
'length' => 16,
);
$output['columns']['layout_margin_left'] = array(
'type' => 'varchar',
'length' => 16,
);
$output['columns']['layout_padding_top'] = array(
'type' => 'varchar',
'length' => 16,
);
$output['columns']['layout_padding_right'] = array(
'type' => 'varchar',
'length' => 16,
);
$output['columns']['layout_padding_bottom'] = array(
'type' => 'varchar',
'length' => 16,
);
$output['columns']['layout_padding_left'] = array(
'type' => 'varchar',
'length' => 16,
);
$animations_allowed_count = 4;
for ($i=1; $i <= $animations_allowed_count; $i++) {
$output['columns']['style_animation_' . $i . '_events'] = array(
'type' => 'varchar',
'length' => 64,
);
$output['columns']['style_animation_' . $i . '_animation'] = array(
'type' => 'varchar',
'length' => 64,
);
$output['columns']['style_animation_' . $i . '_offset'] = array(
'type' => 'int',
'size' => 'tiny',
);
$output['columns']['style_animation_' . $i . '_delay'] = array(
'type' => 'int',
'size' => 'small',
'unsigned' => TRUE,
);
$output['columns']['style_animation_' . $i . '_transition_duration'] = array(
'type' => 'int',
'size' => 'small',
'unsigned' => TRUE,
);
}
$output['columns']['layout_min_height'] = array(
'type' => 'int',
'size' => 'tiny',
'unsigned' => TRUE,
);
$output['columns']['layout_section_width'] = array(
'type' => 'varchar',
'length' => 64,
);
$output['columns']['layout_align_children_vertical'] = array(
'type' => 'varchar',
'length' => 32,
);
$output['columns']['layout_align_children_horizontal'] = array(
'type' => 'varchar',
'length' => 32,
);
$output['columns']['layout_reverse_order'] = array(
'type' => 'int',
'size' => 'tiny',
'unsigned' => TRUE,
);
$output['columns']['style_boxstyle'] = array(
'type' => 'varchar',
'length' => 64,
);
$output['columns']['style_cutline'] = array(
'type' => 'varchar',
'length' => 64,
);
$output['columns']['style_textalign'] = array(
'type' => 'varchar',
'length' => 64,
);
$output['columns']['style_textstyle'] = array(
'type' => 'varchar',
'length' => 64,
);
$output['columns']['style_textcolumns'] = array(
'type' => 'varchar',
'length' => 64,
);
$output['columns']['classes_additional'] = array(
'type' => 'varchar',
'length' => 255,
);
return $output;
}
/**
* {@inheritdoc}
*/
public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) {
$properties = [];
$properties['layout_sm_columns'] = DataDefinition::create('integer')
->setLabel(t('Columns SM'))
->setRequired(FALSE);
$properties['layout_sm_collapse'] = DataDefinition::create('boolean')
->setLabel(t('No grid spaces'))
->setRequired(false);
$properties['layout_sm_indent'] = DataDefinition::create('integer')
->setLabel(t('Indent SM'))
->setRequired(FALSE);
$properties['layout_sm_reverse_indent'] = DataDefinition::create('integer')
->setLabel(t('Reverse indent SM'))
->setRequired(FALSE);
$properties['layout_md_columns'] = DataDefinition::create('integer')
->setLabel(t('Columns MD'))
->setRequired(FALSE);
$properties['layout_md_collapse'] = DataDefinition::create('boolean')
->setLabel(t('No grid spaces'))
->setRequired(false);
$properties['layout_md_indent'] = DataDefinition::create('integer')
->setLabel(t('Indent MD'))
->setRequired(FALSE);
$properties['layout_md_reverse_indent'] = DataDefinition::create('integer')
->setLabel(t('Reverse indent MD'))
->setRequired(FALSE);
$properties['layout_lg_columns'] = DataDefinition::create('integer')
->setLabel(t('Columns LG'))
->setRequired(FALSE);
$properties['layout_lg_collapse'] = DataDefinition::create('boolean')
->setLabel(t('No grid spaces'))
->setRequired(false);
$properties['layout_lg_indent'] = DataDefinition::create('integer')
->setLabel(t('Indent LG'))
->setRequired(FALSE);
$properties['layout_lg_reverse_indent'] = DataDefinition::create('integer')
->setLabel(t('Reverse indent LG'))
->setRequired(FALSE);
$properties['layout_margin_top'] = DataDefinition::create('string')
->setLabel(t('Margin top'))
->setRequired(FALSE);
$properties['layout_margin_right'] = DataDefinition::create('string')
->setLabel(t('Margin right'))
->setRequired(FALSE);
$properties['layout_margin_bottom'] = DataDefinition::create('string')
->setLabel(t('Margin bottom'))
->setRequired(FALSE);
$properties['layout_margin_left'] = DataDefinition::create('string')
->setLabel(t('Margin left'))
->setRequired(FALSE);
$properties['layout_padding_top'] = DataDefinition::create('string')
->setLabel(t('Padding top'))
->setRequired(FALSE);
$properties['layout_padding_right'] = DataDefinition::create('string')
->setLabel(t('Padding right'))
->setRequired(FALSE);
$properties['layout_padding_bottom'] = DataDefinition::create('string')
->setLabel(t('Padding bottom'))
->setRequired(FALSE);
$properties['layout_padding_left'] = DataDefinition::create('string')
->setLabel(t('Padding left'))
->setRequired(FALSE);
$animations_allowed_count = 4;
for ($i=1; $i <= $animations_allowed_count; $i++) {
$properties['style_animation_' . $i . '_events'] = DataDefinition::create('string')
->setLabel(t('Events'))
->setRequired(FALSE);
$properties['style_animation_' . $i . '_animation'] = DataDefinition::create('string')
->setLabel(t('Animation'))
->setRequired(FALSE);
$properties['style_animation_' . $i . '_offset'] = DataDefinition::create('string')
->setLabel(t('Viewport animation offset trigger'))
->setRequired(FALSE);
$properties['style_animation_' . $i . '_delay'] = DataDefinition::create('integer')
->setLabel(t('Animation delay (ms)'))
->setRequired(FALSE);
$properties['style_animation_' . $i . '_transition_duration'] = DataDefinition::create('integer')
->setLabel(t('Transition duration (ms)'))
->setRequired(FALSE);
}
$properties['layout_min_height'] = DataDefinition::create('integer')
->setLabel(t('Min height'))
->setRequired(FALSE);
$properties['layout_section_width'] = DataDefinition::create('string')
->setLabel(t('Section width'))
->setRequired(FALSE);
$properties['layout_align_children_vertical'] = DataDefinition::create('string')
->setLabel(t('Children vertical alignment'))
->setRequired(FALSE);
$properties['layout_align_children_horizontal'] = DataDefinition::create('string')
->setLabel(t('Children horizontal alignment'))
->setRequired(FALSE);
$properties['layout_reverse_order'] = DataDefinition::create('boolean')
->setLabel(t('Reverse order'))
->setRequired(FALSE);
$properties['style_boxstyle'] = DataDefinition::create('string')
->setLabel(t('Box style'))
->setRequired(FALSE);
$properties['style_cutline'] = DataDefinition::create('string')
->setLabel(t('Cutline'))
->setRequired(false);
$properties['style_textalign'] = DataDefinition::create('string')
->setLabel(t('Text align'))
->setRequired(FALSE);
$properties['style_textstyle'] = DataDefinition::create('string')
->setLabel(t('Text style'))
->setRequired(FALSE);
$properties['style_textcolumns'] = DataDefinition::create('string')
->setLabel(t('Text style'))
->setRequired(FALSE);
$properties['classes_additional'] = DataDefinition::create('string')
->setLabel(t('Custom classes'))
->setRequired(FALSE);
return $properties;
}
/**
* {@inheritdoc}
*/
public function isEmpty() {
// $item = $this->getValue();
$item = $this->getValue();
foreach($item as $key => $value){
if($key !== '_attributes'){
// One item is not null
if($value !== NULL && $value !== ''){
return FALSE;
}
}
}
return TRUE;
}
/**
* {@inheritdoc}
*/
public static function defaultFieldSettings() {
return parent::defaultFieldSettings();
}
/**
* {@inheritdoc}
*/
public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
$element = array();
return $element;
}
/**
* {@inheritdoc}
*/
public function preSave() {
// Sanitize classes_additional:
$classes_additional = $this->get('classes_additional')->getValue();
$classes_additional_sanitized = '';
if(!empty($classes_additional)){
$classes_additional_array = explode(' ', trim($classes_additional));
foreach($classes_additional_array as $class){
$classes_additional_sanitized .= ' ' . trim(\Drupal\Component\Utility\Html::getClass(trim($class)));
}
}
$this->get('classes_additional')->setValue(trim($classes_additional_sanitized));
}
}
