Files
dockerfluxodecaixapro/modules/pagebuilder/views/admin/form.twig
T
2026-09-01 10:46:29 -03:00

130 lines
7.3 KiB
Twig
Executable File

{% extends "layouts/dashboard.twig" %}
{% block title %}{{ title }}{% endblock %}
{% block content %}
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<h5 class="mb-0">{{ title }}</h5>
</div>
<div class="card-body">
{% if session_has('success') %}
<div class="alert alert-success alert-dismissible fade show" role="alert">
{{ session_get('success') }}
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
{% endif %}
{% if errors|length > 0 %}
<div class="alert alert-danger">
<ul class="mb-0">
{% for error in errors.all() %}
<li>{{ error }}</li>
{% endfor %}
</ul>
</div>
{% endif %}
<form action="{{ page ? url('/admin/pages/' ~ page.pages_id) : url('/admin/pages') }}" method="POST">
{% if page %}
<input type="hidden" name="_method" value="PUT">
{% endif %}
<div class="row">
<div class="col-md-8">
<div class="mb-3">
<label for="pages_title" class="form-label">{{ __('pagebuilder.title') }} *</label>
<input type="text" class="form-control" id="pages_title" name="pages_title" value="{{ old('pages_title', page.pages_title ?? '') }}" required>
</div>
</div>
<div class="col-md-4">
<div class="mb-3">
<label for="pages_slug" class="form-label">{{ __('pagebuilder.slug') }} *</label>
<input type="text" class="form-control" id="pages_slug" name="pages_slug" value="{{ old('pages_slug', page.pages_slug ?? '') }}" required>
<div class="form-text">{{ __('pagebuilder.slug_help') }}</div>
</div>
</div>
</div>
<div class="mb-3">
<label for="pages_content" class="form-label">{{ __('pagebuilder.form.content_label') }}</label>
<div id="quill-editor" style="height: 300px;" data-target="pages_content">{{ old('pages_content', page.pages_content ?? '')|raw }}</div>
<textarea class="form-control" id="pages_content" name="pages_content" style="display:none">{{ old('pages_content', page.pages_content ?? '') }}</textarea>
</div>
<div class="row">
<div class="col-md-6">
<div class="mb-3">
<label for="pages_meta_title" class="form-label">{{ __('pagebuilder.meta_title') }}</label>
<input type="text" class="form-control" id="pages_meta_title" name="pages_meta_title" value="{{ old('pages_meta_title', page.pages_meta_title ?? '') }}">
<div class="form-text">{{ __('pagebuilder.meta_title_help') }}</div>
</div>
</div>
<div class="col-md-6">
<div class="mb-3">
<label for="pages_meta_keywords" class="form-label">{{ __('pagebuilder.meta_keywords') }}</label>
<input type="text" class="form-control" id="pages_meta_keywords" name="pages_meta_keywords" value="{{ old('pages_meta_keywords', page.pages_meta_keywords ?? '') }}">
<div class="form-text">{{ __('pagebuilder.meta_keywords_help') }}</div>
</div>
</div>
</div>
<div class="mb-3">
<label for="pages_meta_description" class="form-label">{{ __('pagebuilder.meta_description') }}</label>
<textarea class="form-control" id="pages_meta_description" name="pages_meta_description" rows="3">{{ old('pages_meta_description', page.pages_meta_description ?? '') }}</textarea>
<div class="form-text">{{ __('pagebuilder.meta_description_help') }}</div>
</div>
<div class="row mt-4">
<div class="col-md-6">
<div class="mb-3 form-check">
<input type="checkbox" class="form-check-input" id="pages_is_published" name="pages_is_published" value="1" {{ old('pages_is_published', page.pages_is_published ?? false) ? 'checked' : '' }}>
<label class="form-check-label" for="pages_is_published">{{ __('pagebuilder.published') }}</label>
</div>
</div>
</div>
<div class="d-flex justify-content-between mt-4">
<a href="{{ url('/admin/pages') }}" class="btn btn-secondary">
<i class="bi bi-arrow-left"></i> {{ __('pagebuilder.form.back') }}
</a>
<button type="submit" class="btn btn-primary">
<i class="bi bi-save"></i> {{ page ? __('pagebuilder.form.update_button') : __('pagebuilder.form.create_button') }}
</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
{% block scripts %}
<script>
document.addEventListener('DOMContentLoaded', function() {
// Auto-generate slug from title
const titleInput = document.getElementById('pages_title');
const slugInput = document.getElementById('pages_slug');
titleInput.addEventListener('input', function() {
if (!slugInput.value || slugInput.dataset.autoGenerated === 'true') {
slugInput.value = this.value.toLowerCase()
.replace(/[^\w\s-]/g, '') // Remove special characters
.replace(/\s+/g, '-') // Replace spaces with hyphens
.replace(/-+/g, '-'); // Replace multiple hyphens with single hyphen
slugInput.dataset.autoGenerated = 'true';
}
});
slugInput.addEventListener('input', function() {
slugInput.dataset.autoGenerated = 'false';
});
});
</script>
{% endblock %}