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 {
// 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");
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
}

View file

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

View file

@ -62,13 +62,16 @@ msgstr "Nom"
msgid "Let&#x27;s go!"
msgstr "C'est parti !"
msgid "Welcome on {{ instance_name }}"
#, fuzzy
msgid "Welcome on {{ instance_name | escape }}"
msgstr "Bienvenue sur {{ instance_name }}"
msgid "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 }}"
msgid "This article is under the {{ license }} license."
@ -184,7 +187,8 @@ msgstr "Description"
msgid "Update account"
msgstr "Mettre à jour mes informations"
msgid "{{ name }}'s followers"
#, fuzzy
msgid "{{ name | escape }}'s followers"
msgstr "{{ count }} abonné⋅e"
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"
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 }}"
msgid "{{ data }} reshared your article"

View file

@ -63,13 +63,16 @@ msgstr "Nazwa"
msgid "Let&#x27;s go!"
msgstr "Przejdźmy dalej!"
msgid "Welcome on {{ instance_name }}"
#, fuzzy
msgid "Welcome on {{ instance_name | escape }}"
msgstr "Witamy na {{ instance_name }}"
msgid "Notifications"
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 }}"
msgid "This article is under the {{ license }} license."
@ -188,7 +191,8 @@ msgstr "Opis"
msgid "Update account"
msgstr "Aktualizuj konto"
msgid "{{ name }}'s followers"
#, fuzzy
msgid "{{ name | escape }}'s followers"
msgstr "Osoby śledzące {{ name }}"
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"
#, 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 }}"
msgid "{{ data }} reshared your article"

View file

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

View file

@ -15,31 +15,21 @@ use plume_models::{
};
use inbox::Inbox;
#[derive(FromForm)]
pub struct CommentQuery {
pub responding_to: Option<i32>
}
#[derive(FromForm)]
struct NewCommentForm {
pub responding_to: Option<i32>,
pub content: String
}
// See: https://github.com/SergioBenitez/Rocket/pull/454
#[post("/~/<blog_name>/<slug>/comment", data = "<data>")]
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 post = Post::find_by_slug(&*conn, slug.clone(), blog.id).unwrap();
let form = data.get();
let (new_comment, id) = NewComment::build()
.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)
.author(user.clone())
.create(&*conn);

View file

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

View file

@ -63,6 +63,9 @@
{% if account %}
<form method="post" action="/~/{{ blog.actor_id }}/{{ post.slug }}/comment">
<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 #}
<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" | _ }}" />