feat: overwrite project issue template
This commit is contained in:
@ -31,6 +31,10 @@ const bodyPlaceholder = `
|
||||
Une fois votre demande générée, vous pourrez l'éditer puis la créer directement en cliquant sur le bouton 'Créer' ci-dessous.
|
||||
`
|
||||
|
||||
const issueTemplatePlaceholder = `
|
||||
Vous pouvez surcharger le modèle de demande fourni par le projet en remplissant ce champ.
|
||||
`
|
||||
|
||||
func NewIssueSummaryForm() *form.Form {
|
||||
return form.New(
|
||||
form.NewField(
|
||||
@ -47,6 +51,14 @@ func NewIssueSummaryForm() *form.Form {
|
||||
},
|
||||
form.NonEmpty("Ce champ ne doit pas être vide."),
|
||||
),
|
||||
form.NewField(
|
||||
"template",
|
||||
form.Attrs{
|
||||
"type": "textarea",
|
||||
"rows": "20",
|
||||
"placeholder": strings.TrimSpace(issueTemplatePlaceholder),
|
||||
},
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
@ -127,6 +139,15 @@ templ IssuePage(vmodel IssuePageVModel) {
|
||||
"hx-on:change", "onSummaryChange(event)",
|
||||
),
|
||||
)
|
||||
<details class="my-3">
|
||||
<summary class="is-clickable">Paramètres avancés</summary>
|
||||
@common.FormTextarea(
|
||||
vmodel.SummaryForm, "issue-template", "template", "Surcharger le modèle de demande",
|
||||
common.WithTextareaAttrs(
|
||||
"hx-on:change", "onIssueTemplateChange(event)",
|
||||
),
|
||||
)
|
||||
</details>
|
||||
<div class="buttons is-right">
|
||||
<button type="submit" class="button is-info is-large">
|
||||
<span class="icon">
|
||||
@ -184,6 +205,12 @@ templ IssuePage(vmodel IssuePageVModel) {
|
||||
sessionStorage.setItem(`summary-${projectId}`, summary);
|
||||
}
|
||||
|
||||
function onIssueTemplateChange(evt) {
|
||||
const issueTemplate = evt.currentTarget.value;
|
||||
const projectId = document.getElementById("issue-project").value;
|
||||
localStorage.setItem(`issue-template-${projectId}`, issueTemplate);
|
||||
}
|
||||
|
||||
function savePreferredProject() {
|
||||
const projectId = document.getElementById("issue-project").value;
|
||||
localStorage.setItem(`preferred-project`, projectId);
|
||||
@ -211,9 +238,22 @@ templ IssuePage(vmodel IssuePageVModel) {
|
||||
summaryTextarea.value = savedSummary;
|
||||
}
|
||||
|
||||
function restoreIssueTemplate() {
|
||||
const issueTemplateTextarea = document.getElementById("issue-template");
|
||||
if (!issueTemplateTextarea) return;
|
||||
const issueTemplate = issueTemplateTextarea.value;
|
||||
if (issueTemplate !== "") return;
|
||||
const projectId = document.getElementById("issue-project").value;
|
||||
if (!projectId) return;
|
||||
const savedIssueTemplate = localStorage.getItem(`issue-template-${projectId}`);
|
||||
if (!savedIssueTemplate) return;
|
||||
issueTemplateTextarea.value = savedIssueTemplate;
|
||||
}
|
||||
|
||||
htmx.onLoad(function(){
|
||||
restoreLastSummary();
|
||||
restorePreferredProject();
|
||||
restoreIssueTemplate();
|
||||
})
|
||||
</script>
|
||||
}
|
||||
|
Reference in New Issue
Block a user