now the external links open in new browser window and internal links open in same window. also now internal links are independent of the host

This commit is contained in:
Harry Bomrah 2014-07-16 18:48:23 +08:00
parent ce525719b7
commit 6bb2708b82
3 changed files with 35 additions and 5 deletions

View File

@ -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

View File

@ -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

View File

@ -16,7 +16,19 @@
<label class="control-label">Url (<%= t(locale.to_s) %>) :</label>
<div class="controls">
<%= f.fields_for :external_url_translations do |n| %>
<%= n.text_field locale, :value=>@page.external_url_translations[locale] rescue nil %>
<%
if params[:action] == "edit"
temp_url = @page.external_url_translations[locale]
temp_url = URI.parse(temp_url)
url = ""
if temp_url.host.nil?
url = "http://" + request.host_with_port + @page.external_url_translations[locale]
else
url = @page.external_url_translations[locale]
end
end
%>
<%= n.text_field locale, :value=>url rescue nil %>
<% end %>
</div>
<% end %>