Initial commit

This commit is contained in:
2025-07-15 23:39:10 +02:00
parent 1d3986a901
commit fb14214612
181 changed files with 31070 additions and 50 deletions

View File

@ -0,0 +1,4 @@
<form method="post" action="{{ path('bo_region_delete', {'id': region.id}) }}" onsubmit="return confirm('Are you sure you want to delete this item?');">
<input type="hidden" name="_token" value="{{ csrf_token('delete' ~ region.id) }}">
<button class="btn">Delete</button>
</form>

View File

@ -0,0 +1,108 @@
{{ form_start(form) }}
<div class="sp_form-row__select">
{{ form_label(form.parentRegion) }}
{{ form_widget(form.parentRegion) }}
</div>
<div class="sp_form-row__text">
{{ form_label(form.name) }}
{{ form_widget(form.name) }}
</div>
<div class="sp_form-row__text">
{{ form_label(form.slug) }}
{{ form_widget(form.slug) }}
</div>
<div class="sp_form-row__radio sp_radio__layout-grid-b sp_radio__style-text">
{{ form_label(form.isAlias, 'Is it an alias of parent region ?', {'label_attr': {'class': 'sp_radio__main-label'}}) }}
<div class="sp_radio__container">
{% for key, choice in form.isAlias %}
<label class="sp_radio__input-wrapper" title="{{ choice.vars.label }}">
<span class="sp_radio__input-mark"></span>
<span class="sp_radio__input-label">{{ choice.vars.label }}</span>
<input name="{{ choice.vars.full_name }}" type="{{ choice.parent.vars.multiple ? 'checkbox' : 'radio' }}" value="{{ choice.vars.value }}" {% if key == 0 and choice.vars.required %}required{% endif%} {% if choice.vars.checked %}checked{% endif %}>
</label>
{% endfor %}
{% do form.isAlias.setRendered %}
</div>
</div>
<div class="sp_form-row__text">
{{ form_label(form.anchor, 'Alias anchor') }}
{{ form_widget(form.anchor) }}
</div>
<div class="sp_form-row__textarea">
{{ form_label(form.description) }}
{{ form_widget(form.description) }}
</div>
<div class="sp_form-row__radio sp_radio__layout-inline sp_radio__style-button">
<div class="sp_radio__container">
{% for key, choice in form.icon %}
<label class="sp_radio__input-wrapper" title="{{ choice.vars.label }}">
<span class="sp_radio__input-icon">
<img src="{{ asset(choice.vars.name == 'placeholder' ? assets.img.none : assets.img.region~choice.vars.value) }}" alt="{{ choice.vars.value }}">
</span>
<input name="{{ choice.vars.full_name }}" type="radio" value="{{ choice.vars.value }}" {% if key == 0 and choice.vars.required %}required{% endif%} {% if choice.vars.checked %}checked{% endif %}>
</label>
{% endfor %}
{% do form.icon.setRendered %}
</div>
</div>
<div class="sp_form-row__radio sp_radio__layout-grid-b sp_radio__style-text">
{{ form_label(form.mapBackground, 'Is region active ?', {'label_attr': {'class': 'sp_radio__main-label'}}) }}
<div class="sp_radio__container">
{% for key, choice in form.mapBackground %}
<label class="sp_radio__input-wrapper" title="{{ choice.vars.label }}">
<span class="sp_radio__input-mark"></span>
<span class="sp_radio__input-label">{{ choice.vars.label }}</span>
<input name="{{ choice.vars.full_name }}" type="{{ choice.parent.vars.multiple ? 'checkbox' : 'radio' }}" value="{{ choice.vars.value }}" {% if key == 0 and choice.vars.required %}required{% endif%} {% if choice.vars.checked %}checked{% endif %}>
</label>
{% endfor %}
{% do form.mapBackground.setRendered %}
</div>
</div>
{% if route|end_with('_new') %}
<div class="sp_form-row__text">
{{ form_label(form.gridHeight) }}
{{ form_widget(form.gridHeight) }}
</div>
<div class="sp_form-row__text">
{{ form_label(form.gridWidth) }}
{{ form_widget(form.gridWidth) }}
</div>
{% endif %}
<div class="sp_form-row__select">
{{ form_label(form.version) }}
{{ form_widget(form.version) }}
</div>
<div class="sp_form-row__text">
{{ form_label(form.sortOrder) }}
{{ form_widget(form.sortOrder) }}
</div>
<div class="sp_form-row__radio sp_radio__layout-grid-b sp_radio__style-text">
{{ form_label(form.isActive, 'Is region active ?', {'label_attr': {'class': 'sp_radio__main-label'}}) }}
<div class="sp_radio__container">
{% for key, choice in form.isActive %}
<label class="sp_radio__input-wrapper" title="{{ choice.vars.label }}">
<span class="sp_radio__input-mark"></span>
<span class="sp_radio__input-label">{{ choice.vars.label }}</span>
<input name="{{ choice.vars.full_name }}" type="{{ choice.parent.vars.multiple ? 'checkbox' : 'radio' }}" value="{{ choice.vars.value }}" {% if key == 0 and choice.vars.required %}required{% endif%} {% if choice.vars.checked %}checked{% endif %}>
</label>
{% endfor %}
{% do form.isActive.setRendered %}
</div>
</div>
<div class="sp_form-row__button">
<a class="sp_button" href="{{ path('bo_region_index') }}" data-type="cancel">
<span>Cancel</span>
</a>
<button class="sp_button" data-type="validate" type="submit">
<span>Save</span>
</button>
</div>
{{ form_end(form) }}

