diff --git a/templates/project/_form.go.html b/templates/project/_form.go.html
index 4279202de47224332999269f166e86d0a4928669..ec7514ff10bcdba5fb2af880e94d3afdac3f804a 100644
--- a/templates/project/_form.go.html
+++ b/templates/project/_form.go.html
@@ -44,27 +44,51 @@
<div class="alert alert-danger">{{ .Error }}</div>
{{ end }}
- <!-- Form Fields Row: Project ID and Name -->
+ <!-- Form Fields Row: Project ID and Shortcut -->
<div class="row">
<!-- Project ID Field (disabled in edit mode) -->
<div class="col-md-6 mb-3">
- <label for="projectId" class="form-label">Projekt-ID *</label>
+ <label for="ProjectID" class="form-label">Projekt-ID *</label>
<input type="text"
class="form-control"
- id="projectId"
+ id="ProjectID"
name="ProjectID"
- placeholder="PRJ-2025-XXX"
+ placeholder=""
value="{{ .Data.Form.Project.ProjectID }}"
{{ if $isEdit }}disabled{{ end }}
required>
+ {{ if not $isEdit }}
+ <div class="form-text">
+ <button type="button" class="btn btn-sm btn-outline-secondary" onclick="generateUUID()">
+ 🎲 UUID generieren
+ </button>
+ </div>
+ {{ end }}
</div>
- <!-- Project Name Field (always editable) -->
+ <!-- Project Shortcut Field (always editable) -->
<div class="col-md-6 mb-3">
- <label for="name" class="form-label">Projektname *</label>
+ <label for="Shortcut" class="form-label">Kürzel *</label>
+ <input type="text"
+ class="form-control"
+ id="Shortcut"
+ name="Shortcut"
+ placeholder="HM"
+ value="{{ .Data.Form.Project.Shortcut }}"
+ maxlength="8"
+ required>
+ <div class="form-text">Eindeutiges Kürzel für schnelle Projektidentifizierung (max. 8 Zeichen)</div>
+ </div>
+ </div>
+
+ <!-- Form Fields Row: Project Name -->
+ <div class="row">
+ <!-- Project Name Field (always editable) -->
+ <div class="col-md-12 mb-3">
+ <label for="Name" class="form-label">Projektname *</label>
<input type="text"
class="form-control"
- id="name"
+ id="Name"
name="Name"
placeholder="HARMONY Mobile"
value="{{ .Data.Form.Project.Name }}"
@@ -74,9 +98,9 @@
<!-- Description Field (full width, optional) -->
<div class="mb-3">
- <label for="description" class="form-label">Beschreibung</label>
+ <label for="Description" class="form-label">Beschreibung</label>
<textarea class="form-control"
- id="description"
+ id="Description"
name="Description"
rows="3"
placeholder="Entwicklung einer mobilen App zur Anforderungserfassung unterwegs.">{{ .Data.Form.Project.Description }}</textarea>
@@ -86,10 +110,10 @@
<div class="row">
<!-- Start Date Field -->
<div class="col-md-6 mb-3">
- <label for="startDate" class="form-label">Startdatum *</label>
+ <label for="StartDate" class="form-label">Startdatum *</label>
<input type="date"
class="form-control"
- id="startDate"
+ id="StartDate"
name="StartDate"
value="{{ .Data.Form.Project.StartDate.Format "2006-01-02" }}"
required>
@@ -97,10 +121,10 @@
<!-- End Date Field -->
<div class="col-md-6 mb-3">
- <label for="endDate" class="form-label">Enddatum *</label>
+ <label for="EndDate" class="form-label">Enddatum *</label>
<input type="date"
class="form-control"
- id="endDate"
+ id="EndDate"
name="EndDate"
value="{{ .Data.Form.Project.EndDate.Format "2006-01-02" }}"
required>
@@ -132,4 +156,29 @@
</div>
</div>
</div>
+
+ <!-- JavaScript für UUID-Generierung -->
+ {{ if not $isEdit }}
+ <script>
+ function generateUUID() {
+ // Erzeuge eine UUID v4
+ const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
+ const r = Math.random() * 16 | 0;
+ const v = c === 'x' ? r : (r & 0x3 | 0x8);
+ return v.toString(16);
+ });
+
+ // Setze die UUID ins Projekt-ID Feld
+ document.getElementById('ProjectID').value = uuid;
+ }
+
+ // Automatisch eine UUID generieren wenn das Feld leer ist
+ document.addEventListener('DOMContentLoaded', function() {
+ const projectIdField = document.getElementById('ProjectID');
+ if (!projectIdField.value.trim()) {
+ generateUUID();
+ }
+ });
+ </script>
+ {{ end }}
{{ end }}
\ No newline at end of file