radiant-globalize2-extension 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +136 -0
- data/app/views/admin/shared/_change_locale.html.haml +22 -0
- data/app/views/admin/shared/_change_locale_admin.html.haml +7 -0
- data/app/views/admin/shared/_globalize_td.html.haml +4 -0
- data/app/views/admin/shared/_globalize_th.html.haml +2 -0
- data/config/routes.rb +4 -0
- data/cucumber.yml +1 -0
- data/db/migrate/20090728084238_create_translation_tables.rb +23 -0
- data/db/migrate/20090728114627_populate_translations.rb +21 -0
- data/db/migrate/20090729085422_remove_translated_attributes.rb +16 -0
- data/features/globalize_layouts.feature +19 -0
- data/features/globalize_pages.feature +58 -0
- data/features/globalize_snippets.feature +19 -0
- data/features/step_definitions/admin_steps.rb +58 -0
- data/features/step_definitions/webrat_steps.rb +119 -0
- data/features/support/env.rb +30 -0
- data/features/support/paths.rb +26 -0
- data/globalize2_extension.rb +93 -0
- data/lib/globalize2/compatibility/archive/archive_page_extensions.rb +21 -0
- data/lib/globalize2/compatibility/copy_move/copy_move_model_extensions.rb +22 -0
- data/lib/globalize2/compatibility/paginate/globalize_tags.rb +19 -0
- data/lib/globalize2/compatibility/paginate/page_extensions.rb +9 -0
- data/lib/globalize2/compatibility/vhost/page_extensions.rb +9 -0
- data/lib/globalize2/form_builder_extensions.rb +21 -0
- data/lib/globalize2/globalize_tags.rb +203 -0
- data/lib/globalize2/globalized_fields_controller_extension.rb +22 -0
- data/lib/globalize2/page_extensions.rb +88 -0
- data/lib/globalize2/page_part_extensions.rb +21 -0
- data/lib/globalize2/pages_controller_extensions.rb +9 -0
- data/lib/globalize2/site_controller_extensions.rb +24 -0
- data/lib/tasks/globalize2_extension_tasks.rake +28 -0
- data/public/images/admin/ad.gif +0 -0
- data/public/images/admin/ae.gif +0 -0
- data/public/images/admin/af.gif +0 -0
- data/public/images/admin/ag.gif +0 -0
- data/public/images/admin/ai.gif +0 -0
- data/public/images/admin/al.gif +0 -0
- data/public/images/admin/am.gif +0 -0
- data/public/images/admin/an.gif +0 -0
- data/public/images/admin/ao.gif +0 -0
- data/public/images/admin/ar.gif +0 -0
- data/public/images/admin/as.gif +0 -0
- data/public/images/admin/at.gif +0 -0
- data/public/images/admin/au.gif +0 -0
- data/public/images/admin/aw.gif +0 -0
- data/public/images/admin/ax.gif +0 -0
- data/public/images/admin/az.gif +0 -0
- data/public/images/admin/ba.gif +0 -0
- data/public/images/admin/bb.gif +0 -0
- data/public/images/admin/bd.gif +0 -0
- data/public/images/admin/be.gif +0 -0
- data/public/images/admin/bf.gif +0 -0
- data/public/images/admin/bg.gif +0 -0
- data/public/images/admin/bh.gif +0 -0
- data/public/images/admin/bi.gif +0 -0
- data/public/images/admin/bj.gif +0 -0
- data/public/images/admin/bm.gif +0 -0
- data/public/images/admin/bn.gif +0 -0
- data/public/images/admin/bo.gif +0 -0
- data/public/images/admin/br.gif +0 -0
- data/public/images/admin/bs.gif +0 -0
- data/public/images/admin/bt.gif +0 -0
- data/public/images/admin/bv.gif +0 -0
- data/public/images/admin/bw.gif +0 -0
- data/public/images/admin/by.gif +0 -0
- data/public/images/admin/bz.gif +0 -0
- data/public/images/admin/ca.gif +0 -0
- data/public/images/admin/catalonia.gif +0 -0
- data/public/images/admin/cc.gif +0 -0
- data/public/images/admin/cd.gif +0 -0
- data/public/images/admin/cf.gif +0 -0
- data/public/images/admin/cg.gif +0 -0
- data/public/images/admin/ch.gif +0 -0
- data/public/images/admin/ci.gif +0 -0
- data/public/images/admin/ck.gif +0 -0
- data/public/images/admin/cl.gif +0 -0
- data/public/images/admin/cm.gif +0 -0
- data/public/images/admin/cn.gif +0 -0
- data/public/images/admin/co.gif +0 -0
- data/public/images/admin/cr.gif +0 -0
- data/public/images/admin/cs.gif +0 -0
- data/public/images/admin/cu.gif +0 -0
- data/public/images/admin/cv.gif +0 -0
- data/public/images/admin/cx.gif +0 -0
- data/public/images/admin/cy.gif +0 -0
- data/public/images/admin/cz.gif +0 -0
- data/public/images/admin/de.gif +0 -0
- data/public/images/admin/dj.gif +0 -0
- data/public/images/admin/dk.gif +0 -0
- data/public/images/admin/dm.gif +0 -0
- data/public/images/admin/do.gif +0 -0
- data/public/images/admin/dz.gif +0 -0
- data/public/images/admin/ec.gif +0 -0
- data/public/images/admin/ee.gif +0 -0
- data/public/images/admin/eg.gif +0 -0
- data/public/images/admin/eh.gif +0 -0
- data/public/images/admin/en.gif +0 -0
- data/public/images/admin/england.gif +0 -0
- data/public/images/admin/er.gif +0 -0
- data/public/images/admin/es.gif +0 -0
- data/public/images/admin/et.gif +0 -0
- data/public/images/admin/europeanunion.gif +0 -0
- data/public/images/admin/fam.gif +0 -0
- data/public/images/admin/fi.gif +0 -0
- data/public/images/admin/fj.gif +0 -0
- data/public/images/admin/fk.gif +0 -0
- data/public/images/admin/fm.gif +0 -0
- data/public/images/admin/fo.gif +0 -0
- data/public/images/admin/fr.gif +0 -0
- data/public/images/admin/ga.gif +0 -0
- data/public/images/admin/gb.gif +0 -0
- data/public/images/admin/gd.gif +0 -0
- data/public/images/admin/ge.gif +0 -0
- data/public/images/admin/gf.gif +0 -0
- data/public/images/admin/gh.gif +0 -0
- data/public/images/admin/gi.gif +0 -0
- data/public/images/admin/gl.gif +0 -0
- data/public/images/admin/gm.gif +0 -0
- data/public/images/admin/gn.gif +0 -0
- data/public/images/admin/gp.gif +0 -0
- data/public/images/admin/gq.gif +0 -0
- data/public/images/admin/gr.gif +0 -0
- data/public/images/admin/gs.gif +0 -0
- data/public/images/admin/gt.gif +0 -0
- data/public/images/admin/gu.gif +0 -0
- data/public/images/admin/gw.gif +0 -0
- data/public/images/admin/gy.gif +0 -0
- data/public/images/admin/hk.gif +0 -0
- data/public/images/admin/hm.gif +0 -0
- data/public/images/admin/hn.gif +0 -0
- data/public/images/admin/hr.gif +0 -0
- data/public/images/admin/ht.gif +0 -0
- data/public/images/admin/hu.gif +0 -0
- data/public/images/admin/id.gif +0 -0
- data/public/images/admin/ie.gif +0 -0
- data/public/images/admin/il.gif +0 -0
- data/public/images/admin/in.gif +0 -0
- data/public/images/admin/io.gif +0 -0
- data/public/images/admin/iq.gif +0 -0
- data/public/images/admin/ir.gif +0 -0
- data/public/images/admin/is.gif +0 -0
- data/public/images/admin/it.gif +0 -0
- data/public/images/admin/jm.gif +0 -0
- data/public/images/admin/jo.gif +0 -0
- data/public/images/admin/jp.gif +0 -0
- data/public/images/admin/ke.gif +0 -0
- data/public/images/admin/kg.gif +0 -0
- data/public/images/admin/kh.gif +0 -0
- data/public/images/admin/ki.gif +0 -0
- data/public/images/admin/km.gif +0 -0
- data/public/images/admin/kn.gif +0 -0
- data/public/images/admin/kp.gif +0 -0
- data/public/images/admin/kr.gif +0 -0
- data/public/images/admin/kw.gif +0 -0
- data/public/images/admin/ky.gif +0 -0
- data/public/images/admin/kz.gif +0 -0
- data/public/images/admin/la.gif +0 -0
- data/public/images/admin/lb.gif +0 -0
- data/public/images/admin/lc.gif +0 -0
- data/public/images/admin/li.gif +0 -0
- data/public/images/admin/lk.gif +0 -0
- data/public/images/admin/lr.gif +0 -0
- data/public/images/admin/ls.gif +0 -0
- data/public/images/admin/lt.gif +0 -0
- data/public/images/admin/lu.gif +0 -0
- data/public/images/admin/lv.gif +0 -0
- data/public/images/admin/ly.gif +0 -0
- data/public/images/admin/ma.gif +0 -0
- data/public/images/admin/mc.gif +0 -0
- data/public/images/admin/md.gif +0 -0
- data/public/images/admin/me.gif +0 -0
- data/public/images/admin/mg.gif +0 -0
- data/public/images/admin/mh.gif +0 -0
- data/public/images/admin/mk.gif +0 -0
- data/public/images/admin/ml.gif +0 -0
- data/public/images/admin/mm.gif +0 -0
- data/public/images/admin/mn.gif +0 -0
- data/public/images/admin/mo.gif +0 -0
- data/public/images/admin/mp.gif +0 -0
- data/public/images/admin/mq.gif +0 -0
- data/public/images/admin/mr.gif +0 -0
- data/public/images/admin/ms.gif +0 -0
- data/public/images/admin/mt.gif +0 -0
- data/public/images/admin/mu.gif +0 -0
- data/public/images/admin/mv.gif +0 -0
- data/public/images/admin/mw.gif +0 -0
- data/public/images/admin/mx.gif +0 -0
- data/public/images/admin/my.gif +0 -0
- data/public/images/admin/mz.gif +0 -0
- data/public/images/admin/na.gif +0 -0
- data/public/images/admin/nc.gif +0 -0
- data/public/images/admin/ne.gif +0 -0
- data/public/images/admin/nf.gif +0 -0
- data/public/images/admin/ng.gif +0 -0
- data/public/images/admin/ni.gif +0 -0
- data/public/images/admin/nl.gif +0 -0
- data/public/images/admin/no.gif +0 -0
- data/public/images/admin/np.gif +0 -0
- data/public/images/admin/nr.gif +0 -0
- data/public/images/admin/nu.gif +0 -0
- data/public/images/admin/nz.gif +0 -0
- data/public/images/admin/om.gif +0 -0
- data/public/images/admin/pa.gif +0 -0
- data/public/images/admin/pe.gif +0 -0
- data/public/images/admin/pf.gif +0 -0
- data/public/images/admin/pg.gif +0 -0
- data/public/images/admin/ph.gif +0 -0
- data/public/images/admin/pk.gif +0 -0
- data/public/images/admin/pl.gif +0 -0
- data/public/images/admin/pm.gif +0 -0
- data/public/images/admin/pn.gif +0 -0
- data/public/images/admin/pr.gif +0 -0
- data/public/images/admin/ps.gif +0 -0
- data/public/images/admin/pt.gif +0 -0
- data/public/images/admin/pw.gif +0 -0
- data/public/images/admin/py.gif +0 -0
- data/public/images/admin/qa.gif +0 -0
- data/public/images/admin/re.gif +0 -0
- data/public/images/admin/ro.gif +0 -0
- data/public/images/admin/rs.gif +0 -0
- data/public/images/admin/ru.gif +0 -0
- data/public/images/admin/rw.gif +0 -0
- data/public/images/admin/sa.gif +0 -0
- data/public/images/admin/sb.gif +0 -0
- data/public/images/admin/sc.gif +0 -0
- data/public/images/admin/scotland.gif +0 -0
- data/public/images/admin/sd.gif +0 -0
- data/public/images/admin/se.gif +0 -0
- data/public/images/admin/sg.gif +0 -0
- data/public/images/admin/sh.gif +0 -0
- data/public/images/admin/si.gif +0 -0
- data/public/images/admin/sj.gif +0 -0
- data/public/images/admin/sk.gif +0 -0
- data/public/images/admin/sl.gif +0 -0
- data/public/images/admin/sm.gif +0 -0
- data/public/images/admin/sn.gif +0 -0
- data/public/images/admin/so.gif +0 -0
- data/public/images/admin/sr.gif +0 -0
- data/public/images/admin/st.gif +0 -0
- data/public/images/admin/sv.gif +0 -0
- data/public/images/admin/sy.gif +0 -0
- data/public/images/admin/sz.gif +0 -0
- data/public/images/admin/tc.gif +0 -0
- data/public/images/admin/td.gif +0 -0
- data/public/images/admin/tf.gif +0 -0
- data/public/images/admin/tg.gif +0 -0
- data/public/images/admin/th.gif +0 -0
- data/public/images/admin/tj.gif +0 -0
- data/public/images/admin/tk.gif +0 -0
- data/public/images/admin/tl.gif +0 -0
- data/public/images/admin/tm.gif +0 -0
- data/public/images/admin/tn.gif +0 -0
- data/public/images/admin/to.gif +0 -0
- data/public/images/admin/tr.gif +0 -0
- data/public/images/admin/tt.gif +0 -0
- data/public/images/admin/tv.gif +0 -0
- data/public/images/admin/tw.gif +0 -0
- data/public/images/admin/tz.gif +0 -0
- data/public/images/admin/ua.gif +0 -0
- data/public/images/admin/ug.gif +0 -0
- data/public/images/admin/um.gif +0 -0
- data/public/images/admin/us.gif +0 -0
- data/public/images/admin/uy.gif +0 -0
- data/public/images/admin/uz.gif +0 -0
- data/public/images/admin/va.gif +0 -0
- data/public/images/admin/vc.gif +0 -0
- data/public/images/admin/ve.gif +0 -0
- data/public/images/admin/vg.gif +0 -0
- data/public/images/admin/vi.gif +0 -0
- data/public/images/admin/vn.gif +0 -0
- data/public/images/admin/vu.gif +0 -0
- data/public/images/admin/wales.gif +0 -0
- data/public/images/admin/wf.gif +0 -0
- data/public/images/admin/ws.gif +0 -0
- data/public/images/admin/ye.gif +0 -0
- data/public/images/admin/yt.gif +0 -0
- data/public/images/admin/za.gif +0 -0
- data/public/images/admin/zm.gif +0 -0
- data/public/images/admin/zw.gif +0 -0
- data/public/stylesheets/sass/admin/globalize2.sass +59 -0
- data/readme.md +159 -0
- data/spec/controllers/admin/pages_controller_spec.rb +22 -0
- data/spec/controllers/site_controller_spec.rb +40 -0
- data/spec/factories.rb +39 -0
- data/spec/models/globalize_tags_spec.rb +155 -0
- data/spec/models/page_spec.rb +91 -0
- data/spec/spec.opts +6 -0
- data/spec/spec_helper.rb +34 -0
- data/vendor/plugins/globalize2/.gitignore +5 -0
- data/vendor/plugins/globalize2/LICENSE +21 -0
- data/vendor/plugins/globalize2/README.textile +86 -0
- data/vendor/plugins/globalize2/Rakefile +39 -0
- data/vendor/plugins/globalize2/VERSION +1 -0
- data/vendor/plugins/globalize2/generators/db_backend.rb +0 -0
- data/vendor/plugins/globalize2/generators/templates/db_backend_migration.rb +25 -0
- data/vendor/plugins/globalize2/globalize2.gemspec +81 -0
- data/vendor/plugins/globalize2/init.rb +1 -0
- data/vendor/plugins/globalize2/lib/globalize.rb +15 -0
- data/vendor/plugins/globalize2/lib/globalize/active_record.rb +215 -0
- data/vendor/plugins/globalize2/lib/globalize/active_record/adapter.rb +80 -0
- data/vendor/plugins/globalize2/lib/globalize/active_record/attributes.rb +25 -0
- data/vendor/plugins/globalize2/lib/globalize/active_record/migration.rb +44 -0
- data/vendor/plugins/globalize2/lib/i18n/missing_translations_log_handler.rb +41 -0
- data/vendor/plugins/globalize2/lib/i18n/missing_translations_raise_handler.rb +25 -0
- data/vendor/plugins/globalize2/test/active_record/fallbacks_test.rb +102 -0
- data/vendor/plugins/globalize2/test/active_record/migration_test.rb +118 -0
- data/vendor/plugins/globalize2/test/active_record/sti_translated_test.rb +61 -0
- data/vendor/plugins/globalize2/test/active_record/translates_test.rb +96 -0
- data/vendor/plugins/globalize2/test/active_record/translation_class_test.rb +30 -0
- data/vendor/plugins/globalize2/test/active_record/validation_tests.rb +75 -0
- data/vendor/plugins/globalize2/test/active_record_test.rb +467 -0
- data/vendor/plugins/globalize2/test/all.rb +2 -0
- data/vendor/plugins/globalize2/test/data/models.rb +62 -0
- data/vendor/plugins/globalize2/test/data/no_globalize_schema.rb +11 -0
- data/vendor/plugins/globalize2/test/data/schema.rb +55 -0
- data/vendor/plugins/globalize2/test/i18n/missing_translations_test.rb +36 -0
- data/vendor/plugins/globalize2/test/test_helper.rb +76 -0
- metadata +409 -0
@@ -0,0 +1,30 @@
|
|
1
|
+
# Sets up the Rails environment for Cucumber
|
2
|
+
ENV["RAILS_ENV"] = "test"
|
3
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../../../../config/environment')
|
4
|
+
|
5
|
+
require 'cucumber/rails/world'
|
6
|
+
require 'cucumber/formatter/unicode' # Comment out this line if you don't want Cucumber Unicode support
|
7
|
+
require 'webrat'
|
8
|
+
|
9
|
+
Webrat.configure do |config|
|
10
|
+
config.mode = :rails
|
11
|
+
end
|
12
|
+
|
13
|
+
Before do
|
14
|
+
ActiveRecord::Base.connection.tables.each do |table|
|
15
|
+
begin
|
16
|
+
table.classify.constantize.delete_all
|
17
|
+
rescue StandardError => e
|
18
|
+
# silent
|
19
|
+
end
|
20
|
+
end
|
21
|
+
Radiant::Config.create!(:key => 'globalize.languages', :value => "ro") if Radiant::Config['globalize.languages'].blank?
|
22
|
+
end
|
23
|
+
|
24
|
+
require 'cucumber/rails/rspec'
|
25
|
+
require 'webrat/core/matchers'
|
26
|
+
|
27
|
+
gem 'thoughtbot-factory_girl', '>= 1.2.1'
|
28
|
+
require 'factory_girl'
|
29
|
+
|
30
|
+
require File.dirname(__FILE__) + "/../../spec/factories.rb"
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module NavigationHelpers
|
2
|
+
# Maps a name to a path. Used by the
|
3
|
+
#
|
4
|
+
# When /^I go to (.+)$/ do |page_name|
|
5
|
+
#
|
6
|
+
# step definition in webrat_steps.rb
|
7
|
+
#
|
8
|
+
def path_to(page_name)
|
9
|
+
case page_name
|
10
|
+
|
11
|
+
when /the welcome page/
|
12
|
+
welcome_path
|
13
|
+
when /the pages index page/
|
14
|
+
admin_pages_path
|
15
|
+
when /the layouts index page/
|
16
|
+
admin_layouts_path
|
17
|
+
when /the snippets index page/
|
18
|
+
admin_snippets_path
|
19
|
+
else
|
20
|
+
raise "Can't find mapping from \"#{page_name}\" to a path.\n" +
|
21
|
+
"Now, go and add a mapping in #{__FILE__}"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
World(NavigationHelpers)
|
@@ -0,0 +1,93 @@
|
|
1
|
+
# Uncomment this if you reference any of your controllers in activate
|
2
|
+
# require_dependency 'application'
|
3
|
+
require 'globalize2/form_builder_extensions'
|
4
|
+
|
5
|
+
class Globalize2Extension < Radiant::Extension
|
6
|
+
version "0.2"
|
7
|
+
description "Translate content in Radiant CMS using the Globalize2 Rails plugin."
|
8
|
+
url "http://blog.aissac.ro/radiant/globalize2-extension/"
|
9
|
+
|
10
|
+
GLOBALIZABLE_CONTENT = {
|
11
|
+
|
12
|
+
Page => [:title, :slug, :breadcrumb],
|
13
|
+
PagePart => [:content],
|
14
|
+
Layout => [:content],
|
15
|
+
Snippet => [:content]
|
16
|
+
}
|
17
|
+
|
18
|
+
def self.default_language
|
19
|
+
@@default_language ||= Radiant::Config['globalize.default_language'].blank? ? "en" : Radiant::Config['globalize.default_language']
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.languages
|
23
|
+
@@languages ||= Radiant::Config['globalize.languages'].blank? ? [] : Radiant::Config['globalize.languages'].split(",").map(&:to_s)
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.locales
|
27
|
+
@@locales ||= [default_language, *languages].map(&:to_s)
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.content_locale
|
31
|
+
Thread.current[:content_locale] || default_language
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.content_locale= locale
|
35
|
+
Thread.current[:content_locale] = locale
|
36
|
+
end
|
37
|
+
|
38
|
+
def activate
|
39
|
+
require 'i18n/backend/fallbacks'
|
40
|
+
I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks)
|
41
|
+
|
42
|
+
admin.page.edit.add :form, 'admin/shared/change_locale', :before => 'edit_page_parts'
|
43
|
+
admin.snippet.edit.add :form, 'admin/shared/change_locale', :before => 'edit_content'
|
44
|
+
admin.layout.edit.add :form, 'admin/shared/change_locale', :before => 'edit_content'
|
45
|
+
|
46
|
+
admin.page.index.add :top, 'admin/shared/change_locale_admin'
|
47
|
+
admin.layout.index.add :top, 'admin/shared/change_locale_admin'
|
48
|
+
admin.snippet.index.add :top, 'admin/shared/change_locale_admin'
|
49
|
+
|
50
|
+
admin.page.index.add :sitemap_head, 'admin/shared/globalize_th'
|
51
|
+
admin.page.index.add :node, 'admin/shared/globalize_td'
|
52
|
+
|
53
|
+
I18n.default_locale = Globalize2Extension.default_language
|
54
|
+
|
55
|
+
Admin::PagesController.send(:include, Globalize2::PagesControllerExtensions)
|
56
|
+
Admin::PagesController.send(:include, Globalize2::GlobalizedFieldsControllerExtension)
|
57
|
+
Admin::LayoutsController.send(:include, Globalize2::GlobalizedFieldsControllerExtension )
|
58
|
+
Admin::SnippetsController.send(:include, Globalize2::GlobalizedFieldsControllerExtension)
|
59
|
+
|
60
|
+
SiteController.send(:include, Globalize2::SiteControllerExtensions)
|
61
|
+
|
62
|
+
GLOBALIZABLE_CONTENT.each do |model, columns|
|
63
|
+
model.send(:translates, *columns)
|
64
|
+
#p model.ancestors
|
65
|
+
end
|
66
|
+
|
67
|
+
Page.send(:include, Globalize2::GlobalizeTags)
|
68
|
+
|
69
|
+
Page.class_eval {
|
70
|
+
|
71
|
+
#extend Globalize2::PageExtensions::ClassMethods
|
72
|
+
include Globalize2::PageExtensions::InstanceMethods
|
73
|
+
}
|
74
|
+
|
75
|
+
#Page.send(:include, Globalize2::PageExtensions)
|
76
|
+
PagePart.send(:include, Globalize2::PagePartExtensions)
|
77
|
+
|
78
|
+
#compatibility
|
79
|
+
CopyMove::Model.send(:include, Globalize2::Compatibility::CopyMove::CopyMoveModelExtensions) if defined?(CopyMoveExtension)
|
80
|
+
ArchivePage.send(:include, Globalize2::Compatibility::Archive::ArchivePageExtensions) if defined?(ArchiveExtension)
|
81
|
+
#ArchivePage.send(:include, Globalize2::GlobalizeTags) if defined?(ArchiveExtension)
|
82
|
+
Page.send(:include, Globalize2::Compatibility::Vhost::PageExtensions) if defined?(VhostExtension)
|
83
|
+
|
84
|
+
if defined?(PaginateExtension)
|
85
|
+
Page.send(:include, Globalize2::Compatibility::Paginate::GlobalizeTags)
|
86
|
+
Page.send(:include, Globalize2::Compatibility::Paginate::PageExtensions)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def deactivate
|
91
|
+
end
|
92
|
+
|
93
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Globalize2::Compatibility
|
2
|
+
module Archive::ArchivePageExtensions
|
3
|
+
def self.included(base)
|
4
|
+
base.class_eval do
|
5
|
+
def child_url(child)
|
6
|
+
date = child.published_at || Time.now
|
7
|
+
|
8
|
+
if ArchiveYearIndexPage === child
|
9
|
+
clean_url "#{ url }/#{ date.strftime '%Y' }/"
|
10
|
+
elsif ArchiveMonthIndexPage === child
|
11
|
+
clean_url "#{ url }/#{ date.strftime '%Y/%m' }/"
|
12
|
+
elsif ArchiveDayIndexPage === child
|
13
|
+
clean_url "#{ url }/#{ date.strftime '%Y/%m/%d/' }/"
|
14
|
+
else
|
15
|
+
clean_url "#{ url }/#{ date.strftime '%Y/%m/%d' }/#{ child.slug }"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Globalize2::Compatibility
|
2
|
+
module CopyMove::CopyMoveModelExtensions
|
3
|
+
def self.included(base)
|
4
|
+
base.class_eval do
|
5
|
+
alias_method :old_copy_to, :copy_to
|
6
|
+
|
7
|
+
def copy_to(parent, status = nil)
|
8
|
+
parent.children.build(copiable_attributes.symbolize_keys.merge(new_slug_and_title_under(parent))).tap do |new_page|
|
9
|
+
self.translations.each do |gt|
|
10
|
+
new_page.translations << gt.clone
|
11
|
+
end
|
12
|
+
self.parts.each do |part|
|
13
|
+
new_page.parts << part.clone
|
14
|
+
end
|
15
|
+
new_page.status_id = status.blank? ? new_page.status_id : status
|
16
|
+
new_page.save!
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Globalize2::Compatibility
|
2
|
+
module Paginate::GlobalizeTags
|
3
|
+
include Radiant::Taggable
|
4
|
+
|
5
|
+
class TagError < StandardError; end
|
6
|
+
|
7
|
+
tag 'paginate_with_globalize' do |tag|
|
8
|
+
with_translated_locales = tag.attr['locale'] == 'false' ? false : true
|
9
|
+
if with_translated_locales
|
10
|
+
result = Page.scope_locale(I18n.locale.to_s) do
|
11
|
+
send('tag:paginate_without_globalize', tag)
|
12
|
+
end
|
13
|
+
else
|
14
|
+
result = send('tag:paginate_without_globalize', tag)
|
15
|
+
end
|
16
|
+
result
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Globalize2
|
2
|
+
module FormBuilderExtensions
|
3
|
+
def self.included(base)
|
4
|
+
base.alias_method_chain :text_field, :globalize
|
5
|
+
base.alias_method_chain :text_area, :globalize
|
6
|
+
end
|
7
|
+
|
8
|
+
def text_field_with_globalize(method, options = {})
|
9
|
+
Rails.logger.debug "FormBuilder: text_field_with_globalize"
|
10
|
+
options[:value] = options[:value] || I18n.with_locale(Globalize2Extension.content_locale) { object.send(method) }
|
11
|
+
text_field_without_globalize(method, options)
|
12
|
+
end
|
13
|
+
|
14
|
+
def text_area_with_globalize(method, options = {})
|
15
|
+
options[:value] = options[:value] || I18n.with_locale(Globalize2Extension.content_locale) { object.send(method) }
|
16
|
+
text_area_without_globalize(method, options)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
ActionView::Helpers::FormBuilder.send(:include, Globalize2::FormBuilderExtensions)
|
@@ -0,0 +1,203 @@
|
|
1
|
+
module Globalize2
|
2
|
+
module GlobalizeTags
|
3
|
+
include Radiant::Taggable
|
4
|
+
|
5
|
+
class TagError < StandardError; end
|
6
|
+
|
7
|
+
tag 'link_with_globalize' do |tag|
|
8
|
+
locale = tag.attr.delete("locale")
|
9
|
+
if locale
|
10
|
+
switch_locale(locale) do
|
11
|
+
send('tag:link_without_globalize', tag)
|
12
|
+
end
|
13
|
+
else
|
14
|
+
send('tag:link_without_globalize', tag)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
tag 'children:each_with_globalize' do |tag|
|
19
|
+
with_translated_locales = tag.attr['locale'] == 'false' ? false : true
|
20
|
+
if with_translated_locales
|
21
|
+
result = Page.scope_locale(I18n.locale.to_s) do
|
22
|
+
send('tag:children:each_without_globalize', tag)
|
23
|
+
end
|
24
|
+
else
|
25
|
+
|
26
|
+
result = send('tag:children:each_without_globalize', tag)
|
27
|
+
end
|
28
|
+
result
|
29
|
+
end
|
30
|
+
|
31
|
+
desc %{
|
32
|
+
Renders the current locale.
|
33
|
+
|
34
|
+
*Usage:*
|
35
|
+
|
36
|
+
<pre><code><r:locale /></code></pre>
|
37
|
+
}
|
38
|
+
tag 'locale' do |tag|
|
39
|
+
I18n.locale.to_s
|
40
|
+
end
|
41
|
+
|
42
|
+
desc %{
|
43
|
+
Renders the locales passed in @codes@ attribute. Use the @between@ attribute to specify something between the rendered locale codes.
|
44
|
+
|
45
|
+
*Example*
|
46
|
+
|
47
|
+
<pre><code>
|
48
|
+
<ul>
|
49
|
+
<r:locales codes='en|ro'>
|
50
|
+
<r:normal>
|
51
|
+
<li><r:link id='<r:locale />'><r:locale /></r:link></li>
|
52
|
+
</r:normal>
|
53
|
+
<r:active>
|
54
|
+
<li><r:link id='<r:locale />'><r:locale /></r:link></li>
|
55
|
+
</r:active>
|
56
|
+
</r:locales>
|
57
|
+
</ul>
|
58
|
+
</code></pre>
|
59
|
+
}
|
60
|
+
tag 'locales' do |tag|
|
61
|
+
hash = tag.locals.locale = {}
|
62
|
+
tag.expand
|
63
|
+
raise TagError.new("'locales' tag must include a 'normal' tag") unless hash.has_key? :normal
|
64
|
+
raise TagError.new("'codes' attribute must be set") if tag.attr['codes'].blank?
|
65
|
+
|
66
|
+
result = []
|
67
|
+
codes = tag.attr["codes"].split("|").each do |code|
|
68
|
+
hash[:code] = code
|
69
|
+
if I18n.locale.to_s == code
|
70
|
+
result << (hash[:active] || hash[:normal]).call
|
71
|
+
else
|
72
|
+
switch_locale(code) do
|
73
|
+
result << hash[:normal].call
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
between = tag.attr["between"] || " "
|
78
|
+
result.reject { |i| i.blank? }.join(between)
|
79
|
+
end
|
80
|
+
|
81
|
+
[:normal, :active].each do |symbol|
|
82
|
+
tag "locales:#{symbol}" do |tag|
|
83
|
+
hash = tag.locals.locale
|
84
|
+
hash[symbol] = tag.block
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
tag 'locales:code' do |tag|
|
89
|
+
hash = tag.locals.locale
|
90
|
+
hash[:code]
|
91
|
+
end
|
92
|
+
|
93
|
+
desc %{
|
94
|
+
Temporarily switch the locale within the block. Use the @code@ attribute so specify the locale you want to switch to.
|
95
|
+
|
96
|
+
*Usage:*
|
97
|
+
|
98
|
+
<pre><code><r:with_locale code='en'>...</r:with_locale></code></pre>
|
99
|
+
}
|
100
|
+
tag 'with_locale' do |tag|
|
101
|
+
code = tag.attr['code']
|
102
|
+
raise TagError.new("'code' must be set") if code.blank?
|
103
|
+
result = ''
|
104
|
+
switch_locale(code) do
|
105
|
+
result << tag.expand
|
106
|
+
end
|
107
|
+
result
|
108
|
+
end
|
109
|
+
|
110
|
+
desc %{
|
111
|
+
Renders the containing elements if the page's title is translated. This doesn't necessarily mean the content (page parts) are translated.
|
112
|
+
|
113
|
+
*Usage:*
|
114
|
+
|
115
|
+
<pre><code><r:if_translation_title>...</r:if_translation_title></code></pre>
|
116
|
+
}
|
117
|
+
tag 'if_translation_title' do |tag|
|
118
|
+
page = tag.locals.page
|
119
|
+
tag.expand if page.translated_locales.include?(I18n.locale.to_sym)
|
120
|
+
end
|
121
|
+
|
122
|
+
desc %{
|
123
|
+
The opposite of the @if_translation_title@ tag. Renders the containing elements if the page's title is not translated.
|
124
|
+
|
125
|
+
*Usage:*
|
126
|
+
|
127
|
+
<pre><code><r:unless_translation_title>...</r:unless_translation_title></code></pre>
|
128
|
+
}
|
129
|
+
tag 'unless_translation_title' do |tag|
|
130
|
+
page = tag.locals.page
|
131
|
+
tag.expand unless page.translated_locales.include?(I18n.locale.to_sym)
|
132
|
+
end
|
133
|
+
|
134
|
+
desc %{
|
135
|
+
Renders the containing elements if the page's part is translated. By default the @part@ attribute is set to @body@
|
136
|
+
|
137
|
+
*Usage:*
|
138
|
+
|
139
|
+
<pre><code><r:if_translation_content [part='part_name']>...</r:if_translation_content></code></pre>
|
140
|
+
|
141
|
+
}
|
142
|
+
tag 'if_translation_content' do |tag|
|
143
|
+
name = tag.attr['part'] || 'body'
|
144
|
+
part = tag.locals.page.part(name)
|
145
|
+
tag.expand if part && part.translated_locales.include?(I18n.locale.to_sym)
|
146
|
+
end
|
147
|
+
|
148
|
+
desc %{
|
149
|
+
The opposite of the @if_translation_content@ tag. Renders the containing elements if the page's part is not translated. By default, the @part@ attribute is set to @body@
|
150
|
+
|
151
|
+
*Usage:*
|
152
|
+
|
153
|
+
<pre><code><r:unless_translation_content [part='part_name']>...</r:unless_translation_content></code></pre>
|
154
|
+
}
|
155
|
+
tag 'unless_translation_content' do |tag|
|
156
|
+
name = tag.attr['part'] || 'body'
|
157
|
+
part = tag.locals.page.part(name)
|
158
|
+
tag.expand if part.nil? || !part.translated_locales.include?(I18n.locale.to_sym)
|
159
|
+
end
|
160
|
+
|
161
|
+
desc %{
|
162
|
+
Renders the date based on the current page (by default when it was published or created).
|
163
|
+
The format attribute uses the same formating codes used by the Ruby @strftime@ function. By
|
164
|
+
default it's set to @%A, %B %d, %Y@. The @for@ attribute selects which date to render. Valid
|
165
|
+
options are @published_at@, @created_at@, @updated_at@, and @now@. @now@ will render the
|
166
|
+
current date/time, regardless of the page.
|
167
|
+
|
168
|
+
*Usage:*
|
169
|
+
|
170
|
+
<pre><code><r:date [format="%A, %B %d, %Y"] [for="published_at"]/></code></pre>
|
171
|
+
}
|
172
|
+
tag 'date' do |tag|
|
173
|
+
page = tag.locals.page
|
174
|
+
format = (tag.attr['format'] || '%A, %B %d, %Y')
|
175
|
+
time_attr = tag.attr['for']
|
176
|
+
date = if time_attr
|
177
|
+
case
|
178
|
+
when time_attr == 'now'
|
179
|
+
Time.zone.now
|
180
|
+
when ['published_at', 'created_at', 'updated_at'].include?(time_attr)
|
181
|
+
page[time_attr]
|
182
|
+
else
|
183
|
+
raise TagError, "Invalid value for 'for' attribute."
|
184
|
+
end
|
185
|
+
else
|
186
|
+
page.published_at || page.created_at
|
187
|
+
end
|
188
|
+
I18n.l date , :format => format
|
189
|
+
end
|
190
|
+
|
191
|
+
|
192
|
+
private
|
193
|
+
# Allows you to switch the current locale while within the block.
|
194
|
+
# The previously current locale is reset after the block is finished.
|
195
|
+
def switch_locale(locale)
|
196
|
+
current_locale = I18n.locale
|
197
|
+
I18n.locale = locale.to_sym
|
198
|
+
result = yield
|
199
|
+
I18n.locale = current_locale
|
200
|
+
result
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|