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:
@@ -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">×</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">×</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 %}
|
Reference in New Issue
Block a user