diff --git a/core/src/main/java/de/srsoftware/umbrella/core/model/WikiPage.java b/core/src/main/java/de/srsoftware/umbrella/core/model/WikiPage.java index 1373d5f..26a2e2c 100644 --- a/core/src/main/java/de/srsoftware/umbrella/core/model/WikiPage.java +++ b/core/src/main/java/de/srsoftware/umbrella/core/model/WikiPage.java @@ -4,6 +4,7 @@ package de.srsoftware.umbrella.core.model; import static de.srsoftware.umbrella.core.Constants.*; import static de.srsoftware.umbrella.core.Util.markdown; import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.invalidFieldException; +import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.unprocessable; import de.srsoftware.tools.Mappable; import de.srsoftware.umbrella.core.api.UserService; @@ -71,9 +72,7 @@ public class WikiPage implements Mappable { var val = json.get(key); switch (key){ case ID: - if (!(val instanceof String s)) throw invalidFieldException(ID,"String"); - title(s); - break; + throw unprocessable("{0} cannot be altered!",ID); case CONTENT: if (!(val instanceof String s)) throw invalidFieldException(CONTENT,"String"); content(s); @@ -101,6 +100,10 @@ public class WikiPage implements Mappable { } } break; + case TITLE: + if (!(val instanceof String t)) throw invalidFieldException(TITLE,"String"); + title(t); + break; } } return this; @@ -113,6 +116,7 @@ public class WikiPage implements Mappable { private WikiPage title(String newVal) { if (title.equals(newVal)) return this; title = newVal; + version++; dirtyFields.add(TITLE); return this; } diff --git a/frontend/src/routes/wiki/View.svelte b/frontend/src/routes/wiki/View.svelte index 9c4f339..4f02746 100644 --- a/frontend/src/routes/wiki/View.svelte +++ b/frontend/src/routes/wiki/View.svelte @@ -5,7 +5,8 @@ import { t } from '../../translations.svelte'; import { user } from '../../user.svelte'; - import Editor from '../../Components/MarkdownEditor.svelte'; + import MarkdownEditor from '../../Components/MarkdownEditor.svelte'; + import LineEditor from '../../Components/LineEditor.svelte'; import Notes from '../notes/RelatedNotes.svelte'; import PermissionEditor from '../../Components/PermissionEditor.svelte'; import TagList from '../tags/TagList.svelte'; @@ -15,6 +16,7 @@ let page = $state(null); let router = useTinyRouter(); let members = $state({}); + let editable = $derived(page.members[user.id].permission.code<4); async function addMember(entry){ let newMembers = JSON.parse(JSON.stringify(page.members)); @@ -88,6 +90,11 @@ return loadContent(res); } + async function patchTitle(t){ + var result = await(patch({title:t})); + router.navigate(`/wiki/${page.id}/view`); + } + async function updatePermission(uid, newPerm){ let newMembers = JSON.parse(JSON.stringify(page.members)); newMembers[uid] = {permission:newPerm}; @@ -103,18 +110,17 @@ {t('version')} {#each page.versions as v} - {v} + {v} {/each} -