View File

@ -0,0 +1,7 @@
{% extends '_dashboard/base.html.twig' %}
{% block page_content %}
{{ include('_dashboard/region/_form.html.twig', {'button_label': 'Update'}) }}
{{ include('_dashboard/region/_delete_form.html.twig') }}
{% endblock %}

View File

@ -0,0 +1,69 @@
{% extends '_dashboard/base.html.twig' %}
{% block page_content %}
<table class="table" style="width: 100%;">
<thead>
<tr>
{#<th>Id</th>#}
<th>Name</th>
{#<th>Icon</th>#}
{#<th>GridHeight</th>#}
{#<th>GridWidth</th>#}
<th>Version</th>
<th>SortOrder</th>
<th>isActive</th>
<th style="width: 260px">actions</th>
</tr>
</thead>
<tbody>
{% for _region in regions %}
<tr>
{#<td>{{ region.id }}</td>#}
<td><img {% if _region.icon %}data-src="{{ asset(assets.img.region ~ _region.icon) }}{% endif %}" src="{{ asset(assets.img._black_xs) }}" alt style="height: 48px; width: auto;"> {{ _region.name }}</td>
{#<td>{{ region.icon }}</td>#}
{#<td>{{ region.gridHeight }}</td>#}
{#<td>{{ region.gridWidth }}</td>#}
<td>{{ _region.version }}</td>
<td>{{ _region.sortOrder }}</td>
<td>{{ _region.isActive ? 'yes' : 'no' }}</td>
<td>
<div style="display: grid; grid-template-columns: repeat(3, 1fr); text-align: center">
<a href="{{ path('bo_region_grid_index', {'regionId': _region.id}) }}">Show map</a>
<a href="{{ path('bo_region_edit', {'id': _region.id}) }}">Edit region</a>
<a href="{{ path('bo_region_grid_edit', {'regionId': _region.id}) }}">Edit grid</a>
</div>
</td>
</tr>
{% for _subRegion in _region.subRegions %}
<tr>
{#<td>{{ region.id }}</td>#}
<td><img src="{{ asset(_subRegion.icon ? assets.img.region ~ _subRegion.icon : assets.img._black_xs) }}" alt style="height: 48px; width: auto;"> {{ _subRegion.name }}</td>
{#<td>{{ region.icon }}</td>#}
{#<td>{{ region.gridHeight }}</td>#}
{#<td>{{ region.gridWidth }}</td>#}
<td>{{ _subRegion.version }}</td>
<td>{{ _subRegion.sortOrder }}</td>
<td>{{ _subRegion.isActive ? 'yes' : 'no' }}</td>
<td>
<div style="display: grid; grid-template-columns: repeat(3, 1fr); text-align: center">
{% if _subRegion.isAlias %}
<a href="{{ path('bo_region_edit', {'id': _subRegion.id}) }}">Edit region</a>
{% else %}
<a href="{{ path('bo_region_grid_index', {'regionId': _subRegion.id}) }}" style="margin-right: 20px;">Show map</a>
<a href="{{ path('bo_region_edit', {'id': _subRegion.id}) }}">Edit region</a>
<a href="{{ path('bo_region_grid_edit', {'regionId': _region.id}) }}">Edit grid</a>
{% endif %}
</div>
</td>
</tr>
{% endfor %}
{% else %}
<tr>
<td colspan="6">no records found</td>
</tr>
{% endfor %}
</tbody>
</table>
<a href="{{ path('bo_region_new') }}">Create new</a>
{% endblock %}

View File

@ -0,0 +1,5 @@
{% extends '_dashboard/base.html.twig' %}
{% block page_content %}
{{ include('_dashboard/region/_form.html.twig') }}
{% endblock %}