public
Description: Radiant Extension for multiple language support
Homepage:
Clone URL: git://github.com/DefV/site_language.git
jomz (author)
Tue Feb 17 06:41:57 -0800 2009
DefV (committer)
Wed Feb 18 08:37:45 -0800 2009
commit  b1e8f8bf1b39a83e7adcdfd2cbb01e19a1287d24
tree    e72674ab95e3773490215d15385feb48a55d44d0
parent  4137b584901ae251f80c89f271a3bf8dc8713472
site_language / site_language_extension.rb
100644 57 lines (46 sloc) 1.827 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
require_dependency 'application'
 
include Globalize
Locale.set_base_language(SiteLanguage.default)
 
class SiteLanguageExtension < Radiant::Extension
  version "1.0"
  description "Habla Nederlands, sir? Si oder non?"
  url "http://openminds.be/"
  
  define_routes do |map|
    map.resources :site_languages, :path_prefix => "/admin"
    
    map.translated_page_edit 'admin/pages/edit/:id/:language', :controller => 'admin/pages', :action => 'edit'
    map.translated_snippet_edit 'admin/snippets/edit/:id/:language', :controller => 'admin/snippets', :action => 'edit'
    begin
      SiteLanguage.codes.each do |code|
        langname = Locale.new(code).language.code
        map.connect "#{langname}/*url", :controller => 'site', :action => 'show_page', :language => code
      end
    rescue
      #raise SiteLanguageError, "Migrations not ran yet.."
    end
  end
 
  def activate
    admin.tabs.add "Languages", "/admin/site_languages", :after => "Layouts", :visibility => [:admin, :developer]
    # We need globalize
    unless ActiveRecord::Base.respond_to? :translates
      raise SiteLanguageError, "Globalize does not appear to be installed."
    end
    enhance_classes
  end
  
  def deactivate
    admin.tabs.remove "Languages"
  end
  
  private
  
  def enhance_classes
    Admin::PagesController.send :include, SiteLanguage::ControllerExtensions::PageControllerExtensions
    Admin::SnippetsController.send :include, SiteLanguage::ControllerExtensions::SnippetControllerExtensions
    SiteController.send :include, SiteLanguage::ControllerExtensions::SiteControllerExtensions
    
    Page.send :include, SiteLanguage::PageExtensions
    Page.send :include, SiteLanguageTags
 
    PagePart.class_eval do
      translates :content
    end
    
    Snippet.class_eval do
      translates :content
    end
  end
end