diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb index 3bd483d..7542d99 100644 --- a/app/controllers/pages_controller.rb +++ b/app/controllers/pages_controller.rb @@ -1,7 +1,7 @@ # pass the layout=false for not rendering the layouts and also can specify the methods to in the backend controller. # data-layout-content="arrayname" in layouts can be used to render data in the array require 'zhconv' - +require "uri" class PagesController < ApplicationController before_action :get_key layout :get_layout @@ -308,6 +308,10 @@ class PagesController < ApplicationController @url = page.url + "/#{params[:page][:page_id]}" p = params.require(:page).permit(:number, :page_type, :page_id, :module, :layout, :parent_page, :data_count, :enabled_for_mobile, enabled_for_sitemap: [], enabled_for: [], menu_enabled_for: [], categories: [], tags: [], name_translations: [:en, :zh_tw],external_url_translations: [:en, :zh_tw]) p["url"] = @url + if p["external_url_translations"] + p["external_url_translations"]["en"] = p["external_url_translations"]["en"].sub("http://" + request.host_with_port,"") + p["external_url_translations"]["zh_tw"] = p["external_url_translations"]["zh_tw"].sub("http://" + request.host_with_port,"") + end p end @@ -316,6 +320,10 @@ class PagesController < ApplicationController p["enabled_for"] = p["enabled_for"] || [] p["menu_enabled_for"] = p["menu_enabled_for"] || [] p["enabled_for_mobile"] = p["enabled_for_mobile"] || 0 + if p["external_url_translations"] + p["external_url_translations"]["en"] = p["external_url_translations"]["en"].sub("http://" + request.host_with_port,"") + p["external_url_translations"]["zh_tw"] = p["external_url_translations"]["zh_tw"].sub("http://" + request.host_with_port,"") + end p end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 7d60c8d..bdd9853 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -93,17 +93,18 @@ module ApplicationHelper item["#{page.name}"] = {"url"=> "/#{locale.to_s}" + page.url, "children"=>create_json(page.sorted_published_child_pages_for_mobile), "target" => "_self"} end elsif page.page_type == "link" + target = get_target(page.external_url) if $mobile.blank? - item["#{page.name}"] = {"url"=> page.external_url, "children"=>create_json(page.sorted_published_child_pages), "target" => "_blank"} + item["#{page.name}"] = {"url"=> page.external_url, "children"=>create_json(page.sorted_published_child_pages), "target" => target} else - item["#{page.name}"] = {"url"=> page.external_url, "children"=>create_json(page.sorted_published_child_pages_for_mobile), "target" => "_blank"} + item["#{page.name}"] = {"url"=> page.external_url, "children"=>create_json(page.sorted_published_child_pages_for_mobile), "target" => target} end end else 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"} + item["#{page.name}"] = {"url"=> page.external_url, "target" => get_target(page.external_url)} end end end @@ -455,4 +456,13 @@ module ApplicationHelper html end + def get_target(link) + temp_url = URI.parse(link) + target = "_blank" + if temp_url.host.nil? + target = "_self" + end + target + end + end diff --git a/app/views/pages/_form_link.html.erb b/app/views/pages/_form_link.html.erb index c79b03c..fba91ca 100644 --- a/app/views/pages/_form_link.html.erb +++ b/app/views/pages/_form_link.html.erb @@ -16,7 +16,19 @@