From a571d1dcffc1cc3b0ebfdf92240427a782def7d2 Mon Sep 17 00:00:00 2001 From: chris2tof Date: Thu, 8 Sep 2011 18:12:04 +0800 Subject: [PATCH] Clean code and workaround mongoid embedded with carrierwave --- Gemfile.lock | 2 +- app/assets/javascripts/design_temp.js | 10 ++-- app/controllers/admin/designs_controller.rb | 1 - app/models/design/design.rb | 24 +++++----- app/models/design/layout.rb | 2 +- app/views/admin/designs/_design_file.html.erb | 34 +++++-------- app/views/admin/designs/_form.html.erb | 48 ++++++++++--------- 7 files changed, 55 insertions(+), 66 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 74e4c8c1..338256e6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -80,7 +80,7 @@ GEM subexec (~> 0.1.0) mongo (1.3.1) bson (>= 1.3.1) - mongoid (2.1.9) + mongoid (2.2.0) activemodel (~> 3.0) mongo (~> 1.3) tzinfo (~> 0.3.22) diff --git a/app/assets/javascripts/design_temp.js b/app/assets/javascripts/design_temp.js index b2aca4b1..ff19da16 100644 --- a/app/assets/javascripts/design_temp.js +++ b/app/assets/javascripts/design_temp.js @@ -59,9 +59,9 @@ $(".r_snapshot").live({ ); $('input.multi_files').live("change", function(){ - $(this).parent().prev("ul").append("
  • "+$(this).val()+"
  • "); - new_node =$(this).parent().clone(); - $(this).css("display","none"); + $(this).parent().prev("ul").append("
  • " + $(this).val() + "
  • "); + new_node = $(this).parent().clone(); + $(this).parent().css("display","none"); new_node.children('input.multi_files').val(""); $(this).parent().before(new_node); }); @@ -69,8 +69,8 @@ $('input.multi_files').live("change", function(){ $('a.remove_mark').live("click",function(){ $(this).prev("input").val("true"); $(this).parent().css("text-decoration","line-through") - $(this).parent("li").removeClass("r_snapshot"); - $(this).next("span").remove(); + $(this).parent().removeClass("r_snapshot"); + $(this).next().remove(); $(this).remove(); return false; }); diff --git a/app/controllers/admin/designs_controller.rb b/app/controllers/admin/designs_controller.rb index ef4be863..932c855b 100644 --- a/app/controllers/admin/designs_controller.rb +++ b/app/controllers/admin/designs_controller.rb @@ -32,7 +32,6 @@ class Admin::DesignsController < ApplicationController end def update - params[:design][:existing_task_attributes] ||= {} @design = Design.find(params[:id]) if @design.update_attributes(params[:design]) flash[:notice] = "Successfully updated design and tasks." diff --git a/app/models/design/design.rb b/app/models/design/design.rb index f4c637f5..9346c175 100644 --- a/app/models/design/design.rb +++ b/app/models/design/design.rb @@ -38,16 +38,14 @@ class Design # Update or create the attribute_model records def files=(attrs) case attrs.last - when 'layout' - files = self.layout.build - else - files = eval(attrs.last) + when 'layout' + files = self.layout.build + else + files = eval(attrs.last) end attrs[0].each do |a| - if(a[:id]=='' && !a[:file].nil? ) - if(a[:file]!='') - files.build(:file => a[:file], :to_save => true) - end + if a[:id].blank? && !a[:file].blank? + files.build(:file => a[:file], :to_save => true) else files.each do |file| if file.id.to_s == a[:id] @@ -75,6 +73,7 @@ class Design end end if self.layout.to_save + self.layout.to_save = false self.layout.save self.layout.parse_urls end @@ -86,12 +85,11 @@ class Design end def process_object(object) - if object.file.blank? - object.to_save = false - end if object.to_save - object.to_save = false - object.save + new_object = self.send(object._type.downcase.pluralize).build + new_object.file = object.file + object.destroy + new_object.save end if object.to_destroy object.destroy diff --git a/app/models/design/layout.rb b/app/models/design/layout.rb index ef768512..dae1c43b 100644 --- a/app/models/design/layout.rb +++ b/app/models/design/layout.rb @@ -39,7 +39,7 @@ class Layout < DesignFile names << [html_name, file_name] } names.each do |name| - content.gsub!(name[0], name[1]) + content.gsub!(name[0], name[1]) rescue nil end Dir.mktmpdir('f_path') { |dir| orig_file_name = self.file_filename diff --git a/app/views/admin/designs/_design_file.html.erb b/app/views/admin/designs/_design_file.html.erb index c8a66a53..3fbb9ab4 100644 --- a/app/views/admin/designs/_design_file.html.erb +++ b/app/views/admin/designs/_design_file.html.erb @@ -1,34 +1,24 @@ -<% item_destroy ||= false %> -<% item_snapshot ||= false %> -<% item_editable ||= false %> -<% li_class = ''%> - -<% fieldname_p = fieldname.pluralize %> -<%= f.label "fieldname", t('admin.'+fieldname) %> +<%= f.label "field_name", t('admin.' + field_name) %>

    -<%= fields_for "design["+fieldname_p+"][]", object, :index => nil do |f| %> - <%= f.hidden_field :id,{:value=>''} %> - <%= f.file_field :file ,{:class=>"multi_files",:rtype=>rtype}%> +<%= fields_for "design[" + field_name + "][]", object.send(field_name).build, :index => nil do |f| %> + <%= f.file_field :file, :class => "multi_files" %>

    -<% end %> +<% end %> \ No newline at end of file diff --git a/app/views/admin/designs/_form.html.erb b/app/views/admin/designs/_form.html.erb index ac4317c4..8095e9fd 100644 --- a/app/views/admin/designs/_form.html.erb +++ b/app/views/admin/designs/_form.html.erb @@ -1,46 +1,48 @@ -<%= stylesheet_link_tag "design_temp" %> -<%= javascript_include_tag "design_temp" %> +<% content_for :page_specific_css do %> + <%= stylesheet_link_tag "design_temp" %> +<% end %> +

    -<%= f.label :title, t('admin.title') %> -<%= f.text_field :title, :class => 'text' %> + <%= f.label :title, t('admin.title') %> + <%= f.text_field :title, :class => 'text' %>

    -<%= f.label :author, t('admin.author') %> -<%= f.text_field :author, :class => 'text' %> + <%= f.label :author, t('admin.author') %> + <%= f.text_field :author, :class => 'text' %>

    -<%= f.label :intro, t('admin.intro') %> -<%= f.text_field :intro, :class => 'text' %> + <%= f.label :intro, t('admin.intro') %> + <%= f.text_field :intro, :class => 'text' %>

    -<%= f.label "layout", t('admin.layout') %> -<% if @design.layout.blank? %> + <%= f.label "layout", t('admin.layout') %> + <% if @design.layout.blank? %> <%= fields_for 'design[layout]' do |f| %> - <%= f.file_field :file %> + <%= f.file_field :file %> <%= f.hidden_field :to_save, :value => true %> <% end %> - <% else%> - <%= File.basename (@design.layout.file.url) %> -<% end %> + <% else %> + <%= File.basename (@design.layout.file.url) %> + <% end %>

    -<%= f.label "default_css", t('admin.default_css') %> -<% if @design.default_css.blank? %> - <%= f.file_field :default_css %> - <% else%> - <%= File.basename (@design.default_css.url) %> -<% end %> + <%= f.label "default_css", t('admin.default_css') %> + <% if @design.default_css.blank? %> + <%= f.file_field :default_css %> + <% else %> + <%= File.basename (@design.default_css.url) %> + <% end %>

    -<%= render :partial => 'design_file' ,:locals => { :fieldname=>"themes",:object=>@design ,:f=>f,:rtype=>'stylesheets',:item_destroy=>true,:item_editable=>true } %> + <%= render :partial => 'design_file', :locals => { :object => @design, :field_name => "themes", :f => f, :classes => "r_destroy, r_editable" } %>

    -<%= render :partial => 'design_file' ,:locals => { :fieldname=>"javascript",:object=>@design ,:f=>f,:rtype=>'javascripts' ,:item_destroy=>true,:item_editable=>true} %> + <%= render :partial => 'design_file', :locals => { :object => @design, :field_name => "javascripts", :f => f, :classes => "r_destroy, r_editable" } %>

    -<%= render :partial => 'design_file' ,:locals => { :fieldname=>"image",:object=>@design ,:f=>f,:rtype=>'images' ,:item_destroy=>true,:item_snapshot=>true} %> + <%= render :partial => 'design_file', :locals => { :object => @design, :field_name => "images", :f => f, :classes => "r_destroy, r_snapshot" } %>