mirror of
https://git.joinplu.me/Plume/Plume.git
synced 2024-11-26 05:21:00 +00:00
List authors of a blog
Update french translation accordingly Fixes #129
This commit is contained in:
parent
216f334d75
commit
ce256d6e39
8 changed files with 59 additions and 5 deletions
|
@ -23,6 +23,7 @@ use plume_common::activity_pub::{
|
|||
sign
|
||||
};
|
||||
use instance::*;
|
||||
use users::User;
|
||||
use schema::blogs;
|
||||
|
||||
pub type CustomGroup = CustomObject<ApSignature, Group>;
|
||||
|
@ -68,6 +69,15 @@ impl Blog {
|
|||
Instance::get(conn, self.instance_id).expect("Couldn't find instance")
|
||||
}
|
||||
|
||||
pub fn list_authors(&self, conn: &PgConnection) -> Vec<User> {
|
||||
use schema::blog_authors;
|
||||
use schema::users;
|
||||
let authors_ids = blog_authors::table.filter(blog_authors::blog_id.eq(self.id)).select(blog_authors::author_id);
|
||||
users::table.filter(users::id.eq(any(authors_ids)))
|
||||
.load::<User>(conn)
|
||||
.expect("Couldn't load authors of a blog")
|
||||
}
|
||||
|
||||
pub fn find_for_author(conn: &PgConnection, author_id: i32) -> Vec<Blog> {
|
||||
use schema::blog_authors;
|
||||
let author_ids = blog_authors::table.filter(blog_authors::author_id.eq(author_id)).select(blog_authors::blog_id);
|
||||
|
|
6
po/de.po
6
po/de.po
|
@ -327,3 +327,9 @@ msgstr ""
|
|||
|
||||
msgid "Password should be at least 8 characters long"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "One author in this blog: "
|
||||
msgid_plural "{{ count }} authors in this blog: "
|
||||
msgstr[0] "Du bist kein Autor in diesem Blog."
|
||||
msgstr[1] "Du bist kein Autor in diesem Blog."
|
||||
|
|
5
po/en.po
5
po/en.po
|
@ -321,3 +321,8 @@ msgstr ""
|
|||
|
||||
msgid "Password should be at least 8 characters long"
|
||||
msgstr ""
|
||||
|
||||
msgid "One author in this blog: "
|
||||
msgid_plural "{{ count }} authors in this blog: "
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
|
12
po/fr.po
12
po/fr.po
|
@ -70,7 +70,8 @@ msgstr "Notifications"
|
|||
|
||||
msgid ""
|
||||
"Written by {{ link_1 }}{{ url }}{{ link_2 }}{{ name | escape }}{{ link_3 }}"
|
||||
msgstr "Écrit par {{ link_1 }}{{ url }}{{ link_2 }}{{ name | escape }}{{ link_3 }}"
|
||||
msgstr ""
|
||||
"Écrit par {{ link_1 }}{{ url }}{{ link_2 }}{{ name | escape }}{{ link_3 }}"
|
||||
|
||||
msgid "This article is under the {{ license }} license."
|
||||
msgstr "Cet article est placé sous la licence {{ license }}"
|
||||
|
@ -303,7 +304,9 @@ msgid "A post with the same title already exists."
|
|||
msgstr "Un article avec le même titre existe déjà."
|
||||
|
||||
msgid "We need an email or a username to identify you"
|
||||
msgstr "Nous avons besoin d'une adresse mail ou d'un nom d'utilisateur pour vous identifier."
|
||||
msgstr ""
|
||||
"Nous avons besoin d'une adresse mail ou d'un nom d'utilisateur pour vous "
|
||||
"identifier."
|
||||
|
||||
msgid "Your password should be at least 8 characters long"
|
||||
msgstr "Votre mot de passe doit faire au moins 8 caractères."
|
||||
|
@ -319,3 +322,8 @@ msgstr "Adresse mail invalide"
|
|||
|
||||
msgid "Password should be at least 8 characters long"
|
||||
msgstr "Le mot de passe doit faire au moins 8 caractères."
|
||||
|
||||
msgid "One author in this blog: "
|
||||
msgid_plural "{{ count }} authors in this blog: "
|
||||
msgstr[0] "{{ count }} aut⋅eur⋅rice dans ce blog : "
|
||||
msgstr[1] "{{ count }} aut⋅eur⋅rice⋅s dans ce blog : "
|
||||
|
|
7
po/pl.po
7
po/pl.po
|
@ -329,5 +329,12 @@ msgstr "Nieprawidłowy adres e-mail"
|
|||
msgid "Password should be at least 8 characters long"
|
||||
msgstr "Hasło musi składać się z przynajmniej 8 znaków"
|
||||
|
||||
#, fuzzy
|
||||
msgid "One author in this blog: "
|
||||
msgid_plural "{{ count }} authors in this blog: "
|
||||
msgstr[0] "Nie jesteś autorem tego bloga."
|
||||
msgstr[1] "Nie jesteś autorem tego bloga."
|
||||
msgstr[2] "Nie jesteś autorem tego bloga."
|
||||
|
||||
#~ msgid "Logowanie"
|
||||
#~ msgstr "Zaloguj się"
|
||||
|
|
|
@ -315,3 +315,7 @@ msgstr ""
|
|||
msgid "Password should be at least 8 characters long"
|
||||
msgstr ""
|
||||
|
||||
msgid "One author in this blog: "
|
||||
msgid_plural "{{ count }} authors in this blog: "
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
|
|
@ -23,12 +23,15 @@ use plume_models::{
|
|||
fn details(name: String, conn: DbConn, user: Option<User>) -> Template {
|
||||
may_fail!(user, Blog::find_by_fqn(&*conn, name), "Requested blog couldn't be found", |blog| {
|
||||
let recents = Post::get_recents_for_blog(&*conn, &blog, 5);
|
||||
let authors = &blog.list_authors(&*conn);
|
||||
|
||||
Template::render("blogs/details", json!({
|
||||
"blog": blog,
|
||||
"blog": &blog,
|
||||
"account": user,
|
||||
"is_author": user.map(|x| x.is_author_in(&*conn, blog)),
|
||||
"recents": recents.into_iter().map(|p| p.to_json(&*conn)).collect::<Vec<serde_json::Value>>()
|
||||
"is_author": user.map(|x| x.is_author_in(&*conn, blog.clone())),
|
||||
"recents": recents.into_iter().map(|p| p.to_json(&*conn)).collect::<Vec<serde_json::Value>>(),
|
||||
"authors": authors.into_iter().map(|u| u.to_json(&*conn)).collect::<Vec<serde_json::Value>>(),
|
||||
"n_authors": authors.len()
|
||||
}))
|
||||
})
|
||||
}
|
||||
|
|
|
@ -8,6 +8,17 @@
|
|||
{% block content %}
|
||||
<h1>{{ blog.title }} (~{{ blog.actor_id }})</h1>
|
||||
<p>{{ blog.summary }}</p>
|
||||
<p>
|
||||
{{ "{{ count }} authors in this blog: " | _n(singular="One author in this blog: ", count = n_authors) }}
|
||||
{% for author in authors %}
|
||||
{% if author.display_name %}
|
||||
{% set name = author.display_name %}
|
||||
{% else %}
|
||||
{% set name = author.username %}
|
||||
{% endif %}
|
||||
<a class="author" href="/@/{{ author.fqn }}">{{ name }}</a>{% if not loop.last %},{% endif %}
|
||||
{% endfor %}
|
||||
</p>
|
||||
|
||||
<section>
|
||||
<h2>{{ "Latest articles" | _ }}</h2>
|
||||
|
|
Loading…
Reference in a new issue