diff --git a/app/assets/javascripts/basic/orbit_js_1.0.1.js b/app/assets/javascripts/basic/orbit_js_1.0.1.js
index 7589e7c..521ab1d 100755
--- a/app/assets/javascripts/basic/orbit_js_1.0.1.js
+++ b/app/assets/javascripts/basic/orbit_js_1.0.1.js
@@ -65,10 +65,10 @@ if($.support.touch) {
$checked.each(function(i) {
if($(this).attr('type') == "checkbox") {
if($(this).data().disabled) {
- console.log("d")
$(this).parent('.togglebox').addClass('disable').closest('li').addClass('disabled');
if($(this).prop('checked')) {
$(this).parent('.togglebox').removeClass('disable').closest('li').removeClass('disabled');
+ $(this).val("1");
};
} else {
if($(this).prop('checked')) {
@@ -79,6 +79,12 @@ if($.support.touch) {
change: function() {
$(this).parent('.togglebox').toggleClass('disable');
$(this).closest('tr').toggleClass('disable');
+ if($(this).is(":checked")){
+ $(this).val("1");
+ }else{
+ $(this).val("0");
+ $(this).prop("checked","checked");
+ }
}
});
};
diff --git a/app/assets/javascripts/edit-main.js b/app/assets/javascripts/edit-main.js
index d308029..3b38c32 100644
--- a/app/assets/javascripts/edit-main.js
+++ b/app/assets/javascripts/edit-main.js
@@ -25,8 +25,11 @@
$.each(data.parts,function(i,part){
var page_part = $("*[" + part.name + "]");
$.each(part.subparts,function(x,subpart){
- var newsub = $("
" + subpart.module + "/" + subpart.widget + "
");
+ var newsub = (subpart.kind == "module_widget" ? $("" + subpart.module + "/" + subpart.widget + "
") : $("Text
"));
page_part.prepend(newsub);
+ newsub.click(function(){
+ window.location.href = "/page_parts/edit_sub_part?page_id=" + page_params["id"] + "&part_id=" + $(this).data("partid") + "&sub_part_id=" + $(this).data("ps");
+ })
})
})
})
@@ -41,8 +44,7 @@
window.location.href = "/page_parts/new?part=" + part.data("pp") + "&page_id=" + page_params["id"];
}
})
- $(this).append(add_btn);
+ part.append(add_btn);
})
-
})
})();
\ No newline at end of file
diff --git a/app/controllers/admin/sites_controller.rb b/app/controllers/admin/sites_controller.rb
index 3da7c88..0155228 100644
--- a/app/controllers/admin/sites_controller.rb
+++ b/app/controllers/admin/sites_controller.rb
@@ -6,6 +6,7 @@ class Admin::SitesController < OrbitAdminController
end
def site_info
+ @pages = Page.where(:module=>"page_content")
end
def responsive_setting
diff --git a/app/controllers/page_parts_controller.rb b/app/controllers/page_parts_controller.rb
index 436d220..b1358c8 100644
--- a/app/controllers/page_parts_controller.rb
+++ b/app/controllers/page_parts_controller.rb
@@ -5,9 +5,10 @@ class PagePartsController < ApplicationController
@part.sub_parts.build
@part_number = params[:part]
@page_id = params[:page_id]
- @modules = ModuleApp.all
- @no_orbit_bar = @no_side_bar = true
- @html_class = "page-parts"
+ @modules = ModuleApp.widget_enabled
+ @no_orbit_bar = @no_side_bar = true
+ @select_number = 0
+ @html_class = "page-parts"
render :layout => "structure"
end
@@ -16,16 +17,70 @@ class PagePartsController < ApplicationController
@part = page.page_parts.where(:part_id => params[:id]).first
@part.sub_parts.build
@page_id = params[:page_id]
- @modules = ModuleApp.all
+ @part_number = params[:id]
+ @select_number = @part.sub_parts.count
+ @modules = ModuleApp.widget_enabled
@no_orbit_bar = @no_side_bar = true
- @html_class = "page-parts"
+ @html_class = "page-parts"
render :layout => "structure"
end
+ def edit_sub_part
+ @part = PagePart.find(params[:part_id])
+ @subpart = SubPart.find(params[:sub_part_id])
+ @select_number = @part.sub_parts.index(@subpart)
+ @kind = @subpart.kind
+ @modules = ModuleApp.widget_enabled
+ if @kind == "module_widget"
+ @widget_types = []
+ module_name = @subpart.module
+ Dir.glob("#{Rails.root}/app/templates/#{@key}/modules/#{module_name.downcase}/*").each do |w|
+ w = File.basename(w, ".*")
+ w = File.basename(w, ".*")
+ @widget_types << w.gsub("_","") if w != "index" && w != "show"
+ end
+
+ app = ModuleApp.find_by_key(module_name)
+ @categories = app.categories
+ @widget_methods = app.get_registration.get_widget_methods
+ @widget_settings = app.get_registration.get_widget_settings
+ @data_count = nil
+ if !@widget_settings.blank?
+ @data_count = @widget_settings["data_count"] rescue nil
+ if !@widget_settings['override_category_with'].nil?
+ @custom = @widget_settings['override_category_with'].classify.constantize.all
+ @multiselect = @widget_settings['multiselect'] rescue true
+ @display_field = @widget_settings['display_field']
+ end
+ end
+ end
+ @no_orbit_bar = @no_side_bar = true
+ @html_class = "page-parts"
+ render :layout => "structure"
+ end
+
+ def update_sub_part
+ subpart = SubPart.find(params[:id])
+ p = part_params["sub_parts_attributes"]
+ keys = p.keys
+ final_params = {}
+ keys.each do |key|
+ p["#{key}"].each do |k,value|
+ final_params["#{k}"] = value
+ end
+ end
+ if final_params["kind"] == "none"
+ subpart.destroy
+ else
+ subpart.update_attributes(final_params)
+ end
+ render :json => {"success"=>true}.to_json
+ end
+
def getwidgets
module_name = params[:module]
-
- @select_number = params[:number_of_select]
+ part = PagePart.where(:part_id => params[:part_id], :page_id => params[:page_id]).first
+ @select_number = part.sub_parts.count rescue 0
@widget_types = []
Dir.glob("#{Rails.root}/app/templates/#{@key}/modules/#{module_name.downcase}/*").each do |w|
w = File.basename(w, ".*")
@@ -34,7 +89,18 @@ class PagePartsController < ApplicationController
end
module_name = module_name.downcase.singularize
app = ModuleApp.find_by_key(module_name)
+ @categories = app.categories
@widget_methods = app.get_registration.get_widget_methods
+ @widget_settings = app.get_registration.get_widget_settings
+ @data_count = nil
+ if !@widget_settings.blank?
+ @data_count = @widget_settings["data_count"] rescue nil
+ if !@widget_settings['override_category_with'].nil?
+ @custom = @widget_settings['override_category_with'].classify.constantize.all
+ @multiselect = @widget_settings['multiselect'] rescue true
+ @display_field = @widget_settings['display_field']
+ end
+ end
render :layout => false
end
@@ -47,9 +113,9 @@ class PagePartsController < ApplicationController
subparts = part.sub_parts
subpart = []
subparts.each do |p|
- subpart << {"module" => p.module, "widget" => p.widget_type}
+ subpart << {"module" => p.module, "widget" => p.widget_type, "id" => p.id.to_s, "kind" => p.kind}
end
- data << {"name" => partid, "subparts" => subpart}
+ data << {"name" => partid, "subparts" => subpart, "id" => part.id.to_s}
end
render :json => {"parts" => data}.to_json
end
@@ -57,20 +123,20 @@ class PagePartsController < ApplicationController
def create
@part = PagePart.new(part_params)
@part.save!
- redirect_to pages_edit_view_path(:id => params[:page_part][:page_id])
+ render :json => {"success"=>true}.to_json
+
end
def update
- @part = PagePart.find(params[:page_part][:page_part_id])
+ @part = PagePart.find(params[:part_id])
@part.update_attributes(part_params)
- redirect_to pages_edit_view_path(:id => params[:page_part][:page_id])
-
+ render :json => {"success"=>true}.to_json
end
private
def part_params
- params.require(:page_part).permit(:part_id, :page_id, sub_parts_attributes: [:module, :widget_type,:widget_method, :id])
+ params.require(:page_part).permit!
end
end
\ No newline at end of file
diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb
index 58268b2..5f6fe2f 100644
--- a/app/controllers/pages_controller.rb
+++ b/app/controllers/pages_controller.rb
@@ -17,7 +17,10 @@ class PagesController < ApplicationController
@dataApi = "edit"
# @qq = render_to_string(:partial => @p, :layout => false)
- render get_view
+ view = get_view
+ if File.exists?(view)
+ render view
+ end
end
def home
@@ -69,7 +72,6 @@ class PagesController < ApplicationController
end
impressionist(page)
- # render render_final_page("#{module_app}/#{params[:target_action]}",page)
render :html => render_final_page("#{module_app}/#{params[:target_action]}",page,layout).html_safe
else
render :file => "#{Rails.root}/public/404.html", :layout => false, :status => :not_found
@@ -168,56 +170,58 @@ class PagesController < ApplicationController
private
def render_final_page(original_view=get_view,page,layout)
- if layout
- parts = page.page_parts rescue []
- @part_partials = {}
+ if layout
+ parts = page.page_parts rescue []
+ @part_partials = {}
- parts.each do |part|
- subparts = part.sub_parts
- partials = []
- subparts.each do |subpart|
- partials << render_widget_for_frontend(subpart.module,subpart.widget_method,subpart.widget_type)
+ parts.each do |part|
+ subparts = part.sub_parts
+ partials = []
+ subparts.each do |subpart|
+ if subpart.kind == "module_widget"
+ OrbitHelper.set_widget_data_count subpart.data_count
+ OrbitHelper.set_widget_categories subpart.categories
+ OrbitHelper.set_widget_module_app subpart.module
+ custom_value = subpart.custom_string_field || subpart.custom_array_field rescue nil
+ if !custom_value.nil?
+ OrbitHelper.set_widget_custom_value custom_value
+ end
+ partials << render_widget_for_frontend(subpart.module,subpart.widget_method,subpart.widget_type)
+ elsif subpart.kind == "text"
+ partials << subpart.content
+ end
+ end
+ @part_partials["data-pp='#{part.part_id}'"] = partials
end
- @part_partials["data-pp='#{part.part_id}'"] = partials
- end
+ @file = nil
+ @layout_html = nil
+ if original_view == "home"
+ @file = File.join('../templates', "#{@key}", '/home/index.html.erb')
+ else
+ @file = File.join('../templates', "#{@key}", '/home/page.html.erb')
+ end
+ @layout_html = render_to_string(@file)
+ doc = Nokogiri::HTML(@layout_html, nil, "UTF-8")
+
+ @part_partials.each do |key, partial|
+ html_string = ""
+ partial.each do |p|
+ html_string = html_string + p
+ end
+ pp = doc.css("*[#{key}]")
+ pp = pp[0]
+ pp.inner_html = html_string
+ end
+
+ if original_view != "home"
+ viewarea = doc.css("*[data-content='true']")[0]
+ viewarea.inner_html = render_to_string(original_view)
+ end
+ doc.to_html
- @file = nil
- @layout_html = nil
- if original_view == "home"
- @file = File.join('../templates', "#{@key}", '/home/index.html.erb')
else
- @file = File.join('../templates', "#{@key}", '/home/page.html.erb')
+ render_to_string(original_view)
end
- @layout_html = render_to_string(@file)
- doc = Nokogiri::HTML(@layout_html, nil, "UTF-8")
-
- @part_partials.each do |key, partial|
- html_string = ""
- partial.each do |p|
- html_string = html_string + p
- end
- pp = doc.css("*[#{key}]")
- pp = pp[0]
- pp.inner_html = html_string
- end
-
- if original_view != "home"
- viewarea = doc.css("*[data-content='true']")[0]
- viewarea.inner_html = render_to_string(original_view)
- end
- doc.to_html
-
- else
- render_to_string(original_view)
- end
- # newlayout = "#{page.name}_layout.html.erb"
- # file_path = File.join(Rails.root, 'app', 'views', 'frontend', newlayout)
-
- # f = File.open(file_path,"w")
- # f.write(doc.to_html)
- # f.close
- # view_to_render = "frontend/#{newlayout}"
- # view_to_render
end
def get_widget_path(widget)
diff --git a/app/controllers/sitemaps_controller.rb b/app/controllers/sitemaps_controller.rb
new file mode 100644
index 0000000..e3faf4d
--- /dev/null
+++ b/app/controllers/sitemaps_controller.rb
@@ -0,0 +1,18 @@
+class SitemapsController < ApplicationController
+ def index
+ pages = Page.root.child_pages_enabled_for_sitemap
+ def create_json(pages)
+ item = {}
+ pages.each do |page|
+ if page.child_page.size > 0
+ item["#{page.name}"] = {"url"=> "/#{locale.to_s}" + page.url, "children"=>create_json(page.sorted_published_child_pages)}
+ else
+ item["#{page.name}"] = {"url"=> "/#{locale.to_s}" + page.url}
+ end
+ end
+ item
+ end
+ items = create_json(pages)
+ items
+ end
+end
\ No newline at end of file
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 206a6cc..aa45594 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -16,10 +16,42 @@ module ApplicationHelper
"/module/#{module_name}/show"
end
+ def render_header
+ site = Site.first
+ key = Template::KEY
+ header_file = File.join('../templates', "#{key}", '/home/header.html.erb')
+ header_file_html = render :file => header_file
+ header = Nokogiri::HTML(header_file_html, nil, "UTF-8")
+ sub_menu_html = site.sub_menu
+ html = header.to_s
+ html = html.gsub("{{site_name}}",site.title)
+ html = html.gsub("%7B%7Blogo_url%7D%7D",(site.default_image.file.url rescue "http://placehold.it/50x50"))
+ if site.sitemap_menu_in_header
+ sub_menu_html = sub_menu_html + "Sitemap"
+ end
+ html = html.gsub("{{header-data}}",sub_menu_html)
+ html.html_safe
+ end
+
+ def render_footer
+ site = Site.first
+ key = Template::KEY
+ footer_file = File.join('../templates', "#{key}", '/home/footer.html.erb')
+ footer_file_html = render :file => footer_file
+ footer = Nokogiri::HTML(footer_file_html, nil, "UTF-8")
+ html = footer.to_s
+ site_footer = site.footer
+ if site.enable_terms_of_use
+ site_footer = site_footer + "Terms of use"
+ end
+ html = html.gsub("{{footer-data}}",site_footer)
+ html.html_safe
+ end
+
def render_menu
# json_file = File.read(File.join(Rails.root, 'public', "menu.json"))
# @items = JSON.parse(json_file)
- @pages = Page.where(:parent_page_id.ne => "" , :parent_page_id.exists => false).first.sorted_published_child_pages
+ @pages = Page.root.sorted_published_child_pages
def create_json(pages)
item = {}
@@ -85,41 +117,41 @@ module ApplicationHelper
def render_view
- def parsing_repeats_again(elements,d,level)
- newhtml = []
- oldhtml = []
- elements.each do |el|
- html_to_render = ""
- data_name = el.attr("data-list")
- wrap_elements = el.css("*[data-list][data-level='#{level}']")
- if d["#{data_name}"]
- d["#{data_name}"].each_with_index do |item,i|
- element = el.inner_html
- if wrap_elements.count > 0
- htmls = parsing_repeats_again(wrap_elements,d["#{data_name}"][i], level + 1)
- htmls[0].each_with_index do |html,i|
- element = element.gsub(html,htmls[1][i])
- end
- end
- item.each do |key,value|
- if !value.kind_of?(Array)
- value = value.nil? ? "" : value
- element = element.gsub("{{#{key}}}",value)
- element = element.gsub("%7B%7B#{key}%7D%7D",value)
- end
- end
- html_to_render = html_to_render + element
- end
- temp = el.to_s
- oldhtml << temp
- temp = temp.gsub(el.inner_html, html_to_render)
- newhtml << temp
- end
- end
- [oldhtml,newhtml]
- end
+ def parsing_repeats_again(elements,d,level)
+ newhtml = []
+ oldhtml = []
+ elements.each do |el|
+ html_to_render = ""
+ data_name = el.attr("data-list")
+ wrap_elements = el.css("*[data-list][data-level='#{level}']")
+ if d["#{data_name}"]
+ d["#{data_name}"].each_with_index do |item,i|
+ element = el.inner_html
+ if wrap_elements.count > 0
+ htmls = parsing_repeats_again(wrap_elements,d["#{data_name}"][i], level + 1)
+ htmls[0].each_with_index do |html,i|
+ element = element.gsub(html,htmls[1][i])
+ end
+ end
+ item.each do |key,value|
+ if !value.kind_of?(Array)
+ value = value.nil? ? "" : value
+ element = element.gsub("{{#{key}}}",value.to_s)
+ element = element.gsub("%7B%7B#{key}%7D%7D",value.to_s)
+ end
+ end
+ html_to_render = html_to_render + element
+ end
+ temp = el.to_s
+ oldhtml << temp
+ temp = temp.gsub(el.inner_html, html_to_render)
+ newhtml << temp
+ end
+ end
+ [oldhtml,newhtml]
+ end
+
-
if params[:target_action] == "index"
file = File.open(File.join(Rails.root, 'app', 'templates', "#{@key}", 'modules', params[:target_controller].singularize, "#{params[:target_action]}.html.erb"))
doc = Nokogiri::HTML(file, nil, "UTF-8")
@@ -129,54 +161,54 @@ module ApplicationHelper
keys = data.keys
wrap_elements = doc.css("*[data-list][data-level='0']")
htmls = parsing_repeats_again(wrap_elements,data,1)
- html = doc.to_s
- htmls[0].each_with_index do |h,i|
- html = html.gsub(h,htmls[1][i])
- end
+ html = doc.to_s
+ htmls[0].each_with_index do |h,i|
+ html = html.gsub(h,htmls[1][i])
+ end
- if keys[1]
- (data[keys[1]].kind_of?(Array) ? data[keys[0]] : data[keys[1]]).each do |key,value|
- value = value.nil? ? "" : value
- html = html.gsub("{{#{key}}}",value)
- html = html.gsub("%7B%7B#{key}%7D%7D",value)
- end
- end
- html.html_safe
+ if keys[1]
+ (data[keys[1]].kind_of?(Array) ? data[keys[0]] : data[keys[1]]).each do |key,value|
+ value = value.nil? ? "" : value
+ html = html.gsub("{{#{key}}}",value.to_s)
+ html = html.gsub("%7B%7B#{key}%7D%7D",value.to_s)
+ end
+ end
+ html.html_safe
elsif params[:target_action] == "show"
file = File.open(File.join(Rails.root, 'app', 'templates', "#{@key}", 'modules', params[:target_controller].singularize, "#{params[:target_action]}.html.erb"))
doc = Nokogiri::HTML(file, nil, "UTF-8")
file.close
controller = "#{params[:target_controller].capitalize}_controller".classify.constantize.new
data = controller.send("#{params[:target_action]}")
+
if data.blank? || data.empty?
file = File.open("#{Rails.root}/public/404.html")
doc = Nokogiri::HTML(file, nil, "UTF-8")
file.close
doc.to_html.html_safe
else
- unless data['impressionist'].blank?
- impression = data['impressionist'].impressions.create
- impression.user_id = request.session['user_id']
- impression.controller_name = params[:target_controller]
- impression.action_name = params[:target_action]
- impression.ip_address = request.remote_ip
- impression.session_hash = request.session.id
- impression.request_hash = @impressionist_hash
- impression.referrer = request.referrer
- impression.save
- data['impressionist'].view_count = data['impressionist'].impressions.count
- data['impressionist'].save
- end
+ unless data['impressionist'].blank?
+ impression = data['impressionist'].impressions.create
+ impression.user_id = request.session['user_id']
+ impression.controller_name = params[:target_controller]
+ impression.action_name = params[:target_action]
+ impression.ip_address = request.remote_ip
+ impression.session_hash = request.session.id
+ impression.request_hash = @impressionist_hash
+ impression.referrer = request.referrer
+ impression.save
+ data['impressionist'].view_count = data['impressionist'].impressions.count
+ data['impressionist'].save
+ end
wrap_elements = doc.css("*[data-list][data-level='0']")
if wrap_elements.count == 0
wrap_element_html = doc.to_s
-
el = wrap_element_html
data.each do |key,value|
- next if key.eql? 'impressionist'
+ next if key.eql? 'impressionist'
value = value.nil? ? "" : value
- el = el.gsub("{{#{key}}}",value)
- el = el.gsub("%7B%7B#{key}%7D%7D",value)
+ el = el.gsub("{{#{key}}}",value.to_s)
+ el = el.gsub("%7B%7B#{key}%7D%7D",value.to_s)
end
el.html_safe
else
@@ -185,24 +217,23 @@ module ApplicationHelper
data.keys.each do |key|
not_array_key = key if data["#{key}"].kind_of?(Hash)
end
- htmls = parsing_repeats_again(wrap_elements,data,1)
- html = doc.to_s
- htmls[0].each_with_index do |h,i|
- html = html.gsub(h,htmls[1][i])
- end
- if data["#{not_array_key}"]
- data["#{not_array_key}"].each do |key,value|
- next if key.eql? 'impressionist'
- value = value.nil? ? "" : value
- html = html.gsub("{{#{key}}}",value)
- html = html.gsub("%7B%7B#{key}%7D%7D",value)
- end
- end
- html.html_safe
+ htmls = parsing_repeats_again(wrap_elements,data,1)
+ html = doc.to_s
+ htmls[0].each_with_index do |h,i|
+ html = html.gsub(h,htmls[1][i])
+ end
+ if data["#{not_array_key}"]
+ data["#{not_array_key}"].each do |key,value|
+ next if key.eql? 'impressionist'
+ value = value.nil? ? "" : value
+ html = html.gsub("{{#{key}}}",value.to_s)
+ html = html.gsub("%7B%7B#{key}%7D%7D",value.to_s)
+ end
+ end
+ html.html_safe
end
end
end
-
end
def action_data
@@ -249,4 +280,26 @@ module ApplicationHelper
image_tag(user.avatar.thumb.url)
end
+ def render_sitemap
+ items = action_data
+ def node(items)
+ html = ""
+ items.each do |key,item|
+ if item["children"] && !item["children"].empty?
+ url = item["url"]
+ html = html + "- #{key}"
+ html = html + node(item["children"])
+ html = html + "
"
+ else
+ url = item["url"]
+ html = html + "- #{key}
"
+ end
+ end
+ html = html + "
"
+ html
+ end
+ html = node(items)
+ html.html_safe
+ end
+
end
diff --git a/app/helpers/orbit_helper.rb b/app/helpers/orbit_helper.rb
index 26735aa..0fe8add 100644
--- a/app/helpers/orbit_helper.rb
+++ b/app/helpers/orbit_helper.rb
@@ -22,10 +22,27 @@ module OrbitHelper
def self.this_module_app
@module_app
end
+
+ def self.widget_module_app
+ @widget_module_app
+ end
+
def self.set_this_module_app(module_app)
@module_app = ModuleApp.where(:key=>module_app).first
end
+ def self.set_widget_custom_value(value)
+ @widget_custom_value = value
+ end
+
+ def self.widget_custom_value
+ @widget_custom_value
+ end
+
+ def self.set_widget_module_app(module_app)
+ @widget_module_app = ModuleApp.where(:key=>module_app).first
+ end
+
def self.params
@params
end
@@ -47,6 +64,22 @@ module OrbitHelper
@site_locale = locale
end
+ def self.set_widget_data_count(data_count)
+ @widget_data_count = data_count
+ end
+
+ def self.widget_data_count
+ @widget_data_count
+ end
+
+ def self.set_widget_categories(categories)
+ @widget_categories = categories
+ end
+
+ def self.widget_categories
+ @widget_categories
+ end
+
def self.get_site_locale
@site_locale
end
@@ -62,6 +95,9 @@ module OrbitHelper
def get_item_module_infos(page)
if page.parent_page_id.nil?
["Home","icons-house"]
+ elsif page.module == "sitemap"
+ module_app = ModuleApp.find_by_key("page_content")
+ [module_app.title, module_app.get_registration.icon_class]
else
module_app = ModuleApp.where(:key => page.module).first
unless module_app.nil?
diff --git a/app/helpers/pages_helper.rb b/app/helpers/pages_helper.rb
index 5c66ff8..fdcaceb 100644
--- a/app/helpers/pages_helper.rb
+++ b/app/helpers/pages_helper.rb
@@ -12,6 +12,39 @@ module PagesHelper
end
def render_widget_for_frontend(controller_name, widget_method, widget_file)
+ def parsing_repeats_again(elements,d,level)
+ newhtml = []
+ oldhtml = []
+ elements.each do |el|
+ html_to_render = ""
+ data_name = el.attr("data-list")
+ wrap_elements = el.css("*[data-list][data-level='#{level}']")
+ if d["#{data_name}"]
+ d["#{data_name}"].each_with_index do |item,i|
+ element = el.inner_html
+ if wrap_elements.count > 0
+ htmls = parsing_repeats_again(wrap_elements,d["#{data_name}"][i], level + 1)
+ htmls[0].each_with_index do |html,i|
+ element = element.gsub(html,htmls[1][i])
+ end
+ end
+ item.each do |key,value|
+ if !value.kind_of?(Array)
+ value = value.nil? ? "" : value
+ element = element.gsub("{{#{key}}}",value.to_s)
+ element = element.gsub("%7B%7B#{key}%7D%7D",value.to_s)
+ end
+ end
+ html_to_render = html_to_render + element
+ end
+ temp = el.to_s
+ oldhtml << temp
+ temp = temp.gsub(el.inner_html, html_to_render)
+ newhtml << temp
+ end
+ end
+ [oldhtml,newhtml]
+ end
controller_name = controller_name.downcase.singularize
f = File.join('../templates', current_site.template, 'modules', "#{controller_name}", "_#{widget_file}.html.erb");
s = render_to_string(f)
@@ -21,24 +54,16 @@ module PagesHelper
OrbitHelper.set_current_widget_module controller_name
data = controller.send("#{widget_method}")
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|
- value = value.nil? ? "" : value
- el = el.gsub("{{#{key}}}",value.to_s)
- el = el.gsub("%7B%7B#{key}%7D%7D",value.to_s)
- end
- html_to_render = html_to_render + el
- end
- wrap_element.inner_html = html_to_render
+ wrap_elements = doc.css("*[data-list][data-level='0']")
+ htmls = parsing_repeats_again(wrap_elements,data,1)
+ html = doc.to_s
+ htmls[0].each_with_index do |h,i|
+ html = html.gsub(h,htmls[1][i])
end
- 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)
+ html = html.gsub("{{#{key}}}",value.to_s)
+ html = html.gsub("%7B%7B#{key}%7D%7D",value.to_s)
end
end
html.html_safe
diff --git a/app/models/module_app.rb b/app/models/module_app.rb
index 3b838f9..ac3ba16 100644
--- a/app/models/module_app.rb
+++ b/app/models/module_app.rb
@@ -10,12 +10,14 @@ class ModuleApp
field :frontend_enable, type: Boolean, default: false
field :sidebar_order,type: Integer,default: 0
field :authorizable_models, type: Array
+ field :widget_enable, type: Boolean, default: false
has_many :categories, dependent: :destroy, :autosave => true
has_and_belongs_to_many :tags, dependent: :destroy, :autosave => true
has_many :authorizations
scope :frontend_enabled, ->{ where(:frontend_enable => true)}
+ scope :widget_enabled, ->{ where(:widget_enable => true)}
def refetch_setting!(reg)
self[:taggable] = reg.is_taggable
@@ -23,6 +25,7 @@ class ModuleApp
self[:authorizable] = reg.is_authorizable
self[:authorizable_models] = reg.get_authorizable_models
self[:frontend_enable] = reg.is_frontend_enabled
+ self[:widget_enable] = reg.is_widget_enabled
end
def get_registration
diff --git a/app/models/page.rb b/app/models/page.rb
index 2100f6c..536639b 100644
--- a/app/models/page.rb
+++ b/app/models/page.rb
@@ -1,8 +1,8 @@
class Page
- include Mongoid::Document
- include Mongoid::Timestamps
- include OrbitModel::Impression
-
+ include Mongoid::Document
+ include Mongoid::Timestamps
+ include OrbitModel::Impression
+
field :name, localize: true
field :number, type: Integer
field :module
@@ -11,8 +11,8 @@ class Page
field :data_count, type: Integer, default: 10
field :enabled_for, type: Array, default: []
field :menu_enabled_for, type: Array, default: []
- field :categories, type: Array, :default => []
- field :enabled_for_sitemap, type: Array, :default => []
+ field :categories, type: Array, :default => []
+ field :enabled_for_sitemap, type: Array, :default => []
has_many :page_parts, :autosave => true, :dependent => :destroy
@@ -22,11 +22,11 @@ class Page
def to_param
- page_id.parameterize
- end
+ page_id.parameterize
+ end
def self.find_by_param(input)
- self.find_by(page_id: input) rescue nil
+ self.find_by(page_id: input) rescue nil
end
def self.root
@@ -37,11 +37,15 @@ class Page
self.parent_page_id.nil?
end
- def sorted_published_child_pages
- self.child_page.where(:menu_enabled_for => I18n.locale).asc(:number)
- end
+ def sorted_published_child_pages
+ self.child_page.where(:menu_enabled_for => I18n.locale).asc(:number)
+ end
- def published_child_pages
- self.child_page.where(:menu_enabled_for => I18n.locale)
- end
+ def child_pages_enabled_for_sitemap
+ self.child_page.where(:enabled_for_sitemap => I18n.locale)
+ end
+
+ def published_child_pages
+ self.child_page.where(:menu_enabled_for => I18n.locale)
+ end
end
\ No newline at end of file
diff --git a/app/models/site.rb b/app/models/site.rb
index eb117f9..a02fb1e 100644
--- a/app/models/site.rb
+++ b/app/models/site.rb
@@ -8,7 +8,8 @@ class Site
field :address, type: String
field :footer, localize: true
field :sub_menu, localize: true
- field :terms_of_use, localize: true
+ field :site_map_link, type: String, :default => "/sitemap"
+ field :terms_of_use_link, type: String
field :google_analytics, type: String
field :in_use_locales, :type => Array
field :valid_locales, :type => Array
diff --git a/app/models/sub_part.rb b/app/models/sub_part.rb
index 7aa83d1..6b9e539 100644
--- a/app/models/sub_part.rb
+++ b/app/models/sub_part.rb
@@ -3,10 +3,15 @@ class SubPart
include Mongoid::Timestamps
field :module
+ field :title, localize: true
field :widget_type
field :widget_method
field :kind, default: "none"
-
+ field :content, localize: true
+ field :data_count, type: Integer, default: 10
+ field :categories, type: Array, :default => []
+ field :custom_string_field, type: String
+ field :custom_array_field, type: Array, :default => []
belongs_to :page_part
end
\ No newline at end of file
diff --git a/app/templates/orbit_bootstrap/home/footer.html.erb b/app/templates/orbit_bootstrap/home/footer.html.erb
new file mode 100644
index 0000000..a7bdd0f
--- /dev/null
+++ b/app/templates/orbit_bootstrap/home/footer.html.erb
@@ -0,0 +1,7 @@
+
\ No newline at end of file
diff --git a/app/templates/orbit_bootstrap/partial/_header.html.erb b/app/templates/orbit_bootstrap/home/header.html.erb
similarity index 60%
rename from app/templates/orbit_bootstrap/partial/_header.html.erb
rename to app/templates/orbit_bootstrap/home/header.html.erb
index b36bf7e..8cbcce5 100644
--- a/app/templates/orbit_bootstrap/partial/_header.html.erb
+++ b/app/templates/orbit_bootstrap/home/header.html.erb
@@ -3,14 +3,13 @@
-
<%= render_partial("menu") %>
diff --git a/app/templates/orbit_bootstrap/home/index.html.erb b/app/templates/orbit_bootstrap/home/index.html.erb
index 6d6d689..4106ae6 100644
--- a/app/templates/orbit_bootstrap/home/index.html.erb
+++ b/app/templates/orbit_bootstrap/home/index.html.erb
@@ -5,10 +5,10 @@
- <%= render_partial("header") %>
+ <%= render_header %>
-
- <%= render_widget "ad_banner/widget" %>
+
+ <%#= render_widget "ad_banner/widget" %>
@@ -29,7 +29,7 @@
- <%= render_partial("footer") %>
+ <%= render_footer %>