diff options
author | Matthias Andreas Benkard <code@mail.matthias.benkard.de> | 2020-01-27 21:23:00 +0100 |
---|---|---|
committer | Matthias Andreas Benkard <code@mail.matthias.benkard.de> | 2020-01-27 21:25:21 +0100 |
commit | 2f5374598fbdfbf5ccdf44930706133bc7986e83 (patch) | |
tree | ee9aa69ab33c0e7b9f2e615e0cfa675614491cd9 /src/main | |
parent | 0178fa352d2045cdd27ffa2a965794684fc2d665 (diff) |
Wiki: Provide feedback after editing.
Change-Id: I6530be803f5f4218008c07d00ad3c6f739a1eb7a
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/eu/mulk/mulkcms2/benki/wiki/WikiResource.java | 16 | ||||
-rw-r--r-- | src/main/resources/templates/benki/wiki/wikiPage.html | 13 |
2 files changed, 26 insertions, 3 deletions
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/wiki/WikiResource.java b/src/main/java/eu/mulk/mulkcms2/benki/wiki/WikiResource.java index 30cae98..0f7aa3f 100644 --- a/src/main/java/eu/mulk/mulkcms2/benki/wiki/WikiResource.java +++ b/src/main/java/eu/mulk/mulkcms2/benki/wiki/WikiResource.java @@ -1,5 +1,6 @@ package eu.mulk.mulkcms2.benki.wiki; +import static javax.ws.rs.core.MediaType.APPLICATION_JSON; import static javax.ws.rs.core.MediaType.TEXT_HTML; import eu.mulk.mulkcms2.benki.users.User; @@ -16,6 +17,8 @@ import java.time.format.FormatStyle; import java.time.temporal.TemporalAccessor; import java.util.Optional; import javax.inject.Inject; +import javax.json.JsonObject; +import javax.json.spi.JsonProvider; import javax.transaction.Transactional; import javax.ws.rs.BadRequestException; import javax.ws.rs.FormParam; @@ -39,6 +42,8 @@ public class WikiResource { private static DateTimeFormatter humanDateFormatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG, FormatStyle.SHORT); + private static JsonProvider jsonProvider = JsonProvider.provider(); + @ResourcePath("benki/wiki/wikiPage.html") @Inject Template wikiPage; @@ -71,14 +76,15 @@ public class WikiResource { @Path("/{pageName}") @Authenticated @Transactional - public void updatePage( + @Produces(APPLICATION_JSON) + public JsonObject updatePage( @PathParam("pageName") String pageName, @FormParam("wiki-title") String title, @FormParam("wiki-content") String content) { if (title == null && content == null) { // No changes, nothing to do. - return; + return jsonProvider.createObjectBuilder().add("status", "ok").build(); } if (title != null) { @@ -112,6 +118,12 @@ public class WikiResource { User.find("from BenkiUser u join u.nicknames n where ?1 = n", userName).singleResult()); pageRevision.persistAndFlush(); + + return jsonProvider + .createObjectBuilder() + .add("status", "ok") + .add("content", pageRevision.enrichedContent()) + .build(); } @GET diff --git a/src/main/resources/templates/benki/wiki/wikiPage.html b/src/main/resources/templates/benki/wiki/wikiPage.html index 901b300..dbfc9c7 100644 --- a/src/main/resources/templates/benki/wiki/wikiPage.html +++ b/src/main/resources/templates/benki/wiki/wikiPage.html @@ -8,9 +8,11 @@ <link rel="stylesheet" type="text/css" href="/web_modules/ContentTools/build/content-tools.min.css" /> <script type="module"> import {ContentTools} from "/web_modules/ContentTools.js"; + window.addEventListener('DOMContentLoaded', function() { let editor = ContentTools.EditorApp.get(); editor.init('*[data-editable]', 'data-name'); + editor.addEventListener('saved', async function (ev) { let regions = ev.detail().regions; if (Object.getOwnPropertyNames(regions).length === 0) { @@ -30,6 +32,15 @@ body: requestParams }); + let status = await response.json(); + if (status.status === "ok") { + if (status.hasOwnProperty("content")) { + document.getElementById("wiki-content").innerHTML = status.content; + } + } else { + alert("Failed to save page: " + JSON.stringify(status)); + } + this.busy(false); }); }); @@ -45,7 +56,7 @@ </header> <main> - <div data-editable data-name="wiki-content"> + <div data-editable data-name="wiki-content" id="wiki-content"> {#with page}{enrichedContent.raw}{/} </div> </main> |