This commit is contained in:
2025-08-03 22:42:14 +02:00
parent d7a36aca4c
commit 67767310d3
16 changed files with 532 additions and 45 deletions

View File

@ -20,7 +20,7 @@
<script src="{{ asset('lib/jquery/jquery.min.js') }}"></script>
<script src="{{ asset('lib/bootstrap/js/bootstrap.bundle.min.js') }}"></script>
<script src="{{ asset('lib/fontawesome/fontawesome-free.index.js') }}"></script>
<!-- <script src="{{ asset('lib/fontawesome/fontawesome-free.index.js') }}"></script> -->
<script src="{{ asset('lib/datatables/datatables.min.js') }}"></script>
<script src="{{ asset('lib/datatables/datatables.init.js') }}"></script>
<script src="{{ asset('lib/select2/select2.min.js') }}"></script>
@ -29,7 +29,8 @@
<script src="{{ asset('lib/imgareaselect/js/jquery.imgareaselect.dev.js') }}"></script>
<script src="{{ asset('lib/jqueryui/jquery-ui.min.js') }}"></script>
<script src="{{ asset('lib/chart/chart.js') }}"></script>
<script src="{{ asset('bundles/bninemdeditor/bninemdeditor.js') }}"></script>
<script src="{{ asset('lib/app/app.js') }}"></script>
{% block javascripts %}

View File

@ -1,12 +1,25 @@
{% extends 'base.html.twig' %}
{%block body%}
<h2>Projets</h2>
<div class='d-flex' style='justify-content: center'>
<div class='d-flex' style='justify-content: left'>
{% for project in projects %}
<div class='card'>
<h5>{{project.title}}</h5>
{{ render(path("bninefiles_files",{domain:'project',id:project.id, editable:0})) }}
<div class='card' style='width:300px'>
<div class='card-header d-flex justify-content-between align-items-center'>
{{project.title}}
<div>
{% if is_granted('EDIT', project) %}
<button type="button" class="btn btn-primary btn-sm"><i class="fas fa-pencil"></i></button>
{% endif %}
<button type="button" class="btn btn-secondary btn-sm"><i class="fas fa-eye"></i></button>
</div>
</div>
<div class='card-body'>
</div>
</div>
{% endfor %}

View File

@ -14,31 +14,40 @@
{% include('include/error.html.twig') %}
<div class="row">
<div class="col-md-6 mx-auto">
<div class="col-md-4 mx-auto">
<div class="card mt-3">
<div class="card-header">Information</div>
<div class="card-body">
{{ form_row(form.title) }}
{{ form_row(form.nature) }}
{{ form_row(form.status) }}
{{ form_row(form.users) }}
{{ form_row(form.summary) }}
</div>
</div>
{{ render(path("bninefiles_files",{domain:'project',id:project.id, editable:1})) }}
<div class="card mt-3">
<div class="card-header">Timeline</div>
<div class="card-body">
{% include('project/timeline.html.twig') %}
</div>
</div>
</div>
<div class="col-md-6 mx-auto">
<div class="col-md-8 mx-auto">
<div class="card mt-3">
<div class="card-header">Permissions</div>
<div class="card-header">Description du Projet</div>
<div class="card-body">
{{ form_row(form.users) }}
{{ form_widget(form.description) }}
</div>
</div>
</div>
</div>
{% if mode=="update" %}
{{ render(path("bninefiles_files",{domain:'project',id:project.id, editable:1})) }}
{% endif %}
{{ form_end(form) }}
{% endblock %}
{% block localscript %}

View File

@ -22,7 +22,7 @@
<a href="{{ path(routeupdate,{id:project.id}) }}" class="me-2"><i class="fas fa-file fa-2x"></i></a>
</td>
<td>{{project.title}}</td>
<td>{{project.updateAt}}</td>
<td>{{project.timelines.first ? project.timelines.first.createdAt|date('d/m/Y H:i') : '' }}</td>
</tr>
{% endfor %}
</tbody>

View File

@ -0,0 +1,57 @@
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons/font/bootstrap-icons.css" rel="stylesheet">
<div class="timeline">
{% for event in project.timelines %}
<div class="timeline-item">
<div class="timeline-marker"></div>
<div class="timeline-content">
<p class="text-muted small mb-1">
{{ event.createdAt|date('d/m/Y H:i') }} par <strong>{{ event.user.username }}</strong><br>
{% for field, change in event.description %}
<strong>{{ field }}</strong>
{% if field=="status" %}
<span class="text-danger">{{ change.old ?? '' }}</span>
<span class="text-success">{{ change.new ?? '' }}</span>
{% endif %}
{% if not change.old is defined %}
= <span>{{ change[0] }}</span>
{% endif %}
<br>
{% endfor %}
</p>
</div>
</div>
{% endfor %}
</div>
<style>
.timeline {
border-left: 3px solid #dee2e6;
padding-left: 2rem;
position: relative;
font-size: 14px;
}
.timeline-item {
position: relative;
margin-bottom: 10px;
margin-left: -23px;
}
.timeline-content {
line-height:14px;
}
.timeline-marker {
position: absolute;
left: -1.1rem;
width: 1rem;
height: 1rem;
border-radius: 50%;
background: #0d6efd;
border: 2px solid #fff;
box-shadow: 0 0 0 3px #0d6efd44;
}
.timeline-content {
padding-left: 1rem;
}
</style>