Implemented functions for optimizing source.html.twig

This commit is contained in:
Kevin Frantz committed 2019-02-18 21:09:57 +01:00
1 parent d99c05908b
commit a117d16429
14 files changed
+101 -79

No files matched your search

@@ -3,3 +3,6 @@ twig:
debug: '%kernel.debug%'
strict_variables: '%kernel.debug%'
form_themes: ['bootstrap_4_layout.html.twig']
globals:
layer_action_map: "@Infinito\\Domain\\LayerManagement\\LayerActionMap"
action_icon_class_map: "@Infinito\\Domain\\TwigManagement\\ActionIconClassMap"
@@ -11,13 +11,19 @@ use Infinito\DBAL\Types\Meta\Right\CRUDType;
*/
final class ActionType extends CRUDType
{
const THREAD = 'thread';
/**
* @var string
*/
const EXECUTE = 'execute';
/**
* @var array
*/
protected static $choices = [
parent::CREATE => 'create',
parent::READ => 'read',
parent::UPDATE => 'update',
parent::DELETE => 'delete',
self::THREAD => 'thread',
self::EXECUTE => 'execute',
];
}
@@ -0,0 +1,12 @@
<?php
namespace Infinito\Domain\ActionManagement\Execute;
use Infinito\Domain\ActionManagement\AbstractAction;
/**
* @author kevinfrantz
*/
abstract class AbstractExecuteAction extends AbstractAction
{
}
@@ -1,11 +1,11 @@
<?php
namespace Infinito\Domain\ActionManagement\Thread;
namespace Infinito\Domain\ActionManagement\Execute;
/**
* @author kevinfrantz
*/
final class ThreadSourceAction extends AbstractThreadAction
final class ExecuteAction extends AbstractExecuteAction
{
/**
* {@inheritdoc}
@@ -1,12 +0,0 @@
<?php
namespace Infinito\Domain\ActionManagement\Thread;
use Infinito\Domain\ActionManagement\AbstractAction;
/**
* @author kevinfrantz
*/
abstract class AbstractThreadAction extends AbstractAction
{
}
@@ -20,7 +20,7 @@ final class LayerActionMap extends AbstractMap implements LayerActionMapInterfac
ActionType::CREATE,
ActionType::UPDATE,
ActionType::DELETE,
ActionType::THREAD,
ActionType::EXECUTE,
],
];
@@ -13,6 +13,9 @@ use Infinito\Entity\Meta\Right;
*/
final class LayerClassMap implements LayerClassMapInterface
{
/**
* @var array|string[]
*/
const LAYER_CLASS_MAP = [
LayerType::SOURCE => AbstractSource::class,
LayerType::LAW => Law::class,
@@ -26,7 +26,7 @@ final class ActionHttpMethodMap extends AbstractMap implements ActionHttpMethodM
Request::METHOD_GET,
Request::METHOD_DELETE,
],
ActionType::THREAD => [
ActionType::EXECUTE => [
Request::METHOD_GET,
],
];
@@ -23,7 +23,7 @@ class RequestedAction extends RequestedUser implements RequestedActionInterface
* @var array Containes the mapping of non standard actions to a crud
*/
const ACTION_CRUD_MAP = [
ActionType::THREAD => CRUDType::READ,
ActionType::EXECUTE => CRUDType::READ,
];
/**
@@ -0,0 +1,36 @@
<?php
namespace Infinito\Domain\TwigManagement;
use Infinito\DBAL\Types\ActionType;
use Infinito\Exception\NotSetException;
/**
* @author kevinfrantz
*/
final class ActionIconClassMap implements ActionIconClassMapInterface
{
/**
* @var array|string[]
*/
const ACTION_ICON_CLASS_MAP = [
ActionType::READ => 'fas fa-glasses',
ActionType::EXECUTE => 'fas fa-microchip',
ActionType::UPDATE => 'fas fa-pencil-alt',
ActionType::DELETE => 'fas fa-trash-alt',
ActionType::CREATE => 'fas fa-plus-square',
];
/**
* {@inheritdoc}
*
* @see \Infinito\Domain\TwigManagement\ActionIconClassMapInterface::getIconClass()
*/
public function getIconClass(string $action): string
{
if (key_exists($action, self::ACTION_ICON_CLASS_MAP)) {
return self::ACTION_ICON_CLASS_MAP[$action];
}
throw new NotSetException("The key <<$action>> is not defined in the map!");
}
}
@@ -0,0 +1,18 @@
<?php
namespace Infinito\Domain\TwigManagement;
/**
* Maps actions to classes.
*
* @author kevinfrantz
*/
interface ActionIconClassMapInterface
{
/**
* @param string $action
*
* @return string
*/
public function getIconClass(string $action): string;
}
@@ -1,26 +1,25 @@
{% extends "frames/default.html.twig" %}
{% block title %}
{% trans %}
Source
{% endtrans %}
{{ 'Source'|trans }}: {% if entity.hasSlug %}{{ entity.slug }}{% endif %}#{{ entity.id }}
{% endblock %}
{% block content %}
<h1>
Source: {% if entity.hasSlug %}{{ entity.slug }}{% endif %}#{{ entity.id }}
{{ 'Source'|trans }}: {% if entity.hasSlug %}{{ entity.slug }}{% endif %}#{{ entity.id }}
</h1>
<div id="accordion">
{% for action in layer_action_map.getActions('source') %}
<div class="card">
<div class="card-header" id="headingExecute">
<div class="card-header" id="heading_{{ action }}">
<h5 class="mb-0">
<button class="btn btn-link collapsed" data-toggle="collapse"
data-target="#collapseExecute" aria-expanded="false"
aria-controls="collapseExecute">
<i class="fas fa-microchip"></i> Execute
data-target="#collapse_{{ action }}" aria-expanded="false"
aria-controls="collapse_{{ action }}">
<i class="{{ action_icon_class_map.getIconClass(action) }}"></i> {{ action|trans }}
</button>
</h5>
</div>
<div id="collapseExecute" class="collapse"
aria-labelledby="headingExecute" data-parent="#accordion">
<div id="collapse_{{ action }}" class="collapse"
aria-labelledby="heading_{{ action }}" data-parent="#accordion">
<div class="card-body">Anim pariatur cliche reprehenderit, enim
eiusmod high life accusamus terry richardson ad squid. 3 wolf moon
officia aute, non cupidatat skateboard dolor brunch. Food truck
@@ -33,6 +32,11 @@ Source
accusamus labore sustainable VHS.</div>
</div>
</div>
{% endfor %}
</div>
<hr />
<div id="accordion">
<div class="card">
<div class="card-header" id="headingOne">
<h5 class="mb-0">
@@ -50,54 +54,6 @@ Source
</div>
</div>
</div>
<div class="card">
<div class="card-header" id="headingTwo">
<h5 class="mb-0">
<button class="btn btn-link collapsed" data-toggle="collapse"
data-target="#collapseTwo" aria-expanded="false"
aria-controls="collapseTwo">
<i class="fas fa-pencil-alt"></i> Update
</button>
</h5>
</div>
<div id="collapseTwo" class="collapse" aria-labelledby="headingTwo"
data-parent="#accordion">
<div class="card-body">Anim pariatur cliche reprehenderit, enim
eiusmod high life accusamus terry richardson ad squid. 3 wolf moon
officia aute, non cupidatat skateboard dolor brunch. Food truck
quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt
aliqua put a bird on it squid single-origin coffee nulla assumenda
shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes
anderson cred nesciunt sapiente ea proident. Ad vegan excepteur
butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw
denim aesthetic synth nesciunt you probably haven't heard of them
accusamus labore sustainable VHS.</div>
</div>
</div>
<div class="card">
<div class="card-header" id="headingDelete">
<h5 class="mb-0">
<button class="btn btn-link collapsed" data-toggle="collapse"
data-target="#collapseDelete" aria-expanded="false"
aria-controls="collapseDelete">
<i class="fas fa-trash-alt"></i> Delete
</button>
</h5>
</div>
<div id="collapseDelete" class="collapse"
aria-labelledby="headingDelete" data-parent="#accordion">
<div class="card-body">Anim pariatur cliche reprehenderit, enim
eiusmod high life accusamus terry richardson ad squid. 3 wolf moon
officia aute, non cupidatat skateboard dolor brunch. Food truck
quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt
aliqua put a bird on it squid single-origin coffee nulla assumenda
shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes
anderson cred nesciunt sapiente ea proident. Ad vegan excepteur
butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw
denim aesthetic synth nesciunt you probably haven't heard of them
accusamus labore sustainable VHS.</div>
</div>
</div>
<div class="card">
<div class="card-header" id="headingThree">
<h5 class="mb-0">
@@ -30,7 +30,7 @@ class RequestedActionServiceIntegrationTest extends KernelTestCase
public function testActionAccessors(): void
{
$actionType = ActionType::THREAD;
$actionType = ActionType::EXECUTE;
$this->assertNull($this->requestedActionService->setActionType($actionType));
$this->assertEquals($actionType, $this->requestedActionService->getActionType());
}
@@ -49,7 +49,7 @@ class RequestedActionTest extends TestCase
public function testList(): void
{
$list = ActionType::THREAD;
$list = ActionType::EXECUTE;
$this->action->setActionType($list);
$this->assertEquals($list, $this->action->getActionType());
$this->assertEquals(CRUDType::READ, $this->requestedRight->getCrud());