We can't mix GET and POST (in the comment form)

in_response_to was always null
This commit is contained in:
Bat 2018-06-27 00:19:18 +02:00
parent b26649e8c0
commit 68a041711c
8 changed files with 36 additions and 27 deletions

View file

@ -77,7 +77,9 @@ sql_function!(setval, setval_t, (seq: ::diesel::sql_types::Text, val: ::diesel::
fn get_next_id(conn: &PgConnection, seq: &str) -> i32 { fn get_next_id(conn: &PgConnection, seq: &str) -> i32 {
// We cant' use currval because it may fail if nextval have never been called before // We cant' use currval because it may fail if nextval have never been called before
let next = select(nextval(seq)).get_result::<i64>(conn).expect("Next ID fail"); let next = select(nextval(seq)).get_result::<i64>(conn).expect("Next ID fail");
select(setval(seq, next - 1)).get_result::<i64>(conn).expect("Reset ID fail"); if next > 1 {
select(setval(seq, next - 1)).get_result::<i64>(conn).expect("Reset ID fail");
}
next as i32 next as i32
} }

View file

@ -60,13 +60,15 @@ msgstr ""
msgid "Let&#x27;s go!" msgid "Let&#x27;s go!"
msgstr "" msgstr ""
msgid "Welcome on {{ instance_name }}" #, fuzzy
msgid "Welcome on {{ instance_name | escape }}"
msgstr "Welcome on {{ instance_name }}" msgstr "Welcome on {{ instance_name }}"
msgid "Notifications" msgid "Notifications"
msgstr "" msgstr ""
msgid "Written by {{ link_1 }}{{ url }}{{ link_2 }}{{ name }}{{ link_3 }}" msgid ""
"Written by {{ link_1 }}{{ url }}{{ link_2 }}{{ name | escape }}{{ link_3 }}"
msgstr "" msgstr ""
msgid "This article is under the {{ license }} license." msgid "This article is under the {{ license }} license."
@ -184,7 +186,7 @@ msgid "Update account"
msgstr "" msgstr ""
#, fuzzy #, fuzzy
msgid "{{ name }}'s followers" msgid "{{ name | escape }}'s followers"
msgstr "One follower" msgstr "One follower"
#, fuzzy #, fuzzy
@ -254,7 +256,7 @@ msgstr ""
msgid "You need to be logged in order to edit your profile" msgid "You need to be logged in order to edit your profile"
msgstr "" msgstr ""
msgid "By {{ link_1 }}{{ link_2 }}{{ link_3 }}{{ name }}{{ link_4 }}" msgid "By {{ link_1 }}{{ link_2 }}{{ link_3 }}{{ name | escape }}{{ link_4 }}"
msgstr "" msgstr ""
msgid "{{ data }} reshared your article" msgid "{{ data }} reshared your article"

View file

@ -62,13 +62,16 @@ msgstr "Nom"
msgid "Let&#x27;s go!" msgid "Let&#x27;s go!"
msgstr "C'est parti !" msgstr "C'est parti !"
msgid "Welcome on {{ instance_name }}" #, fuzzy
msgid "Welcome on {{ instance_name | escape }}"
msgstr "Bienvenue sur {{ instance_name }}" msgstr "Bienvenue sur {{ instance_name }}"
msgid "Notifications" msgid "Notifications"
msgstr "Notifications" msgstr "Notifications"
msgid "Written by {{ link_1 }}{{ url }}{{ link_2 }}{{ name }}{{ link_3 }}" #, fuzzy
msgid ""
"Written by {{ link_1 }}{{ url }}{{ link_2 }}{{ name | escape }}{{ link_3 }}"
msgstr "Écrit par {{ link_1 }}{{ url }}{{ link_2 }}{{ name }}{{ link_3 }}" msgstr "Écrit par {{ link_1 }}{{ url }}{{ link_2 }}{{ name }}{{ link_3 }}"
msgid "This article is under the {{ license }} license." msgid "This article is under the {{ license }} license."
@ -184,7 +187,8 @@ msgstr "Description"
msgid "Update account" msgid "Update account"
msgstr "Mettre à jour mes informations" msgstr "Mettre à jour mes informations"
msgid "{{ name }}'s followers" #, fuzzy
msgid "{{ name | escape }}'s followers"
msgstr "{{ count }} abonné⋅e" msgstr "{{ count }} abonné⋅e"
msgid "Followers" msgid "Followers"
@ -253,7 +257,8 @@ msgstr "Vous devez vous connecter pour suivre quelqu'un"
msgid "You need to be logged in order to edit your profile" msgid "You need to be logged in order to edit your profile"
msgstr "Vous devez vous connecter pour modifier votre profil" msgstr "Vous devez vous connecter pour modifier votre profil"
msgid "By {{ link_1 }}{{ link_2 }}{{ link_3 }}{{ name }}{{ link_4 }}" #, fuzzy
msgid "By {{ link_1 }}{{ link_2 }}{{ link_3 }}{{ name | escape }}{{ link_4 }}"
msgstr "De {{ link_1 }}{{ link_2 }}{{ link_3 }}{{ name }}{{ link_4 }}" msgstr "De {{ link_1 }}{{ link_2 }}{{ link_3 }}{{ name }}{{ link_4 }}"
msgid "{{ data }} reshared your article" msgid "{{ data }} reshared your article"

View file

@ -63,13 +63,16 @@ msgstr "Nazwa"
msgid "Let&#x27;s go!" msgid "Let&#x27;s go!"
msgstr "Przejdźmy dalej!" msgstr "Przejdźmy dalej!"
msgid "Welcome on {{ instance_name }}" #, fuzzy
msgid "Welcome on {{ instance_name | escape }}"
msgstr "Witamy na {{ instance_name }}" msgstr "Witamy na {{ instance_name }}"
msgid "Notifications" msgid "Notifications"
msgstr "Powiadomienia" msgstr "Powiadomienia"
msgid "Written by {{ link_1 }}{{ url }}{{ link_2 }}{{ name }}{{ link_3 }}" #, fuzzy
msgid ""
"Written by {{ link_1 }}{{ url }}{{ link_2 }}{{ name | escape }}{{ link_3 }}"
msgstr "Napisano przez {{ link_1 }}{{ url }}{{ link_2 }}{{ name }}{{ link_3 }}" msgstr "Napisano przez {{ link_1 }}{{ url }}{{ link_2 }}{{ name }}{{ link_3 }}"
msgid "This article is under the {{ license }} license." msgid "This article is under the {{ license }} license."
@ -188,7 +191,8 @@ msgstr "Opis"
msgid "Update account" msgid "Update account"
msgstr "Aktualizuj konto" msgstr "Aktualizuj konto"
msgid "{{ name }}'s followers" #, fuzzy
msgid "{{ name | escape }}'s followers"
msgstr "Osoby śledzące {{ name }}" msgstr "Osoby śledzące {{ name }}"
msgid "Followers" msgid "Followers"
@ -258,7 +262,7 @@ msgid "You need to be logged in order to edit your profile"
msgstr "Musisz się zalogować , aby móc edytować swój profil" msgstr "Musisz się zalogować , aby móc edytować swój profil"
#, fuzzy #, fuzzy
msgid "By {{ link_1 }}{{ link_2 }}{{ link_3 }}{{ name }}{{ link_4 }}" msgid "By {{ link_1 }}{{ link_2 }}{{ link_3 }}{{ name | escape }}{{ link_4 }}"
msgstr "Napisano przez {{ link_1 }}{{ url }}{{ link_2 }}{{ name }}{{ link_3 }}" msgstr "Napisano przez {{ link_1 }}{{ url }}{{ link_2 }}{{ name }}{{ link_3 }}"
msgid "{{ data }} reshared your article" msgid "{{ data }} reshared your article"

View file

@ -38,7 +38,6 @@ fn main() {
routes::blogs::create, routes::blogs::create,
routes::comments::create, routes::comments::create,
routes::comments::create_response,
routes::instance::index, routes::instance::index,
routes::instance::shared_inbox, routes::instance::shared_inbox,

View file

@ -15,31 +15,21 @@ use plume_models::{
}; };
use inbox::Inbox; use inbox::Inbox;
#[derive(FromForm)]
pub struct CommentQuery {
pub responding_to: Option<i32>
}
#[derive(FromForm)] #[derive(FromForm)]
struct NewCommentForm { struct NewCommentForm {
pub responding_to: Option<i32>,
pub content: String pub content: String
} }
// See: https://github.com/SergioBenitez/Rocket/pull/454
#[post("/~/<blog_name>/<slug>/comment", data = "<data>")] #[post("/~/<blog_name>/<slug>/comment", data = "<data>")]
fn create(blog_name: String, slug: String, data: LenientForm<NewCommentForm>, user: User, conn: DbConn) -> Redirect { fn create(blog_name: String, slug: String, data: LenientForm<NewCommentForm>, user: User, conn: DbConn) -> Redirect {
create_response(blog_name, slug, None, data, user, conn)
}
#[post("/~/<blog_name>/<slug>/comment?<query>", data = "<data>")]
fn create_response(blog_name: String, slug: String, query: Option<CommentQuery>, data: LenientForm<NewCommentForm>, user: User, conn: DbConn) -> Redirect {
let blog = Blog::find_by_fqn(&*conn, blog_name.clone()).unwrap(); let blog = Blog::find_by_fqn(&*conn, blog_name.clone()).unwrap();
let post = Post::find_by_slug(&*conn, slug.clone(), blog.id).unwrap(); let post = Post::find_by_slug(&*conn, slug.clone(), blog.id).unwrap();
let form = data.get(); let form = data.get();
let (new_comment, id) = NewComment::build() let (new_comment, id) = NewComment::build()
.content(form.content.clone()) .content(form.content.clone())
.in_response_to_id(query.and_then(|q| q.responding_to)) .in_response_to_id(form.responding_to.clone())
.post(post) .post(post)
.author(user.clone()) .author(user.clone())
.create(&*conn); .create(&*conn);

View file

@ -17,7 +17,11 @@ use plume_models::{
safe_string::SafeString, safe_string::SafeString,
users::User users::User
}; };
use routes::comments::CommentQuery;
#[derive(FromForm)]
struct CommentQuery {
responding_to: Option<i32>
}
// See: https://github.com/SergioBenitez/Rocket/pull/454 // See: https://github.com/SergioBenitez/Rocket/pull/454
#[get("/~/<blog>/<slug>", rank = 4)] #[get("/~/<blog>/<slug>", rank = 4)]

View file

@ -63,6 +63,9 @@
{% if account %} {% if account %}
<form method="post" action="/~/{{ blog.actor_id }}/{{ post.slug }}/comment"> <form method="post" action="/~/{{ blog.actor_id }}/{{ post.slug }}/comment">
<label for="content">{{ "Your comment" | _ }}</label> <label for="content">{{ "Your comment" | _ }}</label>
{% if previous %}
<input type="hidden" name="in_response_to" value="{{ previous.id }}"/>
{% endif %}
{# Ugly, but we don't have the choice if we don't want weird paddings #} {# Ugly, but we don't have the choice if we don't want weird paddings #}
<textarea id="content" name="content">{% filter trim %}{% if previous %}{% if previous.author.fqn != user_fqn %}@{{ previous.author.fqn }} {% endif %}{% for mention in previous.mentions %}{% if mention != user_fqn %}@{{ mention }} {% endif %}{% endfor %}{% endif %}{% endfilter %}</textarea> <textarea id="content" name="content">{% filter trim %}{% if previous %}{% if previous.author.fqn != user_fqn %}@{{ previous.author.fqn }} {% endif %}{% for mention in previous.mentions %}{% if mention != user_fqn %}@{{ mention }} {% endif %}{% endfor %}{% endif %}{% endfilter %}</textarea>
<input type="submit" value="{{ "Submit comment" | _ }}" /> <input type="submit" value="{{ "Submit comment" | _ }}" />