visualn-8.x-1.x-dev/modules/visualn_url_field/src/Plugin/Field/FieldType/VisualNUrlItem.php

modules/visualn_url_field/src/Plugin/Field/FieldType/VisualNUrlItem.php
<?php

namespace Drupal\visualn_url_field\Plugin\Field\FieldType;

//use Drupal\Core\Field\FieldDefinitionInterface;
//use Drupal\Core\Field\FieldItemBase;
//use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\Core\TypedData\DataDefinition;
use Drupal\link\Plugin\Field\FieldType\LinkItem;
use Drupal\Core\Field\FieldStorageDefinitionInterface;
use Drupal\Core\Form\FormStateInterface;

/**
 * Plugin implementation of the 'visualn_url' field type.
 *
 * @FieldType(
 *   id = "visualn_url",
 *   label = @Translation("VisualN url"),
 *   description = @Translation("Stores a URL string that points to a resource for visualization"),
 *   default_widget = "visualn_url",
 *   default_formatter = "visualn_url",
 *   constraints = {"LinkType" = {}, "LinkAccess" = {}, "LinkExternalProtocols" = {}, "LinkNotExistingInternal" = {}}
 * )
 */
class VisualNUrlItem extends LinkItem {

  /**
   * {@inheritdoc}
   */
  public static function defaultFieldSettings() {
    // @todo: check
    // the default settings are used when attaching a field to an entity bundle
    // here only override_style_id seems to have sense
    return array(
      //'override_style_id' => 0,
      'drawer_config' => [],
      'drawer_fields' => [],
      'resource_format' => '',
    ) + parent::defaultFieldSettings();
  }

  // @todo: check comment regarding isEmpty() in visualn_file_field submodule field type

  /**
   * {@inheritdoc}
   */
  public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) {
    // @todo:
    $properties = parent::propertyDefinitions($field_definition);
    $properties['visualn_style_id'] = DataDefinition::create('string')
      ->setLabel(t('VisualN Style'));
    $properties['visualn_data'] = DataDefinition::create('string')
      ->setLabel(t('VisualN Data'));

    return $properties;
  }

  /**
   * {@inheritdoc}
   */
  public static function schema(FieldStorageDefinitionInterface $field_definition) {
    $schema = parent::schema($field_definition);

    // @todo: check the keys. also it seems to behave like an entityreference that
    //   references a visualn style
    $schema['columns']['visualn_style_id'] = [
      'description' => 'The ID of the visualn style used if overridden.',
      'type' => 'varchar_ascii',
      'length' => 255,
    ];
    $schema['columns']['visualn_data'] = [
      'type' => 'text',
      'mysql_type' => 'blob',
      'description' => 'Serialized visualn drawer config and fields mapping data.',
    ];

    return $schema;
  }

  /**
   * {@inheritdoc}
   */
  public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
    $element = parent::fieldSettingsForm($form, $form_state);

    $settings = $this->getSettings();

    // @todo: doesn't work yet
/*
    $element['override_style_id'] = array(
      '#type' => 'checkbox',
      '#title' => t('Override style'),
      '#default_value' => $settings['override_style_id'],
      '#description' => t('This allows to override default VisualN Style that is set in field formatter settings.'),
    );
*/

    return $element;
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc