Signed-off-by: Adrian Hinz <ahinz@voicetelecom.pl>

This commit is contained in:
Adrian Hinz 2016-10-04 15:49:42 +02:00
parent 9f515eb9d1
commit c5fac2a54b
9 changed files with 307 additions and 34 deletions

View File

@ -1,4 +1,9 @@
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
before_action :authenticate_user!
before_action :set_locale
def set_locale
I18n.locale = params[:lang] || I18n.default_locale
end
end

View File

@ -1,32 +1,45 @@
class ProductsController < ApplicationController
def index
@products = Product.where(user_id: current_user.id).order('name ASC')
end
def new
@product = Product.new
end
def create
@product = Product.new(product_params)
@product.user_id = current_user.id
if @product.save
redirect_to products_path
else
render :new
end
end
def edit
@product = Product.find(params[:id])
end
def update
@product = Product.find(params[:id])
if @product.update_attributes(product_params)
redirect_to products_path
else
render :edit
end
end
def destroy
@product = Product.find(params[:id])
@product.destroy unless @product.blank?
redirect_to products_path
end
private
def product_params
params.require(:product).permit(:name, :vat_id)
params.require(:product).permit(:name, :vat_id, :netto_price, :qnt_name)
end
end

View File

@ -22,4 +22,16 @@ module ApplicationHelper
"<li#{active}><a href=\"#{link}\">#{icn}#{name}</a></li>"
end
def errors_to_html(errors)
ret = '<div class="row"><div class="col-lg-12 col-md-12 panel-danger"><div class="content-box-header panel-heading"><div class="panel-title">'
ret += I18n.t('activerecord.errors.messages.record_invalid', errors: errors.count)
ret += '</div></div><div class="content-box-large box-with-header" style="background:#f9dddd"><ul>'
errors.full_messages.each do |msg|
ret += "<li>#{msg}</li>"
end
ret += '</ul></div></div></div>'
ret
end
end

View File

@ -1,17 +1,7 @@
<%= form_for @customer, html: {class: "form-horizontal"} do |f| %>
<% if @customer.errors.any? %>
<div id="error_explanation">
<h2>
<%= pluralize(@customer.errors.count, "error") %> prohibited
this article from being saved:
</h2>
<ul>
<% @customer.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<%= raw errors_to_html(@customer.errors) %>
<% end %>
<div class="form-group">
<%= f.label :name, class: "col-sm-2 control-label" %>

View File

@ -1,12 +1,11 @@
<div class="col-lg-8 col-md-12">
<div class="content-box-large">
<div class="panel-heading">
<div class="panel-title">Edycja klienta</div>
<div class="panel-options">
<%= link_to raw("<i class=\"glyphicon glyphicon-arrow-left\"></i> Powrot"), customers_path, title: 'Powrot' %>
</div>
<div class="col-lg-8 col-md-12 panel-default">
<div class="content-box-header panel-heading">
<div class="panel-title">Edycja klienta</div>
<div class="panel-options">
<%= link_to raw("<i class=\"glyphicon glyphicon-arrow-left text-success\"></i> " + I18n.t('back')), customers_path, title: I18n.t('back'), class: "text-primary" %>
</div>
<div class="panel-body">
</div>
<div class="content-box-large box-with-header">
<%= render 'form' %>
</div>
</div>

View File

@ -30,5 +30,4 @@
<% end %>
</table>
</div>
</div>
</div>

View File

@ -1,13 +1,11 @@
<div class="col-lg-8 col-md-12">
<div class="content-box-large">
<div class="panel-heading">
<div class="col-lg-8 col-md-12 panel-default">
<div class="content-box-header panel-heading">
<div class="panel-title">Nowy klient</div>
<div class="panel-options">
<%= link_to raw("<i class=\"glyphicon glyphicon-arrow-left\"></i> Powrot"), customers_path, title: 'Powrot' %>
<%= link_to raw("<i class=\"glyphicon glyphicon-arrow-left text-success\"></i> " + I18n.t('back')), customers_path, title: I18n.t('back'), class: "text-primary" %>
</div>
</div>
<div class="panel-body">
</div>
<div class="content-box-large box-with-header">
<%= render 'form' %>
</div>
</div>
</div>

View File

@ -11,6 +11,9 @@ module InvoiceKeeper
# Settings in config/environments/* take precedence over those specified here.
# Application configuration should go into files in config/initializers
# -- all .rb files in that directory are automatically loaded.
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s]
config.i18n.default_locale = :pl
config.assets.paths << Rails.root.join('app', 'assets', 'fonts')
config.assets.precompile += %w( .svg .eot .woff .ttf .otf .woff2 )
end

254
config/locales/pl.yml Normal file
View File

