Browse Source

Don't modify article title for slug

pull/920/head
Kitaiti Makoto 1 month ago
parent
commit
6345a57498
3 changed files with 8 additions and 11 deletions
  1. +4
    -5
      plume-models/src/posts.rs
  2. +1
    -2
      src/api/posts.rs
  3. +3
    -4
      src/routes/posts.rs

+ 4
- 5
plume-models/src/posts.rs View File

@@ -11,7 +11,6 @@ use activitypub::{
};
use chrono::{NaiveDateTime, TimeZone, Utc};
use diesel::{self, BelongingToDsl, ExpressionMethods, QueryDsl, RunQueryDsl, SaveChangesDsl};
use heck::KebabCase;
use once_cell::sync::Lazy;
use plume_common::{
activity_pub::{
@@ -653,12 +652,12 @@ impl FromId<DbConn> for Post {
.and_then(|mut post| {
let mut updated = false;

let slug = title.to_kebab_case();
let slug = Self::slug(&title);
let content = SafeString::new(&article.object_props.content_string()?);
let subtitle = article.object_props.summary_string()?;
let source = article.ap_object_props.source_object::<Source>()?.content;
if post.slug != slug {
post.slug = slug;
post.slug = slug.to_string();
updated = true;
}
if post.title != title {
@@ -697,7 +696,7 @@ impl FromId<DbConn> for Post {
conn,
NewPost {
blog_id: blog?.id,
slug: title.to_kebab_case(),
slug: Self::slug(&title).to_string(),
title,
content: SafeString::new(&article.object_props.content_string()?),
published: true,
@@ -842,7 +841,7 @@ impl AsObject<User, Update, &DbConn> for PostUpdate {
}

if let Some(title) = self.title {
post.slug = title.to_kebab_case();
post.slug = Post::slug(&title).to_string();
post.title = title;
}



+ 1
- 2
src/api/posts.rs View File

@@ -1,5 +1,4 @@
use chrono::NaiveDateTime;
use heck::KebabCase;
use rocket_contrib::json::Json;

use crate::api::{authorization::*, Api};
@@ -109,7 +108,7 @@ pub fn create(

let author = User::get(&conn, auth.0.user_id)?;

let slug = &payload.title.clone().to_kebab_case();
let slug = Post::slug(&payload.title);
let date = payload.creation_date.clone().and_then(|d| {
NaiveDateTime::parse_from_str(format!("{} 00:00:00", d).as_ref(), "%Y-%m-%d %H:%M:%S").ok()
});


+ 3
- 4
src/routes/posts.rs View File

@@ -1,5 +1,4 @@
use chrono::Utc;
use heck::KebabCase;
use rocket::http::uri::Uri;
use rocket::request::LenientForm;
use rocket::response::{Flash, Redirect};
@@ -236,7 +235,7 @@ pub fn update(
let intl = &rockets.intl.catalog;

let new_slug = if !post.published {
form.title.to_string().to_kebab_case()
Post::slug(&form.title).to_string()
} else {
post.slug.clone()
};
@@ -400,7 +399,7 @@ pub struct NewPostForm {
}

pub fn valid_slug(title: &str) -> Result<(), ValidationError> {
let slug = title.to_string().to_kebab_case();
let slug = Post::slug(title);
if slug.is_empty() {
Err(ValidationError::new("empty_slug"))
} else if slug == "new" {
@@ -419,7 +418,7 @@ pub fn create(
rockets: PlumeRocket,
) -> Result<RespondOrRedirect, ErrorPage> {
let blog = Blog::find_by_fqn(&conn, &blog_name).expect("post::create: blog error");
let slug = form.title.to_string().to_kebab_case();
let slug = Post::slug(&form.title);
let user = rockets.user.clone().unwrap();

let mut errors = match form.validate() {


Loading…
Cancel
Save