Sheet.transaction do
self.sheet_elements.each do |elm|
elm.new_sheet = self
+ elm.boost au
end
res = self.save
unless validate_child
r
end
+ def copyable?
+ r = true
+ Sheet.each_element_class_names do |n|
+ self.elements_by_class_name(n).each do |elm|
+ next if elm.copyable?
+ r = false
+ break
+ end
+ break unless r
+ end
+ r
+ end
+
def copy
attr = self.copy_attributes
Sheet.each_element_class_names do |n|
- attr.merge! Sheet.class_name_to_class(n).panelize(self.elements_by_class_name(n).map {|elm| elm.copy_attributes})
+ element_attr = Sheet.class_name_to_class(n).panelize(
+ self.elements_by_class_name(n).map {|elm|
+ elm.copy_attributes.merge elm.panel_attributes
+ }
+ )
+ attr.merge! element_attr
end
attr
end
belongs_to :author
belongs_to :panel
belongs_to :sheet
+ accepts_nested_attributes_for :panel, :allow_destroy => true
validates :sheet_id, :numericality => {:allow_blank => true}
validates :panel_id, :numericality => {:allow_blank => true}
r = self.attributes
r.delete 'id'
r.delete 'sheet_id'
+ r.delete 'panel_id' # create panel
r.delete 'created_at'
r.delete 'updated_at'
r
end
-
+
+ def copyable?
+ if self.panel and self.panel.publish? == false
+ false
+ else
+ true
+ end
+ end
+
+ def boost au
+ if self.panel
+ self.panel.author_id = au.id
+ self.panel.panel_elements.each do |elm|
+ elm.new_panel = self
+ elm.boost
+ end
+ end
+ end
+
+ def panel_attributes
+ if self.panel
+ {'panel_attributes' => self.panel.copy}
+ else
+ {}
+ end
+ end
+
def self.new_t sheet_id
r = SheetPanel.max_t(sheet_id)
r.blank? ? 0 : r.to_i + 1
<%= render 'standard', :sheet => @sheet, :author => @author %>
+<% if @author %>
+ <% if @sheet.copyable? %>
+ <h2><%= t('sheets.show.copy') -%></h2>
+ <%= form_for(Sheet.new, :html => {:jqform => 'pettanr-sheet-form'}) do |f| %>
+
+ <%= hidden_field_tag "json", @sheet.copy().to_json %>
+ <div>
+ <%= submit_tag t('sheets.show.inspire') -%>
+ </div>
+ <% end %>
+ <% end %>
+<% end %>
+
<% if @sheet.own? @author %>
<%= link_to t('link.edit'), edit_sheet_path(@sheet) %>
<%= link_to t('link.destroy'), sheet_path(@sheet), :method => :delete %>
- <h2><%= t('sheets.show.copy') -%></h2>
- <%= form_for(Sheet.new, :html => {:jqform => 'pettanr-sheet-form'}) do |f| %>
-
- <%= hidden_field_tag "json", @sheet.copy().to_json %>
- <div>
- <%= submit_tag t('sheets.show.inspire') -%>
- </div>
- <% end %>
-
<h3><%= t('sheet_panels.append.new_panels') -%></h3>
<table>
<% @new_panels.each do |panel| %>