Skip to content

Commit

Permalink
Merge branch '5.x' into 6.x
Browse files Browse the repository at this point in the history
  • Loading branch information
Davidmattei committed Feb 15, 2024
2 parents b30eb8a + a9dec0a commit 064ea2a
Show file tree
Hide file tree
Showing 29 changed files with 634 additions and 169 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,16 @@

{% block label %}
{% if data.revision %}
{{ data.revision.label }}
{{ data.revision|emsco_display }}
{% else %}
{% set info = data.emsId|emsco_document_info %}
{% set release = info.getRevision(data.release.environmentSource.name) %}
{% if release %}
{{ release.label }}
{% set revisionSource = info.getRevision(data.release.environmentSource.name) %}
{% set revisionTarget = info.getRevision(data.release.environmentTarget.name) %}

{% if revisionTarget %}
{{ revisionTarget|emsco_display }}
{% else %}
{{ 'release.release-revisison.missing-revision'|trans({'%ouuid%': data.revisionOuuid, '%environment%': data.release.environmentSource.label}) }}
{{ 'release.release-revisison.missing-revision'|trans({'%label%': revisionSource|emsco_display, '%environment%': data.release.environmentTarget.name}) }}
{% endif %}
{% endif %}
{% endblock label %}
Expand All @@ -25,8 +27,12 @@
</a>
{% else %}
{% set info = data.emsId|emsco_document_info %}
{% set revision = info.getRevision(data.release.environmentSource.name) %}
{% if revision %}
{% set revisionTarget = info.getRevision(data.release.environmentTarget.name) %}
{% if revisionTarget %}
<a href="{{ path('emsco_view_revisions', {ouuid: data.revisionOuuid, type: data.contentType.name, revisionId: revisionTarget.id}) }}">
{{ 'release.release-revisison.revision'|trans({ '%date%' : revisionTarget.created|date(date_time_format) ,'%user%' : revisionTarget.finalizedBy|default('')|displayname }) }}
</a>
{% else %}
{{ 'release.release-revisison.revision-not-applicable'|trans }}
{% endif %}
{% endif %}
Expand Down Expand Up @@ -59,7 +65,9 @@
{% set revision = info.getRevision(data.release.environmentTarget) %}
{% set stil_in_target = (data.revision.id is same as (revision.id)) %}
{% else %}
{% set stil_in_target = true %}
{% set info = data.emsId|emsco_document_info %}
{% set revisionTarget = info.getRevision(data.release.environmentTarget.name) %}
{% set stil_in_target = (revisionTarget ? true : false) %}
{% endif %}
{% if stil_in_target %}
<i class="fa fa-check-square"><span class="visually-hidden"</span>{{ 'release.release-revisison.still_in_target'|trans({'%target%': data.release.environmentTarget.label}) }}</i>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
{% use "bootstrap_3_layout.html.twig" %}{% trans_default_domain 'EMSCoreBundle' %}
{% trans_default_domain 'EMSCoreBundle' %}

{% block publish_label %}{{ data.emsLink|emsco_display }}{% endblock %}
{% block unpublish_label %}{{ data.label }}{% endblock %}


{% block minrevid %}
{% set release = app.request.get('release') %}
{% set minrev = data.minrevid|split('/') %}
{% set maxrev = data.maxrevid|split('/') %}

{% if minrev[0] == release.environmentSource.id %}
{{ '%date% Finalized by %user%'|trans({ '%date%' : minrev[2]|date(date_time_format) ,'%user%' : minrev[3] }) }}
{{ '%date% Finalized by %user%'|trans({ '%date%' : minrev[2]|date(date_time_format) ,'%user%' : minrev[3] }) }}
{% elseif maxrev[0] == release.environmentSource.id %}
{{ '%date% Finalized by %user%'|trans({ '%date%' : maxrev[2]|date(date_time_format) ,'%user%' : maxrev[3] }) }}
{{ '%date% Finalized by %user%'|trans({ '%date%' : maxrev[2]|date(date_time_format) ,'%user%' : maxrev[3] }) }}
{% else %}
{{ 'no revision in %env%'|trans({ '%env%' : release.environmentSource.name }) }}
{% endif %}
Expand Down Expand Up @@ -41,9 +43,9 @@
{% set minrev = data.minrevid|split('/') %}
{% set maxrev = data.maxrevid|split('/') %}
{% if maxrev[0] == release.environmentTarget.id %}
{{ '%date% Finalized by %user%'|trans({ '%date%' : maxrev[2]|date(date_time_format) ,'%user%' : maxrev[3] }) }}
{{ '%date% Finalized by %user%'|trans({ '%date%' : maxrev[2]|date(date_time_format) ,'%user%' : maxrev[3] }) }}
{% elseif minrev[0] == release.environmentTarget.id %}
{{ '%date% Finalized by %user%'|trans({ '%date%' : minrev[2]|date(date_time_format) ,'%user%' : minrev[3] }) }}
{{ '%date% Finalized by %user%'|trans({ '%date%' : minrev[2]|date(date_time_format) ,'%user%' : minrev[3] }) }}
{% else %}
{{ 'no revision in %env%'|trans({ '%env%' : release.environmentTarget.name }) }}
{% endif %}
Expand All @@ -53,11 +55,11 @@
{% set release = app.request.get('release') %}
{% set minrev = data.minrevid|split('/') %}
{% set maxrev = data.maxrevid|split('/') %}

