complete new parser for layout_part
This commit is contained in:
parent
278938a52d
commit
34d0b8fac1
|
@ -5,6 +5,8 @@ class Admin::SnippetsController < ApplicationController
|
|||
before_filter :find_parent_item
|
||||
before_filter :is_admin?
|
||||
|
||||
#Snippet is a object admin user can define his own tag and being used later on in parser
|
||||
|
||||
def show
|
||||
#TODO
|
||||
end
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
class Layout < DesignFile
|
||||
|
||||
include Parser
|
||||
embedded_in :design
|
||||
|
||||
attr_reader :content
|
||||
|
@ -8,7 +8,14 @@ class Layout < DesignFile
|
|||
def content
|
||||
self.file.read
|
||||
end
|
||||
|
||||
def self.exist_one?
|
||||
Layout.count > 0
|
||||
end
|
||||
|
||||
after_save:parse_layout
|
||||
|
||||
def parse_layout
|
||||
parse_layout_layout_part(self)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -3,7 +3,10 @@ class LayoutPart
|
|||
include Mongoid::Document
|
||||
include Mongoid::Timestamps
|
||||
|
||||
field :name
|
||||
field :name_tag
|
||||
field :id_tag
|
||||
field :editable_tag
|
||||
field :class_tag
|
||||
field :content
|
||||
|
||||
belongs_to :layout
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
<%= f.label :title, t('admin.title') %>
|
||||
<%= f.text_field :title, :class => 'text' %>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<%= f.label :author, t('admin.author') %>
|
||||
<%= f.text_field :author, :class => 'text' %>
|
||||
|
@ -31,7 +30,7 @@
|
|||
<% if @design.structure_css.blank? %>
|
||||
<%= f.file_field :structure_css %>
|
||||
<% else%>
|
||||
<%= File.basename (Design.all.last.structure_css.url) %>
|
||||
<%= File.basename (@design.structure_css.url) %>
|
||||
<% end %>
|
||||
</p>
|
||||
<p>
|
||||
|
|
|
@ -206,7 +206,27 @@ module Parser
|
|||
end
|
||||
end
|
||||
end
|
||||
#=============
|
||||
def parse_layout_layout_part(layout)
|
||||
content = layout.content
|
||||
context = parser_layout_layout_part(layout)
|
||||
parser = Radius::Parser.new(context, :tag_prefix => 'r')
|
||||
parser.parse(content)
|
||||
end
|
||||
|
||||
def parser_layout_layout_part(layout )
|
||||
Radius::Context.new do |c|
|
||||
c.define_tag 'layout_part' do |tag|
|
||||
data={}
|
||||
data[:class_tag]=tag.attr['class'].to_s
|
||||
data[:id_tag]=tag.attr['id'].to_s
|
||||
data[:name_tag]=tag.attr['name'].to_s
|
||||
data[:editable_tag]=tag.attr['editable'].to_s
|
||||
layout.layout_parts.create(data)
|
||||
end
|
||||
end
|
||||
end
|
||||
#============
|
||||
def parse_content_update_code(page, page_content)
|
||||
context = parser_context_update_code(page, page_content)
|
||||
parser = Radius::Parser.new(context, :tag_prefix => 'r')
|
||||
|
@ -279,7 +299,6 @@ module Parser
|
|||
def self.included(base)
|
||||
base.send :helper_method, :parse_page if base.respond_to? :helper_method
|
||||
base.send :helper_method, :parse_page_edit if base.respond_to? :helper_method
|
||||
base.send :helper_method, :parse_page_code if base.respond_to? :helper_method
|
||||
end
|
||||
|
||||
end
|
||||
|
|
Reference in New Issue