|
|
|
@ -11,6 +11,7 @@ |
|
|
|
import PermissionEditor from '../../Components/PermissionEditor.svelte'; |
|
|
|
import PermissionEditor from '../../Components/PermissionEditor.svelte'; |
|
|
|
import TagList from '../tags/TagList.svelte'; |
|
|
|
import TagList from '../tags/TagList.svelte'; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let detail = $state(false); |
|
|
|
let error = $state(null); |
|
|
|
let error = $state(null); |
|
|
|
let { key, version } = $props(); |
|
|
|
let { key, version } = $props(); |
|
|
|
let page = $state(null); |
|
|
|
let page = $state(null); |
|
|
|
@ -95,6 +96,10 @@ |
|
|
|
router.navigate(`/wiki/${page.id}/view`); |
|
|
|
router.navigate(`/wiki/${page.id}/view`); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function toggleDetail(){ |
|
|
|
|
|
|
|
detail = !detail; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
async function updatePermission(uid, newPerm){ |
|
|
|
async function updatePermission(uid, newPerm){ |
|
|
|
let newMembers = JSON.parse(JSON.stringify(page.members)); |
|
|
|
let newMembers = JSON.parse(JSON.stringify(page.members)); |
|
|
|
newMembers[uid] = {permission:newPerm}; |
|
|
|
newMembers[uid] = {permission:newPerm}; |
|
|
|
@ -107,40 +112,47 @@ |
|
|
|
<span class="error">{error}</span> |
|
|
|
<span class="error">{error}</span> |
|
|
|
{/if} |
|
|
|
{/if} |
|
|
|
{#if page} |
|
|
|
{#if page} |
|
|
|
<span class="version">{t('version')}</span> |
|
|
|
<div class="wiki page"> |
|
|
|
{#each page.versions as v} |
|
|
|
<div class="versions"> |
|
|
|
<span class="version"> |
|
|
|
<span class="version">{t('version')}</span> |
|
|
|
<a href={`/wiki/${page.id}/version/${v}`} {onclick} class={page.version == v?'selected':''}>{v}</a> |
|
|
|
{#each page.versions as v} |
|
|
|
</span> |
|
|
|
<span class="version"> |
|
|
|
{/each} |
|
|
|
<a href={`/wiki/${page.id}/version/${v}`} {onclick} class={page.version == v?'selected':''}>{v}</a> |
|
|
|
<LineEditor value={page.title} type="h2" {editable} onSet={t => patchTitle(t)} /> |
|
|
|
</span> |
|
|
|
{#if page.version != page.versions[0]} |
|
|
|
{/each} |
|
|
|
<span class="warn">{t('not_recent_version')}</span> |
|
|
|
</div> |
|
|
|
{/if} |
|
|
|
<LineEditor value={page.title} type="h2" {editable} onSet={t => patchTitle(t)} /> |
|
|
|
<MarkdownEditor {editable} value={page.content} onSet={s => patch({content:s})} /> |
|
|
|
{#if page.version != page.versions[0]} |
|
|
|
{#if editable} |
|
|
|
<span class="warn">{t('not_recent_version')}</span> |
|
|
|
<PermissionEditor members={page.members} {addMember} {dropMember} {getCandidates} {updatePermission} /> |
|
|
|
{/if} |
|
|
|
{:else} |
|
|
|
<button onclick={toggleDetail} class="symbol" title={t('toggle_objects',{objects:t('users')})}></button> |
|
|
|
<table> |
|
|
|
{#if detail} |
|
|
|
<thead> |
|
|
|
{#if editable} |
|
|
|
|
|
|
|
<PermissionEditor members={page.members} {addMember} {dropMember} {getCandidates} {updatePermission} /> |
|
|
|
|
|
|
|
{:else} |
|
|
|
|
|
|
|
<table> |
|
|
|
|
|
|
|
<thead> |
|
|
|
<tr> |
|
|
|
<tr> |
|
|
|
<th>{t('user')}</th> |
|
|
|
<th>{t('user')}</th> |
|
|
|
<th>{t('permissions')}</th> |
|
|
|
<th>{t('permissions')}</th> |
|
|
|
</tr> |
|
|
|
</tr> |
|
|
|
</thead> |
|
|
|
</thead> |
|
|
|
<tbody> |
|
|
|
<tbody> |
|
|
|
{#each Object.values(page.members) as member,id} |
|
|
|
{#each Object.values(page.members) as member,id} |
|
|
|
<tr> |
|
|
|
<tr> |
|
|
|
<td>{member.user.name}</td> |
|
|
|
<td>{member.user.name}</td> |
|
|
|
<td>{t('permission_'+member.permission.name.toLowerCase())}</td> |
|
|
|
<td>{t('permission_'+member.permission.name.toLowerCase())}</td> |
|
|
|
</tr> |
|
|
|
</tr> |
|
|
|
{/each} |
|
|
|
{/each} |
|
|
|
</tbody> |
|
|
|
</tbody> |
|
|
|
</table> |
|
|
|
</table> |
|
|
|
{/if} |
|
|
|
{/if} |
|
|
|
<TagList module="wiki" id={page.id} user_list={Object.keys(page.members).map(id => +id)} /> |
|
|
|
{/if} |
|
|
|
<div class="notes"> |
|
|
|
<MarkdownEditor {editable} value={page.content} onSet={s => patch({content:s})} /> |
|
|
|
<h3>{t('notes')}</h3> |
|
|
|
<TagList module="wiki" id={page.id} user_list={Object.keys(page.members).map(id => +id)} /> |
|
|
|
<Notes module="wiki" entity_id={page.id} /> |
|
|
|
<div class="notes"> |
|
|
|
|
|
|
|
<h3>{t('notes')}</h3> |
|
|
|
|
|
|
|
<Notes module="wiki" entity_id={page.id} /> |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
{/if} |
|
|
|
{/if} |
|
|
|
|