finish articles i18n, controller+model

This commit is contained in:
wvengen 2013-03-22 00:50:30 +01:00
parent aabeb1a332
commit 75a1051668
3 changed files with 42 additions and 18 deletions

View file

@ -88,7 +88,7 @@ class ArticlesController < ApplicationController
end end
end end
raise "Artikel sind fehlerhaft. Bitte überprüfe Deine Eingaben." if invalid_articles raise I18n.t('articles.update_all.error_invalid') if invalid_articles
end end
# delete articles # delete articles
if params[:outlisted_articles] if params[:outlisted_articles]
@ -96,12 +96,12 @@ class ArticlesController < ApplicationController
end end
end end
# Successfully done. # Successfully done.
redirect_to supplier_articles_path(@supplier), notice: "Alle Artikel und Preise wurden aktalisiert" redirect_to supplier_articles_path(@supplier), notice: I18n.t('articles.update_all.notice')
rescue => e rescue => e
# An error has occurred, transaction has been rolled back. # An error has occurred, transaction has been rolled back.
if params[:sync] if params[:sync]
flash[:error] = "Es trat ein Fehler beim Aktualisieren des Artikels '#{current_article.name}' auf: #{e.message}" flash[:error] = I18n.t('articles.update_all.error_update', :article => current_article.name, :msg => e.message)
redirect_to(supplier_articles_path(@supplier)) redirect_to(supplier_articles_path(@supplier))
else else
flash.now.alert = e.message flash.now.alert = e.message
@ -112,21 +112,21 @@ class ArticlesController < ApplicationController
# makes different actions on selected articles # makes different actions on selected articles
def update_selected def update_selected
raise 'Du hast keine Artikel ausgewählt' if params[:selected_articles].nil? raise I18n.t('articles.update_selected.error_nosel') if params[:selected_articles].nil?
articles = Article.find(params[:selected_articles]) articles = Article.find(params[:selected_articles])
Article.transaction do Article.transaction do
case params[:selected_action] case params[:selected_action]
when 'destroy' when 'destroy'
articles.each(&:mark_as_deleted) articles.each(&:mark_as_deleted)
flash[:notice] = 'Alle gewählten Artikel wurden gelöscht' flash[:notice] = I18n.t('articles.update_selected.notice_destroy')
when 'setNotAvailable' when 'setNotAvailable'
articles.each {|a| a.update_attribute(:availability, false) } articles.each {|a| a.update_attribute(:availability, false) }
flash[:notice] = 'Alle gewählten Artikel wurden auf "nicht verfügbar" gesetzt' flash[:notice] = I18n.t('articles.update_selected.notice_unavail')
when 'setAvailable' when 'setAvailable'
articles.each {|a| a.update_attribute(:availability, true) } articles.each {|a| a.update_attribute(:availability, true) }
flash[:notice] = 'Alle gewählten Artikel wurden auf "verfügbar" gesetzt' flash[:notice] = I18n.t('articles.update_selected.notice_avail')
else else
flash[:alert] = 'Keine Aktion ausgewählt!' flash[:alert] = I18n.t('articles.update_selected.notice_noaction')
end end
end end
# action succeded # action succeded
@ -134,7 +134,7 @@ class ArticlesController < ApplicationController
rescue => error rescue => error
redirect_to supplier_articles_url(@supplier, :per_page => params[:per_page]), redirect_to supplier_articles_url(@supplier, :per_page => params[:per_page]),
:alert => "Ein Fehler ist aufgetreten: #{error}" :alert => I18n.t('errors.general_msg', :msg => error)
end end
# lets start with parsing articles from uploaded file, yeah # lets start with parsing articles from uploaded file, yeah
@ -167,13 +167,13 @@ class ArticlesController < ApplicationController
:tax => row[:tax]) :tax => row[:tax])
# stop parsing, when an article isn't valid # stop parsing, when an article isn't valid
unless article.valid? unless article.valid?
raise article.errors.full_messages.join(", ") + " ..in line " + (articles.index(row) + 2).to_s raise I18n.t('articles.parse_upload.error_parse', :msg => article.errors.full_messages.join(", "), :line => (articles.index(row) + 2).to_s)
end end
@articles << article @articles << article
end end
flash.now[:notice] = "#{@articles.size} articles are parsed successfully." flash.now[:notice] = I18n.t('articles.parse_upload.notice', :count => @articles.size)
rescue => error rescue => error
redirect_to upload_supplier_articles_path(@supplier), :alert => "An error has occurred: #{error.message}" redirect_to upload_supplier_articles_path(@supplier), :alert => I18n.t('errors.general_msg', :msg => error.message)
end end
end end
@ -188,14 +188,14 @@ class ArticlesController < ApplicationController
invalid_articles = true unless article.save invalid_articles = true unless article.save
end end
raise "Artikel sind fehlerhaft" if invalid_articles raise I18n.t('articles.create_from_upload.error_invalid') if invalid_articles
end end
# Successfully done. # Successfully done.
redirect_to supplier_articles_path(@supplier), notice: "Es wurden #{@articles.size} neue Artikel gespeichert." redirect_to supplier_articles_path(@supplier), notice: I18n.t('articles.create_from_upload.notice', :count => @articles.size)
rescue => error rescue => error
# An error has occurred, transaction has been rolled back. # An error has occurred, transaction has been rolled back.
flash.now[:error] = "An error occured: #{error.message}" flash.now[:error] = I18n.t('errors.general_msg', :msg => error.message)
render :parse_upload render :parse_upload
end end
end end
@ -222,14 +222,14 @@ class ArticlesController < ApplicationController
def sync def sync
# check if there is an shared_supplier # check if there is an shared_supplier
unless @supplier.shared_supplier unless @supplier.shared_supplier
redirect_to supplier_articles_url(@supplier), :alert => "#{@supplier.name} ist nicht mit einer externen Datenbank verknüpft." redirect_to supplier_articles_url(@supplier), :alert => I18n.t('articles.sync.shared_alert', :supplier => @supplier.name)
end end
# sync articles against external database # sync articles against external database
@updated_articles, @outlisted_articles = @supplier.sync_all @updated_articles, @outlisted_articles = @supplier.sync_all
# convert to db-compatible-string # convert to db-compatible-string
@updated_articles.each {|a, b| a.shared_updated_on = a.shared_updated_on.to_formatted_s(:db)} @updated_articles.each {|a, b| a.shared_updated_on = a.shared_updated_on.to_formatted_s(:db)}
if @updated_articles.empty? && @outlisted_articles.empty? if @updated_articles.empty? && @outlisted_articles.empty?
redirect_to supplier_articles_path(@supplier), :notice => "Der Katalog ist aktuell." redirect_to supplier_articles_path(@supplier), :notice => I18n.t('articles.sync.notice')
end end
end end
end end

