Commit 24b6b951 authored by Emil Stjerneman's avatar Emil Stjerneman
Browse files

Added configurable attributes

parent 7870bf77
Loading
Loading
Loading
Loading
+21 −6
Original line number Diff line number Diff line
@@ -13,16 +13,31 @@ linkit.linkit_profile.*:
    attributes:
      type: sequence
      sequence:
        type: linkit.attribute
    matchers:
      type: sequence
      sequence:
        type: linkit.matcher

linkit.attribute:
  type: mapping
  mapping:
    id:
      type: string
    data:
      type: linkit.attribute.[%parent.id]
    weight:
      type: integer
    matchers:
      type: sequence
      sequence:
        type: linkit.matcher

linkit.attribute.*:
  type: mapping
  label: 'Attribute settings'

linkit.attribute.target:
  type: linkit.attribute
  mapping:
    widget_type:
      type: string

linkit.matcher:
  type: mapping
+9 −1
Original line number Diff line number Diff line
@@ -47,13 +47,21 @@ linkit.attribute.add:
    _permission: 'administer linkit profiles'

linkit.attribute.delete:
  path: '/admin/config/content/linkit/manage/{linkit_profile}/attributes/delete/{plugin_id}'
  path: '/admin/config/content/linkit/manage/{linkit_profile}/attributes/delete/{plugin_instance_id}'
  defaults:
    _form: '\Drupal\linkit\Form\Attribute\DeleteForm'
    _title: 'Delete an attribute'
  requirements:
    _permission: 'administer linkit profiles'

linkit.attribute.edit:
  path: '/admin/config/content/linkit/manage/{linkit_profile}/attributes/{plugin_instance_id}'
  defaults:
    _form: '\Drupal\linkit\Form\Attribute\EditForm'
    _title: 'Edit an attribute'
  requirements:
    _permission: 'administer linkit profiles'

linkit.matchers:
  path: '/admin/config/content/linkit/manage/{linkit_profile}/matchers'
  defaults:
+11 −9
Original line number Diff line number Diff line
@@ -39,19 +39,23 @@ abstract class AttributeBase extends PluginBase implements AttributeInterface {
   * {@inheritdoc}
   */
  public function getConfiguration() {
    return array(
    return [
      'id' => $this->getPluginId(),
      'weight' => $this->weight,
    );
      'data' => $this->configuration,
    ];
  }

  /**
   * {@inheritdoc}
   */
  public function setConfiguration(array $configuration) {
    if (isset($configuration['weight'])) {
      $this->weight = (int) $configuration['weight'];
    }
    $configuration += [
      'weight' => '0',
      'data' => [],
    ];
    $this->configuration = $configuration['data'] + $this->defaultConfiguration();
    $this->weight = $configuration['weight'];
    return $this;
  }

@@ -59,16 +63,14 @@ abstract class AttributeBase extends PluginBase implements AttributeInterface {
   * {@inheritdoc}
   */
  public function defaultConfiguration() {
    return array(
      'weight' => $this->pluginDefinition['weight'] ?: 0,
    );
    return [];
  }

  /**
   * {@inheritdoc}
   */
  public function calculateDependencies() {
    return array();
    return [];
  }

  /**
+31 −0
Original line number Diff line number Diff line
<?php

/**
 * @file
 * Contains \Drupal\linkit\ConfigurableAttributeBase.
 */

namespace Drupal\linkit;

use Drupal\Core\Form\FormStateInterface;

/**
 * Provides a base class for configurable attributes.
 *
 * @see plugin_api
 */
abstract class ConfigurableAttributeBase extends AttributeBase implements ConfigurableAttributeInterface {

  /**
   * {@inheritdoc}
   */
  public function validateConfigurationForm(array &$form, FormStateInterface $form_state) {
  }

  /**
   * {@inheritdoc}
   */
  public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {
  }

}
+23 −0
Original line number Diff line number Diff line
<?php

/**
 * @file
 * Contains \Drupal\linkit\ConfigurableAttributeInterface.
 */

namespace Drupal\linkit;

use Drupal\Core\Plugin\PluginFormInterface;

/**
 * Defines the interface for configurable attributes.
 *
 * @see \Drupal\linkit\Annotation\Attribute
 * @see \Drupal\linkit\ConfigurableAttributeBase
 * @see \Drupal\linkit\AttributeInterface
 * @see \Drupal\linkit\AttributeBase
 * @see \Drupal\linkit\AttributeManager
 * @see plugin_api
 */
interface ConfigurableAttributeInterface extends AttributeInterface, PluginFormInterface {
}
Loading