{% if minrev[0] == release.environmentSource.id %}
{{ '%date% Finalized by %user%'|trans({ '%date%' : minrev[2]|date(date_time_format) ,'%user%' : minrev[3] }) }}
{{ '%date% Finalized by %user%'|trans({ '%date%' : minrev[2]|date(date_time_format) ,'%user%' : minrev[3] }) }}
{% elseif maxrev[0] == release.environmentSource.id %}
{{ '%date% Finalized by %user%'|trans({ '%date%' : maxrev[2]|date(date_time_format) ,'%user%' : maxrev[3] }) }}
{{ '%date% Finalized by %user%'|trans({ '%date%' : maxrev[2]|date(date_time_format) ,'%user%' : maxrev[3] }) }}
{% else %}
{{ 'Unpublish in %env%'|trans({ '%env%' : release.environmentTarget.name }) }}
{% endif %}
Expand All @@ -68,9 +70,9 @@
{% set release = app.request.get('release') %}
{% set maxrev = data.maxrevid|split('/') %}
{% set minrev = data.minrevid|split('/') %}

{% if maxrev[0] == release.environmentTarget.id %}
{{ '%date% Finalized by %user%'|trans({ '%date%' : maxrev[2]|date(date_time_format) ,'%user%' : maxrev[3] }) }}
{{ '%date% Finalized by %user%'|trans({ '%date%' : maxrev[2]|date(date_time_format) ,'%user%' : maxrev[3] }) }}
{% elseif minrev[0] == release.environmentTarget.id %}
{{ '%date% Finalized by %user%'|trans({ '%date%' : minrev[2]|date(date_time_format) ,'%user%' : minrev[3] }) }}
{% else %}
Expand All @@ -81,4 +83,23 @@
{% elseif maxrev[0] == release.environmentSource.id %}
{{ 'replace by revision %date%'|trans({ '%date%' : maxrev[2]|date(date_time_format) }) }}
{% endif %}
{% endblock maxrevidstatus %}
{% endblock maxrevidstatus %}

{% block unpublish_source %}
<div style="width: 250px">
{{ '%date% Finalized by %user%'|trans({
'%date%': data.default_finalized_date|date(date_time_format),
'%user%': data.default_finalized_by
}) }}
</div>
{% endblock unpublish_source %}

