From e06524ca37d7668815d73acd863442eda00a7811 Mon Sep 17 00:00:00 2001 From: wvengen Date: Fri, 8 Feb 2013 01:52:20 +0100 Subject: [PATCH] finish ordergroups and orders i18n + controller --- .../bootstrap_and_overrides.css.less | 6 +- app/controllers/orders_controller.rb | 22 ++--- app/models/ordergroup.rb | 4 +- app/views/ordergroups/index.html.haml | 4 +- app/views/orders/_articles.html.haml | 16 ++-- app/views/orders/_form.html.haml | 20 ++--- app/views/orders/_orders.html.haml | 10 +-- app/views/orders/edit.html.haml | 2 +- app/views/orders/index.html.haml | 30 +++---- app/views/orders/new.html.haml | 2 +- app/views/orders/show.html.haml | 53 +++++------ config/locales/de/de.defaults.yml | 1 + config/locales/de/de.ordergroups.yml | 12 +++ config/locales/de/de.orders.yml | 87 +++++++++++++++++++ 14 files changed, 185 insertions(+), 84 deletions(-) create mode 100644 config/locales/de/de.ordergroups.yml create mode 100644 config/locales/de/de.orders.yml diff --git a/app/assets/stylesheets/bootstrap_and_overrides.css.less b/app/assets/stylesheets/bootstrap_and_overrides.css.less index 585c74be..1d284727 100644 --- a/app/assets/stylesheets/bootstrap_and_overrides.css.less +++ b/app/assets/stylesheets/bootstrap_and_overrides.css.less @@ -204,9 +204,9 @@ tr.unavailable { dd { .clearfix(); } } -// need more space for supplier information (in German, at least) +// need more space for supplier&order information (in German, at least) .dl-horizontal { - dt { width: 150px; } - dd { margin-left: 160px; } + dt { width: 160px; } + dd { margin-left: 170px; } } diff --git a/app/controllers/orders_controller.rb b/app/controllers/orders_controller.rb index f3ee9167..6650bfad 100644 --- a/app/controllers/orders_controller.rb +++ b/app/controllers/orders_controller.rb @@ -62,7 +62,7 @@ class OrdersController < ApplicationController @order = Order.new(params[:order]) @order.created_by = current_user if @order.save - flash[:notice] = "Die Bestellung wurde erstellt." + flash[:notice] = I18n.t('orders.create.notice') redirect_to @order else logger.debug "[debug] order errors: #{@order.errors.messages}" @@ -80,7 +80,7 @@ class OrdersController < ApplicationController def update @order = Order.find params[:id] if @order.update_attributes params[:order] - flash[:notice] = "Die Bestellung wurde aktualisiert." + flash[:notice] = I18n.t('orders.update.notice') redirect_to :action => 'show', :id => @order else render :action => 'edit' @@ -97,7 +97,7 @@ class OrdersController < ApplicationController def finish order = Order.find(params[:id]) order.finish!(@current_user) - redirect_to order, notice: "Die Bestellung wurde beendet." + redirect_to order, notice: I18n.t('order.finish.notice') end # Renders the fax-text-file @@ -106,14 +106,14 @@ class OrdersController < ApplicationController order = Order.find(params[:id]) supplier = order.supplier contact = FoodsoftConfig[:contact].symbolize_keys - text = "Bestellung für" + " #{FoodsoftConfig[:name]}" - text += "\n" + "Kundennummer" + ": #{supplier.customer_number}" unless supplier.customer_number.blank? - text += "\n" + "Liefertag" + ": " - text += "\n\n#{supplier.name}\n#{supplier.address}\nFAX: #{supplier.fax}\n\n" - text += "****** " + "Versandadresse" + "\n\n" + text = I18n.t('orders.fax.heading', :name => FoodsoftConfig[:name]) + text += "\n" + I18n.t('orders.fax.customer_number') + ': #{supplier.customer_number}' unless supplier.customer_number.blank? + text += "\n" + I18n.t('orders.fax.delivery_day') + text += "\n\n#{supplier.name}\n#{supplier.address}\n" + I18n.t('simple_form.suppliers.labels.fax') + ": #{supplier.fax}\n\n" + text += "****** " + I18n.t('orders.fax.to_address') + "\n\n" text += "#{FoodsoftConfig[:name]}\n#{contact[:street]}\n#{contact[:zip_code]} #{contact[:city]}\n\n" - text += "****** " + "Artikel" + "\n\n" - text += "Nummer" + " " + "Menge" + " " + "Name" + "\n" + text += "****** " + I18n.t('orders.fax.articles') + "\n\n" + text += I18n.t('.nummer') + " " + I18n.t('.amount') + " " + I18n.t('.name') + "\n" # now display all ordered articles order.order_articles.ordered.all(:include => [:article, :article_price]).each do |oa| number = oa.article.order_number @@ -126,4 +126,4 @@ class OrdersController < ApplicationController :type => 'text/plain; charset=utf-8; header=present', :disposition => "attachment; filename=#{order.name}" end -end \ No newline at end of file +end diff --git a/app/models/ordergroup.rb b/app/models/ordergroup.rb index 3d863834..5378cc35 100644 --- a/app/models/ordergroup.rb +++ b/app/models/ordergroup.rb @@ -15,7 +15,7 @@ class Ordergroup < Group has_many :group_orders has_many :orders, :through => :group_orders - validates_numericality_of :account_balance, :message => 'ist keine gültige Zahl' + validates_numericality_of :account_balance, :message => I18n.t('ordergroups.model.invalid_balance') validate :uniqueness_of_members after_create :update_stats! @@ -103,7 +103,7 @@ class Ordergroup < Group # Make sure, that a user can only be in one ordergroup def uniqueness_of_members users.each do |user| - errors.add :user_tokens, "#{user.nick} ist schon in einer anderen Bestellgruppe" if user.groups.where(:type => 'Ordergroup').size > 1 + errors.add :user_tokens, I18n.t('ordergroups.model.error_single_group', :user => user.nick) if user.groups.where(:type => 'Ordergroup').size > 1 end end diff --git a/app/views/ordergroups/index.html.haml b/app/views/ordergroups/index.html.haml index cb46b0bc..a436cbe1 100644 --- a/app/views/ordergroups/index.html.haml +++ b/app/views/ordergroups/index.html.haml @@ -1,4 +1,4 @@ -- title "Ordergroups" +- title t('.title') %table %tr %th Type @@ -43,4 +43,4 @@ %td= h ordergroup.contact_person %td= h ordergroup.contact_phone %td= h ordergroup.contact_address - %td= link_to "Edit", edit_ordergroup_path(ordergroup) + %td= link_to t('ui.edit'), edit_ordergroup_path(ordergroup) diff --git a/app/views/orders/_articles.html.haml b/app/views/orders/_articles.html.haml index 87ea4efd..3f176128 100644 --- a/app/views/orders/_articles.html.haml +++ b/app/views/orders/_articles.html.haml @@ -1,12 +1,12 @@ %table.table.table-hover %thead %tr - %th Name - %th Gebinde - %th Netto-/Bruttopreis - %th Bestellte Einheiten + %th= t '.name' + %th= t '.unit_quantity' + %th= t '.prices' + %th= t '.units_ordered' - unless order.stockit? - %th Volle Gebinde + %th= t '.units_full' - total_net, total_gross, counter = 0, 0, 0 %tbody - order.articles_grouped_by_category.each do |category_name, order_articles| @@ -32,8 +32,8 @@ %td= "#{order_article.quantity} + #{order_article.tolerance}" if unit_quantity > 1 %td= units %p - Summe (Netto/Brutto-Preise): + = t '.prices_sum' = "#{number_to_currency(total_net)} / #{number_to_currency(total_gross)}" %p - Bestellte Artikel. - = order.order_articles.ordered.count \ No newline at end of file + = t '.article_count' + = order.order_articles.ordered.count diff --git a/app/views/orders/_form.html.haml b/app/views/orders/_form.html.haml index fad3979d..c3c6c1bf 100644 --- a/app/views/orders/_form.html.haml +++ b/app/views/orders/_form.html.haml @@ -4,22 +4,22 @@ = f.input :starts, input_html: {class: 'input-small'} = f.input :ends, input_html: {class: 'input-small'} - %h2 Artikel + %h2= t '.title' - if @order.errors.has_key?(:articles) .alert.alert-error = @order.errors.get(:articles).join(" ") %table.table.table-hover#articleList %tr %th= check_box_tag 'checkall', "1", false, { 'data-check-all' => '#articleList' } - %th Name - %th Notiz + %th= t '.name' + %th= t '.note' - if @order.stockit? - %th Verfügbar + %th= t '.stockit' - else - %th Herkunft - %th Hersteller - %th Gebinde - %th Preis (netto/FC) + %th= t '.origin' + %th= t '.supplier' + %th= t '.unit_quantity' + %th= t '.prices' - for category_name, articles in @order.articles_for_ordering %tr.article-category %td @@ -44,11 +44,11 @@ %tr %td = check_box_tag 'checkall', "1", false, { 'data-check-all' => '#articleList' } - %td{:colspan => "6"} Alle auswählen + %td{:colspan => "6"}= t '.select_all' - if (@template_orders && !@template_orders.empty?) = render :partial => 'template_orders_script' .form-actions = f.submit class: 'btn' - = link_to "oder abbrechen", orders_path + = link_to t('.cancel'), orders_path diff --git a/app/views/orders/_orders.html.haml b/app/views/orders/_orders.html.haml index 60ec0853..baa5b815 100644 --- a/app/views/orders/_orders.html.haml +++ b/app/views/orders/_orders.html.haml @@ -2,10 +2,10 @@ %table.table.table-striped %thead %tr - %th= sort_link_helper "Lieferantin", "supplier" - %th Start - %th= sort_link_helper "Ende", "ends" - %th Status + %th= sort_link_helper t('.supplier'), "supplier" + %th= t '.start' + %th= sort_link_helper t('.ending'), "ends" + %th= t '.status' %th{:colspan => "2"} %tbody - @orders.each do |order| @@ -14,4 +14,4 @@ %td= format_time(order.starts) %td= format_time(order.ends) %td= t(order.state, scope: 'orders.state') - %td= link_to "Anzeigen", order, class: 'btn btn-small' \ No newline at end of file + %td= link_to t('ui.show'), order, class: 'btn btn-small' diff --git a/app/views/orders/edit.html.haml b/app/views/orders/edit.html.haml index 11472287..914993dc 100644 --- a/app/views/orders/edit.html.haml +++ b/app/views/orders/edit.html.haml @@ -1,3 +1,3 @@ -- title "Bestellung bearbeiten" +- title t('.title') = render :partial => 'form' diff --git a/app/views/orders/index.html.haml b/app/views/orders/index.html.haml index 1ebe04f0..b70097d1 100644 --- a/app/views/orders/index.html.haml +++ b/app/views/orders/index.html.haml @@ -1,23 +1,23 @@ -- title "Bestellungen verwalten" +- title t('.title') - content_for :actionbar do .btn-group = link_to '#', data: {toggle: 'dropdown'}, class: 'btn btn-primary dropdown-toggle' do - Neue Bestellung anlegen + = t '.new_order' %span.caret %ul.dropdown-menu - Supplier.all.each do |supplier| %li= link_to supplier.name, new_order_path(supplier_id: supplier.id), tabindex: -1 .well - %h2 Laufende Bestellungen + %h2= t '.open_orders' - unless @open_orders.empty? %table.table.table-striped %thead %tr - %th Lieferantin - %th Ende - %th Notiz + %th= t '.supplier' + %th= t '.ending' + %th= t '.note' %th{colspan: "2"} %tbody - for order in @open_orders @@ -26,18 +26,18 @@ %td= order.name %td= format_time(order.ends) unless order.ends.nil? %td= truncate(order.note) - %td= link_to "Beenden", finish_order_path(order), - confirm: "Willst Du wirklich die Bestellung \"#{order.name}\" beenden? Es gibt kein zurück.", - method: :post, class: 'btn btn-small btn-success' + %td= link_to t('.action_end'), finish_order_path(order), + confirm: t('.confirm_end', order: order.name), method: :post, + class: 'btn btn-small btn-success' %td - = link_to "Anzeigen", order, class: 'btn btn-small' - = link_to "Bearbeiten", edit_order_path(order), class: 'btn btn-small' - = link_to "Löschen", order, confirm: "Willst Du wirklich die Bestellung löschen?", method: :delete, + = link_to t('ui.show'), order, class: 'btn btn-small' + = link_to t('ui.edit'), edit_order_path(order), class: 'btn btn-small' + = link_to t('ui.delete'), order, confirm: t('.confirm_delete'), method: :delete, class: 'btn btn-small btn-danger' - else - Derzeit gibt es keine laufende Bestellungen. + = t '.no_open_orders' -%h2 Beendete Bestellungen +%h2= t '.ended_orders' #orders_table - = render partial: 'orders' \ No newline at end of file + = render partial: 'orders' diff --git a/app/views/orders/new.html.haml b/app/views/orders/new.html.haml index 2055c420..624324db 100644 --- a/app/views/orders/new.html.haml +++ b/app/views/orders/new.html.haml @@ -1,3 +1,3 @@ -- title "Neue Bestellung anlegen" +- title t('.title') = render 'form' diff --git a/app/views/orders/show.html.haml b/app/views/orders/show.html.haml index 275d2a7e..bb2f1a98 100644 --- a/app/views/orders/show.html.haml +++ b/app/views/orders/show.html.haml @@ -1,61 +1,62 @@ -- title "Bestellung: #{@order.name}" +- title t('.title', name: @order.name) - if @order.finished? and !@order.closed? - .alert.alert-warning Achtung, Bestellung wurde noch nicht abgerechnet. + .alert.alert-warning + = t '.warn_not_closed' // Order summary .well %dl.dl-horizontal - %dt Lieferantin + %dt= t '.supplier' %dd= @order.name - if @note.present? - %dt Notiz + %dt= t '.note' %dd= @order.note - %dt Erstellt von + %dt= t '.created_by' %dd= link_to_user_message_if_valid(@order.created_by) - %dt Beginn + %dt= t '.begin' %dd= format_time(@order.starts) - %dt Ende + %dt= t '.ending' %dd= format_time(@order.ends) - %dt Gruppenbestellungen: + %dt= t '.group_orders' %dd #{@order.group_orders.count} (#{@order.group_orders.includes(:ordergroup).all.map {|g| g.ordergroup.name}.join(', ')}) - %dt Netto/Bruttosumme aller Artikel: + %dt= t '.amounts' %dd= "#{number_to_currency(@order.sum(:net))} / #{number_to_currency(@order.sum(:gross))}" - %dt Bestellte Artikel: + %dt= t '.articles_ordered' %dd= @order.order_articles.ordered.count .form-actions - if @order.open? - = link_to "Bearbeiten", edit_order_path(@order), class: 'btn' - = link_to 'Beenden!', finish_order_path(@order), method: :post, class: 'btn btn-success', - confirm: "Willst Du wirklich die Bestellung beenden?\nEs gibt kein zurück.." + = link_to t('ui.edit'), edit_order_path(@order), class: 'btn' + = link_to t('.action_end'), finish_order_path(@order), method: :post, class: 'btn btn-success', + confirm: t('.confirm_end') - unless @order.closed? - = link_to "Löschen", @order, confirm: "Willst du wirklich die Bestellung löschen?", method: :delete, + = link_to t('ui.delete'), @order, confirm: t('.confirm_delete'), method: :delete, class: 'btn btn-danger' - unless @order.open? %ul.nav.nav-pills - %li= update_articles_link(@order, "Artikelübersicht", :default) - %li= update_articles_link(@order, "Sortiert nach Gruppen", :groups) - %li= update_articles_link(@order, "Sortiert nach Artikeln", :articles) - %li= link_to 'Kommentare', '#comments' + %li= update_articles_link(@order, t('.articles'), :default) + %li= update_articles_link(@order, t('.sort_group'), :groups) + %li= update_articles_link(@order, t('.sort_article'), :articles) + %li= link_to t('.comments_link'), '#comments' %li.dropdown = link_to '#', class: 'dropdown-toggle', data: {toggle: 'dropdown'} do - Download + = t '.download.title' %b.caret %ul.dropdown-menu - %li= order_pdf(@order, :groups, "Gruppenpdf") - %li= order_pdf(@order, :articles, "Artikelpdf") - %li= order_pdf(@order, :matrix, "Matrix") - %li= order_pdf(@order, :fax, "Fax PDF") - %li= link_to "Fax Text", {action: 'text_fax_template', id: @order }, {title: "Download file"} + %li= order_pdf(@order, :groups, t('.group_pdf')) + %li= order_pdf(@order, :articles, t('.article_pdf')) + %li= order_pdf(@order, :matrix, t('.matrix_pdf')) + %li= order_pdf(@order, :fax, t('.fax_pdf')) + %li= link_to t('.fax_txt'), {action: 'text_fax_template', id: @order }, {title: t('.download_file')} %section#articles_table = render 'articles', order: @order -%h2 Kommentare +%h2= t '.comments.title' #comments = render partial: 'shared/comments', locals: { comments: @order.comments } #new_comment= render partial: 'order_comments/form', locals: { order_comment: @order.comments.build(user: current_user)} -= link_to_top \ No newline at end of file += link_to_top diff --git a/config/locales/de/de.defaults.yml b/config/locales/de/de.defaults.yml index 71996cc1..8768d3d0 100644 --- a/config/locales/de/de.defaults.yml +++ b/config/locales/de/de.defaults.yml @@ -272,6 +272,7 @@ de: close: 'Schließen' edit: 'Bearbeiten' delete: 'Löschen' + show: 'Anzeigen' marks: close: 'x' diff --git a/config/locales/de/de.ordergroups.yml b/config/locales/de/de.ordergroups.yml new file mode 100644 index 00000000..7c6092d3 --- /dev/null +++ b/config/locales/de/de.ordergroups.yml @@ -0,0 +1,12 @@ +de: + ordergroups: + index: + title: 'Bestellgruppen' + edit: + title: 'Bestellgruppe bearbeiten' + submit: 'Bearbeiten' + + # used by model + model: + invalid_balance: 'ist keine gültige Zahl' + error_single_group: '%{user} ist schon in einer anderen Bestellgruppe' diff --git a/config/locales/de/de.orders.yml b/config/locales/de/de.orders.yml new file mode 100644 index 00000000..dbe4d82c --- /dev/null +++ b/config/locales/de/de.orders.yml @@ -0,0 +1,87 @@ +de: + orders: + articles: + name: 'Name' + unit_quantity: 'Gebinde' + prices: 'Netto-/Bruttopreis' + units_ordered: 'Bestellte Einheiten' + units_full: 'Volle Gebinde' + prices_sum: 'Summe (Netto/Brutto-Preise):' + article_count: 'Bestellte Artikel:' + edit: + title: 'Bestellung bearbeiten' + new: + title: 'Neue Bestellung anlegen' + form: + title: 'Artikel' + name: 'Name' + note: 'Notiz' + stockit: 'Verfügbar' + origin: 'Herkunft' + supplier: 'Hersteller' + unit_quantity: 'Gebinde' + prices: 'Price (netto/FC)' + select_all: 'Alle auswählen' + cancel: 'oder abbrechen' + index: + title: 'Bestellungen verwalten' + new_order: 'Neue Bestellung anlegen' + open_orders: 'Laufende Bestellungen' + supplier: 'Lieferantin' + ending: 'Ende' + note: 'Notiz' + action_end: 'Beenden' + confirm_end: 'Willst Du wirklich die Bestellung %{order} beenden? Es gibt kein zurück.' + confirm_delete: 'Willst Du wirklich die Bestellung löschen?' + no_open_orders: 'Derzeit gibt es keine laufende Bestellungen.' + ended_orders: 'Beendete Bestellungen' + orders: + supplier: 'Lieferantin' + start: 'Start' + ending: 'Ende' + status: 'Status' + show: + title: 'Bestellung: %{name}' + warn_not_closed: 'Achtung, Bestellung wurde noch nicht abgerechnet.' + supplier: 'Lieferantin:' + note: 'Notiz:' + created_by: 'Erstellt von:' + begin: 'Beginn:' + ending: 'Ende:' + group_orders: 'Gruppenbestellungen:' + amounts: 'Netto/Bruttosumme:' + articles_ordered: 'Bestellte Artikel:' + action_end: 'Beenden!' + confirm_end: "Willst Du wirklich die Bestellung %{order} beenden?\nEs gibt kein zurück." + confirm_delete: 'Willst Du wirklich die Bestellung löschen?' + articles: 'Artikelübersicht' + sort_group: 'Sortiert nach Gruppen' + sort_article: 'Sortiert nach Artikeln' + comments_link: 'Kommentare' + download: + title: 'Download' + group_pdf: 'Gruppen PDF' + article_pdf: 'Artikel PDF' + matrix_pdf: 'Matrix PDF' + fax_pdf: 'Fax PDF' + fax_txt: 'Fax Text' + download_file: 'Download file' + comments: + title: 'Kommentare' + + # used by controller + create: + notice: 'Die Bestellung wurde erstellt.' + update: + notice: 'Die Bestellung wurde aktualisiert.' + finish: + notice: 'Die Bestellung wurde beendet.' + fax: + heading: 'Bestellung für %{name}' + customer_number: 'Kundennummer' + delivery_day: 'Liefertag' + to_address: 'Versandaddresse' + articles: 'Artikel' + number: 'Nummer' + amount: 'Menge' + name: 'Name'