From 2a6d9487ae5e980f91dca179f6e96e0ff3b6a023 Mon Sep 17 00:00:00 2001 From: Harry Bomrah Date: Mon, 9 Jun 2014 18:58:44 +0800 Subject: [PATCH] added links for structure .. fixed a small bug for widget rendering --- app/controllers/pages_controller.rb | 16 +++---- app/controllers/sitemaps_controller.rb | 12 +++++- app/helpers/application_helper.rb | 21 +++++++--- app/helpers/pages_helper.rb | 4 +- app/models/page.rb | 2 + app/views/admin/import/index.html.erb | 15 ++++++- app/views/admin/items/_node.html.erb | 30 +++++++------ app/views/pages/_form.html.erb | 1 + app/views/pages/_form_link.html.erb | 58 ++++++++++++++++++++++++++ app/views/pages/edit.html.erb | 12 +++++- app/views/pages/new.html.erb | 10 ++++- 11 files changed, 146 insertions(+), 35 deletions(-) create mode 100644 app/views/pages/_form_link.html.erb diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb index dc8feec..d36b064 100644 --- a/app/controllers/pages_controller.rb +++ b/app/controllers/pages_controller.rb @@ -149,11 +149,13 @@ class PagesController < ApplicationController def edit @page = Page.find(params[:id]) - @pages = Page.where(:page_id.ne => "" , :page_id.exists => true) - @modules = ModuleApp.all.frontend_enabled - module_app = ModuleApp.find_by_key(@page.module) rescue nil - @categories = module_app.categories rescue [] - @layout_types = get_layouts module_app.key + if params[:type] == "page" + @pages = Page.where(:page_id.ne => "" , :page_id.exists => true) + @modules = ModuleApp.all.frontend_enabled + module_app = ModuleApp.find_by_key(@page.module) rescue nil + @categories = module_app.categories rescue [] + @layout_types = get_layouts module_app.key + end end def update @@ -270,13 +272,13 @@ class PagesController < ApplicationController page = Page.find(params[:page][:parent_page]) page.url = page.url == "/" ? "" : page.url @url = page.url + "/#{params[:page][:page_id]}" - p = params.require(:page).permit(:number, :page_id, :module, :layout, :parent_page, :data_count, enabled_for_sitemap: [], enabled_for: [], menu_enabled_for: [], categories: [], name_translations: [:en, :zh_tw]) + p = params.require(:page).permit(:number, :page_type, :page_id, :module, :layout, :parent_page, :data_count, enabled_for_sitemap: [], enabled_for: [], menu_enabled_for: [], categories: [], name_translations: [:en, :zh_tw],external_url_translations: [:en, :zh_tw]) p["url"] = @url p end def page_update_params - p = params.require(:page).permit(:number, :page_id, :module, :layout, :parent_page, :data_count, enabled_for_sitemap: [], enabled_for: [],menu_enabled_for: [], categories: [], name_translations: [:en, :zh_tw]) + p = params.require(:page).permit(:number, :page_type, :page_id, :module, :layout, :parent_page, :data_count, enabled_for_sitemap: [], enabled_for: [],menu_enabled_for: [], categories: [], name_translations: [:en, :zh_tw], external_url_translations: [:en, :zh_tw]) p["enabled_for"] = p["enabled_for"] || [] p["menu_enabled_for"] = p["menu_enabled_for"] || [] p diff --git a/app/controllers/sitemaps_controller.rb b/app/controllers/sitemaps_controller.rb index e3faf4d..a34e230 100644 --- a/app/controllers/sitemaps_controller.rb +++ b/app/controllers/sitemaps_controller.rb @@ -5,9 +5,17 @@ class SitemapsController < ApplicationController 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)} + if page.page_type == "page" + item["#{page.name}"] = {"url"=> "/#{locale.to_s}" + page.url, "children"=>create_json(page.sorted_published_child_pages), "target"=>"_self"} + else + item["#{page.name}"] = {"url"=> page.external_url, "children"=>create_json(page.sorted_published_child_pages), "target"=>"_blank"} + end else - item["#{page.name}"] = {"url"=> "/#{locale.to_s}" + page.url} + if page.page_type == "page" + item["#{page.name}"] = {"url"=> "/#{locale.to_s}" + page.url, "target"=>"_self"} + else + item["#{page.name}"] = {"url"=> page.external_url, "target"=>"_blank"} + end end end item diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index ccf8e4d..2e2e5c8 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -61,9 +61,17 @@ module ApplicationHelper 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)} + if page.page_type == "page" + item["#{page.name}"] = {"url"=> "/#{locale.to_s}" + page.url, "children"=>create_json(page.sorted_published_child_pages), "target" => "_self"} + elsif page.page_type == "link" + item["#{page.name}"] = {"url"=> page.external_url, "children"=>create_json(page.sorted_published_child_pages), "target" => "_blank"} + end else - item["#{page.name}"] = {"url"=> "/#{locale.to_s}" + page.url} + if page.page_type == "page" + item["#{page.name}"] = {"url"=> "/#{locale.to_s}" + page.url, "target" => "_self"} + elsif page.page_type == "link" + item["#{page.name}"] = {"url"=> page.external_url, "target" => "_blank"} + end end end item @@ -91,6 +99,7 @@ module ApplicationHelper t = Nokogiri::HTML(menu, nil, "UTF-8") a = t.css("*[data-menu-link='true']") a[0]["href"] = "href_here" + a[0]["target"] = "target_here" li = t.css("*[data-menu-level='#{i}'] > *") @menus_items << li.to_html ul = t.css("*[data-menu-level='#{i}']") @@ -103,7 +112,7 @@ module ApplicationHelper items.each do |key,item| li = @menus_items[level].gsub("href_here",item["url"]) li = li.gsub("{{link_name}}",key) - + li = li.gsub("target_here",item["target"]) li = request.original_fullpath == item['url'] ? li.gsub("{{active}}","active") : li.gsub("{{active}}","") if item["children"] && !item["children"].empty? @@ -331,12 +340,14 @@ module ApplicationHelper items.each do |key,item| if item["children"] && !item["children"].empty? url = item["url"] - html = html + "
  • #{key}" + target = item["target"] + html = html + "
  • #{key}" html = html + node(item["children"]) html = html + "
  • " else + target = item["target"] url = item["url"] - html = html + "
  • #{key}
  • " + html = html + "
  • #{key}
  • " end end html = html + "" diff --git a/app/helpers/pages_helper.rb b/app/helpers/pages_helper.rb index 5611e3a..87457a1 100644 --- a/app/helpers/pages_helper.rb +++ b/app/helpers/pages_helper.rb @@ -46,9 +46,11 @@ module PagesHelper [oldhtml,newhtml] end controller_name = controller_name.downcase.singularize - f = File.join('../templates', "#{@key}", 'modules', "#{controller_name}", "_#{widget_file}.html.erb"); + f = File.join(Rails.root, 'app', 'templates', "#{@key}", 'modules', "#{controller_name}", "_#{widget_file}.html.erb"); if !File.exists?f f = File.join('../templates', "#{@key}", 'modules', "#{controller_name}", "_widget.html.erb"); + else + f = File.join('../templates', "#{@key}", 'modules', "#{controller_name}", "_#{widget_file}.html.erb"); end s = render_to_string(f) doc = Nokogiri::HTML(s, nil, "UTF-8") diff --git a/app/models/page.rb b/app/models/page.rb index bb23815..09af3e5 100644 --- a/app/models/page.rb +++ b/app/models/page.rb @@ -7,6 +7,8 @@ class Page field :number, type: Integer field :module field :url + field :page_type, type: String, default: "page" + field :external_url, localize: true field :page_id field :layout, type: String, default: "index" field :data_count, type: Integer, default: 10 diff --git a/app/views/admin/import/index.html.erb b/app/views/admin/import/index.html.erb index b6bb55c..a142f9c 100644 --- a/app/views/admin/import/index.html.erb +++ b/app/views/admin/import/index.html.erb @@ -168,7 +168,15 @@ $("#check-site-url").click(function(){checkSiteUrl();}); - $("#import-start-btn").click(function(){getModuleCategories()}); + $("#import-start-btn").click(function(){ + switch(module){ + case "page": + importPages(); + break; + default: + getModuleCategories(); + } + }); $("#import-back-btn").click(function(){ $("#import-progress").fadeOut(300,function(){ $("#import-head").fadeIn(0); @@ -176,6 +184,11 @@ }); }); + var importPages = function(){ + $("#import-progress .bar").css('width','0%'); + $("#import-progress-text").html("Importing Pages

    "); + } + var importModule = function(m){ module = m; dataList=null; diff --git a/app/views/admin/items/_node.html.erb b/app/views/admin/items/_node.html.erb index fff1f48..d1f6ad2 100644 --- a/app/views/admin/items/_node.html.erb +++ b/app/views/admin/items/_node.html.erb @@ -1,31 +1,29 @@