From: Aaron Lidman Date: Sat, 9 Nov 2013 00:10:08 +0000 (-0800) Subject: Update title on pushState, closes #33 X-Git-Tag: live~4609^2~131 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/1ae7872ed89612353cba641a6b77e86f963789d7 Update title on pushState, closes #33 --- diff --git a/app/assets/javascripts/index.js b/app/assets/javascripts/index.js index 816bb4e8f..f982ff1e1 100644 --- a/app/assets/javascripts/index.js +++ b/app/assets/javascripts/index.js @@ -235,7 +235,11 @@ $(document).ready(function () { page.pushstate = page.popstate = function(path) { $("#content").addClass("overlay-sidebar"); map.invalidateSize(); - $('#sidebar_content').load(path); + $('#sidebar_content').load(path, function(a, b, xhr) { + if (xhr.getResponseHeader('X-Page-Title')) { + document.title = xhr.getResponseHeader('X-Page-Title'); + } + }); }; page.unload = function() { @@ -250,7 +254,10 @@ $(document).ready(function () { var page = {}; page.pushstate = page.popstate = function(path, type, id) { - $('#sidebar_content').load(path, function() { + $('#sidebar_content').load(path, function(a, b, xhr) { + if (xhr.getResponseHeader('X-Page-Title')) { + document.title = xhr.getResponseHeader('X-Page-Title'); + } page.load(path, type, id); }); }; diff --git a/app/assets/javascripts/index/export.js b/app/assets/javascripts/index/export.js index 413caea3f..4842fff0c 100644 --- a/app/assets/javascripts/index/export.js +++ b/app/assets/javascripts/index/export.js @@ -51,7 +51,12 @@ OSM.Export = function(map) { page.pushstate = page.popstate = function(path) { $("#export_tab").addClass("current"); - $("#sidebar_content").load(path, page.load); + $("#sidebar_content").load(path, function(a, b, xhr) { + if (xhr.getResponseHeader('X-Page-Title')) { + document.title = xhr.getResponseHeader('X-Page-Title'); + } + page.load(); + }); }; page.load = function() { diff --git a/app/assets/javascripts/index/history.js b/app/assets/javascripts/index/history.js index be62d3734..6cbc86307 100644 --- a/app/assets/javascripts/index/history.js +++ b/app/assets/javascripts/index/history.js @@ -47,7 +47,7 @@ OSM.History = function(map) { url: window.location.pathname, method: "GET", data: {bbox: map.getBounds().toBBoxString()}, - success: function(html) { + success: function(html, status, xhr) { $('#sidebar_content .changesets').html(html); updateMap(); } @@ -99,7 +99,12 @@ OSM.History = function(map) { page.pushstate = page.popstate = function(path) { $("#history_tab").addClass("current"); - $("#sidebar_content").load(path, page.load); + $("#sidebar_content").load(path, function(a, b, xhr) { + if (xhr.getResponseHeader('X-Page-Title')) { + document.title = xhr.getResponseHeader('X-Page-Title'); + } + page.load(); + }); }; page.load = function() { diff --git a/app/assets/javascripts/index/search.js b/app/assets/javascripts/index/search.js index c97b6991d..e92f3747f 100644 --- a/app/assets/javascripts/index/search.js +++ b/app/assets/javascripts/index/search.js @@ -49,7 +49,12 @@ OSM.Search = function(map) { page.pushstate = page.popstate = function(path) { var params = querystring.parse(path.substring(path.indexOf('?') + 1)); $("#query").val(params.query); - $("#sidebar_content").load(path, page.load); + $("#sidebar_content").load(path, function() { + if (xhr.getResponseHeader('X-Page-Title')) { + document.title = xhr.getResponseHeader('X-Page-Title'); + } + page.load(); + }); }; page.load = function() { diff --git a/app/controllers/browse_controller.rb b/app/controllers/browse_controller.rb index cbb0f2023..61982a940 100644 --- a/app/controllers/browse_controller.rb +++ b/app/controllers/browse_controller.rb @@ -62,7 +62,6 @@ class BrowseController < ApplicationController @way_pages, @ways = paginate(:old_ways, :conditions => {:changeset_id => @changeset.id}, :per_page => 10, :parameter => 'way_page') @relation_pages, @relations = paginate(:old_relations, :conditions => {:changeset_id => @changeset.id}, :per_page => 10, :parameter => 'relation_page') - @title = "#{I18n.t('browse.changeset.title')} | #{@changeset.id}" @next = Changeset.where("id > ?", @changeset.id).order(:id => :asc).first @prev = Changeset.where("id < ?", @changeset.id).order(:id => :desc).first @@ -77,7 +76,6 @@ class BrowseController < ApplicationController def note @type = "note" @note = Note.find(params[:id]) - @title = "#{I18n.t('browse.note.title')} | #{@note.id}" @next = Note.visible.where("id > ?", @note.id).order(:id => :asc).first @prev = Note.visible.where("id < ?", @note.id).order(:id => :desc).first rescue ActiveRecord::RecordNotFound diff --git a/app/helpers/title_helper.rb b/app/helpers/title_helper.rb new file mode 100644 index 000000000..181c12af8 --- /dev/null +++ b/app/helpers/title_helper.rb @@ -0,0 +1,11 @@ +module TitleHelper + def set_title(title = false) + if title + title = t('layouts.project_name.title') + ' | ' + title + else + title = t('layouts.project_name.title') + end + response.headers["X-Page-Title"] = title + @title = title + end +end diff --git a/app/views/browse/changeset.html.erb b/app/views/browse/changeset.html.erb index 5063d6e07..696a8ca89 100644 --- a/app/views/browse/changeset.html.erb +++ b/app/views/browse/changeset.html.erb @@ -1,3 +1,5 @@ +<% set_title("#{t('browse.changeset.title')} | #{@changeset.id}") %> +

