diff --git a/CHANGELOG.md b/CHANGELOG.md index cf669d74d..5522fd453 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,8 @@ - Updated api routes, fixes ([#2114](https://github.com/pixelfed/pixelfed/issues/2114)) ([50bbeddd](https://github.com/pixelfed/pixelfed/commit/50bbeddd)) - Updated SiteController, add legacy profile/webfinger redirect ([cfaa248c](https://github.com/pixelfed/pixelfed/commit/cfaa248c)) - Updated checkpoint view, fix recovery code bug ([3385583f](https://github.com/pixelfed/pixelfed/commit/3385583f)) +- Updated Inbox, move expensive HTTP Signature validation to job queue ([f2ae45e5a](https://github.com/pixelfed/pixelfed/commit/f2ae45e5a)) +- Updated MomentUI, fix bugs and improve UI ([90b89cb8](https://github.com/pixelfed/pixelfed/commit/90b89cb8)) ## [v0.10.9 (2020-04-17)](https://github.com/pixelfed/pixelfed/compare/v0.10.8...v0.10.9) diff --git a/app/Http/Controllers/CommentController.php b/app/Http/Controllers/CommentController.php index acf41df44..834dbc24f 100644 --- a/app/Http/Controllers/CommentController.php +++ b/app/Http/Controllers/CommentController.php @@ -34,9 +34,11 @@ class CommentController extends Controller $this->validate($request, [ 'item' => 'required|integer|min:1', 'comment' => 'required|string|max:'.(int) config('pixelfed.max_caption_length'), + 'sensitive' => 'nullable|boolean' ]); $comment = $request->input('comment'); - $statusId = $request->item; + $statusId = $request->input('item'); + $nsfw = $request->input('sensitive', false); $user = Auth::user(); $profile = $user->profile; @@ -56,11 +58,12 @@ class CommentController extends Controller return; } - $reply = DB::transaction(function() use($comment, $status, $profile) { + $reply = DB::transaction(function() use($comment, $status, $profile, $nsfw) { $scope = $profile->is_private == true ? 'private' : 'public'; $autolink = Autolink::create()->autolink($comment); $reply = new Status(); $reply->profile_id = $profile->id; + $reply->is_nsfw = $nsfw; $reply->caption = e($comment); $reply->rendered = $autolink; $reply->in_reply_to_id = $status->id; diff --git a/public/js/profile.js b/public/js/profile.js index 7edb4ae6d..cb25c1f98 100644 Binary files a/public/js/profile.js and b/public/js/profile.js differ diff --git a/public/js/rempos.js b/public/js/rempos.js index 81be27cf0..f58ad1e98 100644 Binary files a/public/js/rempos.js and b/public/js/rempos.js differ diff --git a/public/js/status.js b/public/js/status.js index d79c46f3d..7e1a772d0 100644 Binary files a/public/js/status.js and b/public/js/status.js differ diff --git a/public/js/timeline.js b/public/js/timeline.js index 1cb667eaa..4f01c7cb2 100644 Binary files a/public/js/timeline.js and b/public/js/timeline.js differ diff --git a/public/mix-manifest.json b/public/mix-manifest.json index c32b868df..de81b6eb5 100644 Binary files a/public/mix-manifest.json and b/public/mix-manifest.json differ diff --git a/resources/assets/js/components/PostComponent.vue b/resources/assets/js/components/PostComponent.vue index 1432f83c4..b3e834ede 100644 --- a/resources/assets/js/components/PostComponent.vue +++ b/resources/assets/js/components/PostComponent.vue @@ -3,10 +3,10 @@
-
+

You are blocking this account

-

Click here to view this status

+

View Status

@@ -257,7 +257,7 @@
-
+
@@ -301,16 +301,24 @@
- -
+
-

- {{status.content.length > 100 ? status.content.slice(0,100) : 'Untitled Post'}} +

+

+

+ by {{statusUsername}} + + + Follow + +

+

+ avatar +
+
+
+

+ {{status.content_text.length ? status.content_text : 'Untitled Post'}}

by {{statusUsername}} @@ -318,7 +326,7 @@ Follow -->

- avatar + avatar

@@ -330,8 +338,7 @@ {{timeAgo(status.created_at)}} ago

- - -
+
+
@@ -617,6 +631,7 @@ export default { sharesPage: 1, lightboxMedia: false, replyText: '', + replySensitive: false, relationship: {}, results: [], pagination: {}, @@ -916,7 +931,8 @@ export default { } let data = { item: this.replyingToId, - comment: this.replyText + comment: this.replyText, + sensitive: this.replySensitive } this.replyText = ''; diff --git a/resources/assets/js/components/PostMenu.vue b/resources/assets/js/components/PostMenu.vue index dfb6f26d4..771dc4733 100644 --- a/resources/assets/js/components/PostMenu.vue +++ b/resources/assets/js/components/PostMenu.vue @@ -56,12 +56,12 @@ Go to post - Hide + Hide Report - Mute Profile - Block Profile + Mute Profile + Block Profile - Delete + Delete diff --git a/resources/lang/eo/auth.php b/resources/lang/eo/auth.php new file mode 100644 index 000000000..01cbcd3c8 --- /dev/null +++ b/resources/lang/eo/auth.php @@ -0,0 +1,19 @@ + 'Tiuj ĉi akreditaĵojn ne kongruas kun niajn registraĵojn.', + 'throttle' => 'Tro saluton provojn. Bonvolu provu refoje post :seconds sekundoj.', + +]; diff --git a/resources/lang/eo/exception.php b/resources/lang/eo/exception.php new file mode 100644 index 000000000..b17c92823 --- /dev/null +++ b/resources/lang/eo/exception.php @@ -0,0 +1,11 @@ + [ + 'invalid' => [ + 'album' => 'Metu unu foton aŭ videon, aŭ multajn fotojn.', + ], + ], + +]; diff --git a/resources/lang/eo/helpcenter.php b/resources/lang/eo/helpcenter.php new file mode 100644 index 000000000..b3fbb72a4 --- /dev/null +++ b/resources/lang/eo/helpcenter.php @@ -0,0 +1,26 @@ + 'Helpejo', + 'whatsnew' => 'Kio Novas', + + 'gettingStarted' => 'Komenci', + 'sharingMedia' => 'Kunhavigi Mediojn', + 'profile' => 'Profilo', + 'stories' => 'Historioj', + 'hashtags' => 'Kradvortoj', + 'discover' => 'Trovi', + 'directMessages' => 'Rektaj Mesaĝoj', + 'timelines' => 'Kronologioj', + 'embed' => 'Enkorpigi', + + 'communityGuidelines' => 'Konumumaj Gvidiloj', + 'whatIsTheFediverse' => 'Kio Estas la Fediverso?', + 'controllingVisibility' => 'Kontroli Videbleco', + 'blockingAccounts' => 'Bloki Kontoj', + 'safetyTips' => 'Sekurecaj Konsiletoj', + 'reportSomething' => 'Informi', + 'dataPolicy' => 'Datuma Politiko' + +]; diff --git a/resources/lang/eo/navmenu.php b/resources/lang/eo/navmenu.php new file mode 100644 index 000000000..f796feb05 --- /dev/null +++ b/resources/lang/eo/navmenu.php @@ -0,0 +1,19 @@ + 'Serĉi', + 'home' => 'Hejmo', + 'local' => 'Loka', + 'network' => 'Reta', + 'discover' => 'Trovi', + 'viewMyProfile' => 'Rigardi mia profilo', + 'myProfile' => 'Mia Profilo', + 'myTimeline' => 'Mia Kronologio', + 'publicTimeline' => 'Publica Kronologio', + 'remoteFollow' => 'Sekvi Reta', + 'settings' => 'Agordoj', + 'admin' => 'Administri', + 'logout' => 'Adiaŭi', + 'directMessages' => 'Rektaj Mesaĝoj', + 'composePost' => 'Afiŝi', +]; diff --git a/resources/lang/eo/notification.php b/resources/lang/eo/notification.php new file mode 100644 index 000000000..e35292564 --- /dev/null +++ b/resources/lang/eo/notification.php @@ -0,0 +1,12 @@ + 'ŝatis vian afiŝon.', + 'likedComment' => 'ŝatis vian komenton.', + 'startedFollowingYou' => 'eksetvis vin.', + 'commented' => 'komentis vian afiŝon.', + 'mentionedYou' => 'menciis vin.', + 'shared' => 'kunhavigis vian afiŝon.', + +]; diff --git a/resources/lang/eo/pagination.php b/resources/lang/eo/pagination.php new file mode 100644 index 000000000..8d3d02df0 --- /dev/null +++ b/resources/lang/eo/pagination.php @@ -0,0 +1,19 @@ + '« Antaŭa', + 'next' => 'Sekva »', + +]; diff --git a/resources/lang/eo/passwords.php b/resources/lang/eo/passwords.php new file mode 100644 index 000000000..faa86f922 --- /dev/null +++ b/resources/lang/eo/passwords.php @@ -0,0 +1,22 @@ + 'Pasvortoj devas havi minimume ses signojn kaj kongrui kun la konfirmo.', + 'reset' => 'Via pasvorto restarigis!', + 'sent' => 'Se via retadreso ekzistas en nia datumbazo, tiam vi ricevos pasvort-reakiran ligilon en via retadreso post nelonge. Bonvolu, kontrolu vian spamujon se vi ne ricevis.', + 'token' => 'Ĉi tiu pasvort-reakiran ligilon ne validas.', + 'user' => 'Se via retadreso ekzistas en nia datumbazo, tiam vi ricevos pasvort-reakiran ligilon en via retadreso post nelonge. Bonvolu, kontrolu vian spamujon se vi ne ricevis.', + +]; diff --git a/resources/lang/eo/profile.php b/resources/lang/eo/profile.php new file mode 100644 index 000000000..7107108b8 --- /dev/null +++ b/resources/lang/eo/profile.php @@ -0,0 +1,15 @@ + 'Ĉi tiu uzanto ankoraŭ ne havas afiŝojn!', + 'emptyFollowers' => 'Ĉi tiu uzanto ankoraŭ ne havas sekvantojn!', + 'emptyFollowing' => 'Ĉi tiu uzanto ankoraŭ ne sekvas iu!', + 'emptySaved' => 'Vi ankoraŭ ne konservis neniujn afiŝojn!', + 'savedWarning' => 'Sola vi permisas vidi kion vi konservis', + 'privateProfileWarning' => 'Ĉi tiu konto estas privata', + 'alreadyFollow' => 'Vi jam sekvas :username?', + 'loginToSeeProfile' => 'vidi lian fotojn kaj videojn.', + + 'status.disabled.header' => 'Profilo Maldisponebla', + 'status.disabled.body' => 'Mi bedaŭras, ĉi tiu profilo momente estas maldisponebla. Bonvolu, momente provu denove.', +]; diff --git a/resources/lang/eo/site.php b/resources/lang/eo/site.php new file mode 100644 index 000000000..1127fd201 --- /dev/null +++ b/resources/lang/eo/site.php @@ -0,0 +1,20 @@ + 'Pri', + 'help' => 'Helpejo', + 'language' => 'Lingvo', + 'fediverse' => 'Fediverso', + 'opensource' => 'Libera Programaro', + 'terms' => 'Kondiĉoj', + 'privacy' => 'Privateco', + 'l10nWip' => 'Ni daŭre laboras pri lokaliza subteno', + 'currentLocale' => 'Kuranta lokoĵaro', + 'selectLocale' => 'Elektu unu de la subtenataj lingvoj', + 'contact' => 'Kontakti', + 'contact-us' => 'Kontactu nin', + 'places' => 'Lokoj', + 'profiles' => 'Profiloj', + +]; diff --git a/resources/lang/eo/timeline.php b/resources/lang/eo/timeline.php new file mode 100644 index 000000000..6daaa4214 --- /dev/null +++ b/resources/lang/eo/timeline.php @@ -0,0 +1,7 @@ + 'Via kronologio estas malplena.', + +]; diff --git a/resources/lang/eo/validation.php b/resources/lang/eo/validation.php new file mode 100644 index 000000000..4d6dbf17d --- /dev/null +++ b/resources/lang/eo/validation.php @@ -0,0 +1,122 @@ + 'La :attribute devas esti akceptita.', + 'active_url' => 'La :attribute ne estas valida URL.', + 'after' => 'La :attribute devas esti dato post :date.', + 'after_or_equal' => 'La :attribute devas esti dato post aŭ la sama kiel :date.', + 'alpha' => 'La :attribute devas enhavi nur literoj.', + 'alpha_dash' => 'La :attribute devas enhavi nur literoj, ciferoj, kaj streketoj.', + 'alpha_num' => 'La :attribute devas enhavi nur literoj kaj ciferoj.', + 'array' => 'La :attribute devas esti tabelo.', + 'before' => 'La :attribute devas esti dato antaŭ :date.', + 'before_or_equal' => 'La :attribute devas esti dato antaŭ aŭ la sama kiel :date.', + 'between' => [ + 'numeric' => 'La :attribute devas esti inter :min kaj :max.', + 'file' => 'La :attribute devas esti inter :min kaj :max kilobajtoj.', + 'string' => 'La :attribute devas esti inter :min kaj :max signoj.', + 'array' => 'La :attribute devas havi inter :min kaj :max eroj.', + ], + 'boolean' => 'La :attribute kampo devas esti vera aŭ malvera.', + 'confirmed' => 'La :attribute konfirmo ne kongruas.', + 'date' => 'La :attribute ne estas validan daton.', + 'date_format' => 'La :attribute ne kongruas la strukturon :format.', + 'different' => 'La :attribute kaj :other devas esti malsama.', + 'digits' => 'La :attribute devas esti :digits ciferoj.', + 'digits_between' => 'La :attribute devas esti inter :min kaj :max ciferoj.', + 'dimensions' => 'La :attribute havas malvalidan bildan dimensiojn.', + 'distinct' => 'La :attribute kampo havas duoblan valoron.', + 'email' => 'La :attribute devas esti valida retadreso.', + 'exists' => 'La elektita :attribute estas malvalida.', + 'file' => 'La :attribute devas esti dosiejro.', + 'filled' => 'La :attribute kampo devas havi valoro.', + 'image' => 'La :attribute devas esti bildo.', + 'in' => 'La elektita :attribute estas malvalida.', + 'in_array' => 'La :attribute kampo ne ekzistas en :other.', + 'integer' => 'La :attribute devas esti entjero.', + 'ip' => 'La :attribute devas esti valida IP-adreso.', + 'ipv4' => 'La :attribute devas esti valida IPv4-adreso.', + 'ipv6' => 'La :attribute devas esti valida IPv6-adreso.', + 'json' => 'La :attribute devas esti valida JSON-signoĉeno.', + 'max' => [ + 'numeric' => 'La :attribute ne devas esti pri granda ol :max.', + 'file' => 'La :attribute ne devas esti pri granda ol :max kilobajtoj.', + 'string' => 'La :attribute ne devas esti pri granda ol :max signoj.', + 'array' => 'La :attribute ne devas havi pli ol :max eroj.', + ], + 'mimes' => 'La :attribute devas esti dosiejro de tipo: :values.', + 'mimetypes' => 'La :attribute devas esti dosierjo de tipo: :values.', + 'min' => [ + 'numeric' => 'La :attribute devas esti minimume :min.', + 'file' => 'La :attribute devas esti minimume :min kilobajtoj.', + 'string' => 'La :attribute devas esti minimume :min signoj.', + 'array' => 'La :attribute devas havi minimume :min eroj.', + ], + 'not_in' => 'La elektita :attribute estas malvalida.', + 'not_regex' => 'La :attribute strukturo estas malvalida.', + 'numeric' => 'La :attribute devas esti ciferoj.', + 'present' => 'La :attribute kampo devas ĉeesti.', + 'regex' => 'La :attribute strukturo estas malvalida.', + 'required' => 'La :attribute kampo estas bezonata.', + 'required_if' => 'La :attribute kampo estas bezonata kiam :other estas :value.', + 'required_unless' => 'La :attribute kampo estas bezonata krom se :other estas en :values.', + 'required_with' => 'La :attribute kampo estas bezonata kiam :values ĉeestas.', + 'required_with_all' => 'La :attribute kampo estas bezonata kiam :values ĉeestas.', + 'required_without' => 'La :attribute kampo estas bezonata kiam :values ne ĉeestas.', + 'required_without_all' => 'La :attribute kampo estas bezonata kiam neniu el :values ĉeestas.', + 'same' => 'La :attribute kaj :other devas kongrui.', + 'size' => [ + 'numeric' => 'La :attribute devas esti :size.', + 'file' => 'La :attribute devas esti :size kilobajtoj.', + 'string' => 'La :attribute devas esti :size signoj.', + 'array' => 'La :attribute devas havi :size eroj.', + ], + 'string' => 'La :attribute devas esti signoĉeno.', + 'timezone' => 'La :attribute devas esti valida zono.', + 'unique' => 'La :attribute jam estis prenita.', + 'uploaded' => 'La :attribute ne povis alŝuti.', + 'url' => 'La :attribute strukturo estas malvalida.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'custom' => [ + 'attribute-name' => [ + 'rule-name' => 'custom-message', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + +]; diff --git a/resources/lang/fr/exception.php b/resources/lang/fr/exception.php index bd0fedb02..0133e200b 100644 --- a/resources/lang/fr/exception.php +++ b/resources/lang/fr/exception.php @@ -1,10 +1,10 @@ [ - 'invalid' => [ - 'album' => 'Doit contenir une seule photo ou vidéo ou plusieurs photos.', - ], - ], + 'compose' => [ + 'invalid' => [ + 'album' => 'Doit contenir une seule photo ou vidéo ou plusieurs photos.', + ], + ], ]; diff --git a/resources/lang/fr/helpcenter.php b/resources/lang/fr/helpcenter.php index d8b2105fd..09aa05cf9 100644 --- a/resources/lang/fr/helpcenter.php +++ b/resources/lang/fr/helpcenter.php @@ -1,24 +1,24 @@ 'Centre d\'aide', - 'whatsnew' => 'Ce qui est nouveau', + 'helpcenter' => 'Centre d\'aide', + 'whatsnew' => 'Ce qui est nouveau', - 'gettingStarted' => 'Débuter', - 'sharingMedia' => 'Partager du contenu', - 'profile' => 'Profil', - 'stories' => 'Stories', - 'hashtags' => 'Hashtags', - 'discover' => 'Découvrir', - 'directMessages' => 'Messages Directs', - 'timelines' => 'Chronologies', - 'embed' => 'Intégrer', + 'gettingStarted' => 'Débuter', + 'sharingMedia' => 'Partager du contenu', + 'profile' => 'Profil', + 'stories' => 'Stories', + 'hashtags' => 'Hashtags', + 'discover' => 'Découvrir', + 'directMessages' => 'Messages Directs', + 'timelines' => 'Chronologies', + 'embed' => 'Intégrer', - 'communityGuidelines' => 'Règlement de la communauté', - 'whatIsTheFediverse' => 'Qu\'est-ce que le fediverse ?', - 'controllingVisibility' => 'Contrôler la visibilité', - 'blockingAccounts' => 'Blocage des comptes', - 'safetyTips' => 'Conseils de sécurité', - 'reportSomething' => 'Signaler quelque chose', - 'dataPolicy' => 'Politique en matière de données' + 'communityGuidelines' => 'Règlement de la communauté', + 'whatIsTheFediverse' => 'Qu\'est-ce que le fediverse ?', + 'controllingVisibility' => 'Contrôler la visibilité', + 'blockingAccounts' => 'Blocage des comptes', + 'safetyTips' => 'Conseils de sécurité', + 'reportSomething' => 'Signaler quelque chose', + 'dataPolicy' => 'Politique en matière de données' ]; diff --git a/resources/lang/fr/navmenu.php b/resources/lang/fr/navmenu.php index 34547d546..e66cf9310 100644 --- a/resources/lang/fr/navmenu.php +++ b/resources/lang/fr/navmenu.php @@ -1,11 +1,11 @@ 'Rechercher', - 'home' => 'Accueil', - 'local' => 'Local', - 'network' => 'Réseau', - 'discover' => 'Découvrir', + 'search' => 'Rechercher', + 'home' => 'Accueil', + 'local' => 'Local', + 'network' => 'Réseau', + 'discover' => 'Découvrir', 'viewMyProfile' => 'Voir mon profil', 'myTimeline' => 'Ma Chronologie', 'publicTimeline' => 'Chronologie Publique', @@ -13,6 +13,6 @@ return [ 'settings' => 'Paramètres', 'admin' => 'Admin', 'logout' => 'Se déconnecter', - 'directMessages' => 'Messages Directs', + 'directMessages' => 'Messages Directs', 'composePost' => 'Composer une publication', ]; diff --git a/resources/lang/fr/notification.php b/resources/lang/fr/notification.php index 0f074dcbe..8d23b4e8e 100644 --- a/resources/lang/fr/notification.php +++ b/resources/lang/fr/notification.php @@ -6,5 +6,5 @@ return [ 'startedFollowingYou' => 'a commencé à vous suivre.', 'commented' => 'a commenté votre publication.', 'mentionedYou' => 'vous a mentionné.', - 'shared' => 'a partagé votre publication.', + 'shared' => 'a partagé votre publication.', ]; diff --git a/resources/lang/fr/profile.php b/resources/lang/fr/profile.php index b8e4d7f6a..9c5e51590 100644 --- a/resources/lang/fr/profile.php +++ b/resources/lang/fr/profile.php @@ -11,5 +11,5 @@ return [ 'loginToSeeProfile' => 'pour pouvoir consulter leurs photos et vidéos.', 'status.disabled.header' => 'Profil indisponible', - 'status.disabled.body' => 'Désolé, ce profil n’est pas disponible pour le moment. Veuillez réessayer plus tard.', + 'status.disabled.body' => 'Désolé, ce profil n’est pas disponible pour le moment. Veuillez réessayer plus tard.', ]; diff --git a/resources/lang/fr/site.php b/resources/lang/fr/site.php index 3e9a03494..42d4f7e14 100644 --- a/resources/lang/fr/site.php +++ b/resources/lang/fr/site.php @@ -1,16 +1,16 @@ 'À propos', - 'help' => 'Aide', - 'language' => 'Langue', - 'fediverse' => 'Fediverse', - 'opensource' => 'Open Source', - 'terms' => 'Conditions', - 'privacy' => 'Vie privée', - 'l10nWip' => 'Nous travaillons toujours sur la prise en charge des langues', - 'currentLocale' => 'Langue actuelle', - 'selectLocale' => 'Sélectionnez l\'une des langues prises en charge', - 'contact' => 'Contact', - 'contact-us' => 'Nous contacter', + 'about' => 'À propos', + 'help' => 'Aide', + 'language' => 'Langue', + 'fediverse' => 'Fediverse', + 'opensource' => 'Open Source', + 'terms' => 'Conditions', + 'privacy' => 'Vie privée', + 'l10nWip' => 'Nous travaillons toujours sur la prise en charge des langues', + 'currentLocale' => 'Langue actuelle', + 'selectLocale' => 'Sélectionnez l\'une des langues prises en charge', + 'contact' => 'Contact', + 'contact-us' => 'Nous contacter', ]; diff --git a/resources/lang/fr/validation.php b/resources/lang/fr/validation.php index 292bbfad2..e618b9ce3 100644 --- a/resources/lang/fr/validation.php +++ b/resources/lang/fr/validation.php @@ -114,4 +114,3 @@ return [ */ 'attributes' => [], ]; -