{% block unpublish_target %}
<div style="width: 250px">
{{ '%date% Finalized by %user%'|trans({
'%date%': data.published_finalized_date|date(date_time_format),
'%user%': data.published_finalized_by
}) }}
</div>
{% endblock unpublish_target %}

Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,17 @@
<div class="card-footer">
<div class="btn-group">
{% include '@EMSAdminUI/bootstrap5/elements/get-button.html.twig' with {
'url': path('emsco_release_add_revisions', {'release': release.id} ),
'label': 'release.actions.add_revisions'|trans,
'url': path('emsco_release_add_revisions', {'release': release.id, 'type': 'publish' } ),
'label': 'release.actions.add_publish'|trans,
'icon': 'plus',
'btnType': 'primary',
}%}
{% include '@EMSAdminUI/bootstrap5/elements/get-button.html.twig' with {
'url': path('emsco_release_add_revisions', {'release': release.id, 'type': 'unpublish' } ),
'label': 'release.actions.add_unpublish'|trans,
'icon': 'minus',
'btnType': 'default',
}%}
{% if release.revisions|length > 0 %}
{% include '@EMSAdminUI/bootstrap5/elements/post-button.html.twig' with {
'url': path('emsco_release_set_status', {'release': release.id, 'status': 'ready'}),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
{% extends '@EMSAdminUI/bootstrap5/base/admin.html.twig' %}
{% trans_default_domain 'EMSCoreBundle' %}

{% block title %}{{ 'release.revision.index.title'|trans }}{% endblock %}
{% block title %}
{%- if type == 'publish' -%}
{{- 'release.revision.index.publish'|trans -}}
{%- elseif type == 'unpublish' -%}
{{- 'release.revision.index.unpublish'|trans -}}
{%- endif -%}
{% endblock %}

{% block pagetitle %}{{ block('title') }}{% endblock %}

{% block breadcrumb %}
Expand All @@ -12,12 +19,6 @@
{% endblock %}

{% block body %}
{% set toolbar %}

{% endset %}

{% form_theme form '@EMSAdminUI/bootstrap5/form/forms.html.twig' %}
{{ form(form, {
toolbar: toolbar
}) }}
{{ form(form) }}
{% endblock %}
4 changes: 2 additions & 2 deletions EMS/common-bundle/src/Elasticsearch/Document/Document.php
Original file line number Diff line number Diff line change
Expand Up @@ -62,11 +62,11 @@ public static function fromResult(Result $result): Document
/**
* @param array<string, mixed> $rawData
*/
public static function fromData(ContentType $contentType, string $ouuid, array $rawData, string $index = 'not_available'): Document
public static function fromData(ContentType|string $contentType, string $ouuid, array $rawData, string $index = 'not_available'): Document
{
return new self([
'_source' => \array_merge($rawData, [
EMSSource::FIELD_CONTENT_TYPE => $contentType->getName(),
EMSSource::FIELD_CONTENT_TYPE => \is_string($contentType) ? $contentType : $contentType->getName(),
]),
'_id' => $ouuid,
'_index' => $index,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,23 +8,20 @@
use EMS\CoreBundle\DataTable\Type\Release\ReleaseOverviewDataTableType;
use EMS\CoreBundle\DataTable\Type\Release\ReleasePickDataTableType;
use EMS\CoreBundle\DataTable\Type\Release\ReleaseRevisionDataTableType;
use EMS\CoreBundle\DataTable\Type\Release\ReleaseRevisionsPublishDataTableType;
use EMS\CoreBundle\DataTable\Type\Release\ReleaseRevisionsUnpublishDataTableType;
use EMS\CoreBundle\Entity\Release;
use EMS\CoreBundle\Entity\Revision;
use EMS\CoreBundle\Form\Data\QueryTable;
use EMS\CoreBundle\Form\Data\TableAbstract;
use EMS\CoreBundle\Form\Data\TemplateBlockTableColumn;
use EMS\CoreBundle\Form\Form\ReleaseType;
use EMS\CoreBundle\Form\Form\TableType;
use EMS\CoreBundle\Helper\DataTableRequest;
use EMS\CoreBundle\Routes;
use EMS\CoreBundle\Service\ReleaseRevisionService;
use EMS\CoreBundle\Service\ReleaseService;
use Psr\Log\LoggerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Form\ClickableInterface;
use Symfony\Component\Form\Form;
use Symfony\Component\Form\SubmitButton;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

Expand All @@ -35,24 +32,11 @@ final class ReleaseController extends AbstractController
public function __construct(
private readonly LoggerInterface $logger,
private readonly ReleaseService $releaseService,
private readonly ReleaseRevisionService $releaseRevisionService,
private readonly DataTableFactory $dataTableFactory,
private readonly string $templateNamespace
) {
}

public function ajaxReleaseTableNonMemberRevisions(Request $request, Release $release): Response
{
$table = $this->getNonMemberRevisionsTable($release);
$dataTableRequest = DataTableRequest::fromRequest($request);
$table->resetIterator($dataTableRequest);

return $this->render("@$this->templateNamespace/datatable/ajax.html.twig", [
'dataTableRequest' => $dataTableRequest,
'table' => $table,
], new JsonResponse());
}

public function index(Request $request): Response
{
$table = $this->dataTableFactory->create(ReleaseOverviewDataTableType::class);
Expand Down Expand Up @@ -185,9 +169,13 @@ public function changeStatus(Release $release, string $status): Response
return $this->redirectToRoute(Routes::RELEASE_INDEX);
}

public function addRevisionById(Release $release, Revision $revision): Response
public function addRevisionById(Release $release, Revision $revision, string $type): Response
{
$this->releaseService->addRevision($release, $revision);
match ($type) {
'publish' => $this->releaseService->addRevisionForPublish($release, $revision),
'unpublish' => $this->releaseService->addRevisionForUnpublish($release, $revision),
default => throw new \RuntimeException('invalid type')
};

return $this->redirectToRoute(Routes::VIEW_REVISIONS, [
'type' => $revision->giveContentType()->getName(),
Expand All @@ -196,22 +184,28 @@ public function addRevisionById(Release $release, Revision $revision): Response
]);
}

public function addRevision(Release $release, string $emsLinkToAdd): Response
public function addRevision(Release $release, string $type, string $emsLinkToAdd): Response
{
$this->releaseService->addRevisions($release, [$emsLinkToAdd]);
$this->releaseService->addRevisions($release, $type, [$emsLinkToAdd]);

return $this->redirectToRoute(Routes::RELEASE_EDIT, ['release' => $release->getId()]);
}

public function addRevisions(Request $request, Release $release): Response
public function addRevisions(Request $request, Release $release, string $type): Response
{
$table = $this->getNonMemberRevisionsTable($release);
$tableType = match ($type) {
'publish' => ReleaseRevisionsPublishDataTableType::class,
'unpublish' => ReleaseRevisionsUnpublishDataTableType::class,
default => throw new \RuntimeException('invalid type')
};
$table = $this->dataTableFactory->create($tableType, ['release_id' => $release->getId()]);

$form = $this->createForm(TableType::class, $table);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
if ($form instanceof Form && ($action = $form->getClickedButton()) instanceof SubmitButton) {
match ($action->getName()) {
TableAbstract::ADD_ACTION => $this->releaseService->addRevisions($release, $table->getSelected()),
TableAbstract::ADD_ACTION => $this->releaseService->addRevisions($release, $type, $table->getSelected()),
default => $this->logger->error('log.controller.release.unknown_action'),
};
} else {
Expand All @@ -223,6 +217,7 @@ public function addRevisions(Request $request, Release $release): Response

return $this->render("@$this->templateNamespace/release/revisions.html.twig", [
'form' => $form->createView(),
'type' => $type,
]);
}

Expand All @@ -246,21 +241,4 @@ public function pickRelease(Revision $revision): Response
'revision' => $revision,
]);
}

private function getNonMemberRevisionsTable(Release $release): QueryTable
{
$table = new QueryTable($this->templateNamespace, $this->releaseRevisionService, 'revisions-to-publish', $this->generateUrl(Routes::RELEASE_NON_MEMBER_REVISION_AJAX, ['release' => $release->getId()]), $release);
$table->setMassAction(true);
$table->setLabelAttribute('item_labelField');
$table->setIdField('emsLink');
$table->addColumn('release.revision.index.column.label', 'item_labelField');
$table->addColumn('release.revision.index.column.CT', 'content_type_singular_name');
$table->setSelected($release->getRevisionsOuuids());
$table->addColumnDefinition(new TemplateBlockTableColumn('release.revision.index.column.minRevId', 'minrevid', "@$this->templateNamespace/release/columns/revisions.html.twig"));
$table->addColumnDefinition(new TemplateBlockTableColumn('release.revision.index.column.maxRevId', 'maxrevid', "@$this->templateNamespace/release/columns/revisions.html.twig"));
$table->addTableAction(TableAbstract::ADD_ACTION, 'fa fa-plus', 'release.revision.actions.add', 'release.revision.actions.add_confirm');
$table->addDynamicItemPostAction(Routes::RELEASE_ADD_REVISION, 'release.revision.action.add', 'plus', 'release.revision.actions.add_confirm', ['release' => \sprintf('%d', $release->getId()), 'emsLinkToAdd' => 'emsLink']);

return $table;
}
}
22 changes: 22 additions & 0 deletions EMS/core-bundle/src/Core/DataTable/DataTableFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,11 @@
namespace EMS\CoreBundle\Core\DataTable;

use EMS\CoreBundle\Core\DataTable\Type\AbstractEntityTableType;
use EMS\CoreBundle\Core\DataTable\Type\AbstractQueryTableType;
use EMS\CoreBundle\Core\DataTable\Type\DataTableTypeCollection;
use EMS\CoreBundle\Core\DataTable\Type\DataTableTypeInterface;
use EMS\CoreBundle\Form\Data\EntityTable;
use EMS\CoreBundle\Form\Data\QueryTable;
use EMS\CoreBundle\Form\Data\TableAbstract;
use EMS\CoreBundle\Routes;
use EMS\Helpers\Standard\Hash;
Expand Down Expand Up @@ -59,6 +61,7 @@ private function build(DataTableTypeInterface $type, array $options): TableAbstr

return match (true) {
$type instanceof AbstractEntityTableType => $this->buildEntityTable($type, $ajaxUrl, $options),
$type instanceof AbstractQueryTableType => $this->buildQueryTable($type, $ajaxUrl, $options),
default => throw new \RuntimeException('Unknown dataTableType')
};
}
Expand All @@ -81,6 +84,25 @@ private function buildEntityTable(AbstractEntityTableType $type, string $ajaxUrl
return $table;
}

/**
* @param array<string, mixed> $options
*/
private function buildQueryTable(AbstractQueryTableType $type, string $ajaxUrl, array $options = []): QueryTable
{
$table = new QueryTable(
$this->templateNamespace,
$type->getQueryService(),
$type->getQueryName(),
$ajaxUrl,
$type->getContext($options),
$type->getLoadMaxRows()
);

$type->build($table);

return $table;
}

private function checkRoles(DataTableTypeInterface $type): void
{
$roles = $type->getRoles();
Expand Down
Loading

0 comments on commit 064ea2a

Please sign in to comment.