<%= t 'browse.changeset.changeset', :id => @changeset.id %> diff --git a/app/views/browse/node.html.erb b/app/views/browse/node.html.erb index 0c81b411c..8847adb19 100644 --- a/app/views/browse/node.html.erb +++ b/app/views/browse/node.html.erb @@ -1,6 +1,6 @@ <% @name = printable_name @node -@title = t('browse.node.node') + ' | ' + @name +set_title(t('browse.node.node') + ' | ' + @name) %>

diff --git a/app/views/browse/node_history.html.erb b/app/views/browse/node_history.html.erb index 8bc4ed8ab..c476b23ba 100644 --- a/app/views/browse/node_history.html.erb +++ b/app/views/browse/node_history.html.erb @@ -1,6 +1,6 @@ <% @name = printable_name @node -@title = t('browse.node_history.node_history') + ' | ' + @name +set_title(t('browse.node_history.node_history') + ' | ' + @name) %>

diff --git a/app/views/browse/note.html.erb b/app/views/browse/note.html.erb index 948cd3a06..a20de88a0 100644 --- a/app/views/browse/note.html.erb +++ b/app/views/browse/note.html.erb @@ -1,3 +1,5 @@ +<% set_title("#{t('browse.note.title')} | #{@note.id}") %> +

<%= t "browse.note.#{@note.status}_title", :note_name => @note.id %> diff --git a/app/views/browse/relation.html.erb b/app/views/browse/relation.html.erb index 125efb0d6..44baa48de 100644 --- a/app/views/browse/relation.html.erb +++ b/app/views/browse/relation.html.erb @@ -1,6 +1,6 @@ <% @name = printable_name @relation -@title = t('browse.relation.relation') + ' | ' + @name +set_title(t('browse.relation.relation') + ' | ' + @name) %>

