Add support for remote interact (#519)

Add support for remote interaction ([this thing](https://eldritch.cafe/users/Barmaid/remote_follow) in mastodon)

- [x] create the endpoint dispatching remote interactions to local pages
- [x] add this endpoint to web-finger
- [x] propose remote interaction when following and not connected
- [x] propose remote interaction when liking/sharing and not connected
- [x] propose remote interaction when commenting and not connected
- [x] fetch posts/comments we don't know but remote interaction was requested for ?
This commit is contained in:
fdb-hiroshima 2019-04-17 22:09:07 +02:00 committed by Baptiste Gelez
parent 12efe721cc
commit 0d708e1639
28 changed files with 1173 additions and 481 deletions

View file

@ -147,10 +147,10 @@ aliases:
- *restore_cache_plume_dead_code
- run:
name: install server
command: cargo install --debug --no-default-features --features="${FEATURES}",test --path . || cargo install --debug --no-default-features --features="${FEATURES}",test --path .
command: cargo install --debug --no-default-features --features="${FEATURES}",test --path . -f || cargo install --debug --no-default-features --features="${FEATURES}",test --path . -f
- run:
name: install plm
command: cargo install --debug --no-default-features --features="${FEATURES}" --path plume-cli || cargo install --debug --no-default-features --features="${FEATURES}" --path plume-cli
command: cargo install --debug --no-default-features --features="${FEATURES}" --path plume-cli -f || cargo install --debug --no-default-features --features="${FEATURES}" --path plume-cli -f
- run:
name: run test
command: ./script/run_browser_test.sh

7
Cargo.lock generated
View file

@ -1807,6 +1807,7 @@ dependencies = [
"rpassword 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rsass 0.9.8 (registry+https://github.com/rust-lang/crates.io-index)",
"ructe 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)",
"runtime-fmt 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"scheduled-thread-pool 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2373,6 +2374,11 @@ dependencies = [
"nom 4.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "runtime-fmt"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "rust-stemmers"
version = "1.1.0"
@ -3502,6 +3508,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
"checksum rpassword 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d37473170aedbe66ffa3ad3726939ba677d83c646ad4fd99e5b4bc38712f45ec"
"checksum rsass 0.9.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7f4534cc03040beacd2668621815f26fe57e5b7cfe085790f98e5e87c1612316"
"checksum ructe 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)" = "159f449df09bdd1c92080d0fc1d1c5e11abe81301496370dfee546d985a46dec"
"checksum runtime-fmt 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "647a821d66049faccc993fc3c379d1181b81a484097495cda79ffdb17b55b87f"
"checksum rust-stemmers 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05928c187b85b38f6b98db43057a24f0245163635a5ce6325a4f77a833d646aa"
"checksum rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "adacaae16d02b6ec37fdc7acfcddf365978de76d1983d3ee22afc260e1ca9619"
"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"

View file

@ -23,6 +23,7 @@ rocket = "0.4.0"
rocket_contrib = { version = "0.4.0", features = ["json"] }
rocket_i18n = "0.4.0"
rpassword = "2.0"
runtime-fmt = "0.3.0"
scheduled-thread-pool = "0.2.0"
serde = "1.0"
serde_json = "1.0"

View file

@ -253,6 +253,15 @@ impl User {
User::from_id(c, link.href.as_ref()?, None).map_err(|(_, e)| e)
}
pub fn fetch_remote_interact_uri(acct: &str) -> Result<String> {
resolve(acct.to_owned(), true)?
.links
.into_iter()
.find(|l| l.rel == "http://ostatus.org/schema/1.0/subscribe")
.and_then(|l| l.template)
.ok_or(Error::Webfinger)
}
fn fetch(url: &str) -> Result<CustomPerson> {
let mut res = Client::new()
.get(url)
@ -640,7 +649,7 @@ impl User {
links: vec![
Link {
rel: String::from("http://webfinger.net/rel/profile-page"),
mime_type: None,
mime_type: Some(String::from("text/html")),
href: Some(self.ap_url.clone()),
template: None,
},
@ -660,6 +669,15 @@ impl User {
href: Some(self.ap_url.clone()),
template: None,
},
Link {
rel: String::from("http://ostatus.org/schema/1.0/subscribe"),
mime_type: None,
href: None,
template: Some(format!(
"{}/remote_interact?{{uri}}",
self.get_instance(conn)?.public_domain
)),
},
],
})
}

View file

@ -86,6 +86,12 @@ msgstr "منشور جديد"
msgid "Edit {0}"
msgstr "تعديل {0}"
# src/routes/user.rs:222
msgid ""
"Couldn't obtain enough information about your account. Please make sure your "
"username is correct."
msgstr ""
# src/routes/reshares.rs:47
msgid "To reshare a post, you need to be logged in"
msgstr ""
@ -254,6 +260,17 @@ msgstr "يديره"
msgid "Runs Plume {0}"
msgstr "مدعوم بـ Plume {0}"
#, fuzzy
msgid "Follow {}"
msgstr "اتبع"
#, fuzzy
msgid "Login to follow"
msgstr "قم بتسجيل الدخول قصد مشاركته"
msgid "Enter your full username to follow"
msgstr ""
msgid "Edit your account"
msgstr "تعديل حسابك"
@ -565,6 +582,16 @@ msgstr "تسجيل الدخول"
msgid "Username, or email"
msgstr "اسم المستخدم أو عنوان البريد الالكتروني"
msgid "Interact with {}"
msgstr ""
#, fuzzy
msgid "Log in to interact"
msgstr "قم بتسجيل الدخول قصد الإعجاب به"
msgid "Enter your full username to interact"
msgstr ""
msgid "Publish"
msgstr "انشر"
@ -663,7 +690,9 @@ msgid "Boost"
msgstr "رقّي"
#, fuzzy
msgid "Log in, or use your Fediverse account to interact with this article"
msgid ""
"{0}Log in{1}, or {2}use your Fediverse account{3} to interact with this "
"article"
msgstr ""
"قم بتسجيل الدخول أو استخدم حسابك على الفديفرس إن كنت ترغب في التفاعل مع هذا "
"المقال"
@ -789,6 +818,21 @@ msgstr "المقالات الموسومة بـ \"{0}\""
msgid "There are currently no articles with such a tag"
msgstr "حاليا لا يوجد هناك مقال يحتوي على هذا الوسم"
#, fuzzy
msgid "I'm from this instance"
msgstr "عن مثيل الخادوم هذا"
msgid "I'm from another instance"
msgstr ""
# src/template_utils.rs:225
msgid "Example: user@plu.me"
msgstr ""
#, fuzzy
msgid "Continue to your instance"
msgstr "إعداد مثيل الخادم"
msgid "Upload"
msgstr "إرسال"
@ -904,15 +948,9 @@ msgstr "استخدمها كصورة رمزية"
#~ msgid "Unfollow"
#~ msgstr "الغاء المتابعة"
#~ msgid "Follow"
#~ msgstr "اتبع"
#~ msgid "Comment \"{0}\""
#~ msgstr "تعليق \"{0}\""
#~ msgid "Configure your instance"
#~ msgstr "إعداد مثيل الخادم"
#~ msgid "Let&#x27;s go!"
#~ msgstr "هيا بنا!"
@ -981,9 +1019,3 @@ msgstr "استخدمها كصورة رمزية"
#~ msgid "Next page"
#~ msgstr "الصفحة التالية"
#~ msgid "Login to like"
#~ msgstr "قم بتسجيل الدخول قصد الإعجاب به"
#~ msgid "Login to boost"
#~ msgstr "قم بتسجيل الدخول قصد مشاركته"

View file

@ -85,6 +85,12 @@ msgstr "Neuer Beitrag"
msgid "Edit {0}"
msgstr "Bearbeiten"
# src/routes/user.rs:222
msgid ""
"Couldn't obtain enough information about your account. Please make sure your "
"username is correct."
msgstr ""
# src/routes/reshares.rs:47
msgid "To reshare a post, you need to be logged in"
msgstr ""
@ -256,6 +262,17 @@ msgstr "Administriert von"
msgid "Runs Plume {0}"
msgstr "Verwendet Plume {0}"
#, fuzzy
msgid "Follow {}"
msgstr "Folgen"
#, fuzzy
msgid "Login to follow"
msgstr "Um zu boosten, musst du eingeloggt sein"
msgid "Enter your full username to follow"
msgstr ""
msgid "Edit your account"
msgstr "Ändere deinen Account"
@ -568,6 +585,16 @@ msgstr "Einloggen"
msgid "Username, or email"
msgstr "Nutzername oder E-Mail"
msgid "Interact with {}"
msgstr ""
#, fuzzy
msgid "Log in to interact"
msgstr "Um zu liken, musst du eingeloggt sein"
msgid "Enter your full username to interact"
msgstr ""
msgid "Publish"
msgstr "Veröffentlichen"
@ -664,7 +691,9 @@ msgid "Boost"
msgstr "Boosten"
#, fuzzy
msgid "Log in, or use your Fediverse account to interact with this article"
msgid ""
"{0}Log in{1}, or {2}use your Fediverse account{3} to interact with this "
"article"
msgstr ""
"Log dich ein oder nutze deinen Fediverse-Account um mit diesem Artikel zu "
"interagieren"
@ -796,6 +825,21 @@ msgstr "Mit \"{0}\" markierte Artikel"
msgid "There are currently no articles with such a tag"
msgstr ""
#, fuzzy
msgid "I'm from this instance"
msgstr "Über diese Instanz"
msgid "I'm from another instance"
msgstr ""
# src/template_utils.rs:225
msgid "Example: user@plu.me"
msgstr ""
#, fuzzy
msgid "Continue to your instance"
msgstr "Konfiguriere deine Instanz"
msgid "Upload"
msgstr "Hochladen"
@ -909,9 +953,6 @@ msgstr "Als Avatar verwenden"
#~ msgid "Unfollow"
#~ msgstr "Folgen"
#~ msgid "Follow"
#~ msgstr "Folgen"
#, fuzzy
#~ msgid "No articles to see here yet."
#~ msgstr "Bisher keine Artikel vorhanden."
@ -985,9 +1026,6 @@ msgstr "Als Avatar verwenden"
#~ msgid "Comment \"{0}\""
#~ msgstr "Kommentar \"{0}\""
#~ msgid "Configure your instance"
#~ msgstr "Konfiguriere deine Instanz"
#~ msgid "Let&#x27;s go!"
#~ msgstr "Los geht's!"
@ -1047,12 +1085,6 @@ msgstr "Als Avatar verwenden"
#~ msgid "The password should be at least 8 characters long"
#~ msgstr "Passwort sollte mindestens 8 Zeichen lang sein"
#~ msgid "Login to like"
#~ msgstr "Um zu liken, musst du eingeloggt sein"
#~ msgid "Login to boost"
#~ msgstr "Um zu boosten, musst du eingeloggt sein"
#~ msgid "Create a post"
#~ msgstr "Beitrag erstellen"

View file

@ -90,6 +90,12 @@ msgstr ""
msgid "Edit {0}"
msgstr ""
# src/routes/user.rs:222
msgid ""
"Couldn't obtain enough information about your account. Please make sure your "
"username is correct."
msgstr ""
# src/routes/reshares.rs:47
msgid "To reshare a post, you need to be logged in"
msgstr ""
@ -251,6 +257,15 @@ msgstr ""
msgid "Runs Plume {0}"
msgstr ""
msgid "Follow {}"
msgstr ""
msgid "Login to follow"
msgstr ""
msgid "Enter your full username to follow"
msgstr ""
msgid "Edit your account"
msgstr ""
@ -540,6 +555,15 @@ msgstr ""
msgid "Username, or email"
msgstr ""
msgid "Interact with {}"
msgstr ""
msgid "Log in to interact"
msgstr ""
msgid "Enter your full username to interact"
msgstr ""
msgid "Publish"
msgstr ""
@ -625,7 +649,9 @@ msgstr ""
msgid "Boost"
msgstr ""
msgid "Log in, or use your Fediverse account to interact with this article"
msgid ""
"{0}Log in{1}, or {2}use your Fediverse account{3} to interact with this "
"article"
msgstr ""
msgid "Comments"
@ -737,6 +763,19 @@ msgstr ""
msgid "There are currently no articles with such a tag"
msgstr ""
msgid "I'm from this instance"
msgstr ""
msgid "I'm from another instance"
msgstr ""
# src/template_utils.rs:225
msgid "Example: user@plu.me"
msgstr ""
msgid "Continue to your instance"
msgstr ""
msgid "Upload"
msgstr ""

View file

@ -86,6 +86,12 @@ msgstr "Nueva publicación"
msgid "Edit {0}"
msgstr ""
# src/routes/user.rs:222
msgid ""
"Couldn't obtain enough information about your account. Please make sure your "
"username is correct."
msgstr ""
# src/routes/reshares.rs:47
msgid "To reshare a post, you need to be logged in"
msgstr ""
@ -246,6 +252,17 @@ msgstr ""
msgid "Runs Plume {0}"
msgstr ""
#, fuzzy
msgid "Follow {}"
msgstr "Seguir"
#, fuzzy
msgid "Login to follow"
msgstr "Dejar de seguir"
msgid "Enter your full username to follow"
msgstr ""
msgid "Edit your account"
msgstr "Edita tu cuenta"
@ -537,6 +554,15 @@ msgstr "Iniciar Sesión"
msgid "Username, or email"
msgstr "Nombre de usuario o correo electrónico"
msgid "Interact with {}"
msgstr ""
msgid "Log in to interact"
msgstr ""
msgid "Enter your full username to interact"
msgstr ""
msgid "Publish"
msgstr "Publicar"
@ -623,7 +649,9 @@ msgstr "Ya no me gusta"
msgid "Boost"
msgstr ""
msgid "Log in, or use your Fediverse account to interact with this article"
msgid ""
"{0}Log in{1}, or {2}use your Fediverse account{3} to interact with this "
"article"
msgstr ""
msgid "Comments"
@ -738,6 +766,20 @@ msgstr ""
msgid "There are currently no articles with such a tag"
msgstr ""
msgid "I'm from this instance"
msgstr ""
msgid "I'm from another instance"
msgstr ""
# src/template_utils.rs:225
msgid "Example: user@plu.me"
msgstr ""
#, fuzzy
msgid "Continue to your instance"
msgstr "Configure su instancia"
msgid "Upload"
msgstr ""
@ -812,9 +854,6 @@ msgstr ""
#~ msgid "Comment \"{0}\""
#~ msgstr "Comentario \"{0}\""
#~ msgid "Configure your instance"
#~ msgstr "Configure su instancia"
#~ msgid "Let&#x27;s go!"
#~ msgstr "Vamos!"
@ -824,12 +863,6 @@ msgstr ""
#~ msgid "Create a post"
#~ msgstr "Crear una publicación"
#~ msgid "Follow"
#~ msgstr "Seguir"
#~ msgid "Unfollow"
#~ msgstr "Dejar de seguir"
#~ msgid "One follower"
#~ msgid_plural "{0} followers"
#~ msgstr[0] "Un seguidor"

View file

@ -88,6 +88,12 @@ msgstr "Nouvel article"
msgid "Edit {0}"
msgstr "Modifier {0}"
# src/routes/user.rs:222
msgid ""
"Couldn't obtain enough information about your account. Please make sure your "
"username is correct."
msgstr ""
# src/routes/reshares.rs:47
msgid "To reshare a post, you need to be logged in"
msgstr ""
@ -257,6 +263,17 @@ msgstr "Administré par"
msgid "Runs Plume {0}"
msgstr "Propulsé par Plume {0}"
#, fuzzy
msgid "Follow {}"
msgstr "Sabonner"
#, fuzzy
msgid "Login to follow"
msgstr "Connectez-vous pour partager"
msgid "Enter your full username to follow"
msgstr ""
msgid "Edit your account"
msgstr "Modifier votre compte"
@ -565,6 +582,16 @@ msgstr "Se connecter"
msgid "Username, or email"
msgstr "Nom dutilisateur ou adresse électronique"
msgid "Interact with {}"
msgstr ""
#, fuzzy
msgid "Log in to interact"
msgstr "Connectez-vous pour aimer"
msgid "Enter your full username to interact"
msgstr ""
msgid "Publish"
msgstr "Publier"
@ -659,7 +686,9 @@ msgid "Boost"
msgstr "Partager"
#, fuzzy
msgid "Log in, or use your Fediverse account to interact with this article"
msgid ""
"{0}Log in{1}, or {2}use your Fediverse account{3} to interact with this "
"article"
msgstr ""
"Connectez-vous ou utilisez votre compte sur le Fediverse pour interagir avec "
"cet article"
@ -793,6 +822,21 @@ msgstr "Articles taggués « {0} »"
msgid "There are currently no articles with such a tag"
msgstr "Il n'y a pas encore d'article avec ce tag"
#, fuzzy
msgid "I'm from this instance"
msgstr "À propos de cette instance"
msgid "I'm from another instance"
msgstr ""
# src/template_utils.rs:225
msgid "Example: user@plu.me"
msgstr ""
#, fuzzy
msgid "Continue to your instance"
msgstr "Configurer votre instance"
msgid "Upload"
msgstr "Téléverser"
@ -907,9 +951,6 @@ msgstr "Utiliser comme avatar"
#~ msgid "Unfollow"
#~ msgstr "Sabonner"
#~ msgid "Follow"
#~ msgstr "Sabonner"
#, fuzzy
#~ msgid "No articles to see here yet."
#~ msgstr "Aucun article pour le moment."
@ -972,14 +1013,6 @@ msgstr "Utiliser comme avatar"
#~ "Plume is a decentralized blogging engine and a member of the Fediverse."
#~ msgstr "Plume est un moteur de blog décentralisé."
#, fuzzy
#~ msgid "Log In to like"
#~ msgstr "Connectez-vous pour aimer"
#, fuzzy
#~ msgid "Log In to boost"
#~ msgstr "Connectez-vous pour partager"
#, fuzzy
#~ msgid "Create a new post"
#~ msgstr "Créer un article"
@ -987,9 +1020,6 @@ msgstr "Utiliser comme avatar"
#~ msgid "Comment \"{0}\""
#~ msgstr "Commenter « {0} »"
#~ msgid "Configure your instance"
#~ msgstr "Configurer votre instance"
#~ msgid "Let&#x27;s go!"
#~ msgstr "Cest parti !"

View file

@ -84,6 +84,12 @@ msgstr "Nova entrada"
msgid "Edit {0}"
msgstr "Editar"
# src/routes/user.rs:222
msgid ""
"Couldn't obtain enough information about your account. Please make sure your "
"username is correct."
msgstr ""
# src/routes/reshares.rs:47
msgid "To reshare a post, you need to be logged in"
msgstr ""
@ -255,6 +261,17 @@ msgstr "Administrada por"
msgid "Runs Plume {0}"
msgstr "Versión Plume {0}"
#, fuzzy
msgid "Follow {}"
msgstr "Seguir"
#, fuzzy
msgid "Login to follow"
msgstr "Conéctese para promover"
msgid "Enter your full username to follow"
msgstr ""
msgid "Edit your account"
msgstr "Edite a súa conta"
@ -564,6 +581,16 @@ msgstr "Conectar"
msgid "Username, or email"
msgstr "Usuaria ou correo-e"
msgid "Interact with {}"
msgstr ""
#, fuzzy
msgid "Log in to interact"
msgstr "Conéctese para gostar"
msgid "Enter your full username to interact"
msgstr ""
msgid "Publish"
msgstr "Publicar"
@ -658,7 +685,9 @@ msgid "Boost"
msgstr "Promover"
#, fuzzy
msgid "Log in, or use your Fediverse account to interact with this article"
msgid ""
"{0}Log in{1}, or {2}use your Fediverse account{3} to interact with this "
"article"
msgstr ""
"Conéctese ou utilice a súa conta no fediverso para interactuar con este "
"artigo"
@ -787,6 +816,21 @@ msgstr "Artigos etiquetados con {0}"
msgid "There are currently no articles with such a tag"
msgstr ""
#, fuzzy
msgid "I'm from this instance"
msgstr "Sobre esta instancia"
msgid "I'm from another instance"
msgstr ""
# src/template_utils.rs:225
msgid "Example: user@plu.me"
msgstr ""
#, fuzzy
msgid "Continue to your instance"
msgstr "Configure a súa instancia"
msgid "Upload"
msgstr "Subir"
@ -901,9 +945,6 @@ msgstr "Utilizar como avatar"
#~ msgid "Unfollow"
#~ msgstr "Seguir"
#~ msgid "Follow"
#~ msgstr "Seguir"
#, fuzzy
#~ msgid "No articles to see here yet."
#~ msgstr "Aínda non hai entradas publicadas"
@ -985,9 +1026,6 @@ msgstr "Utilizar como avatar"
#~ msgid "Comment \"{0}\""
#~ msgstr "Comentar \"{0}\""
#~ msgid "Configure your instance"
#~ msgstr "Configure a súa instancia"
#~ msgid "Let&#x27;s go!"
#~ msgstr "Imos!"
@ -1038,12 +1076,6 @@ msgstr "Utilizar como avatar"
#~ msgid "The password should be at least 8 characters long"
#~ msgstr "O contrasinal debe ter ao menos 8 caracteres"
#~ msgid "Login to like"
#~ msgstr "Conéctese para gostar"
#~ msgid "Login to boost"
#~ msgstr "Conéctese para promover"
#~ msgid "Create a post"
#~ msgstr "Crear unha entrada"

View file

@ -84,6 +84,12 @@ msgstr "Nuovo post"
msgid "Edit {0}"
msgstr "Modifica"
# src/routes/user.rs:222
msgid ""
"Couldn't obtain enough information about your account. Please make sure your "
"username is correct."
msgstr ""
# src/routes/reshares.rs:47
msgid "To reshare a post, you need to be logged in"
msgstr ""
@ -255,6 +261,17 @@ msgstr "Amministrata da"
msgid "Runs Plume {0}"
msgstr "Utilizza Plume {0}"
#, fuzzy
msgid "Follow {}"
msgstr "Segui"
#, fuzzy
msgid "Login to follow"
msgstr "Accedi per boostare"
msgid "Enter your full username to follow"
msgstr ""
msgid "Edit your account"
msgstr "Modifica il tuo account"
@ -567,6 +584,16 @@ msgstr "Accedi"
msgid "Username, or email"
msgstr "Nome utente o email"
msgid "Interact with {}"
msgstr ""
#, fuzzy
msgid "Log in to interact"
msgstr "Accedi per mettere mi piace"
msgid "Enter your full username to interact"
msgstr ""
msgid "Publish"
msgstr "Pubblica"
@ -663,7 +690,9 @@ msgid "Boost"
msgstr "Boost"
#, fuzzy
msgid "Log in, or use your Fediverse account to interact with this article"
msgid ""
"{0}Log in{1}, or {2}use your Fediverse account{3} to interact with this "
"article"
msgstr ""
"Accedi o utilizza un tuo account del Fediverso per interagire con questo "
"articolo"
@ -794,6 +823,21 @@ msgstr "Articoli etichettati \"{0}\""
msgid "There are currently no articles with such a tag"
msgstr "Attualmente non è ancora presente nessun articolo con quell'etichetta"
#, fuzzy
msgid "I'm from this instance"
msgstr "A proposito di questa istanza"
msgid "I'm from another instance"
msgstr ""
# src/template_utils.rs:225
msgid "Example: user@plu.me"
msgstr ""
#, fuzzy
msgid "Continue to your instance"
msgstr "Configura la tua istanza"
msgid "Upload"
msgstr "Carica"
@ -908,9 +952,6 @@ msgstr "Usa come avatar"
#~ msgid "Unfollow"
#~ msgstr "Segui"
#~ msgid "Follow"
#~ msgstr "Segui"
#, fuzzy
#~ msgid "No articles to see here yet."
#~ msgstr "Nessun post da mostrare qui."
@ -988,9 +1029,6 @@ msgstr "Usa come avatar"
#~ msgid "Comment \"{0}\""
#~ msgstr "Commenta \"{0}\""
#~ msgid "Configure your instance"
#~ msgstr "Configura la tua istanza"
#~ msgid "Let&#x27;s go!"
#~ msgstr "Andiamo!"
@ -1041,12 +1079,6 @@ msgstr "Usa come avatar"
#~ msgid "The password should be at least 8 characters long"
#~ msgstr "Le password devono essere lunghe almeno 8 caratteri"
#~ msgid "Login to like"
#~ msgstr "Accedi per mettere mi piace"
#~ msgid "Login to boost"
#~ msgstr "Accedi per boostare"
#~ msgid "Create a post"
#~ msgstr "Crea un post"

View file

@ -87,6 +87,12 @@ msgstr "新しい記事"
msgid "Edit {0}"
msgstr "編集"
# src/routes/user.rs:222
msgid ""
"Couldn't obtain enough information about your account. Please make sure your "
"username is correct."
msgstr ""
# src/routes/reshares.rs:47
msgid "To reshare a post, you need to be logged in"
msgstr ""
@ -256,6 +262,17 @@ msgstr "管理者"
msgid "Runs Plume {0}"
msgstr "Plume {{ version }} を実行中"
#, fuzzy
msgid "Follow {}"
msgstr "フォロー"
#, fuzzy
msgid "Login to follow"
msgstr "ブーストするにはログインしてください"
msgid "Enter your full username to follow"
msgstr ""
msgid "Edit your account"
msgstr "自分のアカウントを編集"
@ -571,6 +588,16 @@ msgstr "ログイン"
msgid "Username, or email"
msgstr "ユーザー名またはメールアドレス"
msgid "Interact with {}"
msgstr ""
#, fuzzy
msgid "Log in to interact"
msgstr "いいねするにはログインしてください"
msgid "Enter your full username to interact"
msgstr ""
msgid "Publish"
msgstr "公開"
@ -660,7 +687,9 @@ msgid "Boost"
msgstr "ブースト"
#, fuzzy
msgid "Log in, or use your Fediverse account to interact with this article"
msgid ""
"{0}Log in{1}, or {2}use your Fediverse account{3} to interact with this "
"article"
msgstr ""
"この記事と関わるにはログインするか Fediverse アカウントを使用してください"
@ -785,6 +814,22 @@ msgstr "\"{{ tag }}\" タグの記事"
msgid "There are currently no articles with such a tag"
msgstr "そのタグのある記事は現在ありません"
#, fuzzy
msgid "I'm from this instance"
msgstr "このインスタンスについて"
#, fuzzy
msgid "I'm from another instance"
msgstr "件"
# src/template_utils.rs:225
msgid "Example: user@plu.me"
msgstr ""
#, fuzzy
msgid "Continue to your instance"
msgstr "インスタンスを設定"
msgid "Upload"
msgstr "アップロード"
@ -896,16 +941,10 @@ msgstr "アバターとして使う"
#~ msgid "Unfollow"
#~ msgstr "フォロー解除"
#~ msgid "Follow"
#~ msgstr "フォロー"
#, fuzzy
#~ msgid "Comment \"{0}\""
#~ msgstr "\"{{ post }}\" にコメント"
#~ msgid "Configure your instance"
#~ msgstr "インスタンスを設定"
#~ msgid "Let&#x27;s go!"
#~ msgstr "開始しましょう!"
@ -974,12 +1013,6 @@ msgstr "アバターとして使う"
#~ msgid "Next page"
#~ msgstr "次のページ"
#~ msgid "Login to like"
#~ msgstr "いいねするにはログインしてください"
#~ msgid "Login to boost"
#~ msgstr "ブーストするにはログインしてください"
#~ msgid "Welcome to {{ instance_name | escape }}"
#~ msgstr "{{ instance_name | escape }} へようこそ"
@ -1031,9 +1064,6 @@ msgstr "アバターとして使う"
#~ msgid "And connected to"
#~ msgstr "他のインスタンスからの接続数"
#~ msgid "other instances"
#~ msgstr "件"
#~ msgid "Edit {{ post }}"
#~ msgstr "{{ post }} を編集"

View file

@ -89,6 +89,12 @@ msgstr "Nytt innlegg"
msgid "Edit {0}"
msgstr "Kommentér \"{0}\""
# src/routes/user.rs:222
msgid ""
"Couldn't obtain enough information about your account. Please make sure your "
"username is correct."
msgstr ""
# src/routes/reshares.rs:47
msgid "To reshare a post, you need to be logged in"
msgstr ""
@ -263,6 +269,17 @@ msgstr "Administrasjon"
msgid "Runs Plume {0}"
msgstr ""
#, fuzzy
msgid "Follow {}"
msgstr "Følg"
#, fuzzy
msgid "Login to follow"
msgstr "Logg inn"
msgid "Enter your full username to follow"
msgstr ""
msgid "Edit your account"
msgstr "Rediger kontoen din"
@ -592,6 +609,15 @@ msgstr "Logg inn"
msgid "Username, or email"
msgstr "Brukernavn eller epost"
msgid "Interact with {}"
msgstr ""
msgid "Log in to interact"
msgstr ""
msgid "Enter your full username to interact"
msgstr ""
msgid "Publish"
msgstr ""
@ -686,7 +712,9 @@ msgid "Boost"
msgstr ""
#, fuzzy
msgid "Log in, or use your Fediverse account to interact with this article"
msgid ""
"{0}Log in{1}, or {2}use your Fediverse account{3} to interact with this "
"article"
msgstr ""
"Logg inn eller bruk din Fediverse-konto for å gjøre noe med denne artikkelen"
@ -811,6 +839,20 @@ msgstr "Om {0}"
msgid "There are currently no articles with such a tag"
msgstr ""
#, fuzzy
msgid "I'm from this instance"
msgstr "Om denne instansen"
msgid "I'm from another instance"
msgstr ""
# src/template_utils.rs:225
msgid "Example: user@plu.me"
msgstr ""
msgid "Continue to your instance"
msgstr ""
msgid "Upload"
msgstr ""
@ -924,9 +966,6 @@ msgstr ""
#~ msgid "Unfollow"
#~ msgstr "Slutt å følge"
#~ msgid "Follow"
#~ msgstr "Følg"
#, fuzzy
#~ msgid "No articles to see here yet."
#~ msgstr "Ingen innlegg å vise enda."
@ -993,10 +1032,6 @@ msgstr ""
#~ msgid "Invalid email"
#~ msgstr "Ugyldig epost"
#, fuzzy
#~ msgid "Log In to like"
#~ msgstr "Logg inn"
#, fuzzy
#~ msgid "Your drafts"
#~ msgstr "Din oversikt"

View file

@ -81,6 +81,12 @@ msgstr "Nowy wpis"
msgid "Edit {0}"
msgstr "Edytuj {0}"
# src/routes/user.rs:222
msgid ""
"Couldn't obtain enough information about your account. Please make sure your "
"username is correct."
msgstr ""
# src/routes/reshares.rs:47
msgid "To reshare a post, you need to be logged in"
msgstr ""
@ -242,6 +248,17 @@ msgstr "Administrowany przez"
msgid "Runs Plume {0}"
msgstr "Działa na Plume {0}"
#, fuzzy
msgid "Follow {}"
msgstr "Obserwuj"
#, fuzzy
msgid "Login to follow"
msgstr "Zaloguj się aby podbić"
msgid "Enter your full username to follow"
msgstr ""
msgid "Edit your account"
msgstr "Edytuj swoje konto"
@ -547,6 +564,16 @@ msgstr "Zaloguj się"
msgid "Username, or email"
msgstr "Nazwa użytkownika lub adres e-mail"
msgid "Interact with {}"
msgstr ""
#, fuzzy
msgid "Log in to interact"
msgstr "Zaloguj się aby polubić"
msgid "Enter your full username to interact"
msgstr ""
msgid "Publish"
msgstr "Opublikuj"
@ -635,7 +662,9 @@ msgid "Boost"
msgstr "Podbij"
#, fuzzy
msgid "Log in, or use your Fediverse account to interact with this article"
msgid ""
"{0}Log in{1}, or {2}use your Fediverse account{3} to interact with this "
"article"
msgstr ""
"Zaloguj się lub użyj konta w Fediwersum, aby wejść w interakcje z tym "
"artykułem"
@ -757,6 +786,22 @@ msgstr "Artykuły oznaczone „{0}”"
msgid "There are currently no articles with such a tag"
msgstr "Obecnie nie istnieją artykuły z tym tagiem"
#, fuzzy
msgid "I'm from this instance"
msgstr "O tej instancji"
#, fuzzy
msgid "I'm from another instance"
msgstr "innych instancji"
# src/template_utils.rs:225
msgid "Example: user@plu.me"
msgstr ""
#, fuzzy
msgid "Continue to your instance"
msgstr "Skonfiguruj swoją instancję"
msgid "Upload"
msgstr "Wyślij"
@ -868,9 +913,6 @@ msgstr "Użyj jako awataru"
#~ msgid "Unfollow"
#~ msgstr "Przestań obserwować"
#~ msgid "Follow"
#~ msgstr "Obserwuj"
#, fuzzy
#~ msgid "No articles to see here yet."
#~ msgstr "Brak wpisów do wyświetlenia."
@ -947,9 +989,6 @@ msgstr "Użyj jako awataru"
#~ msgid "Comment \"{0}\""
#~ msgstr "Komentarz „{0}”"
#~ msgid "Configure your instance"
#~ msgstr "Skonfiguruj swoją instancję"
#~ msgid "Let&#x27;s go!"
#~ msgstr "Przejdźmy dalej!"
@ -1020,12 +1059,6 @@ msgstr "Użyj jako awataru"
#~ msgid "Instance settings"
#~ msgstr "Ustawienia instancji"
#~ msgid "Login to like"
#~ msgstr "Zaloguj się aby polubić"
#~ msgid "Login to boost"
#~ msgstr "Zaloguj się aby podbić"
#~ msgid "Create a post"
#~ msgstr "Utwórz wpis"
@ -1049,6 +1082,3 @@ msgstr "Użyj jako awataru"
#~ msgid "And connected to"
#~ msgstr "Połączony z"
#~ msgid "other instances"
#~ msgstr "innych instancji"

View file

@ -88,6 +88,10 @@ msgstr ""
msgid "Edit {0}"
msgstr ""
# src/routes/posts.rs:630
msgid "Couldn't obtain enough information about your account. Please make sure your username is correct."
msgstr ""
# src/routes/reshares.rs:51
msgid "To reshare a post, you need to be logged in"
msgstr ""
@ -112,66 +116,54 @@ msgstr ""
msgid "To access your dashboard, you need to be logged in"
msgstr ""
# src/routes/user.rs:180
# src/routes/user.rs:244
msgid "To subscribe to someone, you need to be logged in"
msgstr ""
# src/routes/user.rs:280
# src/routes/user.rs:344
msgid "To edit your profile, you need to be logged in"
msgstr ""
msgid "Plume"
msgid "Reset your password"
msgstr ""
msgid "Menu"
# src/template_utils.rs:217
msgid "E-mail"
msgstr ""
msgid "Search"
# src/template_utils.rs:220
msgid "Optional"
msgstr ""
msgid "Dashboard"
msgid "Send password reset link"
msgstr ""
msgid "Notifications"
msgid "Check your inbox!"
msgstr ""
msgid "Log Out"
msgid "We sent a mail to the address you gave us, with a link to reset your password."
msgstr ""
msgid "My account"
msgid "Log in"
msgstr ""
msgid "Log In"
# src/template_utils.rs:217
msgid "Username, or email"
msgstr ""
msgid "Register"
# src/template_utils.rs:217
msgid "Password"
msgstr ""
msgid "About this instance"
# src/template_utils.rs:217
msgid "New password"
msgstr ""
msgid "Source code"
# src/template_utils.rs:217
msgid "Confirmation"
msgstr ""
msgid "Matrix room"
msgstr ""
msgid "Administration"
msgstr ""
msgid "Welcome to {}"
msgstr ""
msgid "Latest articles"
msgstr ""
msgid "Your feed"
msgstr ""
msgid "Federated feed"
msgstr ""
msgid "Local feed"
msgid "Update password"
msgstr ""
msgid "Administration of {0}"
@ -192,24 +184,56 @@ msgstr ""
msgid "Block"
msgstr ""
msgid "Ban"
msgid "About {0}"
msgstr ""
msgid "Home to <em>{0}</em> people"
msgstr ""
msgid "Who wrote <em>{0}</em> articles"
msgstr ""
msgid "And are connected to <em>{0}</em> other instances"
msgstr ""
msgid "Administred by"
msgstr ""
msgid "Runs Plume {0}"
msgstr ""
msgid "All the articles of the Fediverse"
msgstr ""
msgid "Latest articles"
msgstr ""
msgid "Your feed"
msgstr ""
msgid "Federated feed"
msgstr ""
msgid "Local feed"
msgstr ""
msgid "Welcome to {}"
msgstr ""
msgid "Articles from {}"
msgstr ""
msgid "Ban"
msgstr ""
msgid "Nothing to see here yet. Try subscribing to more people."
msgstr ""
# src/template_utils.rs:217
msgid "Name"
msgid "Administration"
msgstr ""
# src/template_utils.rs:220
msgid "Optional"
# src/template_utils.rs:217
msgid "Name"
msgstr ""
msgid "Allow anyone to register here"
@ -231,180 +255,7 @@ msgstr ""
msgid "Save these settings"
msgstr ""
msgid "About {0}"
msgstr ""
msgid "Home to <em>{0}</em> people"
msgstr ""
msgid "Who wrote <em>{0}</em> articles"
msgstr ""
msgid "And are connected to <em>{0}</em> other instances"
msgstr ""
msgid "Administred by"
msgstr ""
msgid "Runs Plume {0}"
msgstr ""
msgid "Edit your account"
msgstr ""
msgid "Your Profile"
msgstr ""
msgid "To change your avatar, upload it to your gallery and then select from there."
msgstr ""
msgid "Upload an avatar"
msgstr ""
# src/template_utils.rs:217
msgid "Display name"
msgstr ""
# src/template_utils.rs:217
msgid "Email"
msgstr ""
msgid "Summary"
msgstr ""
msgid "Update account"
msgstr ""
msgid "Danger zone"
msgstr ""
msgid "Be very careful, any action taken here can't be cancelled."
msgstr ""
msgid "Delete your account"
msgstr ""
msgid "Sorry, but as an admin, you can't leave your own instance."
msgstr ""
msgid "Your Dashboard"
msgstr ""
msgid "Your Blogs"
msgstr ""
msgid "You don't have any blog yet. Create your own, or ask to join one."
msgstr ""
msgid "Start a new blog"
msgstr ""
msgid "Your Drafts"
msgstr ""
msgid "Your media"
msgstr ""
msgid "Go to your gallery"
msgstr ""
msgid "Create your account"
msgstr ""
msgid "Create an account"
msgstr ""
# src/template_utils.rs:217
msgid "Username"
msgstr ""
# src/template_utils.rs:217
msgid "Password"
msgstr ""
# src/template_utils.rs:217
msgid "Password confirmation"
msgstr ""
msgid "Apologies, but registrations are closed on this particular instance. You can, however, find a different one."
msgstr ""
msgid "Articles"
msgstr ""
msgid "Subscribers"
msgstr ""
msgid "Subscriptions"
msgstr ""
msgid "Atom feed"
msgstr ""
msgid "Recently boosted"
msgstr ""
msgid "Admin"
msgstr ""
msgid "It is you"
msgstr ""
msgid "Edit your profile"
msgstr ""
msgid "Open on {0}"
msgstr ""
msgid "Unsubscribe"
msgstr ""
msgid "Subscribe"
msgstr ""
msgid "{0}'s subscriptions"
msgstr ""
msgid "{0}'s subscribers"
msgstr ""
msgid "Respond"
msgstr ""
msgid "Are you sure?"
msgstr ""
msgid "Delete this comment"
msgstr ""
msgid "What is Plume?"
msgstr ""
msgid "Plume is a decentralized blogging engine."
msgstr ""
msgid "Authors can manage multiple blogs, each as its own website."
msgstr ""
msgid "Articles are also visible on other Plume instances, and you can interact with them directly from other platforms like Mastodon."
msgstr ""
msgid "Read the detailed rules"
msgstr ""
msgid "None"
msgstr ""
msgid "No description"
msgstr ""
msgid "View all"
msgstr ""
msgid "By {0}"
msgstr ""
msgid "Draft"
msgid "Search"
msgstr ""
msgid "Your query"
@ -496,38 +347,137 @@ msgstr ""
msgid "No more results for your query"
msgstr ""
msgid "Reset your password"
msgid "Edit \"{}\""
msgstr ""
msgid "Description"
msgstr ""
msgid "You can upload images to your gallery, to use them as blog icons, or banners."
msgstr ""
msgid "Upload images"
msgstr ""
msgid "Blog icon"
msgstr ""
msgid "Blog banner"
msgstr ""
msgid "Update blog"
msgstr ""
msgid "Danger zone"
msgstr ""
msgid "Be very careful, any action taken here can't be reversed."
msgstr ""
msgid "Permanently delete this blog"
msgstr ""
msgid "{}'s icon"
msgstr ""
msgid "New article"
msgstr ""
msgid "Edit"
msgstr ""
msgid "There's one author on this blog: "
msgid_plural "There are {0} authors on this blog: "
msgstr[0] ""
msgid "No posts to see here yet."
msgstr ""
msgid "New Blog"
msgstr ""
msgid "Create a blog"
msgstr ""
msgid "Create blog"
msgstr ""
msgid "Articles tagged \"{0}\""
msgstr ""
msgid "There are currently no articles with such a tag"
msgstr ""
msgid "Written by {0}"
msgstr ""
msgid "Are you sure?"
msgstr ""
msgid "Delete this article"
msgstr ""
msgid "Draft"
msgstr ""
msgid "All rights reserved."
msgstr ""
msgid "This article is under the {0} license."
msgstr ""
msgid "Unsubscribe"
msgstr ""
msgid "Subscribe"
msgstr ""
msgid "One like"
msgid_plural "{0} likes"
msgstr[0] ""
msgid "I don't like this anymore"
msgstr ""
msgid "Add yours"
msgstr ""
msgid "One boost"
msgid_plural "{0} boosts"
msgstr[0] ""
msgid "I don't want to boost this anymore"
msgstr ""
msgid "Boost"
msgstr ""
msgid "{0}Log in{1}, or {2}use your Fediverse account{3} to interact with this article"
msgstr ""
msgid "Comments"
msgstr ""
# src/template_utils.rs:217
msgid "New password"
msgid "Content warning"
msgstr ""
# src/template_utils.rs:217
msgid "Confirmation"
msgid "Your comment"
msgstr ""
msgid "Update password"
msgid "Submit comment"
msgstr ""
msgid "Check your inbox!"
msgid "No comments yet. Be the first to react!"
msgstr ""
msgid "We sent a mail to the address you gave us, with a link to reset your password."
msgid "Interact with {}"
msgstr ""
# src/template_utils.rs:217
msgid "E-mail"
msgid "Log in to interact"
msgstr ""
msgid "Send password reset link"
msgstr ""
msgid "Log in"
msgstr ""
# src/template_utils.rs:217
msgid "Username, or email"
msgid "Enter your full username to interact"
msgstr ""
msgid "Publish"
@ -576,146 +526,93 @@ msgstr ""
msgid "Publish your post"
msgstr ""
msgid "Written by {0}"
msgid "I'm from this instance"
msgstr ""
msgid "Edit"
msgstr ""
msgid "Delete this article"
msgstr ""
msgid "All rights reserved."
msgstr ""
msgid "This article is under the {0} license."
msgstr ""
msgid "One like"
msgid_plural "{0} likes"
msgstr[0] ""
msgid "I don't like this anymore"
msgstr ""
msgid "Add yours"
msgstr ""
msgid "One boost"
msgid_plural "{0} boosts"
msgstr[0] ""
msgid "I don't want to boost this anymore"
msgstr ""
msgid "Boost"
msgstr ""
msgid "Log in, or use your Fediverse account to interact with this article"
msgstr ""
msgid "Comments"
msgid "I'm from another instance"
msgstr ""
# src/template_utils.rs:217
msgid "Content warning"
msgid "Username"
msgstr ""
msgid "Your comment"
# src/template_utils.rs:225
msgid "Example: user@plu.me"
msgstr ""
msgid "Submit comment"
msgid "Continue to your instance"
msgstr ""
msgid "No comments yet. Be the first to react!"
msgid "View all"
msgstr ""
msgid "Invalid CSRF token"
msgid "By {0}"
msgstr ""
msgid "Something is wrong with your CSRF token. Make sure cookies are enabled in you browser, and try reloading this page. If you continue to see this error message, please report it."
msgid "What is Plume?"
msgstr ""
msgid "Page not found"
msgid "Plume is a decentralized blogging engine."
msgstr ""
msgid "We couldn't find this page."
msgid "Authors can manage multiple blogs, each as its own website."
msgstr ""
msgid "The link that led you here may be broken."
msgid "Articles are also visible on other Plume instances, and you can interact with them directly from other platforms like Mastodon."
msgstr ""
msgid "The content you sent can't be processed."
msgid "Create your account"
msgstr ""
msgid "Maybe it was too long."
msgid "Read the detailed rules"
msgstr ""
msgid "You are not authorized."
msgid "Respond"
msgstr ""
msgid "Internal server error"
msgid "Delete this comment"
msgstr ""
msgid "Something broke on our side."
msgid "None"
msgstr ""
msgid "Sorry about that. If you think this is a bug, please report it."
msgid "No description"
msgstr ""
msgid "Edit \"{}\""
msgid "Notifications"
msgstr ""
msgid "Description"
msgid "Plume"
msgstr ""
msgid "You can upload images to your gallery, to use them as blog icons, or banners."
msgid "Menu"
msgstr ""
msgid "Upload images"
msgid "Dashboard"
msgstr ""
msgid "Blog icon"
msgid "Log Out"
msgstr ""
msgid "Blog banner"
msgid "My account"
msgstr ""
msgid "Update blog"
msgid "Log In"
msgstr ""
msgid "Be very careful, any action taken here can't be reversed."
msgid "Register"
msgstr ""
msgid "Permanently delete this blog"
msgid "About this instance"
msgstr ""
msgid "New Blog"
msgid "Source code"
msgstr ""
msgid "Create a blog"
msgid "Matrix room"
msgstr ""
msgid "Create blog"
msgstr ""
msgid "{}'s icon"
msgstr ""
msgid "New article"
msgstr ""
msgid "There's one author on this blog: "
msgid_plural "There are {0} authors on this blog: "
msgstr[0] ""
msgid "No posts to see here yet."
msgstr ""
msgid "Articles tagged \"{0}\""
msgstr ""
msgid "There are currently no articles with such a tag"
msgid "Your media"
msgstr ""
msgid "Upload"
@ -733,21 +630,6 @@ msgstr ""
msgid "Details"
msgstr ""
msgid "Media upload"
msgstr ""
msgid "Useful for visually impaired people, as well as licensing information"
msgstr ""
msgid "Leave it empty, if none is needed"
msgstr ""
msgid "File"
msgstr ""
msgid "Send"
msgstr ""
msgid "Media details"
msgstr ""
@ -763,8 +645,155 @@ msgstr ""
msgid "Use as an avatar"
msgstr ""
msgid "Log in to boost"
msgid "Media upload"
msgstr ""
msgid "Log in to like"
msgid "Useful for visually impaired people, as well as licensing information"
msgstr ""
msgid "Leave it empty, if none is needed"
msgstr ""
msgid "File"
msgstr ""
msgid "Send"
msgstr ""
msgid "{0}'s subscriptions"
msgstr ""
msgid "Articles"
msgstr ""
msgid "Subscribers"
msgstr ""
msgid "Subscriptions"
msgstr ""
msgid "Your Dashboard"
msgstr ""
msgid "Your Blogs"
msgstr ""
msgid "You don't have any blog yet. Create your own, or ask to join one."
msgstr ""
msgid "Start a new blog"
msgstr ""
msgid "Your Drafts"
msgstr ""
msgid "Go to your gallery"
msgstr ""
msgid "Admin"
msgstr ""
msgid "It is you"
msgstr ""
msgid "Edit your profile"
msgstr ""
msgid "Open on {0}"
msgstr ""
msgid "{0}'s subscribers"
msgstr ""
msgid "Edit your account"
msgstr ""
msgid "Your Profile"
msgstr ""
msgid "To change your avatar, upload it to your gallery and then select from there."
msgstr ""
msgid "Upload an avatar"
msgstr ""
# src/template_utils.rs:217
msgid "Display name"
msgstr ""
# src/template_utils.rs:217
msgid "Email"
msgstr ""
msgid "Summary"
msgstr ""
msgid "Update account"
msgstr ""
msgid "Be very careful, any action taken here can't be cancelled."
msgstr ""
msgid "Delete your account"
msgstr ""
msgid "Sorry, but as an admin, you can't leave your own instance."
msgstr ""
msgid "Atom feed"
msgstr ""
msgid "Recently boosted"
msgstr ""
msgid "Create an account"
msgstr ""
# src/template_utils.rs:217
msgid "Password confirmation"
msgstr ""
msgid "Apologies, but registrations are closed on this particular instance. You can, however, find a different one."
msgstr ""
msgid "Follow {}"
msgstr ""
msgid "Login to follow"
msgstr ""
msgid "Enter your full username to follow"
msgstr ""
msgid "Internal server error"
msgstr ""
msgid "Something broke on our side."
msgstr ""
msgid "Sorry about that. If you think this is a bug, please report it."
msgstr ""
msgid "Page not found"
msgstr ""
msgid "We couldn't find this page."
msgstr ""
msgid "The link that led you here may be broken."
msgstr ""
msgid "Invalid CSRF token"
msgstr ""
msgid "Something is wrong with your CSRF token. Make sure cookies are enabled in you browser, and try reloading this page. If you continue to see this error message, please report it."
msgstr ""
msgid "You are not authorized."
msgstr ""
msgid "The content you sent can't be processed."
msgstr ""
msgid "Maybe it was too long."
msgstr ""

View file

@ -85,6 +85,12 @@ msgstr "Novo artigo"
msgid "Edit {0}"
msgstr "Mudar {0}"
# src/routes/user.rs:222
msgid ""
"Couldn't obtain enough information about your account. Please make sure your "
"username is correct."
msgstr ""
# src/routes/reshares.rs:47
msgid "To reshare a post, you need to be logged in"
msgstr ""
@ -253,6 +259,17 @@ msgstr "Administrado por"
msgid "Runs Plume {0}"
msgstr ""
#, fuzzy
msgid "Follow {}"
msgstr "Seguir"
#, fuzzy
msgid "Login to follow"
msgstr "Entrar para gostar"
msgid "Enter your full username to follow"
msgstr ""
msgid "Edit your account"
msgstr "Editar sua conta"
@ -565,6 +582,15 @@ msgstr "Entrar"
msgid "Username, or email"
msgstr "Nome de usuário ou e-mail"
msgid "Interact with {}"
msgstr ""
msgid "Log in to interact"
msgstr ""
msgid "Enter your full username to interact"
msgstr ""
msgid "Publish"
msgstr "Publicar"
@ -654,7 +680,9 @@ msgid "Boost"
msgstr ""
#, fuzzy
msgid "Log in, or use your Fediverse account to interact with this article"
msgid ""
"{0}Log in{1}, or {2}use your Fediverse account{3} to interact with this "
"article"
msgstr "Faça login ou use sua conta Fediverse para interagir com este artigo"
msgid "Comments"
@ -775,6 +803,21 @@ msgstr "Artigos marcados com \"{0}\""
msgid "There are currently no articles with such a tag"
msgstr "Não há atualmente nenhum artigo com essa etiqueta"
#, fuzzy
msgid "I'm from this instance"
msgstr "Sobre esta instância"
msgid "I'm from another instance"
msgstr ""
# src/template_utils.rs:225
msgid "Example: user@plu.me"
msgstr ""
#, fuzzy
msgid "Continue to your instance"
msgstr "Configure sua instância"
msgid "Upload"
msgstr "Carregar"
@ -885,15 +928,9 @@ msgstr "Utilizar como avatar"
#~ msgid "Unfollow"
#~ msgstr "Não Seguir"
#~ msgid "Follow"
#~ msgstr "Seguir"
#~ msgid "Comment \"{0}\""
#~ msgstr "Comentário \"{0}\""
#~ msgid "Configure your instance"
#~ msgstr "Configure sua instância"
#~ msgid "Let&#x27;s go!"
#~ msgstr "Vamos lá!"
@ -956,6 +993,3 @@ msgstr "Utilizar como avatar"
#~ msgid "Next page"
#~ msgstr "Próxima página"
#~ msgid "Login to like"
#~ msgstr "Entrar para gostar"

View file

@ -86,6 +86,12 @@ msgstr "Новый пост"
msgid "Edit {0}"
msgstr "Редактировать"
# src/routes/user.rs:222
msgid ""
"Couldn't obtain enough information about your account. Please make sure your "
"username is correct."
msgstr ""
# src/routes/reshares.rs:47
msgid "To reshare a post, you need to be logged in"
msgstr ""
@ -260,6 +266,17 @@ msgstr "Администрируется"
msgid "Runs Plume {0}"
msgstr "Работает на Plume {0}"
#, fuzzy
msgid "Follow {}"
msgstr "Подписаться"
#, fuzzy
msgid "Login to follow"
msgstr "Войдите, чтобы продвигать посты"
msgid "Enter your full username to follow"
msgstr ""
msgid "Edit your account"
msgstr "Редактировать ваш аккаунт"
@ -571,6 +588,16 @@ msgstr "Войти"
msgid "Username, or email"
msgstr "Имя пользователя или адрес электронной почты"
msgid "Interact with {}"
msgstr ""
#, fuzzy
msgid "Log in to interact"
msgstr "Войдите, чтобы отмечать понравившиеся посты"
msgid "Enter your full username to interact"
msgstr ""
msgid "Publish"
msgstr "Опубликовать"
@ -665,7 +692,9 @@ msgid "Boost"
msgstr "Продвинуть"
#, fuzzy
msgid "Log in, or use your Fediverse account to interact with this article"
msgid ""
"{0}Log in{1}, or {2}use your Fediverse account{3} to interact with this "
"article"
msgstr ""
"Войдите или используйте свой Fediverse-аккаунт, чтобы взаимодействовать с "
"этой статьёй"
@ -800,6 +829,21 @@ msgstr "Статьи, отмеченные тегом «{0}»"
msgid "There are currently no articles with such a tag"
msgstr "Сейчас нет статей с таким тегом"
#, fuzzy
msgid "I'm from this instance"
msgstr "Об этом узле"
msgid "I'm from another instance"
msgstr ""
# src/template_utils.rs:225
msgid "Example: user@plu.me"
msgstr ""
#, fuzzy
msgid "Continue to your instance"
msgstr "Настроить ваш узел"
msgid "Upload"
msgstr "Загрузить"
@ -914,9 +958,6 @@ msgstr "Использовать как аватар"
#~ msgid "Unfollow"
#~ msgstr "Подписаться"
#~ msgid "Follow"
#~ msgstr "Подписаться"
#, fuzzy
#~ msgid "No articles to see here yet."
#~ msgstr "Здесь пока нет постов."
@ -998,9 +1039,6 @@ msgstr "Использовать как аватар"
#~ msgid "Comment \"{0}\""
#~ msgstr "Комментарий \"{0}\""
#~ msgid "Configure your instance"
#~ msgstr "Настроить ваш узел"
#~ msgid "Let&#x27;s go!"
#~ msgstr "Поехали!"
@ -1059,14 +1097,6 @@ msgstr "Использовать как аватар"
#~ msgid "Invalid email"
#~ msgstr "Неправильный адрес электронной почты"
#, fuzzy
#~ msgid "Login to like"
#~ msgstr "Войдите, чтобы отмечать понравившиеся посты"
#, fuzzy
#~ msgid "Login to boost"
#~ msgstr "Войдите, чтобы продвигать посты"
#, fuzzy
#~ msgid "Personal feed"
#~ msgstr "Локальная лента"

View file

@ -27,6 +27,8 @@ extern crate rocket;
extern crate rocket_contrib;
extern crate rocket_csrf;
extern crate rocket_i18n;
#[macro_use]
extern crate runtime_fmt;
extern crate scheduled_thread_pool;
extern crate serde;
#[macro_use]
@ -162,6 +164,7 @@ Then try to restart Plume
routes::instance::toggle_block,
routes::instance::update_settings,
routes::instance::shared_inbox,
routes::instance::interact,
routes::instance::nodeinfo,
routes::instance::about,
routes::instance::web_manifest,
@ -183,6 +186,8 @@ Then try to restart Plume
routes::posts::new_auth,
routes::posts::create,
routes::posts::delete,
routes::posts::remote_interact,
routes::posts::remote_interact_post,
routes::reshares::create,
routes::reshares::create_auth,
routes::search::search,
@ -207,6 +212,7 @@ Then try to restart Plume
routes::user::update,
routes::user::delete,
routes::user::follow,
routes::user::follow_not_connected,
routes::user::follow_auth,
routes::user::activity_details,
routes::user::outbox,

View file

@ -8,6 +8,7 @@ use serde_json;
use validator::{Validate, ValidationErrors};
use inbox;
use plume_common::activity_pub::inbox::FromId;
use plume_models::{
admin::Admin, comments::Comment, db_conn::DbConn, headers::Headers, instance::*, posts::Post,
safe_string::SafeString, users::User, Error, PlumeRocket, CONFIG,
@ -217,6 +218,36 @@ pub fn shared_inbox(
inbox::handle_incoming(rockets, data, headers)
}
#[get("/remote_interact?<target>")]
pub fn interact(rockets: PlumeRocket, user: Option<User>, target: String) -> Option<Redirect> {
if User::find_by_fqn(&rockets, &target).is_ok() {
return Some(Redirect::to(uri!(super::user::details: name = target)));
}
if let Ok(post) = Post::from_id(&rockets, &target, None) {
return Some(Redirect::to(
uri!(super::posts::details: blog = post.get_blog(&rockets.conn).expect("Can't retrieve blog").fqn, slug = &post.slug, responding_to = _),
));
}
if let Ok(comment) = Comment::from_id(&rockets, &target, None) {
if comment.can_see(&rockets.conn, user.as_ref()) {
let post = comment
.get_post(&rockets.conn)
.expect("Can't retrieve post");
return Some(Redirect::to(uri!(
super::posts::details: blog = post
.get_blog(&rockets.conn)
.expect("Can't retrieve blog")
.fqn,
slug = &post.slug,
responding_to = comment.id
)));
}
}
None
}
#[get("/nodeinfo/<version>")]
pub fn nodeinfo(conn: DbConn, version: String) -> Result<Json<serde_json::Value>, ErrorPage> {
if version != "2.0" && version != "2.1" {

View file

@ -71,6 +71,12 @@ impl Default for Page {
}
}
/// A form for remote interaction, used by multiple routes
#[derive(Clone, Default, FromForm)]
pub struct RemoteForm {
pub remote: String,
}
pub fn post_to_atom(post: Post, conn: &Connection) -> Entry {
EntryBuilder::default()
.title(format!("<![CDATA[{}]]>", post.title))

View file

@ -26,7 +26,7 @@ use plume_models::{
users::User,
Error, PlumeRocket,
};
use routes::{comments::NewCommentForm, errors::ErrorPage, ContentLen};
use routes::{comments::NewCommentForm, errors::ErrorPage, ContentLen, RemoteForm};
use template_utils::Ructe;
#[get("/~/<blog>/<slug>?<responding_to>", rank = 4)]
@ -588,3 +588,56 @@ pub fn delete(
))
}
}
#[get("/~/<blog_name>/<slug>/remote_interact")]
pub fn remote_interact(
rockets: PlumeRocket,
blog_name: String,
slug: String,
i18n: I18n,
) -> Result<Ructe, ErrorPage> {
let target = Blog::find_by_fqn(&rockets, &blog_name)
.and_then(|blog| Post::find_by_slug(&rockets.conn, &slug, blog.id))?;
Ok(render!(posts::remote_interact(
&(&rockets.conn, &i18n.catalog, None),
target,
super::session::LoginForm::default(),
ValidationErrors::default(),
RemoteForm::default(),
ValidationErrors::default()
)))
}
#[post("/~/<blog_name>/<slug>/remote_interact", data = "<remote>")]
pub fn remote_interact_post(
rockets: PlumeRocket,
blog_name: String,
slug: String,
remote: LenientForm<RemoteForm>,
i18n: I18n,
) -> Result<Result<Ructe, Redirect>, ErrorPage> {
let target = Blog::find_by_fqn(&rockets, &blog_name)
.and_then(|blog| Post::find_by_slug(&rockets.conn, &slug, blog.id))?;
if let Some(uri) = User::fetch_remote_interact_uri(&remote.remote)
.ok()
.and_then(|uri| rt_format!(uri, uri = target.ap_url).ok())
{
Ok(Err(Redirect::to(uri)))
} else {
let mut errs = ValidationErrors::new();
errs.add("remote", ValidationError {
code: Cow::from("invalid_remote"),
message: Some(Cow::from(i18n!(&i18n.catalog, "Couldn't obtain enough information about your account. Please make sure your username is correct."))),
params: HashMap::new(),
});
//could not get your remote url?
Ok(Ok(render!(posts::remote_interact(
&(&rockets.conn, &i18n.catalog, None),
target,
super::session::LoginForm::default(),
ValidationErrors::default(),
remote.clone(),
errs
))))
}
}

View file

@ -25,7 +25,7 @@ use plume_models::{
users::*,
Error, PlumeRocket,
};
use routes::{errors::ErrorPage, Page};
use routes::{errors::ErrorPage, Page, RemoteForm};
use template_utils::Ructe;
#[get("/me")]
@ -173,7 +173,71 @@ pub fn follow(name: String, user: User, rockets: PlumeRocket) -> Result<Redirect
Ok(Redirect::to(uri!(details: name = name)))
}
#[post("/@/<name>/follow", rank = 2)]
#[post("/@/<name>/follow", data = "<remote_form>", rank = 2)]
pub fn follow_not_connected(
rockets: PlumeRocket,
name: String,
remote_form: Option<LenientForm<RemoteForm>>,
i18n: I18n,
) -> Result<Result<Flash<Ructe>, Redirect>, ErrorPage> {
let target = User::find_by_fqn(&rockets, &name)?;
if let Some(remote_form) = remote_form {
let remote = &remote_form.remote;
if let Some(uri) = User::fetch_remote_interact_uri(remote)
.ok()
.and_then(|uri| {
rt_format!(
uri,
uri = format!(
"{}@{}",
target.fqn,
target.get_instance(&rockets.conn).ok()?.public_domain
)
)
.ok()
})
{
Ok(Err(Redirect::to(uri)))
} else {
let mut err = ValidationErrors::default();
err.add("remote",
ValidationError {
code: Cow::from("invalid_remote"),
message: Some(Cow::from(i18n!(&i18n.catalog, "Couldn't obtain enough information about your account. Please make sure your username is correct."))),
params: HashMap::new(),
},
);
Ok(Ok(Flash::new(
render!(users::follow_remote(
&(&rockets.conn, &i18n.catalog, None),
target,
super::session::LoginForm::default(),
ValidationErrors::default(),
remote_form.clone(),
err
)),
"callback",
uri!(follow: name = name).to_string(),
)))
}
} else {
Ok(Ok(Flash::new(
render!(users::follow_remote(
&(&rockets.conn, &i18n.catalog, None),
target,
super::session::LoginForm::default(),
ValidationErrors::default(),
#[allow(clippy::map_clone)]
remote_form.map(|x| x.clone()).unwrap_or_default(),
ValidationErrors::default()
)),
"callback",
uri!(follow: name = name).to_string(),
)))
}
}
#[get("/@/<name>/follow?local", rank = 2)]
pub fn follow_auth(name: String, i18n: I18n) -> Flash<Redirect> {
utils::requires_login(
&i18n!(

View file

@ -132,4 +132,29 @@ form.new-post {
.button + .button {
margin-left: 1em;
}
.split {
display: flex;
justify-content: space-between;
& > * {
flex-grow: 1;
max-width: 40%;
}
}
header.center {
display: flex;
flex-direction: column;
align-items: center;
background: transparent;
opacity: 1;
font-weight: normal;
text-align: left;
> * {
margin-left: 0;
margin-right: 0;
}
}

View file

@ -110,20 +110,23 @@
</form>
</div>
} else {
<p class="center">@i18n!(ctx.1, "Log in, or use your Fediverse account to interact with this article")</p>
<p class="center">@Html(i18n!(ctx.1, "{0}Log in{1}, or {2}use your Fediverse account{3} to interact with this article";
format!("<a href='{}'>", uri!(session::new: m = _)), "</a>",
format!("<a href='{}'>", uri!(posts::remote_interact: blog_name = &blog.fqn, slug = &article.slug)), "</a>"
))</p>
<div class="actions">
<div class="likes">
<p aria-label="@i18n!(ctx.1, "One like", "{0} likes"; n_likes)" title="@i18n!(ctx.1, "One like", "{0} likes"; n_likes)">
@n_likes
</p>
<a href="@uri!(session::new: m = i18n!(ctx.1, "Log in to like"))" class="action">@icon!("heart") @i18n!(ctx.1, "Add yours")</a>
<a href="@uri!(posts::remote_interact: blog_name = &blog.fqn, slug = &article.slug)" class="action">@icon!("heart") @i18n!(ctx.1, "Add yours")</a>
</div>
<div class="reshares">
<p aria-label="@i18n!(ctx.1, "One boost", "{0} boost"; n_reshares)" title="@i18n!(ctx.1, "One boost", "{0} boosts"; n_reshares)">
@n_reshares
</p>
<a href="@uri!(session::new: m = i18n!(ctx.1, "Log in to boost"))" class="action">@icon!("repeat") @i18n!(ctx.1, "Boost")</a>
<a href="@uri!(posts::remote_interact: blog_name = &blog.fqn, slug = &article.slug)" class="action">@icon!("repeat") @i18n!(ctx.1, "Boost")</a>
</div>
</div>
}

View file

@ -0,0 +1,14 @@
@use templates::remote_interact_base;
@use templates::partials::post_card;
@use plume_models::posts::Post;
@use routes::RemoteForm;
@use routes::session::LoginForm;
@use template_utils::*;
@use validator::ValidationErrors;
@(ctx: BaseContext, post: Post, login_form: LoginForm, login_errs: ValidationErrors, remote_form: RemoteForm, remote_errs: ValidationErrors)
@:remote_interact_base(ctx, i18n!(ctx.1, "Interact with {}"; post.title.clone()), i18n!(ctx.1, "Log in to interact"), i18n!(ctx.1, "Enter your full username to interact"), {
<h1>@i18n!(ctx.1, "Interact with {}"; post.title.clone())</h1>
@:post_card(ctx, post)
}, login_form, login_errs, remote_form, remote_errs)

View file

@ -0,0 +1,32 @@
@use templates::base;
@use routes::session::LoginForm;
@use routes::RemoteForm;
@use template_utils::*;
@use validator::ValidationErrors;
@(ctx: BaseContext, title: String, login_msg: String, remote_msg: String, header: Content, login_form: LoginForm, login_errs: ValidationErrors, remote_form: RemoteForm, remote_errs: ValidationErrors)
@:base(ctx, title, {}, {}, {
<div>
<header class="center">
@:header()
</header>
<div class="split">
<form method="post" action="/login">
<h2>@i18n!(ctx.1, "I'm from this instance")</h2>
<p>@login_msg</p>
@input!(ctx.1, email_or_name (text), "Username, or email", login_form, login_errs.clone(), "minlenght=\"1\"")
@input!(ctx.1, password (password), "Password", login_form, login_errs, "minlenght=\"1\"")
<input type="submit" value="@i18n!(ctx.1, "Log in")" />
</form>
<form method="post">
<h2>@i18n!(ctx.1, "I'm from another instance")</h2>
<p>@remote_msg</p>
@input!(ctx.1, remote (text), "Username", "Example: user@plu.me", remote_form, remote_errs.clone(), "minlenght=\"1\"")
<input type="submit" value="@i18n!(ctx.1, "Continue to your instance")"/>
</form>
</div>
</div>
})

View file

@ -0,0 +1,14 @@
@use templates::remote_interact_base;
@use plume_models::users::User;
@use routes::RemoteForm;
@use routes::session::LoginForm;
@use template_utils::*;
@use validator::ValidationErrors;
@(ctx: BaseContext, user: User, login_form: LoginForm, login_errs: ValidationErrors, remote_form: RemoteForm, remote_errs: ValidationErrors)
@:remote_interact_base(ctx, i18n!(ctx.1, "Follow {}"; user.name()), i18n!(ctx.1, "Login to follow"), i18n!(ctx.1, "Enter your full username to follow"), {
<h1>@i18n!(ctx.1, "Follow {}"; user.name())</h1>
@avatar(ctx.0, &user, Size::Medium, false, ctx.1)
<small>@@@user.fqn</small>
}, login_form, login_errs, remote_form, remote_errs)

View file

@ -32,7 +32,7 @@
<a class="u-url" href="@user.ap_url"></a>
}
@if ctx.2.clone().map(|u| u.id != user.id).unwrap_or(false) {
@if ctx.2.clone().map(|u| u.id != user.id).unwrap_or(true) {
<form class="inline" method="post" action="@uri!(user::follow: name = &user.fqn)">
@if follows {
<input type="submit" value="@i18n!(ctx.1, "Unsubscribe")">