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.
Files changed (74) hide show
  1. data/.document +5 -0
  2. data/.gitignore +23 -0
  3. data/LICENSE +295 -0
  4. data/README.rdoc +80 -0
  5. data/README.rdoc.orig +72 -0
  6. data/Rakefile +53 -0
  7. data/VERSION +1 -0
  8. data/app/views/active_scaffold_overrides/_show.html.erb +8 -0
  9. data/app/views/active_scaffold_overrides/_update_form.html.erb +8 -0
  10. data/app/views/active_scaffold_overrides/list.html.erb +5 -0
  11. data/app/views/baskets/_additional_footer_content_fields.html.erb +33 -0
  12. data/app/views/baskets/_rss_feed.html.erb +42 -0
  13. data/app/views/baskets/_side_bar_html.html.erb +19 -0
  14. data/app/views/configure/section.rhtml +36 -0
  15. data/app/views/layouts/translations.html.erb +1 -0
  16. data/app/views/topics/_content_wrapper_start.rhtml +26 -0
  17. data/app/views/translations/_form.html.erb +54 -0
  18. data/app/views/translations/_translatable_value.html.erb +36 -0
  19. data/app/views/translations/_translation_field_input.html.erb +61 -0
  20. data/app/views/translations/show.html.erb +12 -0
  21. data/app/views/translations/versioned_edit.html.erb +9 -0
  22. data/config/locales/en.yml +51 -0
  23. data/config/routes.rb +11 -0
  24. data/config/translatables.yml +65 -0
  25. data/generators/kete_translatable_content_migration/USAGE +2 -0
  26. data/generators/kete_translatable_content_migration/kete_translatable_content_migration_generator.rb +7 -0
  27. data/generators/kete_translatable_content_migration/templates/migration.rb +82 -0
  28. data/generators/kete_translatable_content_tests/USAGE +2 -0
  29. data/generators/kete_translatable_content_tests/kete_translatable_content_tests_generator.rb +38 -0
  30. data/generators/kete_translatable_content_tests/templates/configure_kete_content_translation_controller_and_routes_test.rb +48 -0
  31. data/generators/kete_translatable_content_tests/templates/configure_kete_content_translation_test.rb +47 -0
  32. data/generators/kete_translatable_content_tests/templates/kete_translatable_content_helper_test.rb +19 -0
  33. data/generators/kete_translatable_content_tests/templates/kete_translatable_content_migration_test.rb +45 -0
  34. data/generators/kete_translatable_content_tests/templates/kete_translatable_content_oai_dc_helpers_test.rb +66 -0
  35. data/generators/kete_translatable_content_tests/templates/kete_translatable_content_translations_test.rb +23 -0
  36. data/generators/kete_translatable_content_tests/templates/kete_translations_test.rb +57 -0
  37. data/generators/kete_translatable_content_tests/templates/mongo_factories.rb +6 -0
  38. data/generators/kete_translatable_content_tests/templates/mongo_test_helper.rb +37 -0
  39. data/generators/kete_translatable_content_tests/templates/mongo_translatable_test.rb +262 -0
  40. data/lib/kete_translatable_content.rb +54 -0
  41. data/lib/kete_translatable_content/extensions/controllers/application_controller.rb +202 -0
  42. data/lib/kete_translatable_content/extensions/controllers/audio_controller.rb +7 -0
  43. data/lib/kete_translatable_content/extensions/controllers/baskets_controller.rb +3 -0
  44. data/lib/kete_translatable_content/extensions/controllers/documents_controller.rb +7 -0
  45. data/lib/kete_translatable_content/extensions/controllers/images_controller.rb +7 -0
  46. data/lib/kete_translatable_content/extensions/controllers/topics_controller.rb +7 -0
  47. data/lib/kete_translatable_content/extensions/controllers/translations_controller.rb +209 -0
  48. data/lib/kete_translatable_content/extensions/controllers/video_controller.rb +7 -0
  49. data/lib/kete_translatable_content/extensions/controllers/web_links_controller.rb +7 -0
  50. data/lib/kete_translatable_content/extensions/extended_content_translation.rb +54 -0
  51. data/lib/kete_translatable_content/extensions/helpers/application_helper.rb +156 -0
  52. data/lib/kete_translatable_content/extensions/helpers/extended_fields_helper.rb +17 -0
  53. data/lib/kete_translatable_content/extensions/helpers/search_helper.rb +5 -0
  54. data/lib/kete_translatable_content/extensions/helpers/translations_helper.rb +72 -0
  55. data/lib/kete_translatable_content/extensions/models/audio_recording.rb +12 -0
  56. data/lib/kete_translatable_content/extensions/models/basket.rb +34 -0
  57. data/lib/kete_translatable_content/extensions/models/comment.rb +12 -0
  58. data/lib/kete_translatable_content/extensions/models/document.rb +12 -0
  59. data/lib/kete_translatable_content/extensions/models/still_image.rb +12 -0
  60. data/lib/kete_translatable_content/extensions/models/system_setting.rb +13 -0
  61. data/lib/kete_translatable_content/extensions/models/tag.rb +37 -0
  62. data/lib/kete_translatable_content/extensions/models/topic.rb +12 -0
  63. data/lib/kete_translatable_content/extensions/models/user.rb +36 -0
  64. data/lib/kete_translatable_content/extensions/models/video.rb +12 -0
  65. data/lib/kete_translatable_content/extensions/models/web_link.rb +12 -0
  66. data/lib/kete_translatable_content/extensions/oai_dc_helpers_overrides.rb +99 -0
  67. data/lib/kete_translatable_content/extensions/tagging_controller_overrides.rb +21 -0
  68. data/lib/kete_translatable_content/extensions/tagging_overrides.rb +27 -0
  69. data/lib/kete_translatable_content/extensions/tinymce_controller_valid_action_override.rb +16 -0
  70. data/lib/kete_translatable_content/extensions/translation_from_version.rb +105 -0
  71. data/lib/kete_translatable_content/kete.rb +25 -0
  72. data/lib/kete_translatable_content/overwrites/oai_dc_helpers_test.rb +6 -0
  73. data/rails/init.rb +110 -0
  74. 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,8 @@
1
+ <% if kete_translatable_content? -%>
2
+ <div id="translations-links">
3
+ <%= available_in_locales_for(@record) -%>
4
+ <%= needed_in_locales_for(@record, :lightbox => true) -%>
5
+ </div>
6
+ <% end -%>
7
+
8
+ <%= render :super %>
@@ -0,0 +1,8 @@
1
+ <% if kete_translatable_content? -%>
2
+ <div id="translations-links">
3
+ <%= available_in_locales_for(@record) -%>
4
+ <%= needed_in_locales_for(@record, :lightbox => true) -%>
5
+ </div>
6
+ <% end -%>
7
+
8
+ <%= render :super %>
@@ -0,0 +1,5 @@
1
+ <%# ActiveScaffold uses AJAX to load partials, so we need to do these now, on page load %>
2
+ <%= translatable_lightbox_js_and_css %>
3
+ <%= google_auto_translatable_js %>
4
+
5
+ <%= render :super %>
@@ -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">&nbsp;</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:"