diff --git a/app/views/browse/relation_history.html.erb b/app/views/browse/relation_history.html.erb index d059b11b4..144c7d476 100644 --- a/app/views/browse/relation_history.html.erb +++ b/app/views/browse/relation_history.html.erb @@ -1,6 +1,6 @@ <% @name = printable_name @relation -@title = t('browse.relation_history.relation_history') + ' | ' + @name +set_title(t('browse.relation_history.relation_history') + ' | ' + @name) %>

diff --git a/app/views/browse/way.html.erb b/app/views/browse/way.html.erb index ce67fb8a9..619b9314b 100644 --- a/app/views/browse/way.html.erb +++ b/app/views/browse/way.html.erb @@ -1,6 +1,6 @@ <% @name = printable_name @way -@title = t('browse.way.way') + ' | ' + @name +set_title(t('browse.way.way') + ' | ' + @name) %>

diff --git a/app/views/browse/way_history.html.erb b/app/views/browse/way_history.html.erb index a747572c1..6e234454d 100644 --- a/app/views/browse/way_history.html.erb +++ b/app/views/browse/way_history.html.erb @@ -1,6 +1,6 @@ <% @name = printable_name @way -@title = t('browse.way_history.way_history') + ' | ' + @name +set_title(t('browse.way_history.way_history') + ' | ' + @name) %>

diff --git a/app/views/changeset/history.html.erb b/app/views/changeset/history.html.erb index 022523efa..23fee589c 100644 --- a/app/views/changeset/history.html.erb +++ b/app/views/changeset/history.html.erb @@ -6,16 +6,16 @@ <% if params[:friends] and @user - @title = t 'changeset.list.title_friend' + set_title(t 'changeset.list.title_friend') @heading = t 'changeset.list.title_friend' elsif params[:nearby] and @user - @title = t 'changeset.list.title_nearby' + set_title(t 'changeset.list.title_nearby') @heading = t 'changeset.list.title_nearby' elsif params[:display_name] - @title = t 'changeset.list.title_user', :user => params[:display_name] + set_title(t 'changeset.list.title_user', :user => params[:display_name]) @heading = t('changeset.list.title_user', :user => link_to(params[:display_name], :controller => "user", :action => "view", :display_name => params[:display_name])).html_safe else - @title = t 'changeset.list.title' + set_title(t 'changeset.list.title') @heading = t 'changeset.list.title' end %> diff --git a/app/views/layouts/_head.html.erb b/app/views/layouts/_head.html.erb index 5b2a0aa6f..a1f11f700 100644 --- a/app/views/layouts/_head.html.erb +++ b/app/views/layouts/_head.html.erb @@ -45,5 +45,5 @@ OSM.oauth_consumer_secret = "<%= @oauth.client_application.secret %>"; <% end -%> - <%= t 'layouts.project_name.title' %><%= ' | '+ @title if @title %> + <%= @title %> diff --git a/app/views/site/export.html.erb b/app/views/site/export.html.erb index 6a2131e90..168f7d439 100644 --- a/app/views/site/export.html.erb +++ b/app/views/site/export.html.erb @@ -1,3 +1,4 @@ +<% set_title(t('export.title')) %>

<%= t 'export.start_rjs.export' %> diff --git a/app/views/site/index.html.erb b/app/views/site/index.html.erb index 8a6a5d85a..6f215235c 100644 --- a/app/views/site/index.html.erb +++ b/app/views/site/index.html.erb @@ -1,4 +1,7 @@ -<% content_for(:content_class) { "overlay-sidebar" } %> +<% + set_title() + content_for(:content_class) { "overlay-sidebar" } +%> <% unless @user %>
diff --git a/config/locales/en.yml b/config/locales/en.yml index cbd1c60c1..1de138f2d 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -396,6 +396,7 @@ en: newer_comments: "Newer Comments" older_comments: "Older Comments" export: + title: "Export" start: area_to_export: "Area to Export" manually_select: "Manually select a different area"