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

#91: Clean up UiPatternBase class.

parent dd60b45b
No related branches found
No related tags found
No related merge requests found
......@@ -7,6 +7,7 @@
use Drupal\ui_patterns\Element\PatternContext;
use Drupal\Core\Layout\LayoutDefinition;
use Drupal\ui_patterns\UiPatterns;
/**
* Implements hook_layout_alter().
......@@ -16,8 +17,7 @@ function ui_patterns_layouts_layout_alter(&$definitions) {
// @todo: Use layout deriver instead.
// @link https://github.com/nuvoleweb/ui_patterns/issues/94
$pattern_definitions = \Drupal::service('plugin.manager.ui_patterns')->getDefinitions();
foreach ($pattern_definitions as $pattern_definition) {
foreach (UiPatterns::getPatternDefinitions() as $pattern_definition) {
$definition = [
'label' => $pattern_definition->getLabel(),
'theme' => $pattern_definition->getThemeHook(),
......
......@@ -108,9 +108,9 @@ class Pattern extends RenderElement {
* Render array.
*/
public static function processUse(array $element) {
$use = UiPatterns::getPattern($element['#id'])->getUse();
if (!empty($use)) {
$element['#use'] = $use;
$definition = UiPatterns::getPatternDefinition($element['#id']);
if ($definition->hasUse()) {
$element['#use'] = $definition->getUse();
}
return $element;
......
......@@ -66,143 +66,6 @@ abstract class UiPatternBase extends PluginBase implements UiPatternInterface, C
);
}
/**
* {@inheritdoc}
*/
public function getId() {
return $this->getPluginDefinition()['id'];
}
/**
* {@inheritdoc}
*/
public function getLabel() {
return $this->getPluginDefinition()['label'];
}
/**
* {@inheritdoc}
*/
public function hasField($name) {
return isset($this->getFields()[$name]);
}
/**
* {@inheritdoc}
*/
public function getField($name) {
$field = [];
if ($this->hasField($name)) {
$field = $this->getFields()[$name];
}
return $field;
}
/**
* {@inheritdoc}
*/
public function getFieldType($name) {
return $this->getFieldProperty($name, 'type');
}
/**
* {@inheritdoc}
*/
public function getFieldLabel($name) {
return $this->getFieldProperty($name, 'label');
}
/**
* {@inheritdoc}
*/
public function getFieldPreview($name) {
return $this->getFieldProperty($name, 'preview');
}
/**
* {@inheritdoc}
*/
public function hasCustomThemeHook() {
return $this->getPluginDefinition()['custom theme hook'];
}
/**
* {@inheritdoc}
*/
public function getThemeHook() {
return $this->getPluginDefinition()['theme hook'];
}
/**
* {@inheritdoc}
*/
public function getFields() {
return $this->getPluginDefinition()['fields'];
}
/**
* {@inheritdoc}
*/
public function getLibraries() {
$libraries = [];
foreach ($this->getPluginDefinition()['libraries'] as $library) {
if (is_array($library)) {
$libraries[] = self::LIBRARY_PREFIX . '/' . $this->getId() . '.' . key($library);
}
else {
$libraries[] = $library;
}
}
return $libraries;
}
/**
* {@inheritdoc}
*/
public function hasUse() {
$definition = $this->getPluginDefinition();
return !empty($definition['use']);
}
/**
* {@inheritdoc}
*/
public function getUse() {
return $this->getPluginDefinition()['use'];
}
/**
* {@inheritdoc}
*/
public function getFieldsAsOptions() {
$options = [];
foreach ($this->getFields() as $field) {
$options[$field['name']] = $field['label'];
}
return $options;
}
/**
* Get field property.
*
* @param string $field
* Field name.
* @param string $name
* Field property name.
* @param mixed $default
* Default value if field property not found.
*
* @return mixed
* Field property value.
*/
protected function getFieldProperty($field, $name, $default = NULL) {
$value = $default;
if ($this->hasField($field) && isset($this->getFields()[$field][$name])) {
$value = $this->getFields()[$field][$name];
}
return $value;
}
/**
* {@inheritdoc}
*/
......
......@@ -9,152 +9,4 @@ namespace Drupal\ui_patterns;
*/
interface UiPatternInterface {
/**
* Get pattern ID.
*
* @return string
* Pattern ID.
*/
public function getId();
/**
* Get pattern label.
*
* @return string
* Pattern label.
*/
public function getLabel();
/**
* Check if pattern has given field.
*
* @param string $name
* Field machine name.
*
* @return bool
* Whereas pattern has field given or not.
*/
public function hasField($name);
/**
* Get pattern field.
*
* @param string $name
* Field machine name.
*
* @return array
* Get field array, if any.
*/
public function getField($name);
/**
* Get pattern field type.
*
* @param string $name
* Field machine name.
*
* @return string
* Get field type.
*/
public function getFieldType($name);
/**
* Get pattern field label.
*
* @param string $name
* Field machine name.
*
* @return array
* Field label.
*/
public function getFieldLabel($name);
/**
* Get pattern field preview, if any.
*
* @param string $name
* Field machine name.
*
* @return mixed
* Field preview value, if any.
*/
public function getFieldPreview($name);
/**
* Check if pattern has custom theme hook.
*
* @return bool
* Whereas pattern has custom theme hook or not.
*/
public function hasCustomThemeHook();
/**
* Get pattern theme hook.
*
* @return string
* Theme hook.
*/
public function getThemeHook();
/**
* Get pattern fields.
*
* @return array
* Array of fields keyed by field name.
*/
public function getFields();
/**
* Return list of given pattern fields to be used as select options.
*
* @return array
* List of pattern fields.
*/
public function getFieldsAsOptions();
/**
* Get list of pattern libraries, be them locally or globally declared.
*
* @return array
* List of libraries, suitable for "#attach" render array element.
*/
public function getLibraries();
/**
* Check if pattern has the 'use' property defined.
*
* @return bool
* Whereas pattern has the 'use' property defined.
*/
public function hasUse();
/**
* Return 'use' property value.
*
* @return string
* The 'use' property value.
*/
public function getUse();
/**
* Build and return Drupal theme implementation for current pattern.
*
* @return array
* Theme implementation.
*
* @see ui_patterns_theme()
*/
public function getThemeImplementation();
/**
* Get library definitions for current pattern.
*
* @return array
* List of library definitions.
*
* @see hook_library_info_build()
* @see ui_patterns_library_info_build()
*/
public function getLibraryDefinitions();
}
......@@ -30,29 +30,26 @@ class UiPatterns {
}
/**
* Get pattern object.
* Get pattern definition.
*
* @param string $id
* Pattern ID.
*
* @return \Drupal\ui_patterns\UiPatternBase
* @return \Drupal\ui_patterns\Definition\PatternDefinition
* Pattern object instance.
*/
public static function getPattern($id) {
return \Drupal::service('plugin.manager.ui_patterns')->getPattern($id);
public static function getPatternDefinition($id) {
return \Drupal::service('plugin.manager.ui_patterns')->getDefinition($id);
}
/**
* Get pattern object.
* Get pattern definitions.
*
* @param string $id
* Pattern ID.
*
* @return \Drupal\ui_patterns\Definition\PatternDefinition
* @return \Drupal\ui_patterns\Definition\PatternDefinition[]
* Pattern object instance.
*/
public static function getPatternDefinition($id) {
return \Drupal::service('plugin.manager.ui_patterns')->getDefinition($id);
public static function getPatternDefinitions() {
return \Drupal::service('plugin.manager.ui_patterns')->getDefinitions();
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment