Skip to content

Commit

Permalink
IBX-3388: Updated language details according to invsion project (#509)
Browse files Browse the repository at this point in the history
Co-authored-by: katarzynazawada <>
  • Loading branch information
lucasOsti committed Jul 29, 2022
1 parent 1a14d58 commit 44df9eb
Show file tree
Hide file tree
Showing 2 changed files with 97 additions and 84 deletions.
135 changes: 61 additions & 74 deletions src/bundle/Resources/views/themes/admin/language/index.html.twig
Expand Up @@ -22,87 +22,74 @@
} %}
{% endblock %}

{% block content %}
<section class="container ibexa-container">
{% set body_row_cols = [] %}

{% set body_row_cols = body_row_cols|merge([
{ content: language.name },
{ content: language.languageCode },
{ content: language.id },
]) %}

{% set col_raw %}
<input
type="checkbox"
title="{{ language.enabled ? 'language.enabled'|trans|desc('Enabled') : 'language.enabled'|trans|desc('Enabled') }}"
disabled
{% if language.enabled %}checked{% endif %}
>
{% endset %}
{% set body_row_cols = body_row_cols|merge([{
content: col_raw,
raw: true,
}]) %}

{% set col_raw %}
{% if can_administrate %}
{% block context_menu %}
{% if can_administrate %}
<ul class="ibexa-context-menu">
<li class="ibexa-context-menu__item">
<a
href="{{ path('ibexa.language.edit', {'languageId': language.id}) }}"
class="btn ibexa-btn ibexa-btn--ghost ibexa-btn--no-text"
title="{{ 'language.edit'|trans|desc('Edit') }}"
class="btn ibexa-btn ibexa-btn--primary"
>
<svg class="ibexa-icon ibexa-icon--small ibexa-icon--edit">
<use xlink:href="{{ ibexa_icon_path('edit') }}"></use>
</svg>
<span class="ibexa-btn__label">
{{ 'language.edit'|trans|desc('Edit') }}
</span>
</a>
{% endif %}
{% endset %}
{% set body_row_cols = body_row_cols|merge([{
has_action_btns: true,
content: col_raw,
raw: true,
}]) %}
</li>
<li class="ibexa-context-menu__item">
{{ form_start(deleteForm, {"action": path("ibexa.language.delete", {"languageId": language.id, "redirectErrorsTo": "view"})}) }}
{{ form_widget(deleteForm.language) }}

{% embed '@ibexadesign/ui/component/table/table.html.twig' with {
headline: 'language.information.header'|trans|desc('Language information'),
head_cols: [
{ content: 'language.name.label'|trans|desc('Name') },
{ content: 'language.code.label'|trans|desc('Language code') },
{ content: 'language.id.label'|trans|desc('ID') },
{ content: 'language.enabled.label'|trans|desc('Enabled') },
{ },
],
body_rows: [{ cols: body_row_cols }],
} %}
{% block header %}
{% embed '@ibexadesign/ui/component/table/table_header.html.twig' %}
{% block actions %}
{% if can_administrate %}
{{ form_start(deleteForm, {"action": path("ibexa.language.delete", {"languageId": language.id, "redirectErrorsTo": "view"})}) }}
<button
type="button"
class="btn ibexa-btn ibexa-btn--secondary"
data-bs-toggle="modal"
data-bs-target="#delete-language-modal"
>
<span class="ibexa-btn__label">
{{ 'language.delete_language'|trans|desc('Delete') }}
</span>
</button>

{{ form_widget(deleteForm.language) }}
<button
type="button"
class="btn ibexa-btn ibexa-btn--ghost ibexa-btn--small"
data-bs-toggle="modal"
data-bs-target="#delete-language-modal"
>
<svg class="ibexa-icon ibexa-icon--small">
<use xlink:href="{{ ibexa_icon_path('trash') }}"></use>
</svg>
<span class="ibexa-btn__label">
{{ 'language.delete_language'|trans|desc('Delete') }}
</span>
</button>
{% include '@ibexadesign/language/modal/delete_confirmation.html.twig' with {'deleteForm': deleteForm} %}
{{ form_end(deleteForm) }}
</li>
</ul>
{% endif %}
{% endblock %}

