Edition of page part for multiple languages.
This commit is contained in:
parent
0969f6b6cc
commit
2522cde2f5
2
Gemfile
2
Gemfile
|
@ -12,6 +12,8 @@ gem 'mini_magick'
|
||||||
|
|
||||||
gem 'mongoid', '2.0.0'
|
gem 'mongoid', '2.0.0'
|
||||||
|
|
||||||
|
gem 'rake', '0.8.7'
|
||||||
|
|
||||||
# To use debugger (ruby-debug for Ruby 1.8.7+, ruby-debug19 for Ruby 1.9.2+)
|
# To use debugger (ruby-debug for Ruby 1.8.7+, ruby-debug19 for Ruby 1.9.2+)
|
||||||
# gem 'ruby-debug'
|
# gem 'ruby-debug'
|
||||||
# gem 'ruby-debug19'
|
# gem 'ruby-debug19'
|
||||||
|
|
|
@ -36,7 +36,7 @@ GEM
|
||||||
carrierwave (0.5.4)
|
carrierwave (0.5.4)
|
||||||
activesupport (~> 3.0)
|
activesupport (~> 3.0)
|
||||||
chronic (0.3.0)
|
chronic (0.3.0)
|
||||||
ckeditor (3.5.3)
|
ckeditor (3.5.4)
|
||||||
mime-types (>= 1.16)
|
mime-types (>= 1.16)
|
||||||
delorean (1.0.0)
|
delorean (1.0.0)
|
||||||
chronic
|
chronic
|
||||||
|
@ -88,7 +88,7 @@ GEM
|
||||||
activesupport (= 3.0.6)
|
activesupport (= 3.0.6)
|
||||||
rake (>= 0.8.7)
|
rake (>= 0.8.7)
|
||||||
thor (~> 0.14.4)
|
thor (~> 0.14.4)
|
||||||
rake (0.9.0)
|
rake (0.8.7)
|
||||||
rcov (0.9.9)
|
rcov (0.9.9)
|
||||||
rspec (2.6.0)
|
rspec (2.6.0)
|
||||||
rspec-core (~> 2.6.0)
|
rspec-core (~> 2.6.0)
|
||||||
|
@ -129,6 +129,7 @@ DEPENDENCIES
|
||||||
mongoid (= 2.0.0)
|
mongoid (= 2.0.0)
|
||||||
nokogiri
|
nokogiri
|
||||||
rails (= 3.0.6)
|
rails (= 3.0.6)
|
||||||
|
rake (= 0.8.7)
|
||||||
rcov
|
rcov
|
||||||
rspec (~> 2.0)
|
rspec (~> 2.0)
|
||||||
rspec-rails (~> 2.0)
|
rspec-rails (~> 2.0)
|
||||||
|
|
|
@ -22,6 +22,14 @@ class Admin::PagePartsController < ApplicationController
|
||||||
|
|
||||||
def edit
|
def edit
|
||||||
@part = PagePart.find(params[:id])
|
@part = PagePart.find(params[:id])
|
||||||
|
case @part.kind
|
||||||
|
when 'text'
|
||||||
|
@i18n_variable = @part.i18n_variable
|
||||||
|
@partial = 'edit_text'
|
||||||
|
@part_locale = params[:part_locale] || I18n.locale.to_s
|
||||||
|
when 'module'
|
||||||
|
when 'snippet'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
|
|
|
@ -6,7 +6,24 @@ class PagePart
|
||||||
field :name
|
field :name
|
||||||
field :content
|
field :content
|
||||||
field :kind
|
field :kind
|
||||||
|
field :i18n_variable_id, :type => BSON::ObjectId
|
||||||
|
|
||||||
belongs_to :page
|
belongs_to :page
|
||||||
|
|
||||||
|
# Get the i18n_variable
|
||||||
|
def i18n_variable
|
||||||
|
@i18n_variable ||= I18nVariable.find(self.i18n_variable_id) rescue nil
|
||||||
|
end
|
||||||
|
|
||||||
|
# Update or create the i18n_variable record
|
||||||
|
def i18n_variable=(attr)
|
||||||
|
if self.i18n_variable_id
|
||||||
|
self.i18n_variable.update_attributes(attr)
|
||||||
|
else
|
||||||
|
var = I18nVariable.new(attr.merge({:key => self.key, :document_class => self.class, :parent_id => self.page.i18n_variable_id}))
|
||||||
|
var.save
|
||||||
|
self.i18n_variable_id = var.id
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
|
@ -1,10 +0,0 @@
|
||||||
<%= flash_messages %>
|
|
||||||
|
|
||||||
<%= form_for @part, :url => admin_page_part_path(@part), :html => { :class => 'form' } do |f| %>
|
|
||||||
|
|
||||||
<%= render :partial => "admin/page_parts/form", :locals => { :f => f } %>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
<%= f.submit t(:update) %> <%= link_back %>
|
|
||||||
</p>
|
|
||||||
<% end %>
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
<%= flash_messages %>
|
||||||
|
|
||||||
|
<%= render 'language_bar' %>
|
||||||
|
|
||||||
|
|
||||||
|
<%= form_for @part, :url => admin_page_part_path(@part), :html => { :class => 'form' } do |f| %>
|
||||||
|
<%= fields_for "page_part[i18n_variable]", @i18n_variable, :index => nil do |f| %>
|
||||||
|
<% @site_valid_locales.each do |locale| %>
|
||||||
|
<div class="ckeditor_locale" style="display:<%= @part_locale.eql?(locale) ? 'block' : 'none' %>">
|
||||||
|
<%= render :partial => "admin/page_parts/form", :locals => { :f => f, :locale => locale } %>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
<p>
|
||||||
|
<%= f.submit t(:update) %> <%= link_back %>
|
||||||
|
</p>
|
||||||
|
<% end %>
|
|
@ -1,3 +1,3 @@
|
||||||
<%= f.error_messages %>
|
<%= f.error_messages %>
|
||||||
|
|
||||||
<%= f.cktext_area :content, :toolbar=>'Full', :width=>'700px', :height=>'200px' %>
|
<%= f.cktext_area locale, :toolbar=>'Full', :width=>'700px', :height=>'200px'%>
|
|
@ -0,0 +1,7 @@
|
||||||
|
<%= raw(VALID_LOCALES.map{ |locale|
|
||||||
|
if @part_locale.to_s.eql?(locale)
|
||||||
|
t(:_locale, :locale => locale)
|
||||||
|
else
|
||||||
|
link_to t(:_locale, :locale => locale), edit_admin_page_part_path(@part, :part_locale => locale), :class => 'reload'
|
||||||
|
end
|
||||||
|
}.join(' | ')) %>
|
|
@ -2,4 +2,4 @@
|
||||||
<div id='sidebar'><%= render 'admin/items/site_map_left_bar' %></div>
|
<div id='sidebar'><%= render 'admin/items/site_map_left_bar' %></div>
|
||||||
<% end -%>
|
<% end -%>
|
||||||
|
|
||||||
<%= render 'edit' %>
|
<%= render @partial %>
|
|
@ -1 +1 @@
|
||||||
$('#main').html("<%= escape_javascript(render(:partial => 'edit')) %>");
|
$('#main').html("<%= escape_javascript(render(:partial => @partial)) %>");
|
|
@ -182,7 +182,7 @@ module Parser
|
||||||
ret << "<div class='edit_link' style='display:none'>" if part
|
ret << "<div class='edit_link' style='display:none'>" if part
|
||||||
ret << " <a href='#{edit_admin_page_part_path(part.id)}' class='nav'>#{t(:edit)}</a>" if part
|
ret << " <a href='#{edit_admin_page_part_path(part.id)}' class='nav'>#{t(:edit)}</a>" if part
|
||||||
ret << '</div>' if part
|
ret << '</div>' if part
|
||||||
ret << part.content rescue ''
|
ret << part.i18n_variable[I18n.locale.to_s] rescue ''
|
||||||
ret << tag.expand
|
ret << tag.expand
|
||||||
ret << '</div>'
|
ret << '</div>'
|
||||||
end
|
end
|
||||||
|
|
|
@ -31,6 +31,8 @@ namespace :dev do
|
||||||
var_10 = I18nVariable.create!( :document_class => 'Home', :key => 'home', :en => 'Homepage', :zh_tw => '首頁')
|
var_10 = I18nVariable.create!( :document_class => 'Home', :key => 'home', :en => 'Homepage', :zh_tw => '首頁')
|
||||||
var_11 = I18nVariable.create!( :document_class => 'Page', :key => 'about', :en => 'About', :zh_tw => '關於我們' )
|
var_11 = I18nVariable.create!( :document_class => 'Page', :key => 'about', :en => 'About', :zh_tw => '關於我們' )
|
||||||
var_12 = I18nVariable.create!( :document_class => 'Link', :key => 'google', :en => 'Google', :zh_tw => 'Google' )
|
var_12 = I18nVariable.create!( :document_class => 'Link', :key => 'google', :en => 'Google', :zh_tw => 'Google' )
|
||||||
|
var_13 = I18nVariable.create!( :document_class => 'PagePart', :key => 'main_content', :en => 'This is the homepage', :zh_tw => '這是首頁', :parent_id => var_10.id )
|
||||||
|
var_14 = I18nVariable.create!( :document_class => 'PagePart', :key => 'main_content', :en => 'This is about', :zh_tw => '這是關於', :parent_id => var_11.id )
|
||||||
|
|
||||||
|
|
||||||
# TODO: modify for the new model
|
# TODO: modify for the new model
|
||||||
|
@ -54,10 +56,10 @@ namespace :dev do
|
||||||
layout.layout_parts.create!( :name => 'footer', :content => "<r:snippet name='footer' />" )
|
layout.layout_parts.create!( :name => 'footer', :content => "<r:snippet name='footer' />" )
|
||||||
|
|
||||||
home = Page.create!( :i18n_variable_id => var_10.id, :layout_id => layout.id, :name => 'home', :is_published => true )
|
home = Page.create!( :i18n_variable_id => var_10.id, :layout_id => layout.id, :name => 'home', :is_published => true )
|
||||||
home.page_parts.create!( :name => 'main_content', :content => "<r:locale en='This is the homepage' zh_tw='這是首頁' />" )
|
home.page_parts.create!( :name => 'main_content', :content => "<r:locale en='This is the homepage' zh_tw='這是首頁' />", :kind => 'text', :i18n_variable_id => var_13.id )
|
||||||
|
|
||||||
about = Page.create!( :i18n_variable_id => var_11.id, :layout_id => layout.id, :name => 'about', :is_published => true, :parent_id => home.id )
|
about = Page.create!( :i18n_variable_id => var_11.id, :layout_id => layout.id, :name => 'about', :is_published => true, :parent_id => home.id )
|
||||||
about.page_parts.create!( :name => 'main_content', :content => "This is about" )
|
about.page_parts.create!( :name => 'main_content', :content => "<r:locale en='This is about' zh_tw='這是關於' />", :kind => 'text', :i18n_variable_id => var_14.id )
|
||||||
|
|
||||||
Link.create!( :i18n_variable_id => var_12.id, :name => 'google', :is_published => true, :parent_id => home.id, :url => 'www.google.com' )
|
Link.create!( :i18n_variable_id => var_12.id, :name => 'google', :is_published => true, :parent_id => home.id, :url => 'www.google.com' )
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,14 @@ $(function () {
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$('#main a.reload').live('click',
|
||||||
|
function () {
|
||||||
|
$.getScript(this.href);
|
||||||
|
history.replaceState(null, document.title, this.href);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
$('.form').live('submit', function () {
|
$('.form').live('submit', function () {
|
||||||
$.post(this.action, $(this).serialize(), null, 'script');
|
$.post(this.action, $(this).serialize(), null, 'script');
|
||||||
return false;
|
return false;
|
||||||
|
|
Reference in New Issue