78 lines
3.2 KiB
HTML
78 lines
3.2 KiB
HTML
{% extends 'base.html' %}
|
||
{% block title %}Document Templates – IT Asset Management{% endblock %}
|
||
{% block breadcrumb %}
|
||
<li class="breadcrumb-item"><a href="{{ url_for('dashboard.index') }}">Home</a></li>
|
||
<li class="breadcrumb-item active">Document Templates</li>
|
||
{% endblock %}
|
||
|
||
{% block content %}
|
||
<div class="page-header d-flex align-items-center justify-content-between mb-4">
|
||
<h1><i class="bi bi-file-earmark-word me-2"></i>Document Templates</h1>
|
||
<a href="{{ url_for('doc_templates.upload') }}" class="btn btn-primary btn-sm">
|
||
<i class="bi bi-upload me-1"></i>Upload Template
|
||
</a>
|
||
</div>
|
||
|
||
<div class="alert alert-info small mb-4">
|
||
<i class="bi bi-info-circle me-1"></i>
|
||
Upload <strong>.docx</strong> Word files with <code>{{ variable_name }}</code> placeholders.
|
||
When creating paperwork, the system fills them automatically from user / asset data.
|
||
All generated documents can be regenerated with masked PII if a user leaves the company.
|
||
</div>
|
||
|
||
{% if templates %}
|
||
<div class="row row-cols-1 row-cols-md-2 row-cols-xl-3 g-3">
|
||
{% for tpl in templates %}
|
||
<div class="col">
|
||
<div class="card h-100 border-0 shadow-sm">
|
||
<div class="card-body">
|
||
<div class="d-flex align-items-start justify-content-between mb-2">
|
||
<h6 class="mb-0 fw-semibold">
|
||
<i class="bi bi-file-earmark-word text-primary me-1"></i>{{ tpl.name }}
|
||
</h6>
|
||
{% if tpl.category %}
|
||
<span class="badge bg-secondary ms-2">{{ dict(doc_types)[tpl.category] if tpl.category in dict(doc_types) else tpl.category }}</span>
|
||
{% endif %}
|
||
</div>
|
||
{% if tpl.description %}
|
||
<p class="text-muted small mb-2">{{ tpl.description }}</p>
|
||
{% endif %}
|
||
<div class="small text-muted mb-3">
|
||
<i class="bi bi-braces me-1"></i>
|
||
{% set vars = tpl.variables %}
|
||
{% if vars %}
|
||
{{ vars | length }} variable(s):
|
||
{% for v in vars[:5] %}<code class="me-1">{{ v }}</code>{% endfor %}
|
||
{% if vars | length > 5 %}<em>+{{ vars | length - 5 }} more</em>{% endif %}
|
||
{% else %}
|
||
No variables detected
|
||
{% endif %}
|
||
</div>
|
||
<div class="d-flex gap-1 align-items-center">
|
||
<a href="{{ url_for('doc_templates.detail', tpl_id=tpl.id) }}" class="btn btn-sm btn-outline-primary">
|
||
<i class="bi bi-eye me-1"></i>View
|
||
</a>
|
||
<a href="{{ url_for('doc_templates.download', tpl_id=tpl.id) }}" class="btn btn-sm btn-outline-secondary">
|
||
<i class="bi bi-download me-1"></i>Download
|
||
</a>
|
||
<span class="ms-auto text-muted small">
|
||
{{ tpl.paperwork_docs.count() }} doc(s) generated
|
||
</span>
|
||
</div>
|
||
</div>
|
||
<div class="card-footer bg-white text-muted small">
|
||
Uploaded {{ tpl.created_at.strftime('%d %b %Y') }}
|
||
{% if tpl.created_by %} by {{ tpl.created_by.username }}{% endif %}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
{% endfor %}
|
||
</div>
|
||
{% else %}
|
||
<div class="text-center text-muted py-5">
|
||
<i class="bi bi-file-earmark-word display-4 d-block mb-3"></i>
|
||
No templates yet. <a href="{{ url_for('doc_templates.upload') }}">Upload your first template</a>.
|
||
</div>
|
||
{% endif %}
|
||
{% endblock %}
|