Skip to content
Snippets Groups Projects
Commit b73f813a authored by Antonio De Marco's avatar Antonio De Marco
Browse files

#91: Remove pattern typed data and fix single page overview.

parent 537ac964
No related branches found
No related tags found
No related merge requests found
......@@ -3,6 +3,7 @@
namespace Drupal\ui_patterns_library\Controller;
use Drupal\Core\Controller\ControllerBase;
use Drupal\ui_patterns\UiPatterns;
use Drupal\ui_patterns\UiPatternsManager;
use Symfony\Component\DependencyInjection\ContainerInterface;
......@@ -54,13 +55,11 @@ class PatternsLibraryController extends ControllerBase {
* Return render array.
*/
public function single($name) {
/** @var \Drupal\ui_patterns\Definition\PatternDefinition $definition */
$definition = $this->patternsManager->getDefinition($name);
$definition = [];
$definition['rendered']['#type'] = 'pattern_preview';
$definition['rendered']['#id'] = $name;
$definition['meta']['#theme'] = 'patterns_meta_information';
$definition['meta']['#pattern'] = $definition->toArray();
$definition['meta']['#pattern'] = UiPatterns::getPatternDefinition($name)->toArray();
return [
'#theme' => 'patterns_single_page',
......
<?php
namespace Drupal\ui_patterns\Plugin\DataType;
use Drupal\Core\TypedData\Plugin\DataType\Map;
/**
* The "ui_patterns_pattern" data type.
*
* @ingroup typed_data
*
* @deprecated
*
* @DataType(
* id = "ui_patterns_pattern",
* label = @Translation("UI Patterns: Pattern"),
* definition_class = "\Drupal\ui_patterns\Plugin\DataType\PatternDefinition"
* )
*/
class Pattern extends Map implements PatternInterface {
/**
* Pattern prefix.
*/
const PATTERN_PREFIX = 'pattern_';
/**
* {@inheritdoc}
*/
public function setValue($values, $notify = TRUE) {
// Set default values.
$values = $values + [
'libraries' => [],
'fields' => [],
'custom theme hook' => TRUE,
];
parent::setValue($values, FALSE);
// Process values array.
$this->processFieldNames();
$this->processThemeProperties($values);
// Notify the parent of any changes.
if ($notify && isset($this->parent)) {
$this->parent->onChange($this->name);
}
}
/**
* {@inheritdoc}
*/
public function isValid() {
return $this->validate()->count() == 0;
}
/**
* {@inheritdoc}
*/
public function getErrorMessages() {
$messages = [];
/** @var \Symfony\Component\Validator\ConstraintViolationList $violations */
$violations = $this->validate();
foreach ($violations as $violation) {
$messages[] = $this->t('Validation error on ":id.:property": :message', [
':id' => $this->get('id')->getValue(),
':property' => $violation->getPropertyPath(),
':message' => $violation->getMessage(),
]);
}
return $messages;
}
/**
* Process theme-related properties.
*
* @param array $values
* Current values.
*/
private function processThemeProperties(array $values) {
if (!isset($values['theme hook'])) {
$this->values['theme hook'] = self::PATTERN_PREFIX . $this->values['id'];
$this->values['custom theme hook'] = FALSE;
}
}
/**
* Explicitly Set field 'name' property.
*/
private function processFieldNames() {
foreach ($this->values['fields'] as $name => $value) {
$this->values['fields'][$name]['name'] = $name;
}
}
}
<?php
namespace Drupal\ui_patterns\Plugin\DataType;
use Drupal\Core\TypedData\DataDefinition;
use Drupal\Core\TypedData\ListDataDefinition;
use Drupal\Core\TypedData\MapDataDefinition;
/**
* Class PatternDefinition.
*
* @package Drupal\ui_patterns\Plugin\DataType
*
* @deprecated
*/
class PatternDefinition extends MapDataDefinition {
/**
* Valid machine name string.
*/
const MACHINE_NAME = '/^[a-z0-9_]+$/';
/**
* {@inheritdoc}
*/
public function getPropertyDefinitions() {
$this->setMainPropertyName('id')
->setPropertyDefinition('id', $this->getMachineNameDefinition()->setRequired(TRUE))
->setPropertyDefinition('label', DataDefinition::create('string')->setRequired(TRUE))
->setPropertyDefinition('base path', DataDefinition::create('string')->setRequired(TRUE))
->setPropertyDefinition('file name', DataDefinition::create('string')->setRequired(TRUE))
->setPropertyDefinition('provider', DataDefinition::create('string')->setRequired(TRUE))
->setPropertyDefinition('fields', $this->getFieldsDefinition()->setRequired(TRUE))
->setPropertyDefinition('theme hook', DataDefinition::create('string')->setRequired(TRUE))
->setPropertyDefinition('description', DataDefinition::create('string'))
->setPropertyDefinition('use', DataDefinition::create('string'))
->setPropertyDefinition('tags', ListDataDefinition::create('string'))
->setPropertyDefinition('custom theme hook', DataDefinition::create('boolean'))
->setPropertyDefinition('template', DataDefinition::create('string'))
->setPropertyDefinition('libraries', DataDefinition::create('any'));
return $this->propertyDefinitions;
}
/**
* Get valid machine name definition.
*
* @return \Drupal\Core\TypedData\DataDefinition
* Data definition instance.
*/
protected function getMachineNameDefinition() {
return DataDefinition::create('string')
->addConstraint('Regex', self::MACHINE_NAME)
->addConstraint('ValidPatternMachineName');
}
/**
* Get definition for 'field' property.
*
* @return \Drupal\Core\TypedData\ListDataDefinition
* Data definition instance.
*/
protected function getFieldsDefinition() {
return new ListDataDefinition([], MapDataDefinition::create()
->setPropertyDefinition('name', $this->getMachineNameDefinition()->setRequired(TRUE))
->setPropertyDefinition('label', DataDefinition::create('string')->setRequired(TRUE))
->setPropertyDefinition('type', $this->getMachineNameDefinition())
->setPropertyDefinition('description', DataDefinition::create('string'))
->setPropertyDefinition('preview', DataDefinition::create('any')));
}
}
<?php
namespace Drupal\ui_patterns\Plugin\DataType;
/**
* Interface PatternInterface.
*
* @package Drupal\ui_patterns\Plugin\DataType
*/
interface PatternInterface {
/**
* Check whereas the pattern definition is valid or not.
*
* @return bool
* Whereas the pattern definition is valid or not.
*/
public function isValid();
/**
* Get validation error messages.
*
* @return \Drupal\Core\StringTranslation\TranslatableMarkup[]
* List of validation error messages.
*/
public function getErrorMessages();
}
......@@ -23,13 +23,6 @@ abstract class AbstractPatternsDeriver extends DeriverBase implements PatternsDe
*/
protected $typedDataManager;
/**
* Default pattern data definition type.
*
* @var string
*/
protected $dataType = 'ui_patterns_pattern';
/**
* AbstractPatternsDeriver constructor.
*/
......
......@@ -10,8 +10,7 @@ use Symfony\Component\Validator\Constraint;
*
* @Constraint(
* id = "ValidPatternMachineName",
* label = @Translation("Valid pattern field name", context = "Validation"),
* type = { "ui_patterns_pattern" }
* label = @Translation("Valid pattern field name", context = "Validation")
* )
*/
class ValidPatternMachineNameConstraint extends Constraint implements ConstraintValidatorInterface {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment