Implemented functions for optimizing source.html.twig

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

View File

@ -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"

View File

@ -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',
];
}

View File

@ -0,0 +1,12 @@
<?php
namespace Infinito\Domain\ActionManagement\Execute;
use Infinito\Domain\ActionManagement\AbstractAction;
/**
* @author kevinfrantz
*/
abstract class AbstractExecuteAction extends AbstractAction
{
}

View File

@ -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}

View File

@ -1,12 +0,0 @@
<?php
namespace Infinito\Domain\ActionManagement\Thread;
use Infinito\Domain\ActionManagement\AbstractAction;
/**
* @author kevinfrantz
*/
abstract class AbstractThreadAction extends AbstractAction
{
}

View File

@ -20,7 +20,7 @@ final class LayerActionMap extends AbstractMap implements LayerActionMapInterfac
ActionType::CREATE,
ActionType::UPDATE,
ActionType::DELETE,
ActionType::THREAD,
ActionType::EXECUTE,
],
];

View File

@ -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,

View File

@ -26,7 +26,7 @@ final class ActionHttpMethodMap extends AbstractMap implements ActionHttpMethodM
Request::METHOD_GET,
Request::METHOD_DELETE,
],
ActionType::THREAD => [
ActionType::EXECUTE => [
Request::METHOD_GET,
],
];

View File

@ -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,
];
/**

View File

@ -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!");
}
}

View File

@ -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;
}

View File

@ -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">

View File

@ -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());
}

View File

@ -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());