kete_translatable_content 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.document +5 -0
- data/.gitignore +23 -0
- data/LICENSE +295 -0
- data/README.rdoc +80 -0
- data/README.rdoc.orig +72 -0
- data/Rakefile +53 -0
- data/VERSION +1 -0
- data/app/views/active_scaffold_overrides/_show.html.erb +8 -0
- data/app/views/active_scaffold_overrides/_update_form.html.erb +8 -0
- data/app/views/active_scaffold_overrides/list.html.erb +5 -0
- data/app/views/baskets/_additional_footer_content_fields.html.erb +33 -0
- data/app/views/baskets/_rss_feed.html.erb +42 -0
- data/app/views/baskets/_side_bar_html.html.erb +19 -0
- data/app/views/configure/section.rhtml +36 -0
- data/app/views/layouts/translations.html.erb +1 -0
- data/app/views/topics/_content_wrapper_start.rhtml +26 -0
- data/app/views/translations/_form.html.erb +54 -0
- data/app/views/translations/_translatable_value.html.erb +36 -0
- data/app/views/translations/_translation_field_input.html.erb +61 -0
- data/app/views/translations/show.html.erb +12 -0
- data/app/views/translations/versioned_edit.html.erb +9 -0
- data/config/locales/en.yml +51 -0
- data/config/routes.rb +11 -0
- data/config/translatables.yml +65 -0
- data/generators/kete_translatable_content_migration/USAGE +2 -0
- data/generators/kete_translatable_content_migration/kete_translatable_content_migration_generator.rb +7 -0
- data/generators/kete_translatable_content_migration/templates/migration.rb +82 -0
- data/generators/kete_translatable_content_tests/USAGE +2 -0
- data/generators/kete_translatable_content_tests/kete_translatable_content_tests_generator.rb +38 -0
- data/generators/kete_translatable_content_tests/templates/configure_kete_content_translation_controller_and_routes_test.rb +48 -0
- data/generators/kete_translatable_content_tests/templates/configure_kete_content_translation_test.rb +47 -0
- data/generators/kete_translatable_content_tests/templates/kete_translatable_content_helper_test.rb +19 -0
- data/generators/kete_translatable_content_tests/templates/kete_translatable_content_migration_test.rb +45 -0
- data/generators/kete_translatable_content_tests/templates/kete_translatable_content_oai_dc_helpers_test.rb +66 -0
- data/generators/kete_translatable_content_tests/templates/kete_translatable_content_translations_test.rb +23 -0
- data/generators/kete_translatable_content_tests/templates/kete_translations_test.rb +57 -0
- data/generators/kete_translatable_content_tests/templates/mongo_factories.rb +6 -0
- data/generators/kete_translatable_content_tests/templates/mongo_test_helper.rb +37 -0
- data/generators/kete_translatable_content_tests/templates/mongo_translatable_test.rb +262 -0
- data/lib/kete_translatable_content.rb +54 -0
- data/lib/kete_translatable_content/extensions/controllers/application_controller.rb +202 -0
- data/lib/kete_translatable_content/extensions/controllers/audio_controller.rb +7 -0
- data/lib/kete_translatable_content/extensions/controllers/baskets_controller.rb +3 -0
- data/lib/kete_translatable_content/extensions/controllers/documents_controller.rb +7 -0
- data/lib/kete_translatable_content/extensions/controllers/images_controller.rb +7 -0
- data/lib/kete_translatable_content/extensions/controllers/topics_controller.rb +7 -0
- data/lib/kete_translatable_content/extensions/controllers/translations_controller.rb +209 -0
- data/lib/kete_translatable_content/extensions/controllers/video_controller.rb +7 -0
- data/lib/kete_translatable_content/extensions/controllers/web_links_controller.rb +7 -0
- data/lib/kete_translatable_content/extensions/extended_content_translation.rb +54 -0
- data/lib/kete_translatable_content/extensions/helpers/application_helper.rb +156 -0
- data/lib/kete_translatable_content/extensions/helpers/extended_fields_helper.rb +17 -0
- data/lib/kete_translatable_content/extensions/helpers/search_helper.rb +5 -0
- data/lib/kete_translatable_content/extensions/helpers/translations_helper.rb +72 -0
- data/lib/kete_translatable_content/extensions/models/audio_recording.rb +12 -0
- data/lib/kete_translatable_content/extensions/models/basket.rb +34 -0
- data/lib/kete_translatable_content/extensions/models/comment.rb +12 -0
- data/lib/kete_translatable_content/extensions/models/document.rb +12 -0
- data/lib/kete_translatable_content/extensions/models/still_image.rb +12 -0
- data/lib/kete_translatable_content/extensions/models/system_setting.rb +13 -0
- data/lib/kete_translatable_content/extensions/models/tag.rb +37 -0
- data/lib/kete_translatable_content/extensions/models/topic.rb +12 -0
- data/lib/kete_translatable_content/extensions/models/user.rb +36 -0
- data/lib/kete_translatable_content/extensions/models/video.rb +12 -0
- data/lib/kete_translatable_content/extensions/models/web_link.rb +12 -0
- data/lib/kete_translatable_content/extensions/oai_dc_helpers_overrides.rb +99 -0
- data/lib/kete_translatable_content/extensions/tagging_controller_overrides.rb +21 -0
- data/lib/kete_translatable_content/extensions/tagging_overrides.rb +27 -0
- data/lib/kete_translatable_content/extensions/tinymce_controller_valid_action_override.rb +16 -0
- data/lib/kete_translatable_content/extensions/translation_from_version.rb +105 -0
- data/lib/kete_translatable_content/kete.rb +25 -0
- data/lib/kete_translatable_content/overwrites/oai_dc_helpers_test.rb +6 -0
- data/rails/init.rb +110 -0
- metadata +156 -0
data/Rakefile
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'rake'
|
|
3
|
+
|
|
4
|
+
begin
|
|
5
|
+
require 'jeweler'
|
|
6
|
+
Jeweler::Tasks.new do |gem|
|
|
7
|
+
gem.name = "kete_translatable_content"
|
|
8
|
+
gem.summary = %Q{An add-on to the Kete application to provide content translations.}
|
|
9
|
+
gem.description = %Q{Kete Translatable Content is a gem that is an add-on for Kete web applications that takes advantage of the mongo_translatable gem functionality. As you would expect, you use it to add the ability to translate content in your Kete web site.}
|
|
10
|
+
gem.email = "walter@katipo.co.nz"
|
|
11
|
+
gem.homepage = "http://github.com/kete/kete_translatable_content"
|
|
12
|
+
gem.authors = ["Walter McGinnis", "Kieran Pilkington", "Breccan McLeod-Lundy"]
|
|
13
|
+
gem.add_development_dependency "mongo_translatable", ">= 0"
|
|
14
|
+
gem.files.exclude 'test/kete_test_app'
|
|
15
|
+
gem.test_files.exclude 'test/kete_test_app'
|
|
16
|
+
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
|
17
|
+
end
|
|
18
|
+
Jeweler::GemcutterTasks.new
|
|
19
|
+
rescue LoadError
|
|
20
|
+
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
require 'rake/testtask'
|
|
24
|
+
Rake::TestTask.new(:test) do |test|
|
|
25
|
+
puts "This gem needs to be tested in the context of a full kete app. See README for details about how to generate and run tests."
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
begin
|
|
29
|
+
require 'rcov/rcovtask'
|
|
30
|
+
Rcov::RcovTask.new do |test|
|
|
31
|
+
test.libs << 'test'
|
|
32
|
+
test.pattern = 'test/**/test_*.rb'
|
|
33
|
+
test.verbose = true
|
|
34
|
+
end
|
|
35
|
+
rescue LoadError
|
|
36
|
+
task :rcov do
|
|
37
|
+
abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
task :test => :check_dependencies
|
|
42
|
+
|
|
43
|
+
task :default => :test
|
|
44
|
+
|
|
45
|
+
require 'rake/rdoctask'
|
|
46
|
+
Rake::RDocTask.new do |rdoc|
|
|
47
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
|
48
|
+
|
|
49
|
+
rdoc.rdoc_dir = 'rdoc'
|
|
50
|
+
rdoc.title = "kete_translatable_content #{version}"
|
|
51
|
+
rdoc.rdoc_files.include('README*')
|
|
52
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
|
53
|
+
end
|
data/VERSION
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.1.0
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<div class="form-element">
|
|
2
|
+
<label><%=t 'baskets.appearance.additional_footer_content' %></label>
|
|
3
|
+
<fieldset>
|
|
4
|
+
<% if current_value_of('additional_footer_content')
|
|
5
|
+
footer_setting = @basket._configurable_settings.find_by_name('additional_footer_content')
|
|
6
|
+
-%>
|
|
7
|
+
<div class="translations-controls">
|
|
8
|
+
<%= available_in_locales_for(footer_setting) -%>
|
|
9
|
+
<%= needed_in_locales_for(footer_setting, :lightbox => true) -%>
|
|
10
|
+
</div>
|
|
11
|
+
<% end -%>
|
|
12
|
+
|
|
13
|
+
<div class="form-element">
|
|
14
|
+
<%= text_area 'settings', 'additional_footer_content', :rows => 7, :cols => 30, :class => 'mceEditor', :value => current_value_of('additional_footer_content') -%>
|
|
15
|
+
</div>
|
|
16
|
+
<div class="form_example">
|
|
17
|
+
<%=t 'baskets.appearance.additional_footer_content_security' %>
|
|
18
|
+
<%=t 'baskets.appearance.additional_footer_content_security_admin' if @site_admin %>
|
|
19
|
+
</div>
|
|
20
|
+
<% if @site_admin -%>
|
|
21
|
+
<div class="form-element">
|
|
22
|
+
<%= check_box 'settings', 'do_not_sanitize_footer_content', {:checked => (current_value_of('do_not_sanitize_footer_content') == true), :tabindex => '1'}, 'true', 'false' %>
|
|
23
|
+
<label for="settings_do_not_sanitize_footer_content" class="inline"><%=t 'baskets.appearance.additional_footer_content_exception' %></label><br />
|
|
24
|
+
</div>
|
|
25
|
+
<% end -%>
|
|
26
|
+
<div class="form-element">
|
|
27
|
+
<%= check_box 'settings', 'replace_existing_footer', {:checked => (current_value_of('replace_existing_footer') == true), :tabindex => '1'}, 'true', 'false' -%>
|
|
28
|
+
<label for="settings_replace_existing_footer" class="inline"><%=t 'baskets.appearance.additional_footer_content_replace' %></label>
|
|
29
|
+
<div class="form_example"><%=t 'baskets.appearance.additional_footer_content_replace_example' %></div>
|
|
30
|
+
</div>
|
|
31
|
+
|
|
32
|
+
</fieldset>
|
|
33
|
+
</div>
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<% rss_feed ||= nil %>
|
|
2
|
+
|
|
3
|
+
<div class="basket_rss_feed">
|
|
4
|
+
<% if rss_feed -%>
|
|
5
|
+
<div class="translations-controls">
|
|
6
|
+
<%= available_in_locales_for(rss_feed) -%>
|
|
7
|
+
<%= needed_in_locales_for(rss_feed, :lightbox => true) -%>
|
|
8
|
+
</div>
|
|
9
|
+
<% end -%>
|
|
10
|
+
<table>
|
|
11
|
+
<tr>
|
|
12
|
+
<th title="<%= t('baskets.rss_feed.title_description') %>"><%= t('baskets.rss_feed.title') %></th>
|
|
13
|
+
<td colspan="3">
|
|
14
|
+
<%= text_field_tag "#{field_name_prefix}[][title]", (rss_feed.title if rss_feed), :size => 45 %>
|
|
15
|
+
<span class="remove_feed_link_span"></span>
|
|
16
|
+
<% remove_feed_link = link_to(t('baskets.rss_feed.remove_feed'), '#', :class => 'remove_feed_link') %>
|
|
17
|
+
<%= javascript_tag("
|
|
18
|
+
$$('.remove_feed_link_span').last().update(#{::ActiveSupport::JSON.encode(remove_feed_link)});
|
|
19
|
+
$$('.remove_feed_link').last().observe('click', function(event) {
|
|
20
|
+
this.up('div.basket_rss_feed').remove(); event.stop();
|
|
21
|
+
});") %>
|
|
22
|
+
</td>
|
|
23
|
+
</tr>
|
|
24
|
+
<tr>
|
|
25
|
+
<th title="<%= t('baskets.rss_feed.url_description') %>"><%= t('baskets.rss_feed.url') %></th>
|
|
26
|
+
<td colspan="3"><%= text_field_tag "#{field_name_prefix}[][url]", (rss_feed.url if rss_feed), :size => 45 %></td>
|
|
27
|
+
</tr>
|
|
28
|
+
<tr>
|
|
29
|
+
<th title="<%= t('baskets.rss_feed.limit_description') %>"><%= t('baskets.rss_feed.limit') %></th>
|
|
30
|
+
<td>
|
|
31
|
+
<%= text_field_tag "#{field_name_prefix}[][limit]", (rss_feed.limit if rss_feed), :size => 4 %>
|
|
32
|
+
(<%= t('baskets.rss_feed.optional') %>)
|
|
33
|
+
</td>
|
|
34
|
+
|
|
35
|
+
<th title="<%= t('baskets.rss_feed.update_frequency_description') %>"><%= t('baskets.rss_feed.update_frequency') %></th>
|
|
36
|
+
<td>
|
|
37
|
+
<%= text_field_tag "#{field_name_prefix}[][update_frequency]", (rss_feed.update_frequency if rss_feed), :size => 4 %>
|
|
38
|
+
(<%= t('baskets.rss_feed.in_minutes') %> - <%= t('baskets.rss_feed.optional') %>)
|
|
39
|
+
</td>
|
|
40
|
+
</tr>
|
|
41
|
+
</table>
|
|
42
|
+
</div>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<% if @basket.index_page_extra_side_bar_html.present? -%>
|
|
2
|
+
<div class="translations-controls">
|
|
3
|
+
<%= available_in_locales_for(@basket) -%>
|
|
4
|
+
<%= needed_in_locales_for(@basket, :lightbox => true) -%>
|
|
5
|
+
</div>
|
|
6
|
+
<% end -%>
|
|
7
|
+
<div class="form-element">
|
|
8
|
+
<%= form.text_area :index_page_extra_side_bar_html, {:class => "mceEditor", :cols => 120, :rows => 10, :tabindex => '1'} %>
|
|
9
|
+
</div>
|
|
10
|
+
<div class="form_example">
|
|
11
|
+
<%=t 'baskets.homepage_form.security_warning' %>
|
|
12
|
+
<%=t 'baskets.homepage_form.security_warning_admin' if @site_admin %>
|
|
13
|
+
</div>
|
|
14
|
+
<% if @site_admin -%>
|
|
15
|
+
<div class="form-element">
|
|
16
|
+
<%= form.check_box :do_not_sanitize, :tabindex => '1' %>
|
|
17
|
+
<label for="basket_do_not_sanitize" class="inline"><%=t 'baskets.homepage_form.security_exception_example' %></label><br />
|
|
18
|
+
</div>
|
|
19
|
+
<% end -%>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<div id="<%= h(@section) -%>">
|
|
2
|
+
<% if flash[:error].present? -%>
|
|
3
|
+
<div><%=h flash[:error] %></div>
|
|
4
|
+
<% end -%>
|
|
5
|
+
<fieldset>
|
|
6
|
+
<% form_remote_tag :url => { :action => 'update', :section => @section } do %>
|
|
7
|
+
<% for @setting in @settings -%>
|
|
8
|
+
<% if @setting.name != 'Is Configured' and (@advanced or !@setting.technically_advanced) -%>
|
|
9
|
+
<%= error_messages_for :setting %>
|
|
10
|
+
<div class="form-element">
|
|
11
|
+
<% if Kete.is_configured? && @setting.takes_translations? -%>
|
|
12
|
+
<div id="translations-links">
|
|
13
|
+
<%= available_in_locales_for(@setting) -%>
|
|
14
|
+
<%= needed_in_locales_for(@setting, :lightbox => false) -%>
|
|
15
|
+
</div>
|
|
16
|
+
<% end -%>
|
|
17
|
+
<label <% if @setting.required_to_be_configured -%>class="required" <% end -%>for="@setting"><%= h(@setting.name) -%>:</label><br />
|
|
18
|
+
<% fields_for "setting[]" do |f| %>
|
|
19
|
+
<%= f.text_field :value %>
|
|
20
|
+
<div class="form_example">
|
|
21
|
+
<%= @setting.explanation %>
|
|
22
|
+
</div>
|
|
23
|
+
<% end -%>
|
|
24
|
+
</div>
|
|
25
|
+
<% else -%>
|
|
26
|
+
<% fields_for "setting[]" do |f| %>
|
|
27
|
+
<%= f.hidden_field :value %>
|
|
28
|
+
<% end -%>
|
|
29
|
+
<% end -%>
|
|
30
|
+
|
|
31
|
+
<% end -%>
|
|
32
|
+
<p><%= submit_tag t('configure.section.save') %>
|
|
33
|
+
<%= link_to_close_redbox t('configure.section.cancel') if IS_CONFIGURED %></p>
|
|
34
|
+
<% end -%>
|
|
35
|
+
</fieldset>
|
|
36
|
+
</div>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= render :file => 'layouts/application' %>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<% style_classes ||= nil -%>
|
|
2
|
+
<div id="content-wrapper" <%= " class=\"#{style_classes}\"" unless style_classes.blank? %>>
|
|
3
|
+
<% if show_basket_list_naviation_menu? -%>
|
|
4
|
+
<div id="basket-list-column">
|
|
5
|
+
<div class="secondary-content-section-wrapper basket-list-column">
|
|
6
|
+
<div id="basket-list-column-content" class="secondary-content-section">
|
|
7
|
+
<h2 class="basket-list-headline"><%=t 'topics.content_wrapper_start.baskets' %></h2>
|
|
8
|
+
<%= render_baskets_as_menu %>
|
|
9
|
+
<div class="secondary-content-section-footer-wrapper"><div class="secondary-content-section-footer"> </div></div>
|
|
10
|
+
</div>
|
|
11
|
+
</div>
|
|
12
|
+
</div>
|
|
13
|
+
<% end -%>
|
|
14
|
+
<div id="main-content-wrapper">
|
|
15
|
+
<div id="main-content-container">
|
|
16
|
+
<a name="main-content"></a>
|
|
17
|
+
<% if !%w(configure topics images video audio documents web_links comments).include?(params[:controller]) && kete_translatable_content? && !['appearance', 'homepage_options'].include?(params[:action]) -%>
|
|
18
|
+
<div id="translate-controls">
|
|
19
|
+
<%= available_in_locales_for(current_translatable_record) -%>
|
|
20
|
+
<%= needed_in_locales_for(current_translatable_record, :lightbox => true) -%>
|
|
21
|
+
</div>
|
|
22
|
+
<% elsif %w(topics images video audio documents web_links).include?(params[:controller]) && kete_translatable_content? -%>
|
|
23
|
+
<%= combined_tranlation_links -%>
|
|
24
|
+
<% end -%>
|
|
25
|
+
|
|
26
|
+
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
<% translatable = @translatable.present? ? @translatable : @translated
|
|
2
|
+
translatable_attributes = translatable.translatable_attributes -%>
|
|
3
|
+
|
|
4
|
+
<%= I18n.t('translations.form.instructions') if @translation.new_record? -%>
|
|
5
|
+
|
|
6
|
+
<h2 style="margin:0 0 10px 0;">
|
|
7
|
+
<%= I18n.t('translations.form.translate_from_and_to',
|
|
8
|
+
:from => TranslationsHelper::available_locales[translatable.original_locale],
|
|
9
|
+
:to => TranslationsHelper::available_locales[h(@translation.locale)]) %>
|
|
10
|
+
</h2>
|
|
11
|
+
|
|
12
|
+
<%= form.error_messages %>
|
|
13
|
+
<%= form.hidden_field :locale %>
|
|
14
|
+
<%= hidden_field_tag :version, params[:version] if params[:version] %>
|
|
15
|
+
|
|
16
|
+
<!-- Use a table instead of floated divs because it gives better results in IE -->
|
|
17
|
+
<table style="width: 98%;">
|
|
18
|
+
<tr>
|
|
19
|
+
<th colspan="2" style="width: 48%;">
|
|
20
|
+
<h3 style="margin:0 0 10px 0;"><%= TranslationsHelper::available_locales[translatable.original_locale] %></h3>
|
|
21
|
+
</th>
|
|
22
|
+
<th rowspan="<%= translatable_attributes.size + 1 %>" style="width:1px; border-left: 1px solid #000; padding: 0; margin: 0"></th>
|
|
23
|
+
<th colspan="3" style="width: 48%;">
|
|
24
|
+
<h3 style="margin:0 0 10px 0;"><%= TranslationsHelper::available_locales[@translation.locale] %></h3>
|
|
25
|
+
</th>
|
|
26
|
+
</tr>
|
|
27
|
+
|
|
28
|
+
<% @untranslated_values_with_localized_labels = untranslated_values_with_localized_labels
|
|
29
|
+
@old_translation = translatable.translation_for(params[:to_locale]) -%>
|
|
30
|
+
|
|
31
|
+
<% translatable_attributes.each do |attribute_key| %>
|
|
32
|
+
<tr>
|
|
33
|
+
<% untranslated_value = @untranslated_values_with_localized_labels.find { |l| l[:attribute_key] == attribute_key }
|
|
34
|
+
locals = { :form => form, :untranslated_value => untranslated_value } %>
|
|
35
|
+
<%= render 'translatable_value', locals %>
|
|
36
|
+
<% if untranslated_value[:value].present? -%>
|
|
37
|
+
<%= render 'translation_field', locals.merge(:attribute_key => attribute_key) %>
|
|
38
|
+
<% else -%>
|
|
39
|
+
<td colspan="3" class="translatable_label_and_field" valign="top" style="padding: 5px;">
|
|
40
|
+
<%= I18n.t('translations.form.original_has_no_value') -%>
|
|
41
|
+
</td>
|
|
42
|
+
<% end -%>
|
|
43
|
+
</tr>
|
|
44
|
+
<% end %>
|
|
45
|
+
</table>
|
|
46
|
+
|
|
47
|
+
<div class="make_translation" style="text-align: center; margin-top: 20px; width: 98%;">
|
|
48
|
+
<%= form.submit @button_text %>
|
|
49
|
+
</div>
|
|
50
|
+
|
|
51
|
+
<div class="translate_links" style="margin-top: 20px;">
|
|
52
|
+
<%= available_in_locales_for(@original, :lightbox => request.xhr?) %>
|
|
53
|
+
<%= needed_in_locales_for(@original, :lightbox => request.xhr?) %>
|
|
54
|
+
</div>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<% value = untranslated_value[:value]
|
|
2
|
+
is_multiple = value.is_a?(Array) ? true : false -%>
|
|
3
|
+
|
|
4
|
+
<% if translatable_field_a_text_area?(form, untranslated_value[:attribute_key]) %>
|
|
5
|
+
|
|
6
|
+
<td colspan="2" class="original_label_and_value" valign="top" style="padding: 5px;">
|
|
7
|
+
<%= h(untranslated_value[:localized_label]) -%><br />
|
|
8
|
+
<% if [:description,
|
|
9
|
+
:index_page_extra_side_bar_html].include?(untranslated_value[:attribute_key]) ||
|
|
10
|
+
(form.object.translatable_class == ConfigurableSetting && form.object.translatable.name == 'additional_footer_content') -%>
|
|
11
|
+
<%= value = sanitize(value) -%>
|
|
12
|
+
<% else -%>
|
|
13
|
+
<% if is_multiple -%>
|
|
14
|
+
<% values = value.collect { |v| h(v) } -%>
|
|
15
|
+
<%= values.to_sentence -%>
|
|
16
|
+
<% else -%>
|
|
17
|
+
<%= h(value) -%>
|
|
18
|
+
<% end -%>
|
|
19
|
+
<% end -%>
|
|
20
|
+
</td>
|
|
21
|
+
|
|
22
|
+
<% else %>
|
|
23
|
+
|
|
24
|
+
<td class="original_label" valign="top" style="width: 10%; padding: 5px;">
|
|
25
|
+
<%= h(untranslated_value[:localized_label]) -%>
|
|
26
|
+
</td>
|
|
27
|
+
<td class="original_value" valign="top" style="padding: 5px;">
|
|
28
|
+
<% if is_multiple -%>
|
|
29
|
+
<% values = value.collect { |v| h(v) } -%>
|
|
30
|
+
<%= values.to_sentence -%>
|
|
31
|
+
<% else -%>
|
|
32
|
+
<%= h(value) -%>
|
|
33
|
+
<% end -%>
|
|
34
|
+
</td>
|
|
35
|
+
|
|
36
|
+
<% end %>
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
<% is_multiple = false
|
|
2
|
+
class_key = form.object.translatable.class.as_foreign_key_sym.to_s.sub('_id', '')
|
|
3
|
+
multiple_field_name = class_key + '_translation' + "[#{attribute_key}][]"
|
|
4
|
+
starting_value = nil
|
|
5
|
+
-%>
|
|
6
|
+
|
|
7
|
+
<%# Override to add the mceEditor class to the textarea tag for certain fields %>
|
|
8
|
+
|
|
9
|
+
<%# assign the value of the untranslated field if this record is a new object %>
|
|
10
|
+
<% if form.object.new_record?
|
|
11
|
+
if @old_translation.present?
|
|
12
|
+
starting_value = @old_translation.send(attribute_key)
|
|
13
|
+
else
|
|
14
|
+
starting_value = untranslated_value[:value]
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
is_multiple = true if starting_value.is_a?(Array)
|
|
18
|
+
|
|
19
|
+
form.object.send("#{attribute_key}=", starting_value)
|
|
20
|
+
|
|
21
|
+
end
|
|
22
|
+
-%>
|
|
23
|
+
|
|
24
|
+
<% if translatable_field_a_text_area?(form, attribute_key) %>
|
|
25
|
+
<%
|
|
26
|
+
is_tiny_mce_editor = false
|
|
27
|
+
dimensions = {:height => 7, :width => 35 }
|
|
28
|
+
if (ITEM_CLASSES.include?(form.object.translatable_class.name) && attribute_key == :description) ||
|
|
29
|
+
(form.object.translatable_class == Basket && attribute_key == :index_page_extra_side_bar_html) ||
|
|
30
|
+
(form.object.translatable_class == ConfigurableSetting && form.object.translatable.name == 'additional_footer_content')
|
|
31
|
+
is_tiny_mce_editor = true
|
|
32
|
+
dimensions[:height] = 35
|
|
33
|
+
dimensions[:width] = 40
|
|
34
|
+
end
|
|
35
|
+
%>
|
|
36
|
+
|
|
37
|
+
<% if is_multiple -%>
|
|
38
|
+
<% starting_value.each do |instance_value| -%>
|
|
39
|
+
<%= text_area_tag multiple_field_name,
|
|
40
|
+
instance_value,
|
|
41
|
+
:rows => dimensions[:height], :cols => dimensions[:width], :class => ("mceEditor" if is_tiny_mce_editor) %>
|
|
42
|
+
<% end -%>
|
|
43
|
+
<% else -%>
|
|
44
|
+
<%= form.text_area attribute_key, :rows => dimensions[:height], :cols => dimensions[:width], :class => ("mceEditor" if is_tiny_mce_editor) %>
|
|
45
|
+
<% end -%>
|
|
46
|
+
|
|
47
|
+
<% if request.xhr? && is_tiny_mce_editor && !@tiny_mce_editor_initialized %>
|
|
48
|
+
<%= tiny_mce_init %>
|
|
49
|
+
<% @tiny_mce_editor_initialized = true %>
|
|
50
|
+
<% end %>
|
|
51
|
+
|
|
52
|
+
<% else %>
|
|
53
|
+
|
|
54
|
+
<% if is_multiple -%>
|
|
55
|
+
<% starting_value.each do |instance_value| -%>
|
|
56
|
+
<%= text_field_tag multiple_field_name, instance_value %>
|
|
57
|
+
<% end -%>
|
|
58
|
+
<% else -%>
|
|
59
|
+
<%= form.text_field attribute_key %>
|
|
60
|
+
<% end -%>
|
|
61
|
+
<% end %>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<%= render "topics/content_wrapper_start", :style_classes =>"full-width notabs" %>
|
|
2
|
+
|
|
3
|
+
<table style="width:100%;">
|
|
4
|
+
<% untranslated_values_with_localized_labels.each do |translatable_value| %>
|
|
5
|
+
<tr><%= render 'translatable_value', :translatable_value => translatable_value -%></tr>
|
|
6
|
+
<% end %>
|
|
7
|
+
</table>
|
|
8
|
+
|
|
9
|
+
<%= link_to(t('translations.show.edit'), { :id => h(@translation.locale), :action => :edit }) %> |
|
|
10
|
+
<%= link_to(t('translations.show.translations'), { :action => :index }) %>
|
|
11
|
+
|
|
12
|
+
<%= render(:partial => "topics/content_wrapper_end" ) %>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<% @button_text = t("translations.edit.update") -%>
|
|
2
|
+
|
|
3
|
+
<% args = @translation.new_record? ? {} : {:url => { :action => :update,
|
|
4
|
+
@translatable_key => @translated, :id => @translation.locale }}%>
|
|
5
|
+
<% form_for(@translation, args) do |f| %>
|
|
6
|
+
|
|
7
|
+
<%= render :partial => f -%>
|
|
8
|
+
|
|
9
|
+
<% end %>
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
en:
|
|
2
|
+
translations:
|
|
3
|
+
form:
|
|
4
|
+
instructions: "<h3>Translate this page:</h3>
|
|
5
|
+
<ol>
|
|
6
|
+
<li>Replace the original text on the right-hand side with your translation.</li>
|
|
7
|
+
<li>Click 'Create' at the bottom of the page to save.</li>
|
|
8
|
+
</ol>"
|
|
9
|
+
available_in: "Available in:"
|
|
10
|
+
old: "Old"
|
|
11
|
+
are_you_sure_for_item_edit: "Are you sure you would like to edit this item?\n\nIf you would like to edit the item's translation, please use the 'edit' link by the translation's language name instead."
|
|
12
|
+
baskets:
|
|
13
|
+
form:
|
|
14
|
+
index_page_extra_side_bar_html: "Homepage Options - Side Bar HTML:"
|
|
15
|
+
name: "Name:"
|
|
16
|
+
choices:
|
|
17
|
+
form:
|
|
18
|
+
label: "Label:"
|
|
19
|
+
configurable_settings:
|
|
20
|
+
form:
|
|
21
|
+
value: "Value:"
|
|
22
|
+
extended_fields:
|
|
23
|
+
form:
|
|
24
|
+
example: "Example:"
|
|
25
|
+
label: "Label:"
|
|
26
|
+
feeds:
|
|
27
|
+
form:
|
|
28
|
+
title: "Title:"
|
|
29
|
+
kete_translatable:
|
|
30
|
+
only_edit_original_locale: "You can only edit the original locale."
|
|
31
|
+
licenses:
|
|
32
|
+
form:
|
|
33
|
+
description: "Description:"
|
|
34
|
+
name: "Name:"
|
|
35
|
+
search_helper:
|
|
36
|
+
tag_show_link_options:
|
|
37
|
+
title_with_translations: "Information about and translations for the {{t.base.tag}} {{tag_name}}. "
|
|
38
|
+
search_sources:
|
|
39
|
+
form:
|
|
40
|
+
source_credit: "Source Credit:"
|
|
41
|
+
title: "Title:"
|
|
42
|
+
system_settings:
|
|
43
|
+
form:
|
|
44
|
+
value: "{{t.base.value}}"
|
|
45
|
+
tags:
|
|
46
|
+
form:
|
|
47
|
+
name: "Tag Name:"
|
|
48
|
+
topic_types:
|
|
49
|
+
form:
|
|
50
|
+
description: "Description:"
|
|
51
|
+
name: "Name:"
|