From f3e343c18a86eb35dae5d7138cc0ee4e04f1f60c Mon Sep 17 00:00:00 2001
From: denyshon
Date: Mon, 27 Apr 2026 04:33:20 +0200
Subject: [PATCH] Allow saving drafts when editing documents
Extend the draft functionality to the edit_document case. Update the related names/comments.
Remove an unused import in edit_metadata.html
---
kitsune/sumo/static/sumo/js/wiki.js | 10 ++--
.../static/sumo/scss/components/_wiki.scss | 5 +-
kitsune/wiki/content_managers.py | 8 ++--
kitsune/wiki/jinja2/wiki/edit.html | 36 ++++++++++----
kitsune/wiki/jinja2/wiki/edit_metadata.html | 2 +-
.../jinja2/wiki/includes/document_macros.html | 4 +-
kitsune/wiki/jinja2/wiki/translate.html | 4 +-
kitsune/wiki/views.py | 48 +++++++++++++++----
8 files changed, 83 insertions(+), 34 deletions(-)
diff --git a/kitsune/sumo/static/sumo/js/wiki.js b/kitsune/sumo/static/sumo/js/wiki.js
index fd60a5920cb..23d1862a3c8 100644
--- a/kitsune/sumo/static/sumo/js/wiki.js
+++ b/kitsune/sumo/static/sumo/js/wiki.js
@@ -72,9 +72,12 @@ import collapsibleAccordionInit from "sumo/js/protocol-details-init";
initCodeMirrorEditor();
}
+ if ($body.is('.edit, .translate')) {
+ initDraft();
+ }
+
if ($body.is('.translate')) { // Translate page
initToggleDiff();
- initTranslationDraft();
}
initEditingTools();
@@ -599,7 +602,7 @@ import collapsibleAccordionInit from "sumo/js/protocol-details-init";
}
}
- function initTranslationDraft() {
+ function initDraft() {
var $draftButton = $('.btn-draft'),
url = $('.btn-draft').data('draft-url'),
$draftMessage = $('#draft-message');
@@ -610,7 +613,8 @@ import collapsibleAccordionInit from "sumo/js/protocol-details-init";
bothData = $('#both_form').serializeArray(),
docData = $('#doc_form').serializeArray(),
revData = $('#rev_form').serializeArray(),
- totalData = $.extend(bothData, docData, revData);
+ editData = $('#edit_form').serializeArray(),
+ totalData = $.extend(bothData, docData, revData, editData);
$draftMessage.html(image + message).removeClass('success error').addClass('info').show()
$.post(url, totalData)
diff --git a/kitsune/sumo/static/sumo/scss/components/_wiki.scss b/kitsune/sumo/static/sumo/scss/components/_wiki.scss
index 3632939333c..b05efaa5458 100644
--- a/kitsune/sumo/static/sumo/scss/components/_wiki.scss
+++ b/kitsune/sumo/static/sumo/scss/components/_wiki.scss
@@ -262,8 +262,9 @@ article {
}
-/* Document Translation page */
-#localize-document {
+/* Draft-related messages */
+#localize-document,
+#edit-document {
.buttons-and-preview {
/* Taken from Bootstrap V3 */
diff --git a/kitsune/wiki/content_managers.py b/kitsune/wiki/content_managers.py
index 50e9f1f656b..613d942bba6 100644
--- a/kitsune/wiki/content_managers.py
+++ b/kitsune/wiki/content_managers.py
@@ -40,8 +40,8 @@ def save_draft(
Args:
user: The user creating the draft
- parent_doc: The parent document being translated
- target_locale: The target locale for translation
+ parent_doc: The parent document for the revision
+ target_locale: The target locale for the revision
draft_data: Dictionary containing draft content (title, slug, content, summary, keywords, based_on)
Returns:
DraftRevision: The created or updated draft revision
@@ -57,7 +57,7 @@ def get_draft(self, user, parent_doc, target_locale: str) -> DraftRevision | Non
Args:
user: The user
parent_doc: The parent document
- target_locale: The target local
+ target_locale: The target locale
Returns:
DraftRevision or None: The existing draft if found
"""
@@ -281,7 +281,7 @@ def mark_ready_for_localization(
class ManualContentManager(WikiContentManager):
- """Content manager for manual translation workflow."""
+ """Content manager for manual edit/translation workflow."""
pass
diff --git a/kitsune/wiki/jinja2/wiki/edit.html b/kitsune/wiki/jinja2/wiki/edit.html
index f42823d3023..ebf8e0bfeb1 100644
--- a/kitsune/wiki/jinja2/wiki/edit.html
+++ b/kitsune/wiki/jinja2/wiki/edit.html
@@ -23,6 +23,19 @@
{{ _('This document is restricted.') }}
{% endif %}
+ {% if draft_revision %}
+
+
+
+
{{ _('You have a draft revision for this article saved on {date_time}')|f(date_time=draft_revision.created) }}
+
+
+
+ {% endif %}
{{ edit_messages(document, show_revision_warning) }}
{{ document_lock_warning() }}
@@ -42,7 +55,7 @@ {{ _('Editing Content For:
{title}')|f
Support Document Guide.{% endtrans %}
{{ errorlist(revision_form) }}
-