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 # Use CoffeeScript for .js.coffee assets and views
gem 'coffee-rails', '~> 4.0.0' 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 # See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby # gem 'therubyracer', platforms: :ruby

View File

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

View File

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

View File

@ -18,9 +18,10 @@ module PagesHelper
wrap_elements = doc.css("*[data-repeat]") wrap_elements = doc.css("*[data-repeat]")
controller = "#{controller_name.capitalize}Controller".classify.constantize.new controller = "#{controller_name.capitalize}Controller".classify.constantize.new
data = controller.send("#{widget_method}") data = controller.send("#{widget_method}")
keys = data.keys
wrap_elements.each do |wrap_element| wrap_elements.each do |wrap_element|
html_to_render = "" 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 el = wrap_element.inner_html
item.each do |key,value| item.each do |key,value|
el = el.gsub("{{#{key}}}",value) el = el.gsub("{{#{key}}}",value)
@ -30,7 +31,15 @@ module PagesHelper
end end
wrap_element.inner_html = html_to_render wrap_element.inner_html = html_to_render
end 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
end end

View File

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

View File

@ -11,3 +11,4 @@
</div> </div>
</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"><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 end
class RegisteredModule class RegisteredModule
attr_reader :name,:key,:module_label attr_reader :name,:key,:module_label, :widget_methods
def initialize(name,&block) def initialize(name,&block)
@name = name @name = name
@key = @name.underscore.singularize @key = @name.underscore.singularize
# @module_label = 'rulingcom.errors.init.module_app_noname' # @module_label = 'rulingcom.errors.init.module_app_noname'
@widget_methods = []
setup_module_app setup_module_app
end end
@ -44,7 +45,7 @@ module OrbitApp
def setup_module_app def setup_module_app
module_app = get_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) module_app.save(:validate=>false)
end end