Commit d0313756 authored by Benjamin Neff's avatar Benjamin Neff

Merge branch 'release/0.7.4.0'

parents b23696bb aadd64b0
# 0.7.4.0
## Refactor
* Don't print a warning when starting the server outside a Git repo [#7712](https://github.com/diaspora/diaspora/pull/7712)
* Make script/server work on readonly filesystems [#7719](https://github.com/diaspora/diaspora/pull/7719)
* Add camo paths to the robots.txt [#7726](https://github.com/diaspora/diaspora/pull/7726)
## Bug fixes
* Prevent duplicate mention notifications when the post is received twice [#7721](https://github.com/diaspora/diaspora/pull/7721)
* Fixed a compatiblitiy issue with non-diaspora\* webfingers [#7718](https://github.com/diaspora/diaspora/pull/7718)
* Don't retry federation for accounts without a valid public key [#7717](https://github.com/diaspora/diaspora/pull/7717)
* Fix stream generation for tagged posts with many followed tags [#7715](https://github.com/diaspora/diaspora/pull/7715)
* Fix incomplete Occitan date localizations [#7731](https://github.com/diaspora/diaspora/pull/7731)
## Features
* Add basic html5 audio/video embedding support [#6418](https://github.com/diaspora/diaspora/pull/6418)
* Add the back-to-top button to all pages [#7729](https://github.com/diaspora/diaspora/pull/7729)
# 0.7.3.1
Re-updating the German translations to fix some UX issues that were introduced by recent translation efforts.
......
......@@ -15,8 +15,8 @@ gem "unicorn-worker-killer", "0.4.4"
# Federation
gem "diaspora_federation-json_schema", "0.2.3"
gem "diaspora_federation-rails", "0.2.3"
gem "diaspora_federation-json_schema", "0.2.4"
gem "diaspora_federation-rails", "0.2.4"
# API and JSON
......@@ -26,7 +26,7 @@ gem "json-schema", "2.8.0"
# Authentication
gem "devise", "4.3.0"
gem "devise", "4.4.1"
gem "devise_lastseenable", "0.0.6"
# Captcha
......@@ -122,11 +122,13 @@ source "https://rails-assets.org" do
gem "rails-assets-perfect-scrollbar", "0.6.16"
end
gem "markdown-it-html5-embed", "1.0.0"
# Localization
gem "http_accept_language", "2.1.1"
gem "i18n-inflector-rails", "1.0.7"
gem "rails-i18n", "5.0.4"
gem "rails-i18n", "5.1.1"
# Mail
......@@ -186,7 +188,7 @@ gem "typhoeus", "1.3.0"
# Views
gem "gon", "6.1.0"
gem "hamlit", "2.8.4"
gem "hamlit", "2.8.6"
gem "mobile-fu", "1.4.0"
gem "rails-timeago", "2.16.0"
gem "will_paginate", "3.1.6"
......@@ -292,7 +294,7 @@ group :test do
gem "timecop", "0.9.1"
gem "webmock", "3.0.1", require: false
gem "diaspora_federation-test", "0.2.3"
gem "diaspora_federation-test", "0.2.4"
# Coverage
gem "coveralls", "0.8.21", require: false
......
......@@ -133,7 +133,7 @@ GEM
tins (~> 1.6)
crack (0.4.3)
safe_yaml (~> 1.0.0)
crass (1.0.2)
crass (1.0.3)
cucumber (2.4.0)
builder (>= 2.1.2)
cucumber-core (~> 1.5.0)
......@@ -156,7 +156,7 @@ GEM
railties (>= 4, < 5.2)
cucumber-wire (0.0.1)
database_cleaner (1.6.1)
devise (4.3.0)
devise (4.4.1)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
railties (>= 4.1.0, < 5.2)
......@@ -166,18 +166,18 @@ GEM
devise
rails (>= 3.0.4)
diaspora-prosody-config (0.0.7)
diaspora_federation (0.2.3)
diaspora_federation (0.2.4)
faraday (>= 0.9.0, < 0.15.0)
faraday_middleware (>= 0.10.0, < 0.13.0)
nokogiri (~> 1.6, >= 1.6.8)
typhoeus (~> 1.0)
valid (~> 1.0)
diaspora_federation-json_schema (0.2.3)
diaspora_federation-rails (0.2.3)
diaspora_federation-json_schema (0.2.4)
diaspora_federation-rails (0.2.4)
actionpack (>= 4.2, < 6)
diaspora_federation (= 0.2.3)
diaspora_federation-test (0.2.3)
diaspora_federation (= 0.2.3)
diaspora_federation (= 0.2.4)
diaspora_federation-test (0.2.4)
diaspora_federation (= 0.2.4)
fabrication (~> 2.16)
uuid (~> 2.3, >= 2.3.8)
diff-lcs (1.3)
......@@ -187,7 +187,7 @@ GEM
entypo-rails (3.0.0)
railties (>= 4.1, < 6)
equalizer (0.0.11)
erubi (1.6.1)
erubi (1.7.1)
eslintrb (2.1.0)
execjs
multi_json (>= 1.3)
......@@ -217,7 +217,7 @@ GEM
http-cookie (~> 1.0.0)
faraday_middleware (0.12.2)
faraday (>= 0.7.4, < 1.0)
ffi (1.9.18)
ffi (1.9.23)
fixture_builder (0.5.0)
activerecord (>= 2)
activesupport (>= 2)
......@@ -273,7 +273,7 @@ GEM
guard-rubocop (1.3.0)
guard (~> 2.0)
rubocop (~> 0.20)
haml (5.0.3)
haml (5.0.4)
temple (>= 0.8.0)
tilt
haml_lint (0.26.0)
......@@ -282,7 +282,7 @@ GEM
rake (>= 10, < 13)
rubocop (>= 0.49.0)
sysexits (~> 1.1)
hamlit (2.8.4)
hamlit (2.8.6)
temple (>= 0.8.0)
thor
tilt
......@@ -306,7 +306,8 @@ GEM
httparty (0.15.6)
multi_xml (>= 0.5.2)
httpclient (2.8.3)
i18n (0.8.6)
i18n (0.9.5)
concurrent-ruby (~> 1.0)
i18n-inflector (2.6.7)
i18n (>= 0.4.1)
i18n-inflector-rails (1.0.7)
......@@ -359,7 +360,7 @@ GEM
multi_json (~> 1.10)
logging-rails (0.6.0)
logging (>= 1.8)
loofah (2.1.1)
loofah (2.2.0)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
lumberjack (1.0.12)
......@@ -367,6 +368,7 @@ GEM
systemu (~> 2.6.2)
mail (2.6.6)
mime-types (>= 1.16, < 4)
markdown-it-html5-embed (1.0.0)
markerb (1.1.0)
memoizable (0.4.2)
thread_safe (~> 0.3, >= 0.3.1)
......@@ -377,7 +379,7 @@ GEM
mini_magick (4.8.0)
mini_mime (0.1.4)
mini_portile2 (2.3.0)
minitest (5.10.3)
minitest (5.11.3)
mobile-fu (1.4.0)
rack-mobile-detect
rails
......@@ -473,7 +475,7 @@ GEM
byebug (~> 9.1)
pry (~> 0.10)
public_suffix (3.0.0)
rack (2.0.3)
rack (2.0.4)
rack-cors (1.0.1)
rack-google-analytics (1.2.0)
actionpack
......@@ -487,12 +489,12 @@ GEM
multi_json (>= 1.3.6)
rack (>= 1.1)
rack-piwik (0.3.0)
rack-protection (2.0.0)
rack-protection (2.0.1)
rack
rack-rewrite (1.5.1)
rack-ssl (1.4.1)
rack
rack-test (0.7.0)
rack-test (0.8.3)
rack (>= 1.0, < 3)
rails (5.1.4)
actioncable (= 5.1.4)
......@@ -561,9 +563,9 @@ GEM
nokogiri (>= 1.6)
rails-html-sanitizer (1.0.3)
loofah (~> 2.0)
rails-i18n (5.0.4)
i18n (~> 0.7)
railties (~> 5.0)
rails-i18n (5.1.1)
i18n (>= 0.7, < 2)
railties (>= 5.0, < 6)
rails-timeago (2.16.0)
actionpack (>= 3.1)
activesupport (>= 3.1)
......@@ -576,7 +578,7 @@ GEM
rainbow (2.2.2)
rake
raindrops (0.19.0)
rake (12.1.0)
rake (12.3.0)
rb-fsevent (0.10.2)
rb-inotify (0.9.10)
ffi (>= 0.5.0, < 2)
......@@ -712,7 +714,7 @@ GEM
unf (~> 0.1.0)
typhoeus (1.3.0)
ethon (>= 0.9.0)
tzinfo (1.2.3)
tzinfo (1.2.5)
thread_safe (~> 0.1)
uglifier (3.2.0)
execjs (>= 0.3.0, < 3)
......@@ -757,7 +759,7 @@ GEM
will_paginate (3.1.6)
xpath (2.1.0)
nokogiri (~> 1.3)
yard (0.9.9)
yard (0.9.12)
PLATFORMS
ruby
......@@ -780,12 +782,12 @@ DEPENDENCIES
cucumber-api-steps (= 0.13)
cucumber-rails (= 1.5.0)
database_cleaner (= 1.6.1)
devise (= 4.3.0)
devise (= 4.4.1)
devise_lastseenable (= 0.0.6)
diaspora-prosody-config (= 0.0.7)
diaspora_federation-json_schema (= 0.2.3)
diaspora_federation-rails (= 0.2.3)
diaspora_federation-test (= 0.2.3)
diaspora_federation-json_schema (= 0.2.4)
diaspora_federation-rails (= 0.2.4)
diaspora_federation-test (= 0.2.4)
entypo-rails (= 3.0.0)
eye (= 0.9.2)
factory_girl_rails (= 4.8.0)
......@@ -801,7 +803,7 @@ DEPENDENCIES
guard-rspec (= 4.7.3)
guard-rubocop (= 1.3.0)
haml_lint (= 0.26.0)
hamlit (= 2.8.4)
hamlit (= 2.8.6)
handlebars_assets (= 0.23.2)
http_accept_language (= 2.1.1)
i18n-inflector-rails (= 1.0.7)
......@@ -815,6 +817,7 @@ DEPENDENCIES
json-schema-rspec (= 0.0.4)
leaflet-rails (= 1.2.0)
logging-rails (= 0.6.0)
markdown-it-html5-embed (= 1.0.0)
markerb (= 1.1.0)
mini_magick (= 4.8.0)
minitest
......@@ -866,7 +869,7 @@ DEPENDENCIES
rails-assets-markdown-it-sup (= 1.0.0)!
rails-assets-perfect-scrollbar (= 0.6.16)!
rails-controller-testing (= 1.0.2)
rails-i18n (= 5.0.4)
rails-i18n (= 5.1.1)
rails-timeago (= 2.16.0)
rb-fsevent (= 0.10.2)
rb-inotify (= 0.9.10)
......
// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-v3-or-Later
(function(){
app.helpers.allowedEmbedsMime = function(mimetype) {
var v = document.createElement(mimetype[1]);
return v.canPlayType && v.canPlayType(mimetype[0]) !== "";
};
app.helpers.textFormatter = function(text, mentions) {
mentions = mentions ? mentions : [];
......@@ -83,6 +88,30 @@
// Bootstrap table markup
md.renderer.rules.table_open = function () { return "<table class=\"table table-striped\">\n"; };
var html5medialPlugin = window.markdownitHTML5Embed;
md.use(html5medialPlugin, {html5embed: {
inline: false,
autoAppend: true,
renderFn: function handleBarsRenderFn(parsed, mediaAttributes) {
var attributes = mediaAttributes[parsed.mediaType];
return HandlebarsTemplates["media-embed_tpl"]({
mediaType: parsed.mediaType,
attributes: attributes,
mimetype: parsed.mimeType,
sourceURL: parsed.url,
title: parsed.title,
fallback: parsed.fallback,
needsCover: parsed.mediaType === "video"
});
},
attributes: {
"audio": "controls preload=none",
"video": "preload=none"
},
isAllowedMimeType: app.helpers.allowedEmbedsMime
}});
return md.render(text);
};
})();
......
......@@ -3,23 +3,23 @@
app.pages.SinglePostViewer = app.views.Base.extend({
templateName: "single-post-viewer",
subviews : {
"#single-post-content" : "singlePostContentView",
'#single-post-interactions' : 'singlePostInteractionsView'
subviews: {
"#single-post-content": "singlePostContentView",
"#single-post-interactions": "singlePostInteractionsView"
},
initialize : function() {
initialize: function() {
this.model = new app.models.Post(gon.post);
this.initViews();
},
initViews : function() {
initViews: function() {
this.singlePostContentView = new app.views.SinglePostContent({model: this.model});
this.singlePostInteractionsView = new app.views.SinglePostInteractions({model: this.model});
this.render();
},
postRenderTemplate : function() {
postRenderTemplate: function() {
if(this.model.get("title")){
// formats title to html...
var html_title = app.helpers.textFormatter(this.model.get("title"), this.model.get("mentioned_people"));
......
......@@ -12,7 +12,7 @@ app.views.BackToTop = Backbone.View.extend({
backToTop: function(evt) {
evt.preventDefault();
$("html, body").animate({scrollTop: 0});
$("html, body").animate({scrollTop: 0}, this.toggleVisibility);
},
toggleVisibility: function() {
......
......@@ -40,6 +40,7 @@ app.views.Comment = app.views.Content.extend({
app.views.ExpandedComment = app.views.Comment.extend({
postRenderTemplate : function(){
this.bindMediaEmbedThumbClickEvent();
}
});
// @license-end
......@@ -63,7 +63,29 @@ app.views.Content = app.views.Base.extend({
}
},
// This function is called when user clicks cover for HTML5 embedded video
onVideoThumbClick: function(evt) {
var clickedThumb;
if ($(evt.target).hasClass("thumb")) {
clickedThumb = $(evt.target);
} else {
clickedThumb = $(evt.target).parent(".thumb");
}
clickedThumb.find(".video-overlay").addClass("hidden");
clickedThumb.parents(".collapsed").children(".expander").click();
var video = clickedThumb.find("video");
video.attr("controls", "");
video.get(0).load();
video.get(0).play();
clickedThumb.unbind("click");
},
bindMediaEmbedThumbClickEvent: function() {
this.$(".media-embed .thumb").bind("click", this.onVideoThumbClick);
},
postRenderTemplate : function(){
this.bindMediaEmbedThumbClickEvent();
_.defer(_.bind(this.collapseOversized, this));
// run collapseOversized again after all contained images are loaded
......@@ -93,6 +115,8 @@ app.views.StatusMessage = app.views.Content.extend({
app.views.ExpandedStatusMessage = app.views.StatusMessage.extend({
postRenderTemplate : function(){
this.bindMediaEmbedThumbClickEvent();
var photoAttachments = this.$(".photo-attachments");
if(photoAttachments.length > 0) {
new app.views.Gallery({ el: photoAttachments });
......
......@@ -26,6 +26,7 @@
//= require markdown-it-sanitizer
//= require markdown-it-sub
//= require markdown-it-sup
//= require markdown-it-html5-embed
//= require highlightjs
//= require clear-form
//= require corejs-typeahead
......
......@@ -88,6 +88,7 @@
@import 'chat';
@import 'markdown-content';
@import 'oembed';
@import 'media-embed';
@import 'post-content';
// contacts
......
......@@ -70,20 +70,29 @@ pre { word-wrap: break-word; }
height: 50px;
line-height: 50px;
opacity: 0;
pointer-events: none;
position: fixed;
right: 20px;
text-decoration: none;
transition: opacity ease 400ms;
width: 50px;
z-index: 49;
&:hover,
&.visible:hover {
&:focus,
&:active {
color: $white;
opacity: .85;
text-decoration: none;
}
&.visible { opacity: .5; }
&.visible {
opacity: .5;
pointer-events: auto;
&:hover {
opacity: .85;
}
}
}
.noscript {
......
$stub-bg-color: #ddd;
.media-embed {
margin-top: 5px;
.thumb {
@include video-overlay;
background-color: $stub-bg-color;
video {
min-height: 60%;
vertical-align: middle;
width: 100%;
}
}
audio {
width: 100%;
}
}
<div class="media-embed">
{{#if needsCover}}
<div class="thumb">
{{/if}}
<{{mediaType}} {{{attributes}}}>
<source type="{{mimetype}}" src="{{sourceURL}}" />
{{title}}
</{{mediaType}}>
{{#if needsCover}}
<div class="video-overlay">
<div class="video-info">
<div class="title">{{title}}</div>
</div>
</div>
</div>
{{/if}}
</div>
......@@ -18,7 +18,10 @@ module Notifications
)
relevant_mentions.each do |mention|
create_notification(mention.person.owner, mention, actor).try(:email_the_user, mention, actor)
recipient = mention.person.owner
unless exists?(recipient: recipient, target: mention)
create_notification(recipient, mention, actor).try(:email_the_user, mention, actor)
end
end
end
end
......
......@@ -11,7 +11,7 @@ class Profile < ApplicationRecord
include Diaspora::Taggable
attr_accessor :tag_string
acts_as_taggable_on :tags
acts_as_ordered_taggable
extract_tags_from :tag_string
validates :tag_list, :length => { :maximum => 5 }
......
......@@ -46,7 +46,7 @@ class StatusMessage < Post
end
def self.public_tag_stream(tag_ids)
all_public.tag_stream(tag_ids)
all_public.select("DISTINCT #{table_name}.*").tag_stream(tag_ids)
end
def self.tag_stream(tag_ids)
......
......@@ -38,3 +38,5 @@
%ol.indicator
#flash-container= flash_messages
%a.entypo-chevron-up.back-to-top#back-to-top{title: t("layouts.application.back_to_top"), href: "#"}
......@@ -17,8 +17,6 @@
= render partial: 'people/person', locals: hash
= will_paginate @contacts_of_contact, renderer: WillPaginate::ActionView::BootstrapLinkRenderer
%a.entypo-chevron-up.back-to-top#back-to-top{title: "#{t('layouts.application.back_to_top')}", href: "#"}
-if user_signed_in? && @person
#new_status_message_pane
= render 'shared/modal',
......
......@@ -29,8 +29,6 @@
= will_paginate @people, renderer: WillPaginate::ActionView::BootstrapLinkRenderer
%a.entypo-chevron-up.back-to-top#back-to-top{title: "#{t('layouts.application.back_to_top')}", href: "#"}
.col-md-4
- if AppConfig.settings.invitations.open?
%h4
......
......@@ -30,8 +30,6 @@
.loader.hidden
.spinner
%a.entypo-chevron-up.back-to-top#back-to-top{title: "#{t('layouts.application.back_to_top')}", href: "#"}
-if user_signed_in? && @person
#new_status_message_pane
= render 'shared/modal',
......
......@@ -178,5 +178,3 @@
.col-md-9
.stream-container#aspect-stream-container
= render "aspects/aspect_stream", stream: @stream
%a.entypo-chevron-up.back-to-top#back-to-top{title: "#{t('layouts.application.back_to_top')}", href: "#"}
......@@ -33,5 +33,3 @@
#paginate
.loader.hidden
.spinner
%a.entypo-chevron-up.back-to-top#back-to-top{title: "#{t('layouts.application.back_to_top')}", href: "#"}
......@@ -13,7 +13,8 @@ module Workers
DiasporaFederation::Parsers::BaseParser::InvalidRootNode,
DiasporaFederation::Entity::InvalidEntityName,
DiasporaFederation::Entity::UnknownEntity,
DiasporaFederation::Entities::Relayable::SignatureVerificationFailed,
DiasporaFederation::Entities::Signable::PublicKeyNotFound,
DiasporaFederation::Entities::Signable::SignatureVerificationFailed,
DiasporaFederation::Entities::Participation::ParentNotLocal,
DiasporaFederation::Federation::Receiver::InvalidSender,
DiasporaFederation::Federation::Receiver::NotPublic,
......
......@@ -9,11 +9,11 @@ screenshot_opts = "--require features --format pretty"
%>
# 'normal' test runs
default: <%= std_opts %> -r features
default: <%= std_opts %> -r features --tags ~@nophantomjs
wip: -r features --tags @wip:3 --wip features
rerun: <%= rerun_opts %> --format rerun --out rerun.txt --strict --tags ~@wip --tags ~@screenshots
# screenshot feature
ref_screens: "<%= screenshot_opts %> --tags @reference-screenshots"
cmp_screens: "<%= screenshot_opts %> --tags @comparison-screenshots"
all_screens: "<%= screenshot_opts %> --tags @screenshots"
\ No newline at end of file
all_screens: "<%= screenshot_opts %> --tags @screenshots"
......@@ -43,7 +43,7 @@ production:
database: diaspora_production
test:
<<: *combined
database: "diaspora_test"
database: diaspora_test
integration1:
<<: *combined
database: diaspora_integration1
......
......@@ -4,7 +4,7 @@
defaults:
version:
number: "0.7.3.1" # Do not touch unless doing a release, do not backport the version number that's in master
number: "0.7.4.0" # Do not touch unless doing a release, do not backport the version number that's in master
heroku: false
environment:
url: "http://localhost:3000/"
......
......@@ -100,7 +100,7 @@ de_formal:
unlocks:
new:
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 wenigen Minuten eine E-Mail mit Anweisungen 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."
unlocked: "Ihr Konto wurde erfolgreich entsperrt. Bitte melden Sie sich an, um fortzufahren."
errors:
......
......@@ -12,14 +12,14 @@ hu:
resend_confirmation: "Megerősítési utasítások újraküldése"
send_instructions: "Pár percen belül kapsz egy e-mailt, benne a megerősítéshez szükséges utasításokkal."
failure:
inactive: "A fiókod nem aktiváltad még."
invalid: "Érvénytelen felhasználónév vagy jelszó."
inactive: "A fiókodat még nem aktiváltad."
invalid: "Érvénytelen %{authentication_keys} vagy jelszó."
invalid_token: "Érvénytelen hitelesítési azonosító."
locked: "A fiókod zárolva van."
not_found_in_database: "Érvénytelen e-mail cím vagy jelszó"
not_found_in_database: "Érvénytelen %{authentication_keys} vagy jelszó."
timeout: "A munkamenet lejárt, kérjük jelentkezz be újra."
unauthenticated: "A továbblépéshez bejelentkezés vagy regisztráció szükséges."
unconfirmed: "Előbb meg kell erősítened fiókodat."
unconfirmed: "A folytatáshoz meg kell erősítened az e-mail címedet."
invitations:
invitation_token_invalid: "Sajnáljuk, de a meghívás nem érvényes."
send_instructions: "A meghívód elküldve."
......@@ -59,10 +59,12 @@ hu:
send_password_instructions: "Új jelszót igénylek"
send_instructions: "Néhány perc múlva kapsz egy e-mailt arról, hogyan állíthatod alaphelyzetbe a jelszavadat."
updated: "A jelszavad megváltozott. Sikeresen bejelentkeztél."
updated_not_active: "A jelszó megváltozott."
registrations:
destroyed: "Viszlát! A fiókod törölve. Reméljük hamarosan újra látunk. =)"
signed_up: "Sikeresen feliratkoztál. Ha engedélyezve van, akkor egy megerősítő e-mailt küldünk."
updated: "Fiókod frissítve."
signed_up_but_inactive: "A regisztráció sikeres volt. Jelenleg azonban még nem tudsz bejelentkezni, ehhez még szükség van egy megerősítésre."
updated: "A fiókod sikeresen frissítve."
sessions:
new:
login: "Bejelentkezés"
......@@ -84,10 +86,10 @@ hu:
unlocks:
new:
resend_unlock: "Feloldási utasítások újraküldése"
send_instructions: "Pár percen belül kapsz egy e-mailt, benne a feloldáshoz szükséges utasításokkal."
send_instructions: "Pár percen belül kapsz egy e-mailt, benne a fiókod feloldásához szükséges utasításokkal."
unlocked: "A fiókod sikeresen feloldva. Jelentkezz be a folytatáshoz."
errors:
messages:
already_confirmed: "már megerősítette"
already_confirmed: "már megerősítésre került, kérlek jelentkezz be"
not_found: "nem található"
not_locked: "nem volt bezárva"
\ No newline at end of file
not_locked: "nem volt lezárva"
\ No newline at end of file
......@@ -12,6 +12,7 @@ sk:
resend_confirmation: "Znova mi pošlite pokyny na potvrdenie"
send_instructions: "O niekoľko minút dostaneš e-mail s pokynmi na potvrdenie svojho účtu."
failure:
already_authenticated: " si sa prihlásil/a/."
inactive: "Tvoj účet ešte nebol aktivovaný."
invalid: "Neplatné používateľské meno alebo heslo."
invalid_token: "Neplatné identifikačné č