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 @@
- <% if node.class.to_s.eql?('Page') %>
<% unless node.root? %>
- <% name, icon_name = get_item_module_infos(node) %>
-
+ <% if node.page_type == "page" %>
+ <% name, icon_name = get_item_module_infos(node) %>
+
+ <% else %>
+
+ <% end %>
<% end %>
- <% else %>
-
- <% end %>
<%= content_tag(:em, node.url, class: "muted") if node.class.to_s.eql?('Link') %>
- <% if node.class.to_s.eql?('Page') %>
+ <% if node.page_type.eql?('page') %>
<%= link_to node.name, "/" + I18n.locale.to_s + node.url %>
<% else %>
- <%= link_to node.title, "/" + I18n.locale.to_s + node.url %>
+
<%= node.external_url %>
+ <%= link_to node.name, node.external_url %>
<% end %>
diff --git a/app/views/pages/_form.html.erb b/app/views/pages/_form.html.erb
index 95db477..7ffca4e 100644
--- a/app/views/pages/_form.html.erb
+++ b/app/views/pages/_form.html.erb
@@ -22,6 +22,7 @@
<%= f.select(:module, @modules.map{|m| [m.title,m.key]},{:include_blank => true},:class=>"module_select") %>
<%= f.hidden_field :parent_page, value: (params[:parent_page] || @page.parent_page_id) %>
+ <%= f.hidden_field :page_type, value: "page" %>
diff --git a/app/views/pages/_form_link.html.erb b/app/views/pages/_form_link.html.erb
new file mode 100644
index 0000000..c79b03c
--- /dev/null
+++ b/app/views/pages/_form_link.html.erb
@@ -0,0 +1,58 @@
+<% if params[:action] == "edit" %>
+
<%= @page.name %>
+<% end %>
+
+ <% I18n.available_locales.each do |locale| %>
+
+
+ <%= f.fields_for :name_translations do |n| %>
+ <%= n.text_field locale, :value=>@page.name_translations[locale] rescue nil %>
+ <% end %>
+
+ <% end %>
+
+
+ <% I18n.available_locales.each do |locale| %>
+
+
+ <%= f.fields_for :external_url_translations do |n| %>
+ <%= n.text_field locale, :value=>@page.external_url_translations[locale] rescue nil %>
+ <% end %>
+
+ <% end %>
+
+
+ <% if params[:action] == "new" %>
+
+
+ <%= f.text_field :page_id %>
+
+ <% end %>
+
+ <%= f.hidden_field :parent_page, value: (params[:parent_page] || @page.parent_page_id) %>
+ <%= f.hidden_field :page_type, value: "link" %>
+
+
+
\ No newline at end of file
diff --git a/app/views/pages/edit.html.erb b/app/views/pages/edit.html.erb
index d65f9e2..68b0d8b 100644
--- a/app/views/pages/edit.html.erb
+++ b/app/views/pages/edit.html.erb
@@ -1,8 +1,16 @@
<%= form_for @page, url: {action: "update"},:class =>"form-horizontal", remote: true do |f| %>
- <%= render "form", {:f=> f} %>
+ <% if params[:type] == "page" %>
+ <%= render "form", {:f=> f} %>
+ <% elsif params[:type] == "link" %>
+ <%= render "form_link", {:f=> f} %>
+ <% end %>
- <%= f.submit "Update Page",:class=>"btn btn-primary" %>
+ <% if params[:type] == "page" %>
+ <%= f.submit "Update Page", :class=>"btn btn-primary" %>
+ <% elsif params[:type] == "link" %>
+ <%= f.submit "Update Link", :class=>"btn btn-primary" %>
+ <% end %>
<% end %>
\ No newline at end of file
diff --git a/app/views/pages/new.html.erb b/app/views/pages/new.html.erb
index 91efbe7..b4ba121 100644
--- a/app/views/pages/new.html.erb
+++ b/app/views/pages/new.html.erb
@@ -1,8 +1,16 @@
<%= form_for @page, url: {action: "create"},:class =>"form-horizontal", remote: true do |f| %>
- <%= render "form", {:f=> f} %>
+ <% if params[:type] == "page" %>
+ <%= render "form", {:f=> f} %>
+ <% elsif params[:type] == "link" %>
+ <%= render "form_link", {:f=> f} %>
+ <% end %>
+ <% if params[:type] == "page" %>
<%= f.submit "Create Page", :class=>"btn btn-primary" %>
+ <% elsif params[:type] == "link" %>
+ <%= f.submit "Create Link", :class=>"btn btn-primary" %>
+ <% end %>
<% end %>
\ No newline at end of file