update benchmark with results on my imac + tweak ui in order to reflect changes about with liquid inheritance
This commit is contained in:
parent
4f06dab51e
commit
fbda6a17f9
|
@ -6,6 +6,8 @@ module Models
|
|||
extend ActiveSupport::Concern
|
||||
|
||||
included do
|
||||
embeds_many :parts, :class_name => 'PagePart'
|
||||
|
||||
before_validation do |p|
|
||||
if p.parts.empty?
|
||||
p.parts << PagePart.build_body_part(p.respond_to?(:body) ? p.body : nil)
|
||||
|
|
|
@ -4,9 +4,9 @@ module Models
|
|||
module Render
|
||||
|
||||
def render(context)
|
||||
# ::Liquid::Template.parse(self.layout_template)
|
||||
self.template.render(context)
|
||||
|
||||
# FIXME : old code based on layout / parts
|
||||
# self.template.render(context)
|
||||
#
|
||||
# if self.layout
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
class Layout < LiquidTemplate
|
||||
|
||||
## associations ##
|
||||
references_many :pages
|
||||
embeds_many :parts, :class_name => 'PagePart'
|
||||
# references_many :pages
|
||||
# embeds_many :parts, :class_name => 'PagePart'
|
||||
|
||||
## callbacks ##
|
||||
# before_save :build_parts_from_value
|
||||
|
@ -13,36 +13,36 @@ class Layout < LiquidTemplate
|
|||
|
||||
## methods ##
|
||||
|
||||
protected
|
||||
|
||||
def build_parts_from_value
|
||||
if self.value_changed? || self.new_record?
|
||||
self.parts.each { |p| p.disabled = true }
|
||||
|
||||
self.value.scan(Locomotive::Regexps::CONTENT_FOR).each do |attributes|
|
||||
slug = attributes[0].strip.downcase
|
||||
name = slug.humanize
|
||||
name = I18n.t('attributes.defaults.page_parts.name') if slug == 'layout'
|
||||
|
||||
if part = self.parts.detect { |p| p.slug == slug }
|
||||
part.name = name if name.present?
|
||||
part.disabled = false
|
||||
else
|
||||
self.parts.build :slug => slug, :name => name || slug
|
||||
end
|
||||
end
|
||||
|
||||
# body always first
|
||||
body = self.parts.detect { |p| p.slug == 'layout' }
|
||||
self.parts.delete(body)
|
||||
self.parts.insert(0, body)
|
||||
|
||||
@_update_pages = true if self.value_changed?
|
||||
end
|
||||
end
|
||||
|
||||
def update_parts_in_pages
|
||||
self.pages.each { |p| p.send(:update_parts!, self.parts) } if @_update_pages
|
||||
end
|
||||
# protected
|
||||
#
|
||||
# def build_parts_from_value
|
||||
# if self.value_changed? || self.new_record?
|
||||
# self.parts.each { |p| p.disabled = true }
|
||||
#
|
||||
# self.value.scan(Locomotive::Regexps::CONTENT_FOR).each do |attributes|
|
||||
# slug = attributes[0].strip.downcase
|
||||
# name = slug.humanize
|
||||
# name = I18n.t('attributes.defaults.page_parts.name') if slug == 'layout'
|
||||
#
|
||||
# if part = self.parts.detect { |p| p.slug == slug }
|
||||
# part.name = name if name.present?
|
||||
# part.disabled = false
|
||||
# else
|
||||
# self.parts.build :slug => slug, :name => name || slug
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# # body always first
|
||||
# body = self.parts.detect { |p| p.slug == 'layout' }
|
||||
# self.parts.delete(body)
|
||||
# self.parts.insert(0, body)
|
||||
#
|
||||
# @_update_pages = true if self.value_changed?
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# def update_parts_in_pages
|
||||
# self.pages.each { |p| p.send(:update_parts!, self.parts) } if @_update_pages
|
||||
# end
|
||||
|
||||
end
|
||||
|
|
|
@ -15,15 +15,14 @@ class Page
|
|||
field :published, :type => Boolean, :default => false
|
||||
field :cache_strategy, :default => 'none'
|
||||
|
||||
field :layout_template # FIXME: liquid inheritance
|
||||
field :layout_template # FIXME: added for liquid inheritance
|
||||
|
||||
# allows newly pages to have a default body
|
||||
attr_accessor :body
|
||||
|
||||
## associations ##
|
||||
referenced_in :site
|
||||
referenced_in :layout
|
||||
embeds_many :parts, :class_name => 'PagePart'
|
||||
# referenced_in :layout
|
||||
|
||||
## callbacks ##
|
||||
before_validation :normalize_slug
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
= f.input :title
|
||||
|
||||
= f.input :layout_id, :as => :select, :collection => current_site.layouts.all.to_a, :input_html => { :data_url => admin_layout_page_parts_url('_id_to_replace_') }
|
||||
/ = f.input :layout_id, :as => :select, :collection => current_site.layouts.all.to_a, :input_html => { :data_url => admin_layout_page_parts_url('_id_to_replace_') }
|
||||
|
||||
- if not @page.index? and not @page.not_found?
|
||||
= f.input :parent_id, :as => :select, :collection => parent_pages_options, :include_blank => false
|
||||
|
@ -23,18 +23,25 @@
|
|||
|
||||
= f.input :cache_strategy, :as => :select, :collection => options_for_page_cache_strategy, :include_blank => false
|
||||
|
||||
#page-parts
|
||||
.nav
|
||||
- @page.parts.each_with_index do |part, index|
|
||||
= link_to content_tag(:span, part.name), "#parts-#{index + 1}", :id => "control-part-#{part.slug}", :class => "part-#{index} #{'on' if index == 0}", :style => "#{'display: none' if part.disabled?}"
|
||||
.clear
|
||||
= f.foldable_inputs :name => :code do
|
||||
= f.custom_input :value, :css => 'code full', :with_label => false do
|
||||
%code{ :class => 'html' }
|
||||
= f.text_area :layout_template
|
||||
/ .more
|
||||
/ = link_to t('admin.image_picker.link'), admin_theme_assets_path, :id => 'image-picker-link'
|
||||
|
||||
.wrapper
|
||||
%ul{ :id => "parts" }
|
||||
= f.fields_for :parts do |g|
|
||||
%li{ :style => "#{'display: none' if g.object.disabled?}" }
|
||||
= g.label :value, g.object.name, :style => "display:none"
|
||||
%code= g.text_area :value
|
||||
= g.hidden_field :name
|
||||
= g.hidden_field :slug
|
||||
= g.hidden_field :disabled, :class => 'disabled'
|
||||
/ #page-parts
|
||||
/ .nav
|
||||
/ - @page.parts.each_with_index do |part, index|
|
||||
/ = link_to content_tag(:span, part.name), "#parts-#{index + 1}", :id => "control-part-#{part.slug}", :class => "part-#{index} #{'on' if index == 0}", :style => "#{'display: none' if part.disabled?}"
|
||||
/ .clear
|
||||
/
|
||||
/ .wrapper
|
||||
/ %ul{ :id => "parts" }
|
||||
/ = f.fields_for :parts do |g|
|
||||
/ %li{ :style => "#{'display: none' if g.object.disabled?}" }
|
||||
/ = g.label :value, g.object.name, :style => "display:none"
|
||||
/ %code= g.text_area :value
|
||||
/ = g.hidden_field :name
|
||||
/ = g.hidden_field :slug
|
||||
/ = g.hidden_field :disabled, :class => 'disabled'
|
|
@ -8,7 +8,8 @@ defaults: &defaults
|
|||
|
||||
development:
|
||||
<<: *defaults
|
||||
database: locomotive_dev
|
||||
# database: locomotive_dev
|
||||
database: locomotive_le_dev # FIXME: new db for our tests
|
||||
|
||||
test:
|
||||
<<: *defaults
|
||||
|
|
|
@ -59,5 +59,8 @@ Benchmark.bm do |bm|
|
|||
end
|
||||
end
|
||||
|
||||
# without liquify (macbook white): User System Total Real
|
||||
# Rendering page 10k times 22.650000 6.220000 28.870000 ( 30.294338)
|
||||
# without liquify (macbook white): User System Total Real
|
||||
# Rendering page 10k times 22.650000 6.220000 28.870000 ( 30.294338)
|
||||
|
||||
# without liquify (imac 27'): User System Total Real
|
||||
# Rendering page 10k times 13.390000 1.700000 15.090000 ( 15.654966)
|
||||
|
|
Loading…
Reference in New Issue