can [:relation, :relation_history, :way, :way_history, :node, :node_history,
:changeset, :note, :new_note, :query], :browse
can :search, :direction
- can [:index, :permalink, :edit, :help, :fixthemap, :offline, :export, :about, :preview, :copyright, :key, :id], :site
+ can [:index, :permalink, :edit, :help, :fixthemap, :offline, :export, :about, :communities, :preview, :copyright, :key, :id], :site
can [:finish, :embed], :export
can [:search, :search_latlon, :search_ca_postcode, :search_osm_nominatim,
:search_geonames, :search_osm_nominatim_reverse, :search_geonames_reverse], :geocoder
@locale = params[:about_locale] || I18n.locale
end
+ def communities
+ @locale = I18n.locale
+ @local_chapters = OsmCommunityIndex::LocalChapter.local_chapters_with_locale(@locale)
+ end
+
def export; end
def offline; end
<li class="compact-hide nav-item <%= current_page_class(diary_entries_path) %>">
<%= link_to t("layouts.user_diaries"), diary_entries_path, :class => "nav-link" %>
</li>
+ <li class="compact-hide nav-item <%= current_page_class(communities_path) %>">
+ <%= link_to t("layouts.communities"), communities_path, :class => "nav-link" %>
+ </li>
<li class="compact-hide nav-item <%= current_page_class(copyright_path) %>">
<%= link_to t("layouts.copyright"), copyright_path, :class => "nav-link" %>
</li>
<% end %>
<li class="<%= current_page_class(traces_path) %>"><%= link_to t("layouts.gps_traces"), traces_path, :class => "dropdown-item" %></li>
<li class="<%= current_page_class(diary_entries_path) %>"><%= link_to t("layouts.user_diaries"), diary_entries_path, :class => "dropdown-item" %></li>
+ <li class="<%= current_page_class(communities_path) %>"><%= link_to t("layouts.communities"), communities_path, :class => "dropdown-item" %></li>
<li class="<%= current_page_class(copyright_path) %>"><%= link_to t("layouts.copyright"), copyright_path, :class => "dropdown-item" %></li>
<li class="<%= current_page_class(help_path) %>"><%= link_to t("layouts.help"), help_path, :class => "dropdown-item" %></li>
<li class="<%= current_page_class(about_path) %>"><%= link_to t("layouts.about"), about_path, :class => "dropdown-item" %></li>
--- /dev/null
+<% content_for :heading do %>
+ <%= tag.h1 :lang => @locale, :dir => t("html.dir", :locale => @locale) do %>
+ <%= t ".title", :locale => @locale %>
+ <% end %>
+<% end %>
+
+<%= tag.div :lang => @locale, :dir => t("html.dir", :locale => @locale) do %>
+ <p><%= t ".lede_text", :locale => @locale %></p>
+ <h2><%= t ".local_chapters.title", :locale => @locale %></h2>
+ <p><%= t ".local_chapters.about_text", :locale => @locale %></p>
+ <p><%= t ".local_chapters.list_text", :locale => @locale %></p>
+ <ul>
+ <% @local_chapters.each do |chapter| %>
+ <li><a href="<%= chapter.url %>"><%= chapter.name %></a></li>
+ <% end %>
+ </ul>
+ <h2><%= t ".other_groups.title", :locale => @locale %></h2>
+ <p><%= t ".other_groups.about_html", :locale => @locale %></p>
+<% end %>
help: Help
about: About
copyright: Copyright
+ communities: Communities
community: Community
community_blogs: "Community Blogs"
community_blogs_title: "Blogs from members of the OpenStreetMap community"
Just go to <a href='%{map_url}'>the map</a> and click the note icon:
<span class='icon note'></span>. This will add a marker to the map, which you can move
by dragging. Add your message, then click save, and other mappers will investigate.
+ communities:
+ title: Communities
+ lede_text: |
+ People from all over the world contribute to or use OpenStreetMap.
+ Whilst some are content to participate as individuals, others have formed communities.
+ These groups come in a range of sizes and represent geographies from small towns to large multi-country regions.
+ They can also be formal or informal.
+ local_chapters:
+ title: Local Chapters
+ about_text: |
+ Local Chapters are country-level or region-level groups that have taken the formal step of
+ establishing not-for-profit legal entities. They represent the area's map and mappers when
+ dealing with local government, business, and media. They have also formed an affiliation
+ with the OpenStreetMap Foundation (OSMF), giving them a link to the legal and copyright
+ governing body.
+ list_text: |
+ So far we have the following formally established foundation Local Chapters:
+ other_groups:
+ title: Other Groups
+ about_html: |
+ There is no need to formally establish a group to the same extent as the Local Chapters.
+ Indeed many groups exist very sucessfully as an informal gathering of people or as a
+ community group. Anyone can set up or join these. Read more on the
+ <a href="https://wiki.openstreetmap.org/wiki/User_group">Communities wiki page</a>.
traces:
visibility:
private: "Private (only shared as anonymous, unordered points)"
get "/help" => "site#help"
get "/about/:about_locale" => "site#about"
get "/about" => "site#about"
+ get "/communities" => "site#communities"
+ get "/communities/:communities_locale" => "site#communities"
get "/history" => "changesets#index"
get "/history/feed" => "changesets#feed", :defaults => { :format => :atom }
get "/history/comments/feed" => "changeset_comments#index", :as => :changesets_comments_feed, :defaults => { :format => "rss" }
--- /dev/null
+module OsmCommunityIndex
+ class LocalChapter
+
+ attr_reader :id, :name, :url
+
+ @localised_chapters = {}
+
+ def initialize(id, name, url)
+ @id = id
+ @name = name
+ @url = url
+ end
+
+ def self.local_chapters_with_locale(locale)
+ @localised_chapters[locale] ||= load_local_chapters(locale)
+ end
+
+ protected
+
+ def self.load_local_chapters(locale)
+ community_index = OsmCommunityIndex.community_index
+ localised_strings = OsmCommunityIndex.localised_strings(locale)
+ local_chapters = []
+ community_index["resources"].each do |id, resource|
+ resource.each do |key, value|
+ next unless key == "type" && value == "osm-lc" && id != "OSMF"
+
+ strings = resource["strings"]
+ name = localised_strings.dig(id, "name") || strings["name"] || strings["community"]
+ url = strings["url"]
+ local_chapters.push(LocalChapter.new(id, name, url))
+ end
+ end
+ local_chapters
+ end
+
+ end
+
+end
\ No newline at end of file
--- /dev/null
+module OsmCommunityIndex
+ class OsmCommunityIndex
+ require "yaml"
+
+ @localised_strings = {}
+
+ def self.community_index
+ @community_index ||= community_index_from_json
+ end
+
+ def self.localised_strings(locale)
+ @localised_strings[locale] ||= locale_hash_from_json(locale)
+ end
+
+ protected
+
+ def self.community_index_from_json
+ json_file = Rails.root.join("node_modules/osm-community-index/dist/resources.json")
+ JSON.parse(File.read(json_file))
+ end
+
+ def self.locale_hash_from_json(locale_in)
+ locale = locale_in.to_s.tr("-", "_")
+ # try the passed in locale
+ json = load_locale_json(locale)
+ unless json.nil?
+ return json
+ end
+
+ # now try it without it's country part (eg 'en' instead of 'en_GB')
+ shortened_locale = locale.split("_").first
+ unless shortened_locale === locale
+ json = load_locale_json(shortened_locale)
+ unless json.nil?
+ return json
+ end
+ end
+
+ # if nothing else works, then return "en"
+ load_locale_json("en")
+ end
+
+ def self.load_locale_json(locale)
+ json_path = Rails.root.join("node_modules/osm-community-index/i18n/#{locale}.yaml")
+ if File.exist?(json_path)
+ return YAML.safe_load(File.read(json_path))[locale]
+ end
+ nil
+ end
+
+ end
+end
\ No newline at end of file
"js-cookie": "^3.0.0",
"leaflet": "^1.6.0",
"leaflet.locatecontrol": "^0.74.0",
+ "osm-community-index": "^5.1.3",
"qs": "^6.9.4"
},
"devDependencies": {
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
+diacritics@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/diacritics/-/diacritics-1.3.0.tgz#3efa87323ebb863e6696cebb0082d48ff3d6f7a1"
+ integrity sha1-PvqHMj67hj5mls67AILUj/PW96E=
+
doctrine@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
type-check "^0.4.0"
word-wrap "^1.2.3"
+osm-community-index@^5.1.3:
+ version "5.1.3"
+ resolved "https://registry.yarnpkg.com/osm-community-index/-/osm-community-index-5.1.3.tgz#df2bd0db2b3e43b95fa026138905dc2f3f473062"
+ integrity sha512-kERHt/O+QFp7DB5jH/Pkh3P1GwT3vH+lYskN7EVEBcnnsW8AIcdGpmQDlLO9IZNCbzmP7YY81wlUv8AuWKUTIg==
+ dependencies:
+ diacritics "^1.3.0"
+
parent-module@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"