0
+# Uncomment this if you reference any of your controllers in activate
0
+require_dependency 'application'
0
+class SiteLanguageExtension < Radiant::Extension
0
+ description "Habla Nederlands, sir? Si oder non?"
0
+ url "http://openminds.be/"
0
+ define_routes do |map|
0
+ map.connect 'admin/site_language/:action', :controller => 'admin/site_languages'
0
+ SiteLanguage.codes.each do |code|
0
+ langname = Locale.new(code).language.to_s.downcase
0
+ map.connect "#{langname}/*url", :controller => 'site', :action => 'show_page', :language => code
0
+ # raise SiteLanguageError, "Migrations not ran yet.."
0
+ admin.tabs.add "Site Language", "/admin/site_language", :after => "Layouts", :visibility => [:admin, :developer]
0
+ unless ActiveRecord::Base.respond_to? :translates
0
+ raise SiteLanguageError
0
+ Page.send :include, SiteLanguageTags
0
+ admin.tabs.remove "Site Language"
0
+ # It seems impossible to add a before_filter to Admin::AbstractModelController from here :/
0
+ Admin::PageController.class_eval do
0
+ before_filter :set_locale
0
+ Locale.set params[:language] || SiteLanguage.default
0
+ Admin::SnippetController.class_eval do
0
+ before_filter :set_locale
0
+ Locale.set params[:language] || SiteLanguage.default
0
+ # pass language again when save_and_continue_editing is used
0
+ Admin::AbstractModelController.class_eval do
0
+ def continue_url(options)
0
+ options[:redirect_to] || (params[:continue] ? model_edit_url(:id => model.id, :language => params[:language]) : model_index_url)
0
+ SiteController.class_eval do
0
+ before_filter :set_language
0
+ redirect_to :language => SiteLanguage.default, :url => params[:url] unless Locale.set params[:language]
0
+ response.headers.delete('Cache-Control')
0
+ url = params[:url].to_s
0
+ lang = params[:language].to_s
0
+ if (request.get? || request.head?) and live? and (@cache.response_cached?(lang + '-' + url))
0
+ @cache.update_response(lang + '-' + url, response, request)
0
+ @performed_render = true
0
+ show_uncached_page(url, lang)
0
+ def show_uncached_page(url, lang)
0
+ @page = find_page(url)
0
+ @cache.cache_response(lang + '-' + url, response) if request.get? and live? and @page.cache?
0
+ @performed_render = true
0
+ render :template => 'site/not_found', :status => 404
0
+ rescue Page::MissingRootPageError
0
+ redirect_to welcome_url
0
+ Locale.set_base_language(SiteLanguage.default)
0
+ translates :title, :breadcrumb, :slug
0
+ PagePart.class_eval do
0
+class SiteLanguageError < StandardError
0
\ No newline at end of file
Comments
No one has commented yet.