Allow updating of custom_domain

This commit is contained in:
Igor Galić 2019-08-21 11:09:42 +02:00
parent d242e6df11
commit 3c4abcff81
No known key found for this signature in database
GPG key ID: ACFEFF7F6A123A86
5 changed files with 22 additions and 6 deletions

View file

@ -25,7 +25,6 @@ tantivy = "0.10.1"
url = "2.1" url = "2.1"
webfinger = "0.4.1" webfinger = "0.4.1"
whatlang = "0.7.1" whatlang = "0.7.1"
shrinkwraprs = "0.2.1"
diesel-derive-newtype = "0.1.2" diesel-derive-newtype = "0.1.2"
[dependencies.chrono] [dependencies.chrono]

View file

@ -26,14 +26,16 @@ use posts::Post;
use safe_string::SafeString; use safe_string::SafeString;
use schema::blogs; use schema::blogs;
use search::Searcher; use search::Searcher;
use std::default::Default;
use std::fmt::{self, Display}; use std::fmt::{self, Display};
use std::ops::Deref;
use std::sync::RwLock; use std::sync::RwLock;
use users::User; use users::User;
use {Connection, Error, PlumeRocket, Result}; use {Connection, Error, PlumeRocket, Result};
pub type CustomGroup = CustomObject<ApSignature, Group>; pub type CustomGroup = CustomObject<ApSignature, Group>;
#[derive(Clone, Debug, PartialEq, DieselNewType, Shrinkwrap)] #[derive(Clone, Debug, PartialEq, DieselNewType)]
pub struct Host(String); pub struct Host(String);
impl Host { impl Host {
@ -42,6 +44,13 @@ impl Host {
} }
} }
impl Deref for Host {
type Target = str;
fn deref(&self) -> &str {
&self.0
}
}
impl Display for Host { impl Display for Host {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.0) write!(f, "{}", self.0)

View file

@ -33,8 +33,6 @@ extern crate serde_derive;
#[macro_use] #[macro_use]
extern crate serde_json; extern crate serde_json;
#[macro_use] #[macro_use]
extern crate shrinkwraprs;
#[macro_use]
extern crate tantivy; extern crate tantivy;
extern crate url; extern crate url;
extern crate webfinger; extern crate webfinger;

View file

@ -333,7 +333,7 @@ pub struct EditForm {
pub summary: String, pub summary: String,
pub icon: Option<i32>, pub icon: Option<i32>,
pub banner: Option<i32>, pub banner: Option<i32>,
pub custom_domain: Option<Host>, pub custom_domain: String,
} }
#[get("/~/<name>/edit")] #[get("/~/<name>/edit")]
@ -351,6 +351,10 @@ pub fn edit(name: String, rockets: PlumeRocket) -> Result<Ructe, ErrorPage> {
.clone() .clone()
.expect("blogs::edit: User was None while it shouldn't"); .expect("blogs::edit: User was None while it shouldn't");
let medias = Media::for_user(conn, user.id).expect("Couldn't list media"); let medias = Media::for_user(conn, user.id).expect("Couldn't list media");
let custom_domain = match blog.custom_domain {
Some(ref c) => c.to_string(),
_ => String::from(""),
};
Ok(render!(blogs::edit( Ok(render!(blogs::edit(
&rockets.to_context(), &rockets.to_context(),
&blog, &blog,
@ -360,7 +364,7 @@ pub fn edit(name: String, rockets: PlumeRocket) -> Result<Ructe, ErrorPage> {
summary: blog.summary.clone(), summary: blog.summary.clone(),
icon: blog.icon_id, icon: blog.icon_id,
banner: blog.banner_id, banner: blog.banner_id,
custom_domain: blog.custom_domain.clone(), custom_domain: custom_domain,
}, },
ValidationErrors::default() ValidationErrors::default()
))) )))
@ -472,6 +476,10 @@ pub fn update(
); );
blog.icon_id = form.icon; blog.icon_id = form.icon;
blog.banner_id = form.banner; blog.banner_id = form.banner;
if !form.custom_domain.is_empty() {
blog.custom_domain = Some(Host::new(form.custom_domain.clone()))
}
blog.save_changes::<Blog>(&*conn) blog.save_changes::<Blog>(&*conn)
.expect("Couldn't save blog changes"); .expect("Couldn't save blog changes");
Ok(Flash::success( Ok(Flash::success(

View file

@ -23,6 +23,8 @@
<label for="summary">@i18n!(ctx.1, "Description")<small>@i18n!(ctx.1, "Markdown syntax is supported")</small></label> <label for="summary">@i18n!(ctx.1, "Description")<small>@i18n!(ctx.1, "Markdown syntax is supported")</small></label>
<textarea id="summary" name="summary" rows="20">@form.summary</textarea> <textarea id="summary" name="summary" rows="20">@form.summary</textarea>
@input!(ctx.1, custom_domain (optional text), "Custom Domain", form, errors, "")
<p> <p>
@i18n!(ctx.1, "You can upload images to your gallery, to use them as blog icons, or banners.") @i18n!(ctx.1, "You can upload images to your gallery, to use them as blog icons, or banners.")
<a href="@uri!(medias::new)">@i18n!(ctx.1, "Upload images")</a> <a href="@uri!(medias::new)">@i18n!(ctx.1, "Upload images")</a>