new parser for pages and widgets..

This commit is contained in:
Harry Bomrah 2014-04-02 14:07:04 +08:00
parent f178fd963a
commit 9b008b4ead
7 changed files with 39 additions and 10 deletions

View File

@ -14,7 +14,8 @@ gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .js.coffee assets and views
gem 'coffee-rails', '~> 4.0.0'
gem 'announcement', git: 'git@gitlab.tp.rulingcom.com:saurabh/announcement-test.git'
# gem 'announcement', git: 'git@gitlab.tp.rulingcom.com:saurabh/announcement-test.git'
gem 'announcement', path: "/Volumes/MyData/github/orbit4.5/announcement"
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby
@ -43,4 +44,4 @@ end
# gem 'capistrano', group: :development
# Use debugger
gem 'debugger', '>= 1.6.6', group: [:development, :test]
gem 'debugger', '>= 1.6.6', group: [:development, :test]

View File

@ -88,9 +88,10 @@ module ApplicationHelper
wrap_elements = doc.css("*[data-module]")
controller = "#{params[:target_controller].capitalize}Controller".classify.constantize.new
data = controller.send("#{params[:target_action]}")
wrap_elements.each do |wrap_element|
html_to_render = ""
data.each do |item|
keys = data.keys
wrap_elements.each do |wrap_element|
html_to_render = ""
(data[keys[0]].kind_of?(Array) ? data[keys[0]] : data[keys[1]]).each do |item|
el = wrap_element.inner_html
item.each do |key,value|
el = el.gsub("{{#{key}}}",value)
@ -100,7 +101,14 @@ module ApplicationHelper
end
wrap_element.inner_html = html_to_render
end
doc.to_s.html_safe
html = doc.to_html
if keys[1]
(data[keys[1]].kind_of?(Array) ? data[keys[0]] : data[keys[1]]).each do |key,value|
html = html.gsub("{{#{key}}}",value)
html = html.gsub("%7B%7B#{key}%7D%7D",value)
end
end
html.html_safe
elsif params[:target_action] == "show"
file = File.open(File.join(Rails.root, 'app', 'templates', "#{@key}", 'modules', params[:target_controller], "#{params[:target_action]}.html.erb"))
doc = Nokogiri::HTML(file, nil, "UTF-8")

View File

@ -18,4 +18,12 @@ module OrbitHelper
def self.get_site_locale
@site_locale
end
def self.to_param(title)
if I18n.locale.to_s == "en"
title.parameterize
else
title
end
end
end

View File

@ -18,9 +18,10 @@ module PagesHelper
wrap_elements = doc.css("*[data-repeat]")
controller = "#{controller_name.capitalize}Controller".classify.constantize.new
data = controller.send("#{widget_method}")
keys = data.keys
wrap_elements.each do |wrap_element|
html_to_render = ""
data.each do |item|
(data[keys[0]].kind_of?(Array) ? data[keys[0]] : data[keys[1]]).each do |item|
el = wrap_element.inner_html
item.each do |key,value|
el = el.gsub("{{#{key}}}",value)
@ -30,7 +31,15 @@ module PagesHelper
end
wrap_element.inner_html = html_to_render
end
doc.to_s.html_safe
html = doc.to_html
if keys[1]
(data[keys[1]].kind_of?(Array) ? data[keys[0]] : data[keys[1]]).each do |key,value|
html = html.gsub("{{#{key}}}",value)
html = html.gsub("%7B%7B#{key}%7D%7D",value)
end
end
html.html_safe
end
end

View File

@ -2,4 +2,5 @@ class ModuleApp
include Mongoid::Document
field :title, type: String
field :key, type: String
field :widget_methods, type: Array
end

View File

@ -11,3 +11,4 @@
</div>
</div>
<p class="text-center"><a data-href="more" class="btn btn-primary" role="button" href="{{link_to_index}}">More</a></p>
<p class="text-center">{{name}}</p>

View File

@ -29,12 +29,13 @@ module OrbitApp
end
class RegisteredModule
attr_reader :name,:key,:module_label
attr_reader :name,:key,:module_label, :widget_methods
def initialize(name,&block)
@name = name
@key = @name.underscore.singularize
# @module_label = 'rulingcom.errors.init.module_app_noname'
@widget_methods = []
setup_module_app
end
@ -44,7 +45,7 @@ module OrbitApp
def setup_module_app
module_app = get_module_app
module_app = ModuleApp.new(:key=>@key,:title=>name) if module_app.nil?
module_app = ModuleApp.new(:key=>@key,:title=>name, :widget_methods => @widget_methods) if module_app.nil?
module_app.save(:validate=>false)
end