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

Add UI Patterns factory class #71

parent 635715b9
Branches
Tags
No related merge requests found
......@@ -4,6 +4,7 @@ namespace Drupal\ui_patterns\Element;
use Drupal\Core\Render\Element\RenderElement;
use Drupal\Core\Template\Attribute;
use Drupal\ui_patterns\UiPatterns;
/**
* Renders a pattern element.
......@@ -46,7 +47,7 @@ class Pattern extends RenderElement {
* Render array.
*/
public static function setDefinition(array $element) {
self::$definition = \Drupal::service('plugin.manager.ui_patterns')->getDefinition($element['#id']);
self::$definition = UiPatterns::getManager()->getDefinition($element['#id']);
return $element;
}
......
......@@ -15,6 +15,7 @@ abstract class UiPatternBase extends PluginBase implements UiPatternInterface {
* {@inheritdoc}
*/
public function getFields() {
return $this->getPluginDefinition()['fields'];
}
/**
......
......@@ -25,4 +25,12 @@ interface UiPatternInterface {
*/
public function getLibraries();
/**
* Get pattern variants, if any.
*
* @return array
* Array of pattern variants.
*/
public function getVariants();
}
<?php
namespace Drupal\ui_patterns;
/**
* UI Patterns factory class.
*
* @package Drupal\ui_patterns
*/
class UiPatterns {
/**
* Get pattern manager instance.
*
* @return \Drupal\ui_patterns\UiPatternsManager
* UI Patterns manager instance.
*/
static public function getManager() {
return \Drupal::service('plugin.manager.ui_patterns');
}
/**
* Get pattern field sources manager instance.
*
* @return \Drupal\ui_patterns\Plugin\UiPatternsSourceManager
* UI Patterns field sources manager instance.
*/
static public function getSourceManager() {
return \Drupal::service('plugin.manager.ui_patterns_source');
}
/**
* Get pattern object.
*
* @param string $id
* Pattern ID.
*
* @return \Drupal\ui_patterns\UiPatternBase
* Pattern object instance.
*/
static public function getPattern($id) {
return \Drupal::service('plugin.manager.ui_patterns')->getPattern($id);
}
}
......@@ -3,6 +3,7 @@
namespace Drupal\Tests\ui_patterns\Kernel;
use Drupal\KernelTests\KernelTestBase;
use Drupal\ui_patterns\UiPatterns;
use Symfony\Component\Finder\Finder;
use Drupal\Component\Serialization\Yaml;
use Drupal\ui_patterns\UiPatternsManager;
......@@ -55,8 +56,7 @@ abstract class AbstractUiPatternsTest extends KernelTestBase {
* Plugin manager object.
*/
protected function getPluginManager(array $definitions) {
/** @var \Drupal\ui_patterns\UiPatternsManager $manager */
$manager = \Drupal::service('plugin.manager.ui_patterns');
$manager = UiPatterns::getManager();
$manager_mock = $this->getMockBuilder(UiPatternsManager::class)
->disableOriginalConstructor()
->setMethods(['findDefinitions'])
......
......@@ -7,6 +7,7 @@ use function bovigo\assert\predicate\isNotEmpty;
use function bovigo\assert\predicate\doesNotHaveKey;
use function bovigo\assert\predicate\hasKey;
use function bovigo\assert\predicate\equals;
use Drupal\ui_patterns\UiPatterns;
/**
* @coversDefaultClass \Drupal\ui_patterns\UiPatternsManager
......@@ -52,8 +53,7 @@ class UiPatternsManagerTest extends AbstractUiPatternsTest {
* @covers ::getPattern
*/
public function testGetPattern() {
/* @var \Drupal\ui_patterns\UiPatternsManager $manager */
$manager = \Drupal::service('plugin.manager.ui_patterns');
$manager = UiPatterns::getManager();
foreach ($manager->getDefinitions() as $definition) {
$pattern = $manager->getPattern($definition['id']);
......
......@@ -5,6 +5,8 @@
* Contains ui_patterns.module.
*/
use Drupal\ui_patterns\UiPatterns;
/**
* Implements hook_theme().
*/
......@@ -19,14 +21,14 @@ function ui_patterns_theme() {
'patterns_meta_information' => [
'variables' => ['pattern' => NULL],
],
] + \Drupal::service('plugin.manager.ui_patterns')->hookTheme();
] + UiPatterns::getManager()->hookTheme();
}
/**
* Implements hook_theme_suggestions_HOOK_alter()
*/
function ui_patterns_theme_suggestions_alter(array &$suggestions, array $variables, $hook) {
if (\Drupal::service('plugin.manager.ui_patterns')->isPatternHook($hook) && !empty($variables['context'])) {
if (UiPatterns::getManager()->isPatternHook($hook) && !empty($variables['context'])) {
\Drupal::moduleHandler()->alter('ui_patterns_suggestions', $suggestions, $variables, $variables['context']);
}
}
......@@ -35,6 +37,6 @@ function ui_patterns_theme_suggestions_alter(array &$suggestions, array $variabl
* Implements hook_library_info_build()
*/
function ui_patterns_library_info_build() {
return \Drupal::service('plugin.manager.ui_patterns')->hookLibraryInfoBuild();
return UiPatterns::getManager()->hookLibraryInfoBuild();
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment