implemented adding new pages
This commit is contained in:
@@ -19,6 +19,7 @@
|
||||
import Login from "./Components/Login.svelte";
|
||||
import Messages from "./routes/message/Messages.svelte";
|
||||
import Menu from "./Components/Menu.svelte";
|
||||
import NewPage from "./routes/wiki/AddPage.svelte";
|
||||
import Notes from "./routes/notes/Index.svelte";
|
||||
import ProjectList from "./routes/project/List.svelte";
|
||||
import ProjectAdd from "./routes/project/Create.svelte";
|
||||
@@ -90,6 +91,7 @@
|
||||
<Route path="/user/oidc/add" component={EditService} />
|
||||
<Route path="/user/oidc/edit/:serviceName" component={EditService} />
|
||||
<Route path="/wiki" component={WikiIndex} />
|
||||
<Route path="/wiki/add" component={NewPage} />
|
||||
<Route path="/wiki/:key/view" component={WikiPage} />
|
||||
<Route path="/wiki/:key/version/:version" component={WikiPage} />
|
||||
<Route>
|
||||
|
||||
@@ -39,10 +39,7 @@
|
||||
});
|
||||
if (resp.ok){
|
||||
const patched = await resp.json();
|
||||
for (let key of Object.keys(patched)){
|
||||
console.log('patching '+key+'…');
|
||||
company[key] = patched[key];
|
||||
}
|
||||
for (let key of Object.keys(patched)) company[key] = patched[key];
|
||||
return true;
|
||||
}
|
||||
error = await resp.text();
|
||||
|
||||
@@ -38,7 +38,6 @@
|
||||
|
||||
function onselect(company){
|
||||
project.company_id = company.id;
|
||||
console.log(project);
|
||||
}
|
||||
|
||||
function toggleSettings(ev){
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
function dropMember(member){
|
||||
delete task.members[member.user.id];
|
||||
console.log({drop:member.user.id});
|
||||
/// TODO: ?
|
||||
}
|
||||
|
||||
async function load(){
|
||||
|
||||
66
frontend/src/routes/wiki/AddPage.svelte
Normal file
66
frontend/src/routes/wiki/AddPage.svelte
Normal file
@@ -0,0 +1,66 @@
|
||||
<script>
|
||||
import { useTinyRouter } from 'svelte-tiny-router';
|
||||
import { api } from '../../urls.svelte';
|
||||
import { t } from '../../translations.svelte';
|
||||
|
||||
import Markdown from '../../Components/MarkdownEditor.svelte';
|
||||
|
||||
let content = $state({source:null,rendered:null});
|
||||
let error = $state(null);
|
||||
let router = useTinyRouter();
|
||||
let timer = null;
|
||||
let title = $state(null);
|
||||
|
||||
async function onsubmit(ev){
|
||||
ev.preventDefault();
|
||||
ev.stopPropagation();
|
||||
const url = api(`wiki/${title}`);
|
||||
const res = await fetch(url,{
|
||||
credentials:'include',
|
||||
method:'POST',
|
||||
body:content.source
|
||||
});
|
||||
if (res.ok){
|
||||
router.navigate(`/wiki/${title}/view`);
|
||||
} else {
|
||||
error = await res.text();
|
||||
}
|
||||
}
|
||||
|
||||
function checkTitle(){
|
||||
if (title) {
|
||||
if (timer) clearTimeout(timer);
|
||||
timer = setTimeout(requestTitle,1000);
|
||||
}
|
||||
}
|
||||
|
||||
async function requestTitle(){
|
||||
timer = null;
|
||||
var url = api(`wiki/available/${title}`);
|
||||
var res = await fetch(url,{credentials:'include'});
|
||||
const body = await res.text();
|
||||
if (res.ok){
|
||||
error = body == 'true' ? null : t('title_not_available',{title:title})
|
||||
} else {
|
||||
error = body;
|
||||
if (!error) error = t('failed_to_check_availability');
|
||||
}
|
||||
}
|
||||
|
||||
$effect(checkTitle)
|
||||
</script>
|
||||
|
||||
<h1>{t('create_new_object',{object:t('page')})}</h1>
|
||||
{#if error}
|
||||
<span class="error">{error}</span>
|
||||
{/if}
|
||||
<form {onsubmit}>
|
||||
<label>
|
||||
{t('Name')}
|
||||
<input type="text" bind:value={title} />
|
||||
</label>
|
||||
<label>
|
||||
{t('content')}
|
||||
<Markdown bind:value={content} simple={true} />
|
||||
</label>
|
||||
</form>
|
||||
@@ -33,6 +33,8 @@
|
||||
<span class="error">{error}</span>
|
||||
{/if}
|
||||
<h1>{t('wiki')}</h1>
|
||||
<button onclick={() => router.navigate('/wiki/add')}><span class="symbol"></span> {t('create_new_object',{object:t('page')})}</button>
|
||||
|
||||
{#if pages}
|
||||
{#each pages as page}
|
||||
{#if page.charAt(0).toUpperCase() != lastLetter}
|
||||
|
||||
Reference in New Issue
Block a user