View file

@ -154,7 +154,7 @@ class Article < ActiveRecord::Base
# Checks if the article is in use before it will deleted # Checks if the article is in use before it will deleted
def check_article_in_use def check_article_in_use
raise self.name.to_s + " kann nicht gelöscht werden. Der Artikel befindet sich in einer laufenden Bestellung!" if self.in_open_order raise I18n.t('articles.model.error_in_use', :article => self.name.to_s) if self.in_open_order
end end
# Create an ArticlePrice, when the price-attr are changed. # Create an ArticlePrice, when the price-attr are changed.

View file

@ -92,3 +92,27 @@ de:
submit: 'Speichere neue Artikel für %{supplier}' submit: 'Speichere neue Artikel für %{supplier}'
or_cancel: 'oder abbrechen' or_cancel: 'oder abbrechen'
# used by controller
update_all:
notice: 'Alle Artikel und Preise wurden aktualisiert'
error_invalid: 'Artikel sind fehlerhaft. Bitte überprüfe Deine Eingaben.'
error_update: "Es trat ein Fehler beim Aktualisieren des Artikels '%{article}' auf: %{msg}"
update_selected:
notice_destroy: 'Alle gewählten Artikel wurden gelöscht'
notice_unavail: 'Alle gewählten Artikel wurden auf "nicht verfügbar" gesetzt'
notice_avail: 'Alle gewählten Artikel wurden auf "verfügbar" gesetzt'
notice_noaction: 'Keine Aktion ausgewählt!'
error_nosel: 'Du hast keine Artikel ausgewählt'
parse_upload:
notice: '%{count} Artikel sind erfolgreich analysiert.'
error_parse: '%{msg} ... in Zeile %{line}'
create_from_upload:
notice: 'Es wurden %{count} neue Artikel gespeichert.'
error_invalid: 'Artikel sind fehlerhaft'
sync:
shared_alert: '%{supplier} ist nicht mit einer externen Datenbank verknüpft.'
notice: 'Der Katalog ist aktuell'
# used by model
model:
error_in_use: '%{article} kann nicht gelöscht werden. Der Artikel befindet sich in einer laufenden Bestellung!'