Changes for multiple i18n_variable in bulletin
This commit is contained in:
		
							parent
							
								
									1f7dae9bee
								
							
						
					
					
						commit
						f57e9f19f7
					
				|  | @ -9,8 +9,12 @@ class I18nVariable | |||
|    | ||||
|   belongs_to :language_value, polymorphic: true | ||||
|    | ||||
|   def method_missing(field) | ||||
|     self[field] | ||||
|   def method_missing(*field) | ||||
|     if field.size > 1 | ||||
|       self.write_attribute(field[0].to_s.delete('=').to_sym, field[1]) | ||||
|     else | ||||
|       self[field[0]] | ||||
|     end | ||||
|   end | ||||
|    | ||||
| end | ||||
|  |  | |||
|  | @ -5,13 +5,10 @@ class Bulletin | |||
|   include Mongoid::Timestamps | ||||
|   include Mongoid::MultiParameterAttributes | ||||
|    | ||||
|   # field :category_id, :type => Integer | ||||
|   field :title | ||||
|   # has_one :title_variable, :class_name => "I18nVariable", :as => :language_value, :autosave => true, :dependent => :destroy | ||||
|   # has_one :subtitle_variable, :class_name => "I18nVariable", :as => :language_value, :autosave => true, :dependent => :destroy | ||||
|   # has_one :text_variable, :class_name => "I18nVariable", :as => :language_value, :autosave => true, :dependent => :destroy | ||||
|   field :subtitle | ||||
|   field :text | ||||
|   has_one :title, :class_name => "I18nVariable", :as => :language_value, :autosave => true, :dependent => :destroy | ||||
|   has_one :subtitle, :class_name => "I18nVariable", :as => :language_value, :autosave => true, :dependent => :destroy | ||||
|   has_one :text, :class_name => "I18nVariable", :as => :language_value, :autosave => true, :dependent => :destroy | ||||
| 
 | ||||
|   field :postdate , :type => Date | ||||
|   field :deadline , :type => Date | ||||
|   # field :url | ||||
|  | @ -19,6 +16,8 @@ class Bulletin | |||
|   field :update_user_id | ||||
|    | ||||
|   field :is_top, :type => Boolean, :default => false | ||||
|   field :is_hot, :type => Boolean, :default => false | ||||
|   field :is_hidden, :type => Boolean, :default => false | ||||
|    | ||||
|   mount_uploader :image, ImageUploader | ||||
|    | ||||
|  | @ -31,12 +30,13 @@ class Bulletin | |||
|    | ||||
|   accepts_nested_attributes_for :bulletin_files, :allow_destroy => true | ||||
|   accepts_nested_attributes_for :bulletin_links, :allow_destroy => true | ||||
|   accepts_nested_attributes_for :title, :allow_destroy => true | ||||
|   accepts_nested_attributes_for :subtitle, :allow_destroy => true | ||||
|   accepts_nested_attributes_for :text, :allow_destroy => true | ||||
|    | ||||
|   # validates_presence_of :title_variable | ||||
|   validates_presence_of :title | ||||
|    | ||||
|   after_save :save_bulletin_links | ||||
|   after_save :save_bulletin_files | ||||
|   before_save :set_key | ||||
|    | ||||
| 
 | ||||
|   def self.search( search = nil, category_id = nil ) | ||||
|  | @ -82,20 +82,40 @@ class Bulletin | |||
|     self.is_top | ||||
|   end | ||||
|    | ||||
|   def save_bulletin_links | ||||
| 	self.bulletin_links.each do |t| | ||||
| 	  if t.should_destroy | ||||
| 		t.destroy | ||||
| 	  end | ||||
|   def is_hot? | ||||
|     self.is_hot | ||||
|   end | ||||
|    | ||||
|   def is_hidden? | ||||
|     self.is_hidden | ||||
|   end | ||||
|    | ||||
|    | ||||
|   def title | ||||
|     @title ||= I18nVariable.first(:conditions => {:key => 'title', :language_value_id => self.id, :language_value_type => self.class}) rescue nil | ||||
|   end | ||||
|    | ||||
|   def subtitle | ||||
|     @subtitle ||= I18nVariable.first(:conditions => {:key => 'subtitle', :language_value_id => self.id, :language_value_type => self.class}) rescue nil | ||||
|   end | ||||
|    | ||||
|   def text | ||||
|     @text ||= I18nVariable.first(:conditions => {:key => 'text', :language_value_id => self.id, :language_value_type => self.class}) rescue nil | ||||
|   end | ||||
|    | ||||
|   protected | ||||
|    | ||||
|   def set_key | ||||
|     if title.new_record? | ||||
|       title.key = 'title' | ||||
|     end | ||||
|     if subtitle.new_record? | ||||
|       subtitle.key = 'subtitle' | ||||
|     end | ||||
|     if text.new_record? | ||||
|       text.key = 'text' | ||||
|     end | ||||
|   end | ||||
|    | ||||
|   def save_bulletin_files | ||||
| 	self.bulletin_files.each do |t| | ||||
| 	  if t.should_destroy | ||||
| 		t.destroy | ||||
| 	  end | ||||
|     end | ||||
|   end | ||||
|    | ||||
| end | ||||
|  | @ -16,20 +16,32 @@ | |||
| 	<% end %> | ||||
|   </div> | ||||
|    | ||||
|   <div class="field"> | ||||
|     <%= f.label :title %><br /> | ||||
|     <%= f.text_field :title %> | ||||
|   </div> | ||||
| 	<div class="field"> | ||||
|     <%= f.label :title %> | ||||
| 		<%= f.fields_for :title, (@bulletin.new_record? ? @bulletin.build_title : @bulletin.title ) do |f| %> | ||||
| 		  <% @site_valid_locales.each do |locale| %> | ||||
| 		    <td><%= f.text_field locale %></td> | ||||
| 		  <% end %> | ||||
| 		<% end %> | ||||
| 	</div> | ||||
|    | ||||
|   <div class="field"> | ||||
|     <%= f.label :subtitle %><br /> | ||||
|     <%= f.text_area :subtitle,  :rows => 10, :cols => 40 %> | ||||
|   </div> | ||||
|    | ||||
|   <div class="field"> | ||||
|     <%= f.label :text %><br /> | ||||
|     <%= f.text_area :text,  :rows => 10, :cols => 40 %> | ||||
|   </div> | ||||
| 	<div class="field"> | ||||
| 		<%= f.label :subtitle %> | ||||
| 		<%= f.fields_for :subtitle, (@bulletin.new_record? ? @bulletin.build_subtitle : @bulletin.subtitle ) do |f| %> | ||||
| 			<% @site_valid_locales.each do |locale| %> | ||||
| 				<td><%= f.text_area locale, :rows => 10, :cols => 40 %></td> | ||||
| 			<% end %> | ||||
| 		<% end %> | ||||
| 	</div> | ||||
| 
 | ||||
| 	<div class="field"> | ||||
| 		<%= f.label :text %> | ||||
| 		<%= f.fields_for :text, (@bulletin.new_record? ? @bulletin.build_text : @bulletin.text ) do |f| %> | ||||
| 			<% @site_valid_locales.each do |locale| %> | ||||
| 				<td><%= f.text_area locale, :rows => 10, :cols => 40 %></td> | ||||
| 			<% end %> | ||||
| 		<% end %> | ||||
| 	</div> | ||||
|    | ||||
|   <div class="field"> | ||||
|     <%= f.label :postdate %><br /> | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue