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 = params[:communities_locale] || I18n.locale
+ @local_chapters = Communities.local_chapters
+ end
+
def export; end
def offline; end
--- /dev/null
+
+class Communities
+
+ def self.local_chapters
+ @local_chapters ||= self.load_local_chapters
+ end
+
+ protected
+
+ def self.load_local_chapters
+
+ json_file = File.expand_path("node_modules/osm-community-index/dist/completeFeatureCollection.json", Dir.pwd);
+ community_index = JSON.parse(File.read(json_file))
+
+ local_chapters = []
+ community_index['features'].each do |feature|
+ feature['properties']['resources'].each do |id, data|
+ data.each do |key, value|
+ if key == "type" and value == "osm-lc" and data['strings']['community']
+ local_chapters.push({ id: id, name: data['strings']['community'], url: data['strings']['url'] });
+ end
+ end
+ end
+ end
+
+ return local_chapters
+ end
+
+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 %>
\ No newline at end of file
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" }
"js-cookie": "^3.0.0",
"leaflet": "^1.6.0",
"leaflet.locatecontrol": "^0.74.0",
+ "osm-community-index": "^5.1.2",
"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.2:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/osm-community-index/-/osm-community-index-5.1.2.tgz#dbae073ce3f10177bfc1749623b632e62b12eeaf"
+ integrity sha512-4kYj81tFZZwDBYY1Kl+JyACNuwYPBqNrwlmxWEK7+tFCqmIg/pYBKzSDP1M5z+NuNfyuAtLR4opwN3dpCUI/uQ==
+ 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"