diff --git a/Gemfile.lock b/Gemfile.lock index d5a957c1..239cacf8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -17,10 +17,10 @@ GIT GIT remote: git://github.com/locomotivecms/custom_fields.git - revision: ec157c3941d1530eb49d08ee385d25c3d3f34f15 + revision: e54c3ddfce0e24668d02c372c6143a722718e215 branch: 2.0.0.rc specs: - custom_fields (2.0.0.rc7) + custom_fields (2.0.0.rc8) activesupport (~> 3.2.1) carrierwave-mongoid (~> 0.1.3) mongoid (~> 2.4.5) @@ -36,7 +36,7 @@ PATH carrierwave-mongoid (~> 0.1.3) cells (~> 3.8.0) codemirror-rails (~> 2.21) - custom_fields (~> 2.0.0.rc7) + custom_fields (~> 2.0.0.rc8) devise (~> 1.5.3) dragonfly (~> 0.9.8) flash_cookie_session (~> 1.1.1) @@ -146,7 +146,7 @@ GEM orm_adapter (~> 0.0.3) warden (~> 1.1) diff-lcs (1.1.3) - dragonfly (0.9.10) + dragonfly (0.9.11) rack ejs (1.0.0) erubis (2.7.0) @@ -217,7 +217,7 @@ GEM mongo (~> 1.3) tzinfo (~> 0.3.22) multi_json (1.0.4) - multi_xml (0.4.1) + multi_xml (0.4.2) net-scp (1.0.4) net-ssh (>= 1.99.1) net-ssh (2.3.0) diff --git a/app/assets/stylesheets/locomotive/backoffice/application.css.scss b/app/assets/stylesheets/locomotive/backoffice/application.css.scss index 4a63465f..9ade96b2 100644 --- a/app/assets/stylesheets/locomotive/backoffice/application.css.scss +++ b/app/assets/stylesheets/locomotive/backoffice/application.css.scss @@ -78,6 +78,12 @@ ul.list { outline: none; } + span.untranslated { + @include label; + top: -1px; + left: 5px; + } + div.more { position: absolute; top: 0px; @@ -212,6 +218,12 @@ ul.list { &.hidden a { font-style: italic; font-weight: normal; } + span.untranslated { + @include label; + top: 3px; + left: 5px; + } + .more { position: absolute; top: 0px; diff --git a/app/assets/stylesheets/locomotive/shared/_helpers.css.scss b/app/assets/stylesheets/locomotive/shared/_helpers.css.scss index 75679908..9de05fa0 100644 --- a/app/assets/stylesheets/locomotive/shared/_helpers.css.scss +++ b/app/assets/stylesheets/locomotive/shared/_helpers.css.scss @@ -55,3 +55,18 @@ border-bottom: 1px dotted #efe4a5; } } + +@mixin label { + display: inline-block; + position: relative; + + background-color: #858585; + @include border-radius(3px); + padding: 1px 3px 2px; + + line-height: 16px; + font-size: 11px; + font-weight: bold; + color: #fff; + @include single-text-shadow(rgba(0, 0, 0, 0.6), 0px, -1px, 0px); +} diff --git a/app/models/locomotive/content_entry.rb b/app/models/locomotive/content_entry.rb index 9694cf66..adb981f6 100644 --- a/app/models/locomotive/content_entry.rb +++ b/app/models/locomotive/content_entry.rb @@ -48,6 +48,14 @@ module Locomotive value.respond_to?(:to_label) ? value.to_label : value end + def translated? + if self.respond_to?(:"#{self._label_field_name}_translations") + self.send(:"#{self._label_field_name}_translations").key?(::Mongoid::Fields::I18n.locale.to_s) #rescue false + else + true + end + end + def next next_or_previous :gt end diff --git a/app/models/locomotive/extensions/site/locales.rb b/app/models/locomotive/extensions/site/locales.rb index c84f41ae..df1a5cf6 100644 --- a/app/models/locomotive/extensions/site/locales.rb +++ b/app/models/locomotive/extensions/site/locales.rb @@ -12,7 +12,6 @@ module Locomotive ## callbacks ## after_validation :add_default_locale - # after_validation :add_missing_locales_for_all_pages end diff --git a/app/models/locomotive/page.rb b/app/models/locomotive/page.rb index cbd01c16..a3aaee5d 100644 --- a/app/models/locomotive/page.rb +++ b/app/models/locomotive/page.rb @@ -71,6 +71,10 @@ module Locomotive self.cache_strategy != 'none' end + def translated? + self.title_translations.key?(::Mongoid::Fields::I18n.locale.to_s) rescue false + end + def to_liquid Locomotive::Liquid::Drops::Page.new(self) end diff --git a/app/views/locomotive/content_entries/_list.html.haml b/app/views/locomotive/content_entries/_list.html.haml index 373144fe..8cd7a2dc 100644 --- a/app/views/locomotive/content_entries/_list.html.haml +++ b/app/views/locomotive/content_entries/_list.html.haml @@ -6,7 +6,11 @@ %li.item{ :id => "entry-#{entry._id}" } %span.handle = image_tag 'locomotive/form/icons/drag.png' + %strong= link_to entry_label(content_type, entry), edit_content_entry_url(content_type.slug, entry) + + - unless entry.translated? + %span.untranslated= t('locomotive.shared.list.untranslated') .more %span != t('locomotive.content_entries.index.updated_at') diff --git a/app/views/locomotive/pages/_page.html.haml b/app/views/locomotive/pages/_page.html.haml index 543864de..ba21b3d7 100644 --- a/app/views/locomotive/pages/_page.html.haml +++ b/app/views/locomotive/pages/_page.html.haml @@ -17,6 +17,9 @@ = link_to truncate(page.title, :length => 80), edit_page_url(page) + - unless page.translated? + %span.untranslated= t('locomotive.shared.list.untranslated') + .more %span!= t('.updated_at') = l page.updated_at, :format => :short diff --git a/config/locales/admin_ui.en.yml b/config/locales/admin_ui.en.yml index 8b246adb..9bad502f 100644 --- a/config/locales/admin_ui.en.yml +++ b/config/locales/admin_ui.en.yml @@ -48,6 +48,8 @@ en: create: Create update: Save send: Send + list: + untranslated: untranslated footer: who_is_behind: "LocomotiveCMS is developed by %{development} and designed by Sacha Greifversion %{version}" diff --git a/config/locales/admin_ui.fr.yml b/config/locales/admin_ui.fr.yml index fef897cc..b4473a7b 100644 --- a/config/locales/admin_ui.fr.yml +++ b/config/locales/admin_ui.fr.yml @@ -48,6 +48,8 @@ fr: account: Mon compte site: Site theme_assets: Fichiers Thème + list: + untranslated: non traduit footer: who_is_behind: "Produit développé par %{development} et désigné par Sacha Greifversion %{version}" form_actions: diff --git a/locomotive_cms.gemspec b/locomotive_cms.gemspec index 11edcd77..77b1c5ff 100755 --- a/locomotive_cms.gemspec +++ b/locomotive_cms.gemspec @@ -30,7 +30,7 @@ Gem::Specification.new do |s| s.add_dependency 'mongoid', '~> 2.4.5' s.add_dependency 'locomotive-mongoid-tree', '~> 0.6.2' - s.add_dependency 'custom_fields', '~> 2.0.0.rc7' + s.add_dependency 'custom_fields', '~> 2.0.0.rc8' s.add_dependency 'kaminari', '~> 0.13.0' diff --git a/spec/models/locomotive/content_entry_spec.rb b/spec/models/locomotive/content_entry_spec.rb index 7f8d29d6..fbe58d6b 100644 --- a/spec/models/locomotive/content_entry_spec.rb +++ b/spec/models/locomotive/content_entry_spec.rb @@ -67,6 +67,27 @@ describe Locomotive::ContentEntry do end end + context '#i18n' do + + before(:each) do + localize_content_type @content_type + ::Mongoid::Fields::I18n.locale = 'en' + @content_entry = build_content_entry(:title => 'Hello world') + ::Mongoid::Fields::I18n.locale = 'fr' + end + + after(:all) do + ::Mongoid::Fields::I18n.locale = 'en' + end + + it 'tells if an entry has been translated or not' do + @content_entry.translated?.should be_false + @content_entry.title = 'Bonjour' + @content_entry.translated?.should be_true + end + + end + describe "#navigation" do before(:each) do @content_type.save @@ -214,8 +235,13 @@ describe Locomotive::ContentEntry do end + def localize_content_type(content_type) + content_type.entries_custom_fields.first.localized = true + content_type.save + end + def build_content_entry(options = {}) - @content_type.entries.build({ :title => 'Locomotive', :description => 'Lorem ipsum....' }.merge(options)) + @content_type.entries.build({ :title => 'Locomotive', :description => 'Lorem ipsum....', :_label_field_name => 'title' }.merge(options)) end def fake_bson_id(id) diff --git a/spec/models/locomotive/page_spec.rb b/spec/models/locomotive/page_spec.rb index 42774b49..61b74544 100644 --- a/spec/models/locomotive/page_spec.rb +++ b/spec/models/locomotive/page_spec.rb @@ -74,6 +74,12 @@ describe Locomotive::Page do @page.errors[:title].should == ["can't be blank"] end + it 'tells if a page has been translated or not' do + @page.translated?.should be_false + @page.title = 'Hello world' + @page.translated?.should be_true + end + end end