Commit cf2bd660 authored by Benjamin Neff's avatar Benjamin Neff

Merge branch 'release/0.7.2.0'

parents 2c9fec91 a9cce95a
# 0.7.2.0
## Bug fixes
* Ignore invalid `diaspora://` links [#7652](https://github.com/diaspora/diaspora/pull/7652)
* Fix deformed avatar in hovercards [#7656](https://github.com/diaspora/diaspora/pull/7656)
* Fix default aspects on profile page and bookmarklet publisher [#7679](https://github.com/diaspora/diaspora/issues/7679)
## Features
* Add birthday notifications [#7624](https://github.com/diaspora/diaspora/pull/7624)
# 0.7.1.1 # 0.7.1.1
Fixes an issue with installing and running diaspora\* with today released bundler v1.16.0. Fixes an issue with installing and running diaspora\* with today released bundler v1.16.0.
......
...@@ -12,16 +12,10 @@ ...@@ -12,16 +12,10 @@
font-size: small; font-size: small;
.avatar { .avatar {
position: relative;
float: left; float: left;
height: 70px !important; height: 70px;
width: 70px !important; object-fit: cover;
top: 0 !important; width: 70px;
margin: {
right: 10px;
left: 0;
}
} }
$image_width: 80px; /* including margin */ $image_width: 80px; /* including margin */
......
...@@ -104,7 +104,8 @@ class NotificationsController < ApplicationController ...@@ -104,7 +104,8 @@ class NotificationsController < ApplicationController
"mentioned" => "Notifications::MentionedInPost", "mentioned" => "Notifications::MentionedInPost",
"mentioned_in_comment" => "Notifications::MentionedInComment", "mentioned_in_comment" => "Notifications::MentionedInComment",
"reshared" => "Notifications::Reshared", "reshared" => "Notifications::Reshared",
"started_sharing" => "Notifications::StartedSharing" "started_sharing" => "Notifications::StartedSharing",
"contacts_birthday" => "Notifications::ContactsBirthday"
} }
end end
helper_method :types helper_method :types
......
...@@ -20,8 +20,6 @@ class StatusMessagesController < ApplicationController ...@@ -20,8 +20,6 @@ class StatusMessagesController < ApplicationController
@contact = current_user.contact_for(@person) @contact = current_user.contact_for(@person)
if @contact if @contact
@aspects_with_person = @contact.aspects.load @aspects_with_person = @contact.aspects.load
@aspect_ids = @aspects_with_person.map(&:id)
gon.aspect_ids = @aspect_ids
render layout: nil render layout: nil
else else
@aspects_with_person = [] @aspects_with_person = []
...@@ -29,8 +27,6 @@ class StatusMessagesController < ApplicationController ...@@ -29,8 +27,6 @@ class StatusMessagesController < ApplicationController
elsif request.format == :mobile elsif request.format == :mobile
@aspect = :all @aspect = :all
@aspects = current_user.aspects.load @aspects = current_user.aspects.load
@aspect_ids = @aspects.map(&:id)
gon.aspect_ids = @aspect_ids
else else
redirect_to stream_path redirect_to stream_path
end end
...@@ -38,7 +34,6 @@ class StatusMessagesController < ApplicationController ...@@ -38,7 +34,6 @@ class StatusMessagesController < ApplicationController
def bookmarklet def bookmarklet
@aspects = current_user.aspects @aspects = current_user.aspects
@aspect_ids = current_user.aspect_ids
gon.preloads[:bookmarklet] = { gon.preloads[:bookmarklet] = {
content: params[:content], content: params[:content],
......
...@@ -17,14 +17,12 @@ module AspectGlobalHelper ...@@ -17,14 +17,12 @@ module AspectGlobalHelper
if stream if stream
aspects = stream.aspects aspects = stream.aspects
aspect = stream.aspect aspect = stream.aspect
aspect_ids = stream.aspect_ids
elsif current_user elsif current_user
aspects = current_user.post_default_aspects aspects = current_user.post_default_aspects
aspect = aspects.first aspect = aspects.first
aspect_ids = current_user.aspect_ids
else else
return {} return {}
end end
{selected_aspects: aspects, aspect: aspect, aspect_ids: aspect_ids} {selected_aspects: aspects, aspect: aspect}
end end
end end
...@@ -16,6 +16,8 @@ module NotificationsHelper ...@@ -16,6 +16,8 @@ module NotificationsHelper
elsif %w(Notifications::CommentOnPost Notifications::AlsoCommented Notifications::Reshared Notifications::Liked) elsif %w(Notifications::CommentOnPost Notifications::AlsoCommented Notifications::Reshared Notifications::Liked)
.include?(note.type) .include?(note.type)
opts.merge!(opts_for_post(note.linked_object)) opts.merge!(opts_for_post(note.linked_object))
elsif note.is_a?(Notifications::ContactsBirthday)
opts.merge!(opts_for_birthday(note.linked_object))
end end
end end
translation(target_type, opts) translation(target_type, opts)
...@@ -44,6 +46,10 @@ module NotificationsHelper ...@@ -44,6 +46,10 @@ module NotificationsHelper
} }
end end
def opts_for_birthday(person)
{date: locale_date(person.birthday.to_s)}
end
def notification_people_link(note, people=nil) def notification_people_link(note, people=nil)
actors =people || note.actors actors =people || note.actors
number_of_actors = actors.size number_of_actors = actors.size
......
# frozen_string_literal: true
module NotificationMailers
class ContactsBirthday < NotificationMailers::Base
attr_accessor :person
def set_headers(person_id)
@person = Person.find(person_id)
@headers[:subject] = I18n.t("notifier.contacts_birthday.subject", name: @person.name)
end
end
end
# frozen_string_literal: true
module Notifications
class ContactsBirthday < Notification
def mail_job
Workers::Mail::ContactsBirthday
end
def popup_translation_key
"notifications.contacts_birthday"
end
def self.notify(contact, _recipient_user_ids)
recipient = contact.user
actor = contact.person
create_notification(recipient, actor, actor).try(:email_the_user, actor, actor)
end
end
end
...@@ -15,11 +15,19 @@ class Reference < ApplicationRecord ...@@ -15,11 +15,19 @@ class Reference < ApplicationRecord
def create_references def create_references
text&.scan(DiasporaFederation::Federation::DiasporaUrlParser::DIASPORA_URL_REGEX)&.each do |author, type, guid| text&.scan(DiasporaFederation::Federation::DiasporaUrlParser::DIASPORA_URL_REGEX)&.each do |author, type, guid|
class_name = DiasporaFederation::Entity.entity_class(type).to_s.rpartition("::").last add_reference(author, type, guid)
entity = Diaspora::Federation::Mappings.model_class_for(class_name).find_by(guid: guid)
references.find_or_create_by(target: entity) if entity.diaspora_handle == author
end end
end end
private
def add_reference(author, type, guid)
class_name = DiasporaFederation::Entity.entity_class(type).to_s.rpartition("::").last
entity = Diaspora::Federation::Mappings.model_class_for(class_name).find_by(guid: guid)
references.find_or_create_by(target: entity) if entity&.diaspora_handle == author
rescue => e # rubocop:disable Lint/RescueWithoutErrorClass
logger.warn "ignoring invalid diaspora-url: diaspora://#{author}/#{type}/#{guid}: #{e.class}: #{e.message}"
end
end end
module Target module Target
......
...@@ -14,7 +14,8 @@ class UserPreference < ApplicationRecord ...@@ -14,7 +14,8 @@ class UserPreference < ApplicationRecord
"started_sharing", "started_sharing",
"also_commented", "also_commented",
"liked", "liked",
"reshared"] "reshared",
"contacts_birthday"]
def must_be_valid_email_type def must_be_valid_email_type
unless VALID_EMAIL_TYPES.include?(self.email_type) unless VALID_EMAIL_TYPES.include?(self.email_type)
......
...@@ -30,6 +30,8 @@ ...@@ -30,6 +30,8 @@
%i.entypo-reshare %i.entypo-reshare
- when "started_sharing" - when "started_sharing"
%i.entypo-add-user %i.entypo-add-user
- when "contacts_birthday"
%i.entypo-calendar
= t("." + key) = t("." + key)
.col-md-9.stream.notifications .col-md-9.stream.notifications
......
<%= t(".birthday", name: @notification.person.name) %>
[<%= t(".view_profile", name: @notification.person.name) %>][1]
[1]: <%= local_or_remote_person_path(@notification.person, absolute: true) %>
...@@ -42,8 +42,8 @@ ...@@ -42,8 +42,8 @@
- elsif all_aspects_selected?(selected_aspects) - elsif all_aspects_selected?(selected_aspects)
= hidden_field_tag "aspect_ids[]", "all_aspects" = hidden_field_tag "aspect_ids[]", "all_aspects"
- else - else
- for aspect_id in aspect_ids - selected_aspects.each do |aspect|
= hidden_field_tag "aspect_ids[]", aspect_id.to_s = hidden_field_tag "aspect_ids[]", aspect.id
.hidden#publisher_spinner .hidden#publisher_spinner
.loader .loader
...@@ -62,6 +62,4 @@ ...@@ -62,6 +62,4 @@
data: {toggle: "modal", target: "#publicExplainModal"}} data: {toggle: "modal", target: "#publicExplainModal"}}
%i.entypo-cog %i.entypo-cog
= link_to "", contacts_path(aspect_ids: aspect_ids), class: "selected_contacts_link hidden"
= render "shared/public_explain" = render "shared/public_explain"
...@@ -2,6 +2,6 @@ ...@@ -2,6 +2,6 @@
-# licensed under the Affero General Public License version 3 or later. See -# licensed under the Affero General Public License version 3 or later. See
-# the COPYRIGHT file. -# the COPYRIGHT file.
= render :partial => 'publisher/publisher', :locals => { :aspect => :profile, :selected_aspects => @aspects, :aspect_ids => @aspect_ids } = render partial: "publisher/publisher", locals: {aspect: :profile, selected_aspects: @aspects}
= javascript_include_tag "mobile/bookmarklet" = javascript_include_tag "mobile/bookmarklet"
= render :partial => 'publisher/publisher', = render partial: "publisher/publisher",
:locals => { :aspect => @aspect, locals: {aspect: @aspect, selected_aspects: @aspects_with_person, person: @person}
:aspect_ids => @aspect_ids,
:selected_aspects => @aspects_with_person,
:person => @person }
...@@ -2,4 +2,4 @@ ...@@ -2,4 +2,4 @@
-# licensed under the Affero General Public License version 3 or later. See -# licensed under the Affero General Public License version 3 or later. See
-# the COPYRIGHT file. -# the COPYRIGHT file.
= render :partial => 'publisher/publisher', :locals => {:aspect => @aspects.first, :aspect_ids => @aspect_ids, :selected_aspects => @aspects} = render partial: "publisher/publisher", locals: {aspect: @aspects.first, selected_aspects: @aspects}
...@@ -127,51 +127,55 @@ ...@@ -127,51 +127,55 @@
#email_prefs #email_prefs
- if current_user.admin? - if current_user.admin?
= type.label :someone_reported, class: "checkbox-inline" do = type.label :someone_reported, class: "checkbox-inline" do
= type.check_box :someone_reported, {checked: @email_prefs["someone_reported"]}, false, true = type.check_box :someone_reported, {checked: email_prefs["someone_reported"]}, false, true
= t(".someone_reported") = t(".someone_reported")
.small-horizontal-spacer .small-horizontal-spacer
= type.label :started_sharing, class: "checkbox-inline" do = type.label :started_sharing, class: "checkbox-inline" do
= type.check_box :started_sharing, {checked: @email_prefs["started_sharing"]}, false, true = type.check_box :started_sharing, {checked: email_prefs["started_sharing"]}, false, true
= t(".started_sharing") = t(".started_sharing")
.small-horizontal-spacer .small-horizontal-spacer
= type.label :mentioned, class: "checkbox-inline" do = type.label :mentioned, class: "checkbox-inline" do
= type.check_box :mentioned, {checked: @email_prefs["mentioned"]}, false, true = type.check_box :mentioned, {checked: email_prefs["mentioned"]}, false, true
= t(".mentioned") = t(".mentioned")
.small-horizontal-spacer .small-horizontal-spacer
= type.label :mentioned_in_comment, class: "checkbox-inline" do = type.label :mentioned_in_comment, class: "checkbox-inline" do
= type.check_box :mentioned_in_comment, {checked: @email_prefs["mentioned_in_comment"]}, false, true = type.check_box :mentioned_in_comment, {checked: email_prefs["mentioned_in_comment"]}, false, true
= t(".mentioned_in_comment") = t(".mentioned_in_comment")
.small-horizontal-spacer .small-horizontal-spacer
= type.label :liked, class: "checkbox-inline" do = type.label :liked, class: "checkbox-inline" do
= type.check_box :liked, {checked: @email_prefs["liked"]}, false, true = type.check_box :liked, {checked: email_prefs["liked"]}, false, true
= t(".liked") = t(".liked")
.small-horizontal-spacer .small-horizontal-spacer
= type.label :reshared, class: "checkbox-inline" do = type.label :reshared, class: "checkbox-inline" do
= type.check_box :reshared, {checked: @email_prefs["reshared"]}, false, true = type.check_box :reshared, {checked: email_prefs["reshared"]}, false, true
= t(".reshared") = t(".reshared")
.small-horizontal-spacer .small-horizontal-spacer
= type.label :comment_on_post, class: "checkbox-inline" do = type.label :comment_on_post, class: "checkbox-inline" do
= type.check_box :comment_on_post, {checked: @email_prefs["comment_on_post"]}, false, true = type.check_box :comment_on_post, {checked: email_prefs["comment_on_post"]}, false, true
= t(".comment_on_post") = t(".comment_on_post")
.small-horizontal-spacer .small-horizontal-spacer
= type.label :also_commented, class: "checkbox-inline" do = type.label :also_commented, class: "checkbox-inline" do
= type.check_box :also_commented, {checked: @email_prefs["also_commented"]}, false, true = type.check_box :also_commented, {checked: email_prefs["also_commented"]}, false, true
= t(".also_commented") = t(".also_commented")
.small-horizontal-spacer .small-horizontal-spacer
= type.label :private_message, class: "checkbox-inline" do = type.label :private_message, class: "checkbox-inline" do
= type.check_box :private_message, {checked: @email_prefs["private_message"]}, false, true = type.check_box :private_message, {checked: email_prefs["private_message"]}, false, true
= t(".private_message") = t(".private_message")
.small-horizontal-spacer
.small-horizontal-spacer = type.label :contacts_birthday, class: "checkbox-inline" do
= type.check_box :contacts_birthday, {checked: email_prefs["contacts_birthday"]}, false, true
= t(".birthday")
.small-horizontal-spacer
.clearfix= f.submit t(".change"), class: "btn btn-primary pull-right", id: "change_email_preferences" .clearfix= f.submit t(".change"), class: "btn btn-primary pull-right", id: "change_email_preferences"
%hr %hr
......
...@@ -5,4 +5,4 @@ ...@@ -5,4 +5,4 @@
= render "shared/settings_nav" = render "shared/settings_nav"
.col-md-9 .col-md-9
.framed-content .framed-content
= render "edit" = render "edit", email_prefs: @email_prefs
...@@ -5,4 +5,4 @@ ...@@ -5,4 +5,4 @@
.row .row
.col-md-12 .col-md-12
= render "edit" = render "edit", email_prefs: @email_prefs
# frozen_string_literal: true
module Workers
class CheckBirthday < Base
sidekiq_options queue: :low
def perform
profiles = Profile
.where("EXTRACT(MONTH FROM birthday) = ?", Time.zone.today.month)
.where("EXTRACT(DAY FROM birthday) = ?", Time.zone.today.day)
profiles.each do |profile|
profile.person.contacts.where(sharing: true, receiving: true).each do |contact|
Notifications::ContactsBirthday.notify(contact, [])
end
end
end
end
end
# frozen_string_literal: true
module Workers
module Mail
class ContactsBirthday < NotifierBase
end
end
end
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
defaults: defaults:
version: version:
number: "0.7.1.1" # Do not touch unless doing a release, do not backport the version number that's in master number: "0.7.2.0" # Do not touch unless doing a release, do not backport the version number that's in master
heroku: false heroku: false
environment: environment:
url: "http://localhost:3000/" url: "http://localhost:3000/"
......
...@@ -48,7 +48,7 @@ de_formal: ...@@ -48,7 +48,7 @@ de_formal:
unlock_instructions: unlock_instructions:
account_locked: "Ihr Konto wurde aufgrund von zu vielen fehlgeschlagenen Anmeldeversuchen gesperrt." account_locked: "Ihr Konto wurde aufgrund von zu vielen fehlgeschlagenen Anmeldeversuchen gesperrt."
click_to_unlock: "Folgen Sie dem unten aufgeführten Link, um Ihr Konto zu entsperren:" click_to_unlock: "Folgen Sie dem unten aufgeführten Link, um Ihr Konto zu entsperren:"
subject: "Anweisungen zum Entsperren" subject: "Anleitungen zum Entsperren"
unlock: "Mein Konto entsperren" unlock: "Mein Konto entsperren"
welcome: "Willkommen %{email}!" welcome: "Willkommen %{email}!"
omniauth_callbacks: omniauth_callbacks:
...@@ -100,8 +100,8 @@ de_formal: ...@@ -100,8 +100,8 @@ de_formal:
unlocks: unlocks:
new: new:
resend_unlock: "Entsperr-Anweisungen erneut senden" resend_unlock: "Entsperr-Anweisungen erneut senden"
send_instructions: "Sie werden in ein wenigen Minuten eine E-Mail mit Anweisungen zum Entsperren Ihres Kontos erhalten." send_instructions: "Sie werden in ein wenigen Minuten eine E-Mail mit Informationen zum Entsperren Ihres Kontos erhalten."
send_paranoid_instructions: "Falls Ihr Konto existiert, erhalten Sie in wenigen Minuten eine E-Mail mit Anweisungen, um es zu entsperren." send_paranoid_instructions: "Falls Ihr Konto existiert, erhalten Sie in wenigen Minuten eine E-Mail mit Informationen, um es zu entsperren."
unlocked: "Ihr Konto wurde erfolgreich entsperrt. Bitte melden Sie sich an, um fortzufahren." unlocked: "Ihr Konto wurde erfolgreich entsperrt. Bitte melden Sie sich an, um fortzufahren."
errors: errors:
messages: messages:
......
...@@ -10,7 +10,7 @@ fr: ...@@ -10,7 +10,7 @@ fr:
confirmed: "Votre compte a été confirmé. Vous êtes à présent connecté." confirmed: "Votre compte a été confirmé. Vous êtes à présent connecté."
new: new:
resend_confirmation: "Renvoyer les instructions de confirmation" resend_confirmation: "Renvoyer les instructions de confirmation"
send_instructions: "Vous allez recevoir dans quelques minutes un courriel contenant les instructions pour confirmer votre compte." send_instructions: "Vous allez recevoir dans quelques minutes un courriel contenant les instructions pour confirmer votre adresse de courrier électronique."
send_paranoid_instructions: "Si votre e-mail existe dans notre base de données, vous recevrez un e-mail avec les instructions pour confirmer votre adresse e-mail dans quelques minutes." send_paranoid_instructions: "Si votre e-mail existe dans notre base de données, vous recevrez un e-mail avec les instructions pour confirmer votre adresse e-mail dans quelques minutes."
failure: failure:
already_authenticated: "Vous êtes déjà connecté" already_authenticated: "Vous êtes déjà connecté"
...@@ -20,9 +20,9 @@ fr: ...@@ -20,9 +20,9 @@ fr:
last_attempt: "Vous avez encore une tentative avant que votre compte ne soit verrouillé." last_attempt: "Vous avez encore une tentative avant que votre compte ne soit verrouillé."
locked: "Votre compte est verrouillé." locked: "Votre compte est verrouillé."
not_found_in_database: "%{authentication_keys} ou mot de passe invalide." not_found_in_database: "%{authentication_keys} ou mot de passe invalide."
timeout: "Votre session a expiré. Veuillez vous connecter de nouveau pour continuer." timeout: "Votre session a expiré. Veuillez vous identifier de nouveau pour continuer."
unauthenticated: "Vous devez vous connecter ou vous inscrire avant de continuer." unauthenticated: "Vous devez vous connecter ou vous inscrire avant de continuer."
unconfirmed: "Vous devez confirmer votre compte avant de continuer." unconfirmed: "Vous devez confirmer votre adresse de courrier électronique avant de continuer."
invitations: invitations:
invitation_token_invalid: "Toutes nos excuses ! Cette invitation n'est pas valide." invitation_token_invalid: "Toutes nos excuses ! Cette invitation n'est pas valide."
send_instructions: "Votre invitation a été envoyée." send_instructions: "Votre invitation a été envoyée."
...@@ -77,7 +77,7 @@ fr: ...@@ -77,7 +77,7 @@ fr:
signed_up_but_locked: "Vous vous êtes inscrit·e avec succès. Cependant, vous ne pouvez pas vous connecter parce que votre compte est verrouillé." signed_up_but_locked: "Vous vous êtes inscrit·e avec succès. Cependant, vous ne pouvez pas vous connecter parce que votre compte est verrouillé."
signed_up_but_unconfirmed: "Un courriel avec un lien de confirmation vous a été envoyé. Veuillez suivre ce lien pour activer votre compte." signed_up_but_unconfirmed: "Un courriel avec un lien de confirmation vous a été envoyé. Veuillez suivre ce lien pour activer votre compte."
update_needs_confirmation: "Vous avez mis à jour votre compte correctement mais nous devons vérifier votre nouvelle adresse e-mail. Veuillez consulter votre boite aux lettres et cliquer sur le lien de confirmation." update_needs_confirmation: "Vous avez mis à jour votre compte correctement mais nous devons vérifier votre nouvelle adresse e-mail. Veuillez consulter votre boite aux lettres et cliquer sur le lien de confirmation."
updated: "Vous avez mis à jour votre compte." updated: "Vous avez modifié votre compte avec succès."
sessions: sessions:
already_signed_out: "Déconnexion réussie." already_signed_out: "Déconnexion réussie."
new: new:
...@@ -95,7 +95,7 @@ fr: ...@@ -95,7 +95,7 @@ fr:
receive_confirmation: "Vous n'avez pas reçu les instructions de confirmation ?" receive_confirmation: "Vous n'avez pas reçu les instructions de confirmation ?"
receive_unlock: "Vous n'avez pas reçu les instructions de déblocage ?" receive_unlock: "Vous n'avez pas reçu les instructions de déblocage ?"
sign_in: "Connexion" sign_in: "Connexion"
sign_up: "Inscription" sign_up: "Créer un compte"
sign_up_closed: "Les inscriptions sont fermées pour l'instant." sign_up_closed: "Les inscriptions sont fermées pour l'instant."
unlocks: unlocks:
new: new:
...@@ -105,7 +105,7 @@ fr: ...@@ -105,7 +105,7 @@ fr:
unlocked: "Votre compte a été déverrouillé. Vous êtes à présent connecté." unlocked: "Votre compte a été déverrouillé. Vous êtes à présent connecté."
errors: errors:
messages: messages:
already_confirmed: "a déjà été confirmé" already_confirmed: "a déjà été confirmé, essayez de vous identifier s’il vous plaît"
confirmation_period_expired: "aurait être confirmé dans les %{period}, veuillez en demander un nouveau" confirmation_period_expired: "aurait être confirmé dans les %{period}, veuillez en demander un nouveau"
expired: "a expiré, veuillez faire une nouvelle demande" expired: "a expiré, veuillez faire une nouvelle demande"
not_found: "introuvable" not_found: "introuvable"
......
...@@ -7,22 +7,22 @@ ...@@ -7,22 +7,22 @@
pl: pl:
devise: devise:
confirmations: confirmations:
confirmed: "Konto zostało aktywowane. Zalogowano Cię w Diasporze." confirmed: "Twój adres e-mail został potwierdzony."
new: new:
resend_confirmation: "Wyślij ponownie instrukcję aktywacji" resend_confirmation: "Wyślij ponownie instrukcję aktywacji"
send_instructions: "W ciągu kilku minut otrzymasz wiadomość zawierającą instrukcję aktywacji konta." send_instructions: "W ciągu kilku minut otrzymasz wiadomość zawierającą instrukcję aktywacji konta."
send_paranoid_instructions: "Jeśli Twój adres email istnieje w naszej bazie w ciągu kilku minut otrzymasz wiadomość email z instrukcją potwierdzenia adresu." send_paranoid_instructions: "Jeśli Twój adres e-mail istnieje w naszej bazie, w ciągu kilku minut otrzymasz wiadomość e-mail z instrukcją potwierdzenia adresu."
failure: failure:
already_authenticated: "Już jesteś zalogowany." already_authenticated: "Już jesteś zalogowany."
inactive: "Twoje konto nie zostało jeszcze aktywowane." inactive: "Twoje konto nie zostało jeszcze aktywowane."
invalid: "Nieprawidłowa nazwa użytkownika lub hasło." invalid: "Niepoprawne %{authentication_keys} lub hasło."
invalid_token: "Nieprawidłowy token uwierzytelnienia." invalid_token: "Nieprawidłowy token uwierzytelnienia."
last_attempt: "Możesz spróbować jeszcze jeden raz, potem Twoje konto zostanie zablokowane." last_attempt: "Możesz spróbować jeszcze jeden raz, potem Twoje konto zostanie zablokowane."
locked: "Twoje konto jest zablokowane." locked: "Twoje konto jest zablokowane."
not_found_in_database: "Niewłaściwy email lub hasło." not_found_in_database: "Niewłaściwy %{authentication_keys} lub hasło."
timeout: "Sesja wygasła, aby kontynuować zaloguj się ponownie." timeout: "Sesja wygasła. Aby kontynuować, zaloguj się ponownie."
unauthenticated: "Aby kontynuować zaloguj się lub zarejestruj." unauthenticated: "Aby kontynuować zaloguj lub zarejestruj się."
unconfirmed: "Musisz aktywować swoje konto." unconfirmed: "Przed przejściem dalej, musisz potwierdzić Twój adres e-mail."
invitations: invitations:
invitation_token_invalid: "Token zaproszenia jest nieprawidłowy!" invitation_token_invalid: "Token zaproszenia jest nieprawidłowy!"
send_instructions: "Zaproszenie zostało wysłane." send_instructions: "Zaproszenie zostało wysłane."
...@@ -47,7 +47,7 @@ pl: ...@@ -47,7 +47,7 @@ pl:
wont_change: "Hasło nie zostanie zmienione do momentu kliknięcia powyższego łącza i utworzenia nowego." wont_change: "Hasło nie zostanie zmienione do momentu kliknięcia powyższego łącza i utworzenia nowego."
unlock_instructions: unlock_instructions:
account_locked: "Konto zostało zablokowane, ponieważ przekroczono limit nieudanych prób logowania." account_locked: "Konto zostało zablokowane, ponieważ przekroczono limit nieudanych prób logowania."
click_to_unlock: "Kliknij poniższy link, aby odblokować konto:" click_to_unlock: "Kliknij poniższe łącze, aby odblokować konto:"
subject: "Instrukcja odblokowania" subject: "Instrukcja odblokowania"
unlock: "Odblokuj moje konto" unlock: "Odblokuj moje konto"
welcome: "Witaj %{email}!" welcome: "Witaj %{email}!"
...@@ -62,8 +62,9 @@ pl: ...@@ -62,8 +62,9 @@ pl:
no_account: "Konto z podanym adresem e-mail nie istnieje" no_account: "Konto z podanym adresem e-mail nie istnieje"
reset_password: "Resetuj hasło" reset_password: "Resetuj hasło"
send_password_instructions: "Wyślij mi instrukcję resetowania hasła" send_password_instructions: "Wyślij mi instrukcję resetowania hasła"
no_token: "Nie możesz pomyślnie odwiedzić tej strony w inny sposób niż poprzez kliknięcie odnośnika w e-mailu resetu hasła. Jeśli znalazłeś się tutaj właśnie przez tego typu e-mail, upewnij się, że kliknąłeś lub wkleiłeś pełny adres URL."
send_instructions: "W ciągu kilku minut otrzymasz wiadomość zawierającą instrukcję resetowania hasła." send_instructions: "W ciągu kilku minut otrzymasz wiadomość zawierającą instrukcję resetowania hasła."
send_paranoid_instructions: "Jeśli Twój email istnieje w naszej bazie w ciągu kilku minut otrzymasz email z łączem po kliknięciu którego będziesz mógł ustawić nowe hasło." send_paranoid_instructions: "Jeśli Twój e-mail istnieje w naszej bazie, w ciągu kilku minut otrzymasz e-mail z łączem po kliknięciu którego będziesz mógł ustawić nowe hasło."
updated: "Hasło zostało zmienione. Zalogowano pomyślnie." updated: "Hasło zostało zmienione. Zalogowano pomyślnie."
updated_not_active: "Twoje hasło zostało pomyślnie zmienione." updated_not_active: "Twoje hasło zostało pomyślnie zmienione."
registrations: registrations:
...@@ -71,8 +72,8 @@ pl: ...@@ -71,8 +72,8 @@ pl:
signed_up: "Rejestracja przebiegła pomyślnie. Jeśli aktywowano odpowiednią opcję, wyślemy do Ciebie e-mail potwierdzający ten fakt." signed_up: "Rejestracja przebiegła pomyślnie. Jeśli aktywowano odpowiednią opcję, wyślemy do Ciebie e-mail potwierdzający ten fakt."
signed_up_but_inactive: "Rejestracja przebiegła pomyślnie. Jednakże, nie możemy Cię zalogować, ponieważ Twoje konto nie zostało jeszcze aktywowane." signed_up_but_inactive: "Rejestracja przebiegła pomyślnie. Jednakże, nie możemy Cię zalogować, ponieważ Twoje konto nie zostało jeszcze aktywowane."
signed_up_but_locked: "Rejestracja przebiegła pomyślnie. Jednakże, nie możemy Cię zalogować, ponieważ Twoje konto zostało zablokowane." signed_up_but_locked: "Rejestracja przebiegła pomyślnie. Jednakże, nie możemy Cię zalogować, ponieważ Twoje konto zostało zablokowane."
signed_up_but_unconfirmed: "Wiadomość z linkiem aktywacyjnym została wysłana na Twój adres email. Proszę kliknij łącze w celu aktywowania swojego konta." signed_up_but_unconfirmed: "Wiadomość z łączem aktywacyjnym została wysłana na Twój adres e-mail. Prosimy o kliknięcie łącza w celu aktywowania Twojego konta."
update_needs_confirmation: "Twoje konto zostało zaktualizowane, ale musimy zweryfikować Twój nowy adres email. Sprawdź swoją skrzynkę i kliknij na przesłane łącze, aby potwierdzić Twój nowy adres." update_needs_confirmation: "Twoje konto zostało zaktualizowane, ale musimy zweryfikować Twój nowy adres e-mail. Sprawdź swoją skrzynkę i