1
0
mirror of https://github.com/flextype/flextype.git synced 2025-08-18 10:51:21 +02:00

feat(admin-plugin): update dropdowns for content #211

This commit is contained in:
Awilum
2020-01-23 00:51:50 +03:00
parent 84e72351e5
commit 05e445155a

View File

@@ -1,130 +1,252 @@
{% extends "plugins/admin/templates/partials/base.html" %}
{% block content %}
{% if entries_list|length > 0 %}
<table class="table no-margin">
<tbody>
{% for entry in entries_list %}
<tr>
<td style="width: 50px; padding-right: 10px; text-align:center;" class="{% if entry.visibility == 'hidden' or entry.visibility == 'draft' or entry.routable == false %}opacity-50{% endif %}">
{% if entry.fieldset %}
{% set fieldset_path = PATH_FIELDSETS ~ '/' ~ entry.fieldset ~ '.yaml' %}
{% if filesystem_has(fieldset_path) %}
{% set fieldset = parser_decode(filesystem_read(fieldset_path), 'yaml') %}
{% if fieldset.icon %}
<i class="{{ fieldset.icon }}"></i>
{% else %}
<i class="far fa-file-alt"></i>
{% endif %}
{% else %}
<i class="far fa-file-alt"></i>
{% endif %}
{% else %}
<i class="far fa-file-alt"></i>
{% endif %}
</td>
<td style="padding-left:0px;" class="{% if entry.visibility == 'hidden' or entry.visibility == 'draft' or entry.routable == false %}opacity-50{% endif %}">
{% if cache.contains(entry.slug ~ '_counter') %}
{% if entries_list | length > 0 %}
{% if items_view == 'table' %}
<div class="flex flex-wrap">
{% for entry in entries_list %}
{% if cache.contains(entry.slug ~ '_counter') %}
{% set _entries_length = cache.fetch(entry.slug ~ '_counter') %}
{% else %}
{% set _entries = entries.fetch(entry.slug, {}) %}
{% set _entries_length = _entries|length %}
{% do cache.save(entry.slug ~ '_counter', _entries_length) %}
{% endif %}
<a href="{% if _entries_length > 0 %}{{ path_for('admin.entries.index') }}?id={{ entry.slug }}{% else %}{{ path_for('admin.entries.edit') }}?id={{ entry.slug }}&type=editor{% endif %}">
{% if entry.fieldset %}
{% if filesystem_has(fieldset_path) %}
{% if fieldset.default_field %}
{% if entry[fieldset.default_field] != '' %}
{{ entry[fieldset.default_field] }}
{% else %}
{{ entry.slug }}
{% endif %}
{% else %}
{{ entry.slug }}
{% endif %}
{% else %}
{{ entry.slug }}
{% endif %}
{% else %}
{{ entry.slug }}
{% endif %}
{% if _entries_length > 0 %}
({{ _entries_length }})
{% endif %}
</a>
</td>
<td class="text-right">
<div class="btn-group">
<button type="button" class="btn dot dropdown-toggle" data-toggle="dropdown" data-display="static" aria-haspopup="true" aria-expanded="false">
<i class="fas fa-ellipsis-h"></i>
</button>
<div class="dropdown-menu dropdown-menu-lg-right">
<a class="dropdown-item" href="{{ path_for('admin.entries.edit') }}?id={{ entry.slug }}&type=editor"><i class="fas fa-edit"></i> {{ tr('admin_edit') }}</a>
<a class="dropdown-item" href="javascript:;" onclick="$('.js-add-entry input[name=id]').attr('value', '{{ entry.slug }}');" data-toggle="modal" data-target="#selectEntryTypeModal"><i class="fas fa-plus-circle"></i> {{ tr('admin_add') }}</a>
<a class="dropdown-item" href="javascript:;"
onclick="event.preventDefault();
document.getElementById('duplicate-id-{{ entry.slug }}').submit();"><i class="fas fa-copy"></i> {{ tr('admin_duplicate') }}</a>
<a class="dropdown-item" href="{{ path_for('admin.entries.rename') }}?id={{ entry.slug }}"><i class="fas fa-font"></i> {{ tr('admin_rename') }}</a>
<a class="dropdown-item" href="{{ path_for('admin.entries.move') }}?id={{ entry.slug }}"><i class="fas fa-angle-double-right"></i> {{ tr('admin_move') }}</a>
<a class="dropdown-item" href="{{ base_url() }}/{{ entry.slug }}" target="_blank"><i class="fas fa-eye"></i> {{ tr('admin_preview') }}</a>
<a class="dropdown-item" href="{{ path_for('admin.entries.type') }}?id={{ entry.slug }}"><i class="far fa-list-alt"></i> {{ tr('admin_type') }}</a>
<div class="dropdown-divider"></div>
<form id="duplicate-id-{{ entry.slug }}" action="{{ path_for('admin.entries.duplicateProcess') }}" method="POST" style="display: none;">
{{ csrf() }}
<input type="hidden" name="id" value="{{ entry.slug }}">
</form>
<form id="delete-id-{{ entry.slug }}" action="{{ path_for('admin.entries.deleteProcess') }}" method="POST" style="display: none;">
{{ csrf() }}
<input type="hidden" name="id" value="{{ entry.slug }}">
<input type="hidden" name="id-current" value="{{ id_current }}">
</form>
<a class="dropdown-item" href="javascript:;"
onclick="event.preventDefault();
document.getElementById('delete-id-{{ entry.slug }}').submit();"><i class="fas fa-trash-alt"></i> {{ tr('admin_delete') }}</a>
</div>
</div>
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% else %}
<div class="empty-list-message">
<i class="far fa-newspaper"></i>
<h3>{{ tr('admin_you_have_not_created_any_entries_yet') }}</h3>
<a href="javascript:;" data-toggle="modal" data-target="#selectEntryTypeModal" class="btn">{{ tr('admin_create_new_entry') }}</a>
</div>
{% endif %}
{% else %}
{% set _entries = entries.fetch(entry.slug, {}) %}
{% set _entries_length = _entries | length %}
{% do
cache.save(entry.slug ~ '_counter', _entries_length) %}
{% endif %}
<div class="w-full md:w-3/12 lg:w-2/12 text-center p-4 relative">
<button type="button" class="js-dropdown-btn" style="top: 16px; right: 16px; position: absolute; z-index: 10; width: 34px; height: 34px;">
<i class="fas fa-ellipsis-h"></i>
</button>
<div class="js-dropdown dropdown-menu">
<a class="dropdown-menu__item" href="{{ path_for('admin.entries.edit') }}?id={{ entry.slug }}&type=editor">
<i class="fas fa-edit dropdown-menu__icon"></i>
{{ tr('admin_edit') }}</a>
<a class="dropdown-menu__item" href="javascript:;" onclick="$('.js-add-entry input[name=id]').attr('value', '{{ entry.slug }}');" data-toggle="modal" data-target="#selectEntryTypeModal">
<i class="fas fa-plus-circle dropdown-menu__icon"></i>
{{ tr('admin_add') }}</a>
<a class="dropdown-menu__item" href="javascript:;" onclick="event.preventDefault();
document.getElementById('duplicate-id-{{ entry.slug }}').submit();">
<i class="fas fa-copy dropdown-menu__icon"></i>
{{ tr('admin_duplicate') }}</a>
<a class="dropdown-menu__item" href="{{ path_for('admin.entries.rename') }}?id={{ entry.slug }}">
<i class="fas fa-font dropdown-menu__icon"></i>
{{ tr('admin_rename') }}</a>
<a class="dropdown-menu__item" href="{{ path_for('admin.entries.move') }}?id={{ entry.slug }}">
<i class="fas fa-angle-double-right dropdown-menu__icon"></i>
{{ tr('admin_move') }}</a>
<a class="dropdown-menu__item" href="{{ base_url() }}/{{ entry.slug }}" target="_blank">
<i class="fas fa-eye dropdown-menu__icon"></i>
{{ tr('admin_preview') }}</a>
<a class="dropdown-menu__item" href="{{ path_for('admin.entries.type') }}?id={{ entry.slug }}">
<i class="far fa-list-alt dropdown-menu__icon"></i>
{{ tr('admin_type') }}</a>
<div class="dropdown-menu__divider"></div>
<a class="dropdown-menu__item" href="javascript:;" onclick="event.preventDefault();
document.getElementById('delete-id-{{ entry.slug }}').submit();">
<i class="fas fa-trash-alt dropdown-menu__icon"></i>
{{ tr('admin_delete') }}</a>
<form id="duplicate-id-{{ entry.slug }}" action="{{ path_for('admin.entries.duplicateProcess') }}" method="POST" style="display: none;">
{{ csrf() }}
<input type="hidden" name="id" value="{{ entry.slug }}">
</form>
<form id="delete-id-{{ entry.slug }}" action="{{ path_for('admin.entries.deleteProcess') }}" method="POST" style="display: none;">
{{ csrf() }}
<input type="hidden" name="id" value="{{ entry.slug }}">
<input type="hidden" name="id-current" value="{{ id_current }}">
</form>
</div>
<div class="modal fade" id="selectEntryTypeModal" tabindex="-1" role="dialog" aria-labelledby="selectEntryTypeModal" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="selectEntryTypeModalLabel">{{ tr('admin_select_entry_type') }}</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<ul class="fieldset-selector row">
{% for key, fieldset in fieldsets %}
<li class="col-md-4">
<a href="javascript:;" onclick="event.preventDefault();
<a
href="{% if _entries_length > 0 %}{{ path_for('admin.entries.index') }}?id={{ entry.slug }}{% else %}{{ path_for('admin.entries.edit') }}?id={{ entry.slug }}&type=editor{% endif %}"
class="block bg-gray-000 border-gray-100 border px-4 py-8 relative">
<div class="text-4xl">
{% if entry.fieldset %}
{% set fieldset_path = PATH_FIELDSETS ~ '/' ~ entry.fieldset ~ '.yaml' %}
{% if filesystem_has(fieldset_path) %}
{% set fieldset = parser_decode(filesystem_read(fieldset_path), 'yaml') %}
{% if fieldset.icon %}
<i class="{{ fieldset.icon }}"></i>
{% else %}
<i class="far fa-file-alt"></i>
{% endif %}
{% else %}
<i class="far fa-file-alt"></i>
{% endif %}
{% else %}
<i class="far fa-file-alt"></i>
{% endif %}
</div>
<div>
{% if entry.fieldset %}
{% if filesystem_has(fieldset_path) %}
{% if fieldset.default_field %}
{% if entry[fieldset.default_field] != '' %}
{{ entry[fieldset.default_field] }}
{% else %}
{{ entry.slug }}
{% endif %}
{% else %}
{{ entry.slug }}
{% endif %}
{% else %}
{{ entry.slug }}
{% endif %}
{% else %}
{{ entry.slug }}
{% endif %}
{% if _entries_length > 0 %}
({{ _entries_length }})
{% endif %}
</div>
</a>
</div>
{% endfor %}
</div>
{% else %}
<table>
<tbody>
{% for entry in entries_list %}
<tr>
<td class="w-1 text-center {% if entry.visibility == 'hidden' or entry.visibility == 'draft' or entry.routable == false %}opacity-50{% endif %}">
{% if entry.fieldset %}
{% set fieldset_path = PATH_FIELDSETS ~ '/' ~ entry.fieldset ~ '.yaml' %}
{% if filesystem_has(fieldset_path) %}
{% set fieldset = parser_decode(filesystem_read(fieldset_path), 'yaml') %}
{% if fieldset.icon %}
<i class="{{ fieldset.icon }}"></i>
{% else %}
<i class="far fa-file-alt"></i>
{% endif %}
{% else %}
<i class="far fa-file-alt"></i>
{% endif %}
{% else %}
<i class="far fa-file-alt"></i>
{% endif %}
</td>
<td class="pl-0 {% if entry.visibility == 'hidden' or entry.visibility == 'draft' or entry.routable == false %}opacity-50{% endif %}">
{% if cache.contains(entry.slug ~ '_counter') %}
{% set _entries_length = cache.fetch(entry.slug ~ '_counter') %}
{% else %}
{% set _entries = entries.fetch(entry.slug, {}) %}
{% set _entries_length = _entries | length %}
{% do
cache.save(entry.slug ~ '_counter', _entries_length) %}
{% endif %}
<a href="{% if _entries_length > 0 %}{{ path_for('admin.entries.index') }}?id={{ entry.slug }}{% else %}{{ path_for('admin.entries.edit') }}?id={{ entry.slug }}&type=editor{% endif %}">
{% if entry.fieldset %}
{% if filesystem_has(fieldset_path) %}
{% if fieldset.default_field %}
{% if entry[fieldset.default_field] != '' %}
{{ entry[fieldset.default_field] }}
{% else %}
{{ entry.slug }}
{% endif %}
{% else %}
{{ entry.slug }}
{% endif %}
{% else %}
{{ entry.slug }}
{% endif %}
{% else %}
{{ entry.slug }}
{% endif %}
{% if _entries_length > 0 %}
({{ _entries_length }})
{% endif %}
</a>
</td>
<td class="text-right">
<button type="button" class="js-dropdown-btn">
<i class="fas fa-ellipsis-h"></i>
</button>
<div class="js-dropdown dropdown-menu">
<a class="dropdown-menu__item" href="{{ path_for('admin.entries.edit') }}?id={{ entry.slug }}&type=editor">
<i class="fas fa-edit dropdown-menu__icon"></i>
{{ tr('admin_edit') }}</a>
<a class="dropdown-menu__item" href="javascript:;" onclick="$('.js-add-entry input[name=id]').attr('value', '{{ entry.slug }}');" data-toggle="modal" data-target="#selectEntryTypeModal">
<i class="fas fa-plus-circle dropdown-menu__icon"></i>
{{ tr('admin_add') }}</a>
<a class="dropdown-menu__item" href="javascript:;" onclick="event.preventDefault();
document.getElementById('duplicate-id-{{ entry.slug }}').submit();">
<i class="fas fa-copy dropdown-menu__icon"></i>
{{ tr('admin_duplicate') }}</a>
<a class="dropdown-menu__item" href="{{ path_for('admin.entries.rename') }}?id={{ entry.slug }}">
<i class="fas fa-font dropdown-menu__icon"></i>
{{ tr('admin_rename') }}</a>
<a class="dropdown-menu__item" href="{{ path_for('admin.entries.move') }}?id={{ entry.slug }}">
<i class="fas fa-angle-double-right dropdown-menu__icon"></i>
{{ tr('admin_move') }}</a>
<a class="dropdown-menu__item" href="{{ base_url() }}/{{ entry.slug }}" target="_blank">
<i class="fas fa-eye dropdown-menu__icon"></i>
{{ tr('admin_preview') }}</a>
<a class="dropdown-menu__item" href="{{ path_for('admin.entries.type') }}?id={{ entry.slug }}">
<i class="far fa-list-alt dropdown-menu__icon"></i>
{{ tr('admin_type') }}</a>
<div class="dropdown-menu__divider"></div>
<a class="dropdown-menu__item" href="javascript:;" onclick="event.preventDefault();
document.getElementById('delete-id-{{ entry.slug }}').submit();">
<i class="fas fa-trash-alt dropdown-menu__icon"></i>
{{ tr('admin_delete') }}</a>
<form id="duplicate-id-{{ entry.slug }}" action="{{ path_for('admin.entries.duplicateProcess') }}" method="POST" style="display: none;">
{{ csrf() }}
<input type="hidden" name="id" value="{{ entry.slug }}">
</form>
<form id="delete-id-{{ entry.slug }}" action="{{ path_for('admin.entries.deleteProcess') }}" method="POST" style="display: none;">
{{ csrf() }}
<input type="hidden" name="id" value="{{ entry.slug }}">
<input type="hidden" name="id-current" value="{{ id_current }}">
</form>
</div>
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
{% else %}
<div class="empty-list-message">
<i class="far fa-newspaper"></i>
<h3>{{ tr('admin_you_have_not_created_any_entries_yet') }}</h3>
<a href="javascript:;" data-toggle="modal" data-target="#selectEntryTypeModal" class="btn">{{ tr('admin_create_new_entry') }}</a>
</div>
{% endif %}
<div class="modal fade hidden" id="selectEntryTypeModal" tabindex="-1" role="dialog" aria-labelledby="selectEntryTypeModal" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="selectEntryTypeModalLabel">{{ tr('admin_select_entry_type') }}</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<ul class="fieldset-selector row">
{% for key, fieldset in fieldsets %}
<li class="col-md-4">
<a href="javascript:;" onclick="event.preventDefault();
document.getElementById('add-entry-{{ key }}').submit();" class="fieldset-item">
<div class="fieldset-thumbnail">{% if fieldset.icon %}<i class="{{ fieldset.icon }}"></i>{% else %}<i class="far fa-file-alt"></i>{% endif %}</div>
<div class="fieldset-title">{{ fieldset.title }}</div>
</a>
</li>
<form id="add-entry-{{ key }}" action="{{ path_for('admin.entries.selectEntryTypeProcess') }}" method="POST" style="display: none;" class='js-add-entry'>
{{ csrf() }}
<input type="hidden" name="type" value="{{ key }}">
<input type="hidden" name="id" value="{{ id_current }}">
</form>
{% endfor %}
</ul>
</div>
<div class="fieldset-thumbnail">
{% if fieldset.icon %}
<i class="{{ fieldset.icon }}"></i>
{% else %}
<i class="far fa-file-alt"></i>
{% endif %}
</div>
<div class="fieldset-title">{{ fieldset.title }}</div>
</a>
</li>
<form id="add-entry-{{ key }}" action="{{ path_for('admin.entries.selectEntryTypeProcess') }}" method="POST" style="display: none;" class='js-add-entry'>
{{ csrf() }}
<input type="hidden" name="type" value="{{ key }}">
<input type="hidden" name="id" value="{{ id_current }}">
</form>
{% endfor %}
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
{% endblock %}