@ -0,0 +1,254 @@
pl:
back: 'Powrót'
save: 'Zapisz'
menu:
dashboard: 'Dashboard'
customers: 'Klienci'
products: 'Produkty'
invoices: 'Faktury'
activerecord:
attributes:
customer:
name: 'Nazwa firmy'
street: 'Adres'
city: 'Miasto'
postcode: 'Kod pocztowy'
nip: 'NIP'
regon: 'Regon'
errors:
messages:
record_invalid: 'Negatywne sprawdzenie poprawności: %{errors}'
restrict_dependent_destroy:
has_many: Nie może zostać usunięte, gdyż istnieją zależne od niego %{record}
has_one: Nie może zostać usunięte, gdyż istnieje zależny od niego %{record}
date:
abbr_day_names:
- nie
- pon
- wto
- śro
- czw
- pią
- sob
abbr_month_names:
-
- sty
- lut
- mar
- kwi
- maj
- cze
- lip
- sie
- wrz
- paź
- lis
- gru
day_names:
- niedziela
- poniedziałek
- wtorek
- środa
- czwartek
- piątek
- sobota
formats:
default: "%d-%m-%Y"
long: "%B %d, %Y"
short: "%d %b"
month_names:
-
- styczeń
- luty
- marzec
- kwiecień
- maj
- czerwiec
- lipiec
- sierpień
- wrzesień
- październik
- listopad
- grudzień
order:
- :day
- :month
- :year
datetime:
distance_in_words:
about_x_hours:
few: około %{count} godziny
many: około %{count} godzin
one: około godziny
other: około %{count} godzin
about_x_months:
few: około %{count} miesiące
many: około %{count} miesięcy
one: około miesiąca
other: około %{count} miesięcy
about_x_years:
few: około %{count} lata
many: około %{count} lat
one: około rok
other: około %{count} lat
almost_x_years:
few: prawie %{count} lata
many: prawie %{count} lat
one: prawie rok
other: prawie %{count} lat
half_a_minute: pół minuty
less_than_x_minutes:
few: mniej niż %{count} minuty
many: mniej niż %{count} minut
one: mniej niż minutę
other: mniej niż %{count} minut
less_than_x_seconds:
few: mniej niż %{count} sekundy
many: mniej niż %{count} sekund
one: mniej niż sekundę
other: mniej niż %{count} sekund
over_x_years:
few: ponad %{count} lata
many: ponad %{count} lat
one: ponad rok
other: ponad %{count} lat
x_days:
few: "%{count} dni"
many: "%{count} dni"
one: 1 dzień
other: "%{count} dni"
x_minutes:
few: "%{count} minuty"
many: "%{count} minut"
one: 1 minuta
other: "%{count} minut"
x_months:
few: "%{count} miesiące"
many: "%{count} miesięcy"
one: 1 miesiąc
other: "%{count} miesięcy"
x_seconds:
few: "%{count} sekundy"
many: "%{count} sekund"
one: 1 sekunda
other: "%{count} sekund"
prompts:
day: Dzień
hour: Godzina
minute: Minuta
month: Miesiąc
second: Sekundy
year: Rok
errors:
format: "%{attribute} %{message}"
messages:
accepted: musi zostać zaakceptowane
blank: nie może być puste
confirmation: nie zgadza się z polem %{attribute}
empty: nie może być puste
equal_to: musi być równe %{count}
even: musi być parzyste
exclusion: jest zarezerwowane
greater_than: musi być większe od %{count}
greater_than_or_equal_to: musi być większe lub równe %{count}
inclusion: nie znajduje się na liście dopuszczalnych wartości
invalid: jest nieprawidłowe
less_than: musi być mniejsze od %{count}
less_than_or_equal_to: musi być mniejsze lub równe %{count}
not_a_number: nie jest liczbą
not_an_integer: musi być liczbą całkowitą
odd: musi być nieparzyste
present: musi być puste
taken: zostało już zajęte
too_long:
few: jest za długie (maksymalnie %{count} znaki)
many: jest za długie (maksymalnie %{count} znaków)
one: jest za długie (maksymalnie jeden znak)
other: jest za długie (maksymalnie %{count} znaków)
too_short:
few: jest za krótkie (przynajmniej %{count} znaki)
many: jest za krótkie (przynajmniej %{count} znaków)
one: jest za krótkie (przynajmniej jeden znak)
other: jest za krótkie (przynajmniej %{count} znaków)
wrong_length:
few: ma nieprawidłową długość (powinna wynosić %{count} znaki)
many: ma nieprawidłową długość (powinna wynosić %{count} znaków)
one: ma nieprawidłową długość (powinna wynosić jeden znak)
other: ma nieprawidłową długość (powinna wynosić %{count} znaków)
other_than: musi być inna niż %{count}
template:
body: 'Błędy dotyczą następujących pól:'
header:
few: "%{model} nie został zachowany z powodu %{count} błędów"
many: "%{model} nie został zachowany z powodu %{count} błędów"
one: "%{model} nie został zachowany z powodu jednego błędu"
other: "%{model} nie został zachowany z powodu %{count} błędów"
helpers:
select:
prompt: Proszę wybrać
submit:
create: Utwórz %{model}
submit: Zapisz %{model}
update: Aktualizuj %{model}
number:
currency:
format:
delimiter: " "
format: "%n %u"
precision: 2
separator: ","
significant: false
strip_insignificant_zeros: true
unit:
format:
delimiter: " "
precision: 3
separator: ","
significant: false
strip_insignificant_zeros: false
human:
decimal_units:
format: "%n %u"
units:
billion: Miliard
million: Milion
quadrillion: Biliard
thousand: Tysiąc
trillion: Bilion
unit: ''
format:
delimiter: ''
precision: 3
significant: true
strip_insignificant_zeros: true
storage_units:
format: "%n %u"
units:
byte:
few: bajty
many: bajtów
one: bajt
other: bajty
gb: GB
kb: KB
mb: MB
tb: TB
percentage:
format:
delimiter: ''
format: "%n%"
precision:
format:
delimiter: ''
support:
array:
last_word_connector: " oraz "
two_words_connector: " i "
words_connector: ", "
time:
am: przed południem
formats:
default: "%a, %d %b %Y %H:%M:%S %z"
long: "%B %d, %Y %H:%M"
short: "%d %b %H:%M"
pm: po południu