{% include '@ibexadesign/language/modal/delete_confirmation.html.twig' with {'deleteForm': deleteForm} %}
{% block content %}
{% set enable_checkbox_raw %}
<input
type="checkbox"
title="{{ language.enabled ? 'language.enabled'|trans|desc('Enabled') : 'language.disabled'|trans|desc('Disabled') }}"
class="ibexa-input ibexa-input--checkbox"
disabled
{% if language.enabled %}checked{% endif %}
>
{% endset %}
{% set language_items = [
{
label: 'language.name.label'|trans|desc('Name'),
content: language.name,
},
{
label: 'language.code.label'|trans|desc('Language code'),
content: language.languageCode,
},
{
label: 'language.id.label'|trans|desc('ID'),
content: language.id,
},
{
label: 'language.enabled.label'|trans|desc('Enabled'),
content: enable_checkbox_raw,
},
] %}

{{ form_end(deleteForm) }}
{% endif %}
{% endblock %}
{% endembed %}
{% endblock %}
{% endembed %}
<section class="container ibexa-container">
{% include '@ibexadesign/ui/component/details/details.html.twig' with {
headline: 'language.information.header'|trans|desc('Language information'),
items: language_items,
} only %}
</section>
{% endblock %}
46 changes: 36 additions & 10 deletions src/lib/Behat/Page/LanguagePage.php
Expand Up @@ -11,6 +11,8 @@
use Behat\Mink\Session;
use Ibexa\AdminUi\Behat\Component\Dialog;
use Ibexa\AdminUi\Behat\Component\Table\TableBuilder;
use Ibexa\Behat\Browser\Element\Criterion\ChildElementTextCriterion;
use Ibexa\Behat\Browser\Element\Criterion\ElementTextCriterion;
use Ibexa\Behat\Browser\Locator\VisibleCSSLocator;
use Ibexa\Behat\Browser\Page\Page;
use Ibexa\Behat\Browser\Routing\Router;
Expand Down Expand Up @@ -44,28 +46,50 @@ public function __construct(Session $session, Router $router, TableBuilder $tabl

public function delete()
{
$this->getHTMLPage()->find($this->getLocator('deleteButton'))->click();
$this->getHTMLPage()
->findAll($this->getLocator('button'))
->getByCriterion(new ElementTextCriterion('Delete'))
->click();
$this->dialog->verifyIsLoaded();
$this->dialog->confirm();
}

public function hasProperties($data): bool
public function hasProperties(array $languageProperties): bool
{
$hasExpectedEnabledFieldValue = true;
if (array_key_exists('Enabled', $data)) {
if (array_key_exists('Enabled', $languageProperties)) {
// Table does not handle returning non-string values
$hasEnabledField = $this->getHTMLPage()->find($this->getLocator('enabledField'))->getValue() === 'on';
$shouldHaveEnabledField = 'true' === $data['Enabled'];
$shouldHaveEnabledField = 'true' === $languageProperties['Enabled'];
$hasExpectedEnabledFieldValue = $hasEnabledField === $shouldHaveEnabledField;
unset($data['Enabled']);
unset($languageProperties['Enabled']);
}

return $hasExpectedEnabledFieldValue && $this->table->hasElement($data);
if (!$hasExpectedEnabledFieldValue) {
return false;
}

foreach ($languageProperties as $label => $value) {
$isExpectedValuePresent = $this->getHTMLPage()
->findAll($this->getLocator('languagePropertiesItem'))
->getByCriterion(new ChildElementTextCriterion($this->getLocator('languagePropertiesLabel'), $label))
->find($this->getLocator('languagePropertiesValue'))
->getText() === $value;

if (!$isExpectedValuePresent) {
return false;
}
}

return true;
}

public function edit()
{
$this->getHTMLPage()->find($this->getLocator('editButton'))->click();
$this->getHTMLPage()
->findAll($this->getLocator('button'))
->getByCriterion(new ElementTextCriterion('Edit'))
->click();
}

public function getName(): string
Expand Down Expand Up @@ -107,9 +131,11 @@ protected function specifyLocators(): array
{
return [
new VisibleCSSLocator('pageTitle', '.ibexa-page-title h1'),
new VisibleCSSLocator('deleteButton', 'button[data-bs-original-title="Delete language"]'),
new VisibleCSSLocator('editButton', '[data-bs-original-title="Edit"]'),
new VisibleCSSLocator('enabledField', 'input[data-bs-original-title="Enabled"]'),
new VisibleCSSLocator('button', '.ibexa-btn'),
new VisibleCSSLocator('enabledField', '.ibexa-input--checkbox'),
new VisibleCSSLocator('languagePropertiesItem', '.ibexa-details__item'),
new VisibleCSSLocator('languagePropertiesLabel', '.ibexa-details__item-label'),
new VisibleCSSLocator('languagePropertiesValue', '.ibexa-details__item-content'),
];
}
}

0 comments on commit 44df9eb

Please sign in to comment.