From: Tom Hughes Date: Tue, 23 Jan 2024 20:28:51 +0000 (+0000) Subject: Merge remote-tracking branch 'upstream/pull/4480' X-Git-Tag: live~1287 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/2acf8cb8f22deb2e2960c99c0eeb8c5d64533c9e?hp=6163b01f146d97201e0c2d9efff83dd5dbadebf7 Merge remote-tracking branch 'upstream/pull/4480' --- diff --git a/app/abilities/ability.rb b/app/abilities/ability.rb index c7080595c..4a4eee390 100644 --- a/app/abilities/ability.rb +++ b/app/abilities/ability.rb @@ -6,6 +6,9 @@ class Ability def initialize(user) can [:relation, :relation_history, :way, :way_history, :node, :node_history, :changeset, :query], :browse + can [:show], OldNode + can [:show], OldWay + can [:show], OldRelation can [:show, :new], Note can :search, :direction can [:index, :permalink, :edit, :help, :fixthemap, :offline, :export, :about, :communities, :preview, :copyright, :key, :id], :site diff --git a/app/assets/javascripts/index.js b/app/assets/javascripts/index.js index 706647ef5..8ffa05c53 100644 --- a/app/assets/javascripts/index.js +++ b/app/assets/javascripts/index.js @@ -355,6 +355,16 @@ $(document).ready(function () { return page; }; + OSM.OldBrowse = function () { + var page = {}; + + page.pushstate = page.popstate = function (path) { + OSM.loadSidebarContent(path); + }; + + return page; + }; + var history = OSM.History(map); OSM.router = OSM.Router(map, { @@ -369,8 +379,11 @@ $(document).ready(function () { "/user/:display_name/history": history, "/note/:id": OSM.Note(map), "/node/:id(/history)": OSM.Browse(map, "node"), + "/node/:id/history/:version": OSM.OldBrowse(), "/way/:id(/history)": OSM.Browse(map, "way"), + "/way/:id/history/:version": OSM.OldBrowse(), "/relation/:id(/history)": OSM.Browse(map, "relation"), + "/relation/:id/history/:version": OSM.OldBrowse(), "/changeset/:id": OSM.Changeset(map), "/query": OSM.Query(map) }); diff --git a/app/controllers/old_nodes_controller.rb b/app/controllers/old_nodes_controller.rb new file mode 100644 index 000000000..a5b9cf563 --- /dev/null +++ b/app/controllers/old_nodes_controller.rb @@ -0,0 +1,19 @@ +class OldNodesController < ApplicationController + layout :map_layout + + before_action :authorize_web + before_action :set_locale + before_action -> { check_database_readable(:need_api => true) } + before_action :require_oauth + + authorize_resource + + around_action :web_timeout + + def show + @type = "node" + @feature = OldNode.preload(:old_tags, :changeset => [:changeset_tags, :user]).find([params[:id], params[:version]]) + rescue ActiveRecord::RecordNotFound + render :action => "not_found", :status => :not_found + end +end diff --git a/app/controllers/old_relations_controller.rb b/app/controllers/old_relations_controller.rb new file mode 100644 index 000000000..9dda82021 --- /dev/null +++ b/app/controllers/old_relations_controller.rb @@ -0,0 +1,19 @@ +class OldRelationsController < ApplicationController + layout :map_layout + + before_action :authorize_web + before_action :set_locale + before_action -> { check_database_readable(:need_api => true) } + before_action :require_oauth + + authorize_resource + + around_action :web_timeout + + def show + @type = "relation" + @feature = OldRelation.preload(:old_tags, :changeset => [:changeset_tags, :user], :old_members => :member).find([params[:id], params[:version]]) + rescue ActiveRecord::RecordNotFound + render :action => "not_found", :status => :not_found + end +end diff --git a/app/controllers/old_ways_controller.rb b/app/controllers/old_ways_controller.rb new file mode 100644 index 000000000..d18121e6f --- /dev/null +++ b/app/controllers/old_ways_controller.rb @@ -0,0 +1,19 @@ +class OldWaysController < ApplicationController + layout :map_layout + + before_action :authorize_web + before_action :set_locale + before_action -> { check_database_readable(:need_api => true) } + before_action :require_oauth + + authorize_resource + + around_action :web_timeout + + def show + @type = "way" + @feature = OldWay.preload(:old_tags, :changeset => [:changeset_tags, :user], :old_nodes => { :node => [:node_tags, :ways] }).find([params[:id], params[:version]]) + rescue ActiveRecord::RecordNotFound + render :action => "not_found", :status => :not_found + end +end diff --git a/app/views/browse/_common_details.html.erb b/app/views/browse/_common_details.html.erb index 4726799e7..7d3f8e829 100644 --- a/app/views/browse/_common_details.html.erb +++ b/app/views/browse/_common_details.html.erb @@ -1,6 +1,6 @@

<%= t "browse.version" %> - #<%= common_details.version %> + #<%= link_to_unless_current common_details.version, :controller => "old_#{@type.pluralize}", :action => :show, :version => common_details.version %>

@@ -19,7 +19,7 @@

  • <%= t "browse.in_changeset" %> - #<%= link_to common_details.changeset_id, :action => :changeset, :id => common_details.changeset_id %> + #<%= link_to common_details.changeset_id, changeset_path(common_details.changeset) %>
  • <% if @type == "node" and common_details.visible? %> @@ -33,4 +33,4 @@ <% end %> -<%= render :partial => "tag_details", :object => common_details.tags %> +<%= render :partial => "browse/tag_details", :object => common_details.tags %> diff --git a/app/views/browse/_node.html.erb b/app/views/browse/_node.html.erb index 152223ae7..cc8597292 100644 --- a/app/views/browse/_node.html.erb +++ b/app/views/browse/_node.html.erb @@ -8,7 +8,7 @@ <% else %>
    - <%= render :partial => "common_details", :object => node %> + <%= render :partial => "browse/common_details", :object => node %> <% unless node.ways.empty? and node.containing_relation_members.empty? %>

    <%= t "browse.part_of" %>

    @@ -17,7 +17,7 @@ <%= t "browse.part_of_ways", :count => node.ways.uniq.count %> @@ -26,7 +26,7 @@
    > <%= t "browse.part_of_relations", :count => node.containing_relation_members.uniq.count %>
      - <%= render :partial => "containing_relation", :collection => node.containing_relation_members.uniq %> + <%= render :partial => "browse/containing_relation", :collection => node.containing_relation_members.uniq %>
    <% end %> diff --git a/app/views/browse/_relation.html.erb b/app/views/browse/_relation.html.erb index 8db40c8c7..c513ea6d1 100644 --- a/app/views/browse/_relation.html.erb +++ b/app/views/browse/_relation.html.erb @@ -8,7 +8,7 @@
    <% else %>
    - <%= render :partial => "common_details", :object => relation %> + <%= render :partial => "browse/common_details", :object => relation %> <% unless relation.containing_relation_members.empty? %>

    <%= t "browse.part_of" %>

    @@ -25,7 +25,7 @@
    > <%= t ".members_count", :count => relation.relation_members.count %>
      - <%= render :partial => "relation_member", :collection => relation.relation_members %> + <%= render :partial => "browse/relation_member", :collection => relation.relation_members %>
    <% end %> diff --git a/app/views/browse/_relation_member.html.erb b/app/views/browse/_relation_member.html.erb index 5c96dadaf..5e52c04e8 100644 --- a/app/views/browse/_relation_member.html.erb +++ b/app/views/browse/_relation_member.html.erb @@ -1,5 +1,5 @@ <% member_class = link_class(relation_member.member_type.downcase, relation_member.member) - linked_name = link_to printable_name(relation_member.member), { :action => relation_member.member_type.downcase, :id => relation_member.member_id.to_s }, { :title => link_title(relation_member.member), :rel => link_follow(relation_member.member) } + linked_name = link_to printable_name(relation_member.member), { :controller => :browse, :action => relation_member.member_type.downcase, :id => relation_member.member_id.to_s }, { :title => link_title(relation_member.member), :rel => link_follow(relation_member.member) } type_str = t ".type.#{relation_member.member_type.downcase}" %>
  • <%= if relation_member.member_role.blank? diff --git a/app/views/browse/_tag_details.html.erb b/app/views/browse/_tag_details.html.erb index 9129ddaf5..cc08fe16a 100644 --- a/app/views/browse/_tag_details.html.erb +++ b/app/views/browse/_tag_details.html.erb @@ -2,7 +2,7 @@

    <%= t ".tags" %>

    - <%= render :partial => "tag", :collection => tag_details.sort %> + <%= render :partial => "browse/tag", :collection => tag_details.sort %>
    <% end %> diff --git a/app/views/browse/_way.html.erb b/app/views/browse/_way.html.erb index 4fdcd035e..26403f3fd 100644 --- a/app/views/browse/_way.html.erb +++ b/app/views/browse/_way.html.erb @@ -8,7 +8,7 @@
  • <% else %>
    - <%= render :partial => "common_details", :object => way %> + <%= render :partial => "browse/common_details", :object => way %> <% unless way.containing_relation_members.empty? %>

    <%= t "browse.part_of" %>

    @@ -27,10 +27,10 @@