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

107 lines
6.8 KiB
Twig
Executable File

{% extends "layouts/dashboard.twig" %}
{% block title %}{{ target_user ? __('users.titles.edit') : __('users.titles.create') }} - {{ platformName }}{% endblock %}
{% block content %}
<div class="container-fluid px-4">
<h1 class="mt-4">{{ target_user ? __('users.titles.edit') : __('users.titles.create') }}</h1>
<ol class="breadcrumb mb-4">
<li class="breadcrumb-item"><a href="{{ url('admin/dashboard') }}">{{ __('dashboard.title') }}</a></li>
<li class="breadcrumb-item"><a href="{{ url('admin/users') }}">{{ __('users.breadcrumb.users') }}</a></li>
<li class="breadcrumb-item active">{{ target_user ? __('users.breadcrumb.edit') : __('users.breadcrumb.create') }}</li>
</ol>
{% include '@users/admin/nav.twig' ignore missing %}
<div class="card mb-4">
<div class="card-header">
<i class="bi bi-person-gear me-1"></i>
{{ __('users.headers.user_details') }}
</div>
<div class="card-body">
{% if error %}
<div class="alert alert-danger" role="alert">
{{ error }}
</div>
{% endif %}
<form action="{{ target_user ? url('admin/users/' ~ target_user.users_id) : url('admin/users') }}" method="POST" enctype="multipart/form-data">
{% if target_user %}
<input type="hidden" name="_method" value="PUT">
{% endif %}
{{ csrf_field()|raw }}
<div class="row">
<div class="col-md-8">
<div class="mb-3">
<label for="name" class="form-label">{{ __('users.fields.name') }}</label>
<input type="text" class="form-control" id="name" name="name" value="{{ target_user ? target_user.users_name : '' }}" required>
</div>
<div class="mb-3">
<label for="email" class="form-label">{{ __('users.fields.email') }}</label>
<input type="email" class="form-control" id="email" name="email" value="{{ target_user ? target_user.users_email : '' }}" required>
</div>
<div class="mb-3" x-data="{ show: false }">
<label for="password" class="form-label">{{ __('users.fields.password') }} {{ target_user ? __('users.fields.password_hint') : '' }}</label>
<div class="input-group">
<input :type="show ? 'text' : 'password'" class="form-control" id="password" name="password" {{ target_user ? '' : 'required' }} autocomplete="new-password" value="">
<button class="btn btn-outline-secondary" type="button" @click="show = !show">
<i :class="show ? 'bi bi-eye-slash' : 'bi bi-eye'"></i>
</button>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="mb-3">
<label for="role" class="form-label">{{ __('users.fields.role') }}</label>
<select class="form-select" id="role" name="role">
<option value="user" {{ target_user.users_role == 'user' ? 'selected' : '' }}>{{ __('users.roles.user') }}</option>
<option value="member" {{ target_user.users_role == 'member' ? 'selected' : '' }}>{{ __('users.roles.member') }}</option>
<option value="admin" {{ target_user.users_role == 'admin' ? 'selected' : '' }}>{{ __('users.roles.admin') }}</option>
<option value="super_admin" {{ target_user.users_role == 'super_admin' ? 'selected' : '' }}>{{ __('users.roles.super_admin') ?: 'Super Admin' }}</option>
</select>
</div>
</div>
<div class="col-md-6">
<div class="mb-3">
<label for="status" class="form-label">{{ __('users.fields.status') }}</label>
<select class="form-select" id="status" name="status">
<option value="active" {{ target_user and target_user.users_status == 'active' ? 'selected' : '' }}>{{ __('users.statuses.active') }}</option>
<option value="inactive" {{ target_user and target_user.users_status == 'inactive' ? 'selected' : '' }}>{{ __('users.statuses.inactive') }}</option>
</select>
</div>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card mb-3">
<div class="card-header">{{ __('users.fields.avatar') }}</div>
<div class="card-body text-center">
<div class="mb-3">
{% if target_user and target_user.users_avatar %}
<img src="{{ target_user.avatar_url }}" alt="Avatar" class="img-thumbnail rounded-circle mb-2" style="width: 150px; height: 150px; object-fit: cover;">
{% else %}
<div class="bg-light rounded-circle d-inline-flex align-items-center justify-content-center mb-2" style="width: 150px; height: 150px;">
<i class="bi bi-person fs-1 text-secondary"></i>
</div>
{% endif %}
</div>
<input type="file" class="form-control" id="avatar" name="avatar" accept="image/*">
<div class="form-text small text-muted mt-2">JPG, PNG or GIF. Max 2MB.</div>
</div>
</div>
</div>
</div>
<div class="d-flex justify-content-between">
<a href="{{ url('admin/users') }}" class="btn btn-secondary">{{ __('users.actions.cancel') }}</a>
<button type="submit" class="btn btn-primary">{{ target_user ? __('users.actions.update_user') : __('users.actions.create_user') }}</button>
</div>
</form>
</div>
</div>
</div>
{% endblock %}