class Admin::TranslationsController < ApplicationController layout "admin" before_filter :authenticate_user! before_filter :is_admin? def index set_variables end def edit set_variables end # Update either the i18n_variables or the languages def update begin case params[:id] # Update the i18n_variables when 'all' params[:i18n_variables].each do |id, var| i18n_variable = I18nVariable.find(id) i18n_variable.update_attributes(var) end # Add a language when 'add' site = Site.find(session[:site]) if !site.valid_locales.include?(params[:language]) site.valid_locales << params[:language] site.save I18nVariable.create({:key => params[:language], :document_class => 'language'}) end # Enable a language when 'enable' site = Site.find(session[:site]) if !site.in_use_locales.include?(params[:enable_language]) site.in_use_locales << params[:enable_language] site.save end # Disable a language when 'disable' site = Site.find(session[:site]) if site.in_use_locales.include?(params[:disable_language]) site.in_use_locales.delete(params[:disable_language]) site.save end # Delete a language and the corresponding i18n_variables when 'delete' site = Site.find(session[:site]) site.in_use_locales.delete(params[:delete_language]) site.valid_locales.delete(params[:delete_language]) site.save I18nVariable.destroy_all(:conditions => {:document_class => 'language', :key => params[:delete_language]}) end redirect_to admin_translations_url rescue set_variables render :action => :edit end end protected # Get the i18n_variables and languages def set_variables @i18n_variables = I18nVariable.all.entries @language_i18n_variables = @i18n_variables.inject([]) do |result, var| result << var if var.document_class.eql?('language') result end @role_i18n_variables = @i18n_variables.inject([]) do |result, var| result << var if var.document_class.eql?('Role') result end @info_i18n_variables = @i18n_variables.inject([]) do |result, var| result << var if var.document_class.eql?('UserInfoModel') result end end end