diff --git a/deepwell/src/services/domain/service.rs b/deepwell/src/services/domain/service.rs index f1883cd7e4..6364a88030 100644 --- a/deepwell/src/services/domain/service.rs +++ b/deepwell/src/services/domain/service.rs @@ -119,6 +119,12 @@ impl DomainService { format!("{}{}", site_slug, config.main_domain) } + #[inline] + pub fn get_files(config: &Config, site_slug: &str) -> String { + // 'files_domain' is already prefixed with . + format!("{}{}", site_slug, config.files_domain) + } + /// Gets the preferred domain for the given site. pub fn preferred_domain<'a>(config: &'a Config, site: &'a SiteModel) -> Cow<'a, str> { debug!( diff --git a/deepwell/src/services/view/service.rs b/deepwell/src/services/view/service.rs index 5a2115e8c9..b37cb616a9 100644 --- a/deepwell/src/services/view/service.rs +++ b/deepwell/src/services/view/service.rs @@ -36,8 +36,8 @@ use crate::models::site::Model as SiteModel; use crate::services::render::RenderOutput; use crate::services::special_page::{GetSpecialPageOutput, SpecialPageType}; use crate::services::{ - PageRevisionService, PageService, SessionService, SiteService, SpecialPageService, - TextService, UserService, + DomainService, PageRevisionService, PageService, SessionService, SiteService, + SpecialPageService, TextService, UserService, }; use crate::utils::{parse_locales, split_category}; use ftml::prelude::*; @@ -68,7 +68,11 @@ impl ViewService { let mut locales = parse_locales(&locales_str)?; let config = ctx.config(); - let Viewer { site, user_session } = Self::get_viewer( + let Viewer { + site, + site_file_domain, + user_session, + } = Self::get_viewer( ctx, &mut locales, site_id, @@ -244,7 +248,11 @@ impl ViewService { // TODO Check if user-agent and IP match? - let viewer = Viewer { site, user_session }; + let viewer = Viewer { + site, + site_file_domain, + user_session, + }; let output = match status { PageStatus::Found { page, @@ -436,6 +444,8 @@ impl ViewService { ) -> Result { info!("Getting viewer data site ID {site_id} and session token"); + let config = ctx.config(); + // Get user data from session token (if present) let user_session = match session_token { Some("") | None => None, @@ -481,9 +491,14 @@ impl ViewService { // Get site information let site = SiteService::get(ctx, Reference::Id(site_id)).await?; + let site_file_domain = DomainService::get_files(config, &site.slug); // Return - Ok(Viewer { site, user_session }) + Ok(Viewer { + site, + site_file_domain, + user_session, + }) } async fn can_access_page( diff --git a/deepwell/src/services/view/structs.rs b/deepwell/src/services/view/structs.rs index 68d08529ee..92c56f8769 100644 --- a/deepwell/src/services/view/structs.rs +++ b/deepwell/src/services/view/structs.rs @@ -138,6 +138,7 @@ pub enum GetAdminViewOutput { #[derive(Serialize, Debug, Clone)] pub struct Viewer { pub site: SiteModel, + pub site_file_domain: String, pub user_session: Option, } diff --git a/framerail/src/lib/server/deepwell/admin.ts b/framerail/src/lib/server/deepwell/admin.ts index 94f4a02095..aea3c7d3ac 100644 --- a/framerail/src/lib/server/deepwell/admin.ts +++ b/framerail/src/lib/server/deepwell/admin.ts @@ -9,6 +9,7 @@ export async function siteUpdate( slug: Optional, tagline: Optional, description: Optional, + defaultPage: Optional, locale: Optional, layout: Optional> ): Promise { @@ -19,6 +20,7 @@ export async function siteUpdate( slug, tagline, description, + default_page: defaultPage, locale, layout: layout !== undefined diff --git a/framerail/src/lib/server/load/admin.ts b/framerail/src/lib/server/load/admin.ts index 11f819f41a..acc9a05bd5 100644 --- a/framerail/src/lib/server/load/admin.ts +++ b/framerail/src/lib/server/load/admin.ts @@ -58,6 +58,7 @@ export async function loadAdminPage(request, cookies) { "site-info.slug": {}, "site-info.tagline": {}, "site-info.description": {}, + "site-info.default-page": {}, "site-info.locale": {}, "site-info.layout": {}, "wiki-page-layout.default": {}, diff --git a/framerail/src/routes/[slug]/[...extra]/FilePane.svelte b/framerail/src/routes/[slug]/[...extra]/FilePane.svelte index 3cf663320c..854eb8c0f1 100644 --- a/framerail/src/routes/[slug]/[...extra]/FilePane.svelte +++ b/framerail/src/routes/[slug]/[...extra]/FilePane.svelte @@ -230,10 +230,7 @@ class="action-button deleted-file clickable" type="button" on:click={() => { - showFiles = false - getFileList(true).then(() => { - showFiles = true - }) + getFileList(true) }} > {$page.data.internationalization?.restore} @@ -266,7 +263,10 @@ {#each [...fileMap].sort((a, b) => b[0] - a[0]) as [_, file] (file.file_id)}
- {file.name} + {file.name}
{new Date(file.file_created_at).toLocaleString()} @@ -656,4 +656,18 @@ } } } + + .revision-list { + display: table; + width: 100%; + + .revision-header, + .revision-row { + display: table-row; + + .revision-attribute { + display: table-cell; + } + } + } diff --git a/framerail/src/routes/[slug]/[...extra]/VotePane.svelte b/framerail/src/routes/[slug]/[...extra]/VotePane.svelte index d8d85da29a..eb1ff872a0 100644 --- a/framerail/src/routes/[slug]/[...extra]/VotePane.svelte +++ b/framerail/src/routes/[slug]/[...extra]/VotePane.svelte @@ -11,7 +11,6 @@ let fdata = new FormData() fdata.set("site-id", $page.data.site.site_id) fdata.set("page-id", $page.data.page.page_id) - fdata.set("action", "get_list") let res = await fetch(`/${$page.data.page.slug}/vote-get`, { method: "POST", body: fdata @@ -34,7 +33,6 @@ let fdata = new FormData() fdata.set("site-id", $page.data.site.site_id) fdata.set("page-id", $page.data.page.page_id) - fdata.set("action", "set") fdata.set("value", value ?? 0) let res = await fetch(`/${$page.data.page.slug}/vote-cast`, { method: "POST", @@ -53,7 +51,6 @@ let fdata = new FormData() fdata.set("site-id", $page.data.site.site_id) fdata.set("page-id", $page.data.page.page_id) - fdata.set("action", "remove") let res = await fetch(`/${$page.data.page.slug}/vote-cancel`, { method: "POST", body: fdata diff --git a/framerail/src/routes/[x+2d]/admin/+page.svelte b/framerail/src/routes/[x+2d]/admin/+page.svelte index 80dd867c6d..84d6bb7f0f 100644 --- a/framerail/src/routes/[x+2d]/admin/+page.svelte +++ b/framerail/src/routes/[x+2d]/admin/+page.svelte @@ -69,6 +69,15 @@ type="text" value={$page.data.site.description} /> + + {/if} + {#if $page.data.site.default_page} +
+ {$page.data.internationalization?.["site-info.default-page"]} + {$page.data.site.default_page} +
+ {/if} + {#if $page.data.site.locale}