83 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| class Admin::TranslationsController < ApplicationController
 | |
| 
 | |
|   layout "admin"
 | |
|   before_filter :authenticate_user!
 | |
|   before_filter :is_admin?
 | |
|   
 | |
|   def index
 | |
|     set_variables
 | |
|   end
 | |
|   
 | |
|   def edit
 | |
|     set_variables
 | |
|     session[:last_page] = get_go_back || admin_translations_url
 | |
|   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
 | |
|     @user_role_model_i18n_variables =  @i18n_variables.inject([]) do |result, var|
 | |
|       result << var if var.document_class.eql?('UserRoleModel')
 | |
|       result
 | |
|     end
 | |
|     @user_info_model_i18n_variables =  @i18n_variables.inject([]) do |result, var|
 | |
|       result << var if var.document_class.eql?('UserInfoModel')
 | |
|       result
 | |
|     end
 | |
|   end
 | |
|   
 | |
| end
 |