Merge branch 'pull/843' into titles
authorAndy Allan <git@gravitystorm.co.uk>
Wed, 22 Nov 2017 14:42:16 +0000 (14:42 +0000)
committerAndy Allan <git@gravitystorm.co.uk>
Wed, 22 Nov 2017 14:42:16 +0000 (14:42 +0000)
1354 files changed:
.coveralls.yml [new file with mode: 0644]
.gitignore
.mailmap
.rubocop.yml [new file with mode: 0644]
.rubocop_todo.yml [new file with mode: 0644]
.travis.yml [new file with mode: 0644]
CONTRIBUTING.md
FAQ.md [new file with mode: 0644]
Gemfile
Gemfile.lock
INSTALL.md
README.md
Rakefile
VAGRANT.md
Vagrantfile
Vendorfile
app/assets/favicons/android-chrome-144x144.png [new file with mode: 0644]
app/assets/favicons/android-chrome-192x192.png [new file with mode: 0644]
app/assets/favicons/android-chrome-36x36.png [new file with mode: 0644]
app/assets/favicons/android-chrome-48x48.png [new file with mode: 0644]
app/assets/favicons/android-chrome-72x72.png [new file with mode: 0644]
app/assets/favicons/android-chrome-96x96.png [new file with mode: 0644]
app/assets/favicons/apple-touch-icon-114x114.png [new file with mode: 0644]
app/assets/favicons/apple-touch-icon-120x120.png [new file with mode: 0644]
app/assets/favicons/apple-touch-icon-144x144.png [new file with mode: 0644]
app/assets/favicons/apple-touch-icon-152x152.png [new file with mode: 0644]
app/assets/favicons/apple-touch-icon-180x180.png [new file with mode: 0644]
app/assets/favicons/apple-touch-icon-57x57.png [new file with mode: 0644]
app/assets/favicons/apple-touch-icon-60x60.png [new file with mode: 0644]
app/assets/favicons/apple-touch-icon-72x72.png [new file with mode: 0644]
app/assets/favicons/apple-touch-icon-76x76.png [new file with mode: 0644]
app/assets/favicons/apple-touch-icon-precomposed.png [new file with mode: 0644]
app/assets/favicons/apple-touch-icon.png [new file with mode: 0644]
app/assets/favicons/browserconfig.xml.erb [new file with mode: 0644]
app/assets/favicons/favicon-16x16.png [new file with mode: 0644]
app/assets/favicons/favicon-194x194.png [new file with mode: 0644]
app/assets/favicons/favicon-32x32.png [new file with mode: 0644]
app/assets/favicons/favicon-96x96.png [new file with mode: 0644]
app/assets/favicons/favicon.ico [new file with mode: 0644]
app/assets/favicons/manifest.json.erb [new file with mode: 0644]
app/assets/favicons/mstile-144x144.png [new file with mode: 0644]
app/assets/favicons/mstile-150x150.png [new file with mode: 0644]
app/assets/favicons/mstile-310x150.png [new file with mode: 0644]
app/assets/favicons/mstile-310x310.png [new file with mode: 0644]
app/assets/favicons/mstile-70x70.png [new file with mode: 0644]
app/assets/images/RSS.png
app/assets/images/about/osm.png
app/assets/images/about/sprite.png
app/assets/images/about/sprite.svg [new file with mode: 0644]
app/assets/images/about/sprite@2x.png
app/assets/images/aol.png
app/assets/images/attribution_example.png
app/assets/images/banners/.keep [moved from db/MAKE_MIGRATIONS_AND_TEST_THEM_DONT_PUT_SQL_HERE_ANY_MORE with 100% similarity]
app/assets/images/banners/banner-sotmus2017.png [new file with mode: 0644]
app/assets/images/banners/osmf-membership-drive-2017.png [new file with mode: 0644]
app/assets/images/banners/sotmasia-2017-banner.png [new file with mode: 0644]
app/assets/images/browse/aerodrome.p.16.png
app/assets/images/browse/allotments.png
app/assets/images/browse/alpinehut.p.16.png
app/assets/images/browse/amenity_atm.16.png [new file with mode: 0644]
app/assets/images/browse/amenity_bank.16.png [new file with mode: 0644]
app/assets/images/browse/amenity_bar.16.png [new file with mode: 0644]
app/assets/images/browse/amenity_bench.16.png [new file with mode: 0644]
app/assets/images/browse/amenity_bicycle_parking.16.png [new file with mode: 0644]
app/assets/images/browse/amenity_biergarten.16.png [new file with mode: 0644]
app/assets/images/browse/amenity_cafe.16.png [new file with mode: 0644]
app/assets/images/browse/amenity_cinema.16.png [new file with mode: 0644]
app/assets/images/browse/amenity_courthouse.16.png [new file with mode: 0644]
app/assets/images/browse/amenity_dentist.16.png [new file with mode: 0644]
app/assets/images/browse/amenity_doctors.16.png [new file with mode: 0644]
app/assets/images/browse/amenity_drinking_water.16.png [new file with mode: 0644]
app/assets/images/browse/amenity_embassy.16.png [new file with mode: 0644]
app/assets/images/browse/amenity_fast_food.16.png [new file with mode: 0644]
app/assets/images/browse/amenity_fire_station.16.png [new file with mode: 0644]
app/assets/images/browse/amenity_fuel.16.png [new file with mode: 0644]
app/assets/images/browse/amenity_hospital.16.png [new file with mode: 0644]
app/assets/images/browse/amenity_nightclub.16.png [new file with mode: 0644]
app/assets/images/browse/amenity_pharmacy.16.png [new file with mode: 0644]
app/assets/images/browse/amenity_place_of_worship.16.png [new file with mode: 0644]
app/assets/images/browse/amenity_police.16.png [new file with mode: 0644]
app/assets/images/browse/amenity_prison.16.png [new file with mode: 0644]
app/assets/images/browse/amenity_pub.16.png [new file with mode: 0644]
app/assets/images/browse/amenity_recycling.16.png [new file with mode: 0644]
app/assets/images/browse/amenity_restaurant.16.png [new file with mode: 0644]
app/assets/images/browse/amenity_taxi.16.png [new file with mode: 0644]
app/assets/images/browse/amenity_theatre.16.png [new file with mode: 0644]
app/assets/images/browse/amenity_toilets.16.png [new file with mode: 0644]
app/assets/images/browse/amenity_townhall.16.png [new file with mode: 0644]
app/assets/images/browse/amenity_waste_basket.16.png [new file with mode: 0644]
app/assets/images/browse/atm2.p.16.png [deleted file]
app/assets/images/browse/bank2.p.16.png [deleted file]
app/assets/images/browse/bar.p.16.png [deleted file]
app/assets/images/browse/bridge.20.png
app/assets/images/browse/bridleway.20.png
app/assets/images/browse/brownfield.png
app/assets/images/browse/building.png
app/assets/images/browse/bus_station.n.16.png
app/assets/images/browse/bus_stop.p.16.png [deleted file]
app/assets/images/browse/byway.20.png
app/assets/images/browse/cafe.p.16.png [deleted file]
app/assets/images/browse/camping.n.16.png [deleted file]
app/assets/images/browse/car_share.p.16.png
app/assets/images/browse/caravan_park.n.16.png [deleted file]
app/assets/images/browse/cemetery.png
app/assets/images/browse/centre.png
app/assets/images/browse/cinema.p.16.png [deleted file]
app/assets/images/browse/commercial.png
app/assets/images/browse/common.png
app/assets/images/browse/cycleway.20.png
app/assets/images/browse/drinkingtap.p.16.png [deleted file]
app/assets/images/browse/education_nursery.p.16.png
app/assets/images/browse/education_school.p.16.png
app/assets/images/browse/education_university.p.16.png
app/assets/images/browse/farm.png
app/assets/images/browse/fast_food.p.16.png [deleted file]
app/assets/images/browse/firestation.p.16.png [deleted file]
app/assets/images/browse/footway.20.png
app/assets/images/browse/forest.png
app/assets/images/browse/fuel.p.16.png [deleted file]
app/assets/images/browse/gate2.p.16.png
app/assets/images/browse/golf.png
app/assets/images/browse/halt.p.16.png
app/assets/images/browse/health_dentist.p.16.png [deleted file]
app/assets/images/browse/health_doctors.p.16.png [deleted file]
app/assets/images/browse/health_opticians.p.16.png [deleted file]
app/assets/images/browse/health_veterinary.p.16.png
app/assets/images/browse/heathland.png
app/assets/images/browse/highway_bus_stop.16.png [new file with mode: 0644]
app/assets/images/browse/historic_archaeological_site.16.png [new file with mode: 0644]
app/assets/images/browse/historic_memorial.16.png [new file with mode: 0644]
app/assets/images/browse/historic_monument.16.png [new file with mode: 0644]
app/assets/images/browse/hospital.p.16.png [deleted file]
app/assets/images/browse/hostel.p.16.png [deleted file]
app/assets/images/browse/hotel.p.16.png [deleted file]
app/assets/images/browse/industrial.png
app/assets/images/browse/lake.png
app/assets/images/browse/leisure_playground.16.png [new file with mode: 0644]
app/assets/images/browse/leisure_water_park.16.png [new file with mode: 0644]
app/assets/images/browse/level_crossing.p.16.png
app/assets/images/browse/library.p.16.png
app/assets/images/browse/light_rail.20.png
app/assets/images/browse/lighthouse.p.16.png [deleted file]
app/assets/images/browse/man_made_lighthouse.16.png [new file with mode: 0644]
app/assets/images/browse/man_made_water_tower.16.png [new file with mode: 0644]
app/assets/images/browse/man_made_windmill.16.png [new file with mode: 0644]
app/assets/images/browse/military.png
app/assets/images/browse/mini_round.p.16.png
app/assets/images/browse/motorway.20.png
app/assets/images/browse/museum.p.16.png [deleted file]
app/assets/images/browse/park.png
app/assets/images/browse/parking.p.16.png
app/assets/images/browse/path.20.png
app/assets/images/browse/pharmacy.p.16.png [deleted file]
app/assets/images/browse/pitch.png
app/assets/images/browse/place_of_worship.png [deleted file]
app/assets/images/browse/place_of_worship_unknown3.p.16.png [deleted file]
app/assets/images/browse/police.p.16.png [deleted file]
app/assets/images/browse/post_box.p.16.png
app/assets/images/browse/post_office.p.16.png
app/assets/images/browse/primary.20.png
app/assets/images/browse/prison.p.16.png [deleted file]
app/assets/images/browse/pub.p.16.png [deleted file]
app/assets/images/browse/rail.20.png
app/assets/images/browse/recycling.p.16.png [deleted file]
app/assets/images/browse/reserve.png
app/assets/images/browse/residential.png
app/assets/images/browse/restaurant.p.16.png [deleted file]
app/assets/images/browse/retail.png
app/assets/images/browse/runway.20.png
app/assets/images/browse/school.png
app/assets/images/browse/secondary.20.png
app/assets/images/browse/service.20.png
app/assets/images/browse/shelter2.p.16.png
app/assets/images/browse/shop_alcohol.16.png [new file with mode: 0644]
app/assets/images/browse/shop_bakery.16.png [new file with mode: 0644]
app/assets/images/browse/shop_bakery.p.16.png [deleted file]
app/assets/images/browse/shop_bicycle.16.png [new file with mode: 0644]
app/assets/images/browse/shop_bicycle.p.16.png [deleted file]
app/assets/images/browse/shop_books.16.png [new file with mode: 0644]
app/assets/images/browse/shop_books.p.16.png [deleted file]
app/assets/images/browse/shop_butcher.p.16.png
app/assets/images/browse/shop_car_parts.16.png [new file with mode: 0644]
app/assets/images/browse/shop_car_repair.16.png [new file with mode: 0644]
app/assets/images/browse/shop_clothes.16.png [new file with mode: 0644]
app/assets/images/browse/shop_clothes.p.16.png [deleted file]
app/assets/images/browse/shop_convenience.p.16.png
app/assets/images/browse/shop_diy.p.16.png [deleted file]
app/assets/images/browse/shop_doityourself.16.png [new file with mode: 0644]
app/assets/images/browse/shop_electronics.16.png [new file with mode: 0644]
app/assets/images/browse/shop_estateagent2.p.16.png
app/assets/images/browse/shop_fish.p.16.png
app/assets/images/browse/shop_florist.16.png [new file with mode: 0644]
app/assets/images/browse/shop_furniture.16.png [new file with mode: 0644]
app/assets/images/browse/shop_garden_centre.p.16.png [deleted file]
app/assets/images/browse/shop_gift.16.png [new file with mode: 0644]
app/assets/images/browse/shop_gift.p.16.png [deleted file]
app/assets/images/browse/shop_greengrocer.p.16.png
app/assets/images/browse/shop_hairdresser.16.png [new file with mode: 0644]
app/assets/images/browse/shop_hairdresser.p.16.png [deleted file]
app/assets/images/browse/shop_jewellery.16.png [new file with mode: 0644]
app/assets/images/browse/shop_jewelry.p.16.png [deleted file]
app/assets/images/browse/shop_mobile_phone.16.png [new file with mode: 0644]
app/assets/images/browse/shop_optician.16.png [new file with mode: 0644]
app/assets/images/browse/shop_pet.16.png [new file with mode: 0644]
app/assets/images/browse/shop_shoes.16.png [new file with mode: 0644]
app/assets/images/browse/shop_supermarket.p.16.png
app/assets/images/browse/station.p.16.png
app/assets/images/browse/subway.20.png
app/assets/images/browse/taxiway.20.png
app/assets/images/browse/telephone.p.16.png
app/assets/images/browse/tertiary.20.png
app/assets/images/browse/theatre.p.16.png [deleted file]
app/assets/images/browse/toilets.p.16.png [deleted file]
app/assets/images/browse/tourism.png
app/assets/images/browse/tourism_camp_site.16.png [new file with mode: 0644]
app/assets/images/browse/tourism_caravan_site.16.png [new file with mode: 0644]
app/assets/images/browse/tourism_hostel.16.png [new file with mode: 0644]
app/assets/images/browse/tourism_hotel.16.png [new file with mode: 0644]
app/assets/images/browse/tourism_motel.16.png [new file with mode: 0644]
app/assets/images/browse/tourism_museum.16.png [new file with mode: 0644]
app/assets/images/browse/tourism_picnic_site.16.png [new file with mode: 0644]
app/assets/images/browse/tourist_castle.p.16.png
app/assets/images/browse/tourist_memorial.p.16.png [deleted file]
app/assets/images/browse/tourist_monument.p.16.png [deleted file]
app/assets/images/browse/tourist_picnic.p.16.png [deleted file]
app/assets/images/browse/tourist_ruins.p.16.png
app/assets/images/browse/tourist_windmill.p.16.png [deleted file]
app/assets/images/browse/tourist_wreck.p.16.png
app/assets/images/browse/track.20.png
app/assets/images/browse/traffic_light.png
app/assets/images/browse/tram.20.png
app/assets/images/browse/transport_parking_bicycle.p.16.png [deleted file]
app/assets/images/browse/transport_rental_bicycle.16.png [new file with mode: 0644]
app/assets/images/browse/transport_rental_bicycle.p.16.png [deleted file]
app/assets/images/browse/transport_rental_car.16.png [new file with mode: 0644]
app/assets/images/browse/transport_rental_car.p.16.png [deleted file]
app/assets/images/browse/tree.p.16.png
app/assets/images/browse/trunk.20.png
app/assets/images/browse/tunnel.20.png
app/assets/images/browse/turning_circle.p.16.png
app/assets/images/browse/unclassified.20.png
app/assets/images/browse/view_point.p.16.png
app/assets/images/browse/wall.20.png
app/assets/images/browse/wood.png
app/assets/images/cc_button.png
app/assets/images/closed_note_marker@2x.png
app/assets/images/confirm-illustration.png
app/assets/images/directions.png [new file with mode: 0644]
app/assets/images/facebook.png [new file with mode: 0644]
app/assets/images/favicon.ico [deleted file]
app/assets/images/github.png [new file with mode: 0644]
app/assets/images/google.png
app/assets/images/key/cyclemap/bicycle_parking.png [new file with mode: 0644]
app/assets/images/key/cyclemap/bicycle_shop.png [new file with mode: 0644]
app/assets/images/key/cyclemap/common.png [new file with mode: 0644]
app/assets/images/key/cyclemap/cycleway.png [new file with mode: 0644]
app/assets/images/key/cyclemap/cycleway_local.png [new file with mode: 0644]
app/assets/images/key/cyclemap/cycleway_local13.png [new file with mode: 0644]
app/assets/images/key/cyclemap/cycleway_national.png [new file with mode: 0644]
app/assets/images/key/cyclemap/cycleway_national13.png [new file with mode: 0644]
app/assets/images/key/cyclemap/cycleway_regional.png [new file with mode: 0644]
app/assets/images/key/cyclemap/cycleway_regional13.png [new file with mode: 0644]
app/assets/images/key/cyclemap/footway.png [new file with mode: 0644]
app/assets/images/key/cyclemap/forest.png [new file with mode: 0644]
app/assets/images/key/cyclemap/lake.png [new file with mode: 0644]
app/assets/images/key/cyclemap/motorway.png [new file with mode: 0644]
app/assets/images/key/cyclemap/motorway12.png [new file with mode: 0644]
app/assets/images/key/cyclemap/primary.png [new file with mode: 0644]
app/assets/images/key/cyclemap/primary12.png [new file with mode: 0644]
app/assets/images/key/cyclemap/rail.png [new file with mode: 0644]
app/assets/images/key/cyclemap/rail14.png [new file with mode: 0644]
app/assets/images/key/cyclemap/secondary.png [new file with mode: 0644]
app/assets/images/key/cyclemap/secondary12.png [new file with mode: 0644]
app/assets/images/key/cyclemap/toilets.png [new file with mode: 0644]
app/assets/images/key/cyclemap/track.png [new file with mode: 0644]
app/assets/images/key/cyclemap/trunk.png [new file with mode: 0644]
app/assets/images/key/cyclemap/trunk12.png [new file with mode: 0644]
app/assets/images/key/mapnik/admin.png
app/assets/images/key/mapnik/allotments.png
app/assets/images/key/mapnik/apron.png
app/assets/images/key/mapnik/bridge.png
app/assets/images/key/mapnik/bridleway.png
app/assets/images/key/mapnik/brownfield.png
app/assets/images/key/mapnik/building.png
app/assets/images/key/mapnik/byway.png [deleted file]
app/assets/images/key/mapnik/cable.png
app/assets/images/key/mapnik/cemetery.png
app/assets/images/key/mapnik/centre.png
app/assets/images/key/mapnik/commercial.png
app/assets/images/key/mapnik/common.png
app/assets/images/key/mapnik/construction.png
app/assets/images/key/mapnik/cycleway.png
app/assets/images/key/mapnik/destination.png
app/assets/images/key/mapnik/farm.png
app/assets/images/key/mapnik/footway.png
app/assets/images/key/mapnik/forest.png
app/assets/images/key/mapnik/golf.png
app/assets/images/key/mapnik/heathland.png
app/assets/images/key/mapnik/industrial.png
app/assets/images/key/mapnik/lake.png
app/assets/images/key/mapnik/mainroad.png [new file with mode: 0644]
app/assets/images/key/mapnik/mainroad12.png [new file with mode: 0644]
app/assets/images/key/mapnik/mainroad7.png [new file with mode: 0644]
app/assets/images/key/mapnik/mainroad9.png [new file with mode: 0644]
app/assets/images/key/mapnik/military.png
app/assets/images/key/mapnik/motorway.png
app/assets/images/key/mapnik/park.png
app/assets/images/key/mapnik/permissive.png [deleted file]
app/assets/images/key/mapnik/pitch.png
app/assets/images/key/mapnik/primary.png [deleted file]
app/assets/images/key/mapnik/primary12.png [deleted file]
app/assets/images/key/mapnik/private.png
app/assets/images/key/mapnik/rail.png
app/assets/images/key/mapnik/rail13.png
app/assets/images/key/mapnik/reserve.png
app/assets/images/key/mapnik/resident.png
app/assets/images/key/mapnik/retail.png
app/assets/images/key/mapnik/runway.png
app/assets/images/key/mapnik/school.png
app/assets/images/key/mapnik/secondary.png [deleted file]
app/assets/images/key/mapnik/secondary12.png [deleted file]
app/assets/images/key/mapnik/station.png
app/assets/images/key/mapnik/subway.png
app/assets/images/key/mapnik/summit.png
app/assets/images/key/mapnik/tourist.png [deleted file]
app/assets/images/key/mapnik/track.png
app/assets/images/key/mapnik/tram.png
app/assets/images/key/mapnik/trunk.png [deleted file]
app/assets/images/key/mapnik/trunk12.png [deleted file]
app/assets/images/key/mapnik/tunnel.png
app/assets/images/key/mapnik/unclassified.png
app/assets/images/key/mapnik/unclassified13.png
app/assets/images/key/mapnik/unsurfaced.png [deleted file]
app/assets/images/key/mapnik/wood.png
app/assets/images/mag_map-rss2.0.png
app/assets/images/map_sprite.png
app/assets/images/map_zoomin.png
app/assets/images/map_zoomout.png
app/assets/images/marker-blue.png
app/assets/images/marker-green.png
app/assets/images/marker-red.png
app/assets/images/marker-yellow.png
app/assets/images/menu-icon.png
app/assets/images/myopenid.png
app/assets/images/new.png
app/assets/images/new_note_marker@2x.png
app/assets/images/notice.png
app/assets/images/open_note_marker@2x.png
app/assets/images/openid.png
app/assets/images/openid_input.png
app/assets/images/openid_small.png
app/assets/images/osm_logo.png
app/assets/images/osm_logo_114.png [deleted file]
app/assets/images/osm_logo_144.png [deleted file]
app/assets/images/osm_logo_228.png [deleted file]
app/assets/images/osm_logo_256.png [new file with mode: 0644]
app/assets/images/osm_logo_30.png [new file with mode: 0644]
app/assets/images/osm_logo_512.png [new file with mode: 0644]
app/assets/images/osm_logo_57.png [deleted file]
app/assets/images/osm_logo_72.png [deleted file]
app/assets/images/roles/administrator.png
app/assets/images/roles/blank_moderator.png
app/assets/images/routing-sprite.png [new file with mode: 0644]
app/assets/images/routing-sprite.svg [new file with mode: 0644]
app/assets/images/sign-up-illustration-arm.png
app/assets/images/sign-up-illustration.png
app/assets/images/sotm-birmingham-ad.png [deleted file]
app/assets/images/sotm-us-ad.png [deleted file]
app/assets/images/sprite.png
app/assets/images/sprite.svg
app/assets/images/tab-icon.svg [new file with mode: 0644]
app/assets/images/terms-illustration.png
app/assets/images/users/images/large.png
app/assets/images/users/images/small.png
app/assets/images/welcome-sprite.png
app/assets/images/welcome-sprite.svg
app/assets/images/wikipedia.png [new file with mode: 0644]
app/assets/images/windowslive.png [new file with mode: 0644]
app/assets/images/wordpress.png
app/assets/images/yahoo.png
app/assets/javascripts/application.js
app/assets/javascripts/diary_entry.js
app/assets/javascripts/edit/id.js.erb [new file with mode: 0644]
app/assets/javascripts/edit/potlatch.js.erb [new file with mode: 0644]
app/assets/javascripts/edit/potlatch2.js.erb [new file with mode: 0644]
app/assets/javascripts/embed.js.erb
app/assets/javascripts/id.js [new file with mode: 0644]
app/assets/javascripts/index.js
app/assets/javascripts/index/browse.js
app/assets/javascripts/index/changeset.js
app/assets/javascripts/index/contextmenu.js [new file with mode: 0644]
app/assets/javascripts/index/directions.js [new file with mode: 0644]
app/assets/javascripts/index/directions/graphhopper.js [new file with mode: 0644]
app/assets/javascripts/index/directions/mapquest.js [new file with mode: 0644]
app/assets/javascripts/index/directions/mapzen.js [new file with mode: 0644]
app/assets/javascripts/index/directions/osrm.js [new file with mode: 0644]
app/assets/javascripts/index/history.js
app/assets/javascripts/index/new_note.js [moved from app/assets/javascripts/index/new_note.js.erb with 74% similarity]
app/assets/javascripts/index/note.js [moved from app/assets/javascripts/index/note.js.erb with 89% similarity]
app/assets/javascripts/index/notes.js [moved from app/assets/javascripts/index/notes.js.erb with 86% similarity]
app/assets/javascripts/index/query.js
app/assets/javascripts/index/search.js
app/assets/javascripts/leaflet.key.js
app/assets/javascripts/leaflet.layers.js
app/assets/javascripts/leaflet.map.js [moved from app/assets/javascripts/leaflet.map.js.erb with 72% similarity]
app/assets/javascripts/leaflet.note.js
app/assets/javascripts/leaflet.share.js
app/assets/javascripts/leaflet.zoom.js
app/assets/javascripts/login.js [new file with mode: 0644]
app/assets/javascripts/oauth.js
app/assets/javascripts/osm.js.erb
app/assets/javascripts/richtext.js
app/assets/javascripts/router.js
app/assets/javascripts/user.js
app/assets/javascripts/welcome.js
app/assets/opensearch/osm.xml
app/assets/stylesheets/bootstrap.css [new file with mode: 0644]
app/assets/stylesheets/browse.css.scss [deleted file]
app/assets/stylesheets/browse.scss [new file with mode: 0644]
app/assets/stylesheets/common.scss [moved from app/assets/stylesheets/common.css.scss with 88% similarity]
app/assets/stylesheets/embed.scss [moved from app/assets/stylesheets/embed.css.scss with 100% similarity]
app/assets/stylesheets/id.css [new file with mode: 0644]
app/assets/stylesheets/large-ltr.css [deleted file]
app/assets/stylesheets/large-rtl.css [deleted file]
app/assets/stylesheets/large.css [deleted file]
app/assets/stylesheets/leaflet-all.scss [moved from app/assets/stylesheets/leaflet-all.css.scss with 95% similarity]
app/assets/stylesheets/ltr/common.css.scss [deleted symlink]
app/assets/stylesheets/ltr/common.scss [new symlink]
app/assets/stylesheets/ltr/small.css.scss [deleted symlink]
app/assets/stylesheets/ltr/small.scss [new symlink]
app/assets/stylesheets/parameters.scss
app/assets/stylesheets/rtl/common.css.r2.scss [deleted symlink]
app/assets/stylesheets/rtl/common.r2.scss [new symlink]
app/assets/stylesheets/rtl/small.css.r2.scss [deleted symlink]
app/assets/stylesheets/rtl/small.r2.scss [new symlink]
app/assets/stylesheets/screen-ltr.css [moved from app/assets/stylesheets/small-ltr.css with 70% similarity]
app/assets/stylesheets/screen-rtl.css [moved from app/assets/stylesheets/small-rtl.css with 64% similarity]
app/assets/stylesheets/small.css.scss [deleted file]
app/assets/stylesheets/small.scss [new file with mode: 0644]
app/controllers/amf_controller.rb
app/controllers/api_controller.rb
app/controllers/application_controller.rb
app/controllers/browse_controller.rb
app/controllers/changeset_controller.rb
app/controllers/diary_entry_controller.rb
app/controllers/directions_controller.rb [new file with mode: 0644]
app/controllers/export_controller.rb
app/controllers/geocoder_controller.rb
app/controllers/message_controller.rb
app/controllers/node_controller.rb
app/controllers/notes_controller.rb
app/controllers/oauth_clients_controller.rb
app/controllers/oauth_controller.rb
app/controllers/old_controller.rb
app/controllers/old_node_controller.rb
app/controllers/old_relation_controller.rb
app/controllers/old_way_controller.rb
app/controllers/redactions_controller.rb
app/controllers/relation_controller.rb
app/controllers/search_controller.rb
app/controllers/site_controller.rb
app/controllers/swf_controller.rb
app/controllers/trace_controller.rb
app/controllers/user_blocks_controller.rb
app/controllers/user_controller.rb
app/controllers/user_preference_controller.rb
app/controllers/user_roles_controller.rb
app/controllers/way_controller.rb
app/helpers/application_helper.rb
app/helpers/asset_helper.rb
app/helpers/banner_helper.rb [new file with mode: 0644]
app/helpers/browse_helper.rb
app/helpers/changeset_helper.rb
app/helpers/geocoder_helper.rb
app/helpers/note_helper.rb
app/helpers/notifier_helper.rb
app/helpers/open_graph_helper.rb [new file with mode: 0644]
app/helpers/title_helper.rb
app/helpers/trace_helper.rb
app/helpers/user_blocks_helper.rb
app/helpers/user_helper.rb
app/helpers/user_roles_helper.rb
app/models/access_token.rb
app/models/acl.rb
app/models/changeset.rb
app/models/changeset_comment.rb
app/models/changeset_tag.rb
app/models/client_application.rb
app/models/diary_comment.rb
app/models/diary_entry.rb
app/models/diary_entry_subscription.rb [new file with mode: 0644]
app/models/friend.rb
app/models/language.rb
app/models/message.rb
app/models/node.rb
app/models/node_tag.rb
app/models/note.rb
app/models/note_comment.rb
app/models/notifier.rb
app/models/oauth2_token.rb
app/models/oauth2_verifier.rb
app/models/oauth_nonce.rb
app/models/oauth_token.rb
app/models/old_node.rb
app/models/old_node_tag.rb
app/models/old_relation.rb
app/models/old_relation_member.rb
app/models/old_relation_tag.rb
app/models/old_way.rb
app/models/old_way_node.rb
app/models/old_way_tag.rb
app/models/redaction.rb
app/models/relation.rb
app/models/relation_member.rb
app/models/relation_tag.rb
app/models/request_token.rb
app/models/trace.rb
app/models/tracepoint.rb
app/models/tracetag.rb
app/models/user.rb
app/models/user_block.rb
app/models/user_preference.rb
app/models/user_role.rb
app/models/user_token.rb
app/models/way.rb
app/models/way_node.rb
app/models/way_tag.rb
app/views/api/permissions.builder
app/views/browse/_relation.html.erb
app/views/browse/_relation_member.html.erb
app/views/browse/_way.html.erb
app/views/browse/changeset.html.erb
app/views/browse/note.html.erb
app/views/browse/timeout.html.erb
app/views/changeset/_changeset.html.erb
app/views/changeset/_comments.rss.builder
app/views/changeset/comments_feed.rss.builder
app/views/changeset/history.html.erb
app/views/changeset/list.atom.builder
app/views/changeset/list.html.erb
app/views/changeset/timeout.atom.builder
app/views/diary_entry/edit.html.erb
app/views/diary_entry/list.html.erb
app/views/diary_entry/rss.rss.builder
app/views/diary_entry/view.html.erb
app/views/directions/search.html.erb [new file with mode: 0644]
app/views/geocoder/search.html.erb
app/views/layouts/_banner.html.erb [new file with mode: 0644]
app/views/layouts/_flash.html.erb
app/views/layouts/_head.html.erb
app/views/layouts/_header.html.erb
app/views/layouts/_inbox.html.erb
app/views/layouts/_search.html.erb
app/views/layouts/map.html.erb
app/views/layouts/notifier.html.erb [new file with mode: 0644]
app/views/layouts/site.html.erb
app/views/layouts/site.rss.builder [deleted file]
app/views/message/_message_count.html.erb
app/views/message/inbox.html.erb
app/views/message/new.html.erb
app/views/message/outbox.html.erb
app/views/message/read.html.erb
app/views/notes/_note.gpx.builder
app/views/notes/_note.json.jsonify
app/views/notes/_note.rss.builder
app/views/notes/_note.xml.builder
app/views/notes/_notes_paging_nav.html.erb
app/views/notes/feed.rss.builder
app/views/notes/index.gpx.builder
app/views/notes/index.rss.builder
app/views/notes/show.gpx.builder
app/views/notes/show.rss.builder
app/views/notifier/_gpx_description.html.erb
app/views/notifier/_message_body.html.erb [new file with mode: 0644]
app/views/notifier/changeset_comment_notification.html.erb
app/views/notifier/changeset_comment_notification.text.erb
app/views/notifier/diary_comment_notification.html.erb
app/views/notifier/friend_notification.html.erb [new file with mode: 0644]
app/views/notifier/friend_notification.text.erb
app/views/notifier/gpx_failure.html.erb
app/views/notifier/gpx_success.html.erb
app/views/notifier/message_notification.html.erb
app/views/notifier/note_comment_notification.html.erb
app/views/notifier/note_comment_notification.text.erb
app/views/oauth/authorize.html.erb
app/views/redactions/show.html.erb
app/views/site/_id.html.erb
app/views/site/_potlatch.html.erb
app/views/site/_potlatch2.html.erb
app/views/site/about.html.erb
app/views/site/copyright.html.erb
app/views/site/edit.html.erb
app/views/site/export.html.erb
app/views/site/help.html.erb
app/views/site/id.html.erb
app/views/site/key.html.erb
app/views/site/welcome.html.erb
app/views/trace/_trace_paging_nav.html.erb
app/views/trace/edit.html.erb
app/views/trace/georss.rss.builder
app/views/trace/view.html.erb
app/views/user/_auth_association.html.erb [new file with mode: 0644]
app/views/user/_contact.html.erb
app/views/user/_terms.html.erb
app/views/user/account.html.erb
app/views/user/api_read.builder
app/views/user/blocked.html.erb
app/views/user/confirm.html.erb
app/views/user/confirm_email.html.erb
app/views/user/list.html.erb
app/views/user/login.html.erb
app/views/user/logout.html.erb
app/views/user/new.html.erb
app/views/user/reset_password.html.erb
app/views/user/save.html.erb [deleted file]
app/views/user/suspended.html.erb
app/views/user/terms.html.erb
app/views/user/view.html.erb
app/views/user_blocks/_block.html.erb
app/views/user_blocks/_blocks.html.erb
app/views/user_blocks/blocks_by.html.erb
app/views/user_blocks/blocks_on.html.erb
app/views/user_blocks/index.html.erb
app/views/user_blocks/show.html.erb
config.ru
config/application.rb
config/banners.yml [new file with mode: 0644]
config/boot.rb
config/environment.rb
config/environments/development.rb
config/environments/production.rb
config/environments/test.rb
config/example.application.yml
config/i18n-js.yml
config/image_optim.yml [new file with mode: 0644]
config/initializers/abstract_adapter.rb
config/initializers/action_mailer.rb
config/initializers/assets.rb
config/initializers/banners.rb [new file with mode: 0644]
config/initializers/canonical_rails.rb [new file with mode: 0644]
config/initializers/classic_pagination.rb
config/initializers/cookies_serializer.rb
config/initializers/cors.rb
config/initializers/field_error.rb
config/initializers/http_accept_language.rb [deleted file]
config/initializers/i18n.rb
config/initializers/konacha.rb
config/initializers/memory_limits.rb [deleted file]
config/initializers/mime_types.rb
config/initializers/oauth.rb
config/initializers/omniauth.rb [new file with mode: 0644]
config/initializers/openid.rb [deleted file]
config/initializers/output_compression.rb [deleted file]
config/initializers/paperclip.rb
config/initializers/piwik.rb
config/initializers/postgresql_adapter.rb [deleted file]
config/initializers/potlatch.rb
config/initializers/r2.rb
config/initializers/router.rb
config/initializers/sanitize.rb
config/initializers/secure_headers.rb [new file with mode: 0644]
config/initializers/session.rb [deleted file]
config/initializers/session_store.rb
config/initializers/streaming.rb [deleted file]
config/initializers/tempfile.rb
config/initializers/uri_sanitizer.rb [new file with mode: 0644]
config/initializers/wiki_pages.rb
config/initializers/wrap_parameters.rb
config/jshint.yml [new file with mode: 0644]
config/key.yml
config/lighttpd-host-blocks.sh [deleted file]
config/lighttpd.conf [deleted file]
config/locales/af.yml
config/locales/aln.yml
config/locales/ar.yml
config/locales/arz.yml
config/locales/ast.yml
config/locales/az.yml
config/locales/be-Tarask.yml
config/locales/be.yml
config/locales/bg.yml
config/locales/bn.yml [new file with mode: 0644]
config/locales/br.yml
config/locales/bs.yml
config/locales/ca.yml
config/locales/cs.yml
config/locales/cy.yml [new file with mode: 0644]
config/locales/da.yml
config/locales/de.yml
config/locales/diq.yml
config/locales/dsb.yml
config/locales/el.yml
config/locales/en-GB.yml [new file with mode: 0644]
config/locales/en.yml
config/locales/eo.yml
config/locales/es.yml
config/locales/et.yml
config/locales/eu.yml
config/locales/fa.yml
config/locales/fi.yml
config/locales/fr.yml
config/locales/fur.yml
config/locales/ga.yml [new file with mode: 0644]
config/locales/gd.yml [new file with mode: 0644]
config/locales/gl.yml
config/locales/he.yml
config/locales/hr.yml
config/locales/hsb.yml
config/locales/hu.yml
config/locales/ia.yml
config/locales/id.yml
config/locales/is.yml
config/locales/it.yml
config/locales/ja.yml
config/locales/ka.yml
config/locales/kab.yml [new file with mode: 0644]
config/locales/ko.yml
config/locales/ksh.yml
config/locales/lb.yml
config/locales/lt.yml
config/locales/lv.yml
config/locales/mk.yml
config/locales/mr.yml
config/locales/ms.yml
config/locales/nb.yml
config/locales/ne.yml
config/locales/nl.yml
config/locales/nn.yml
config/locales/oc.yml
config/locales/pa.yml
config/locales/pl.yml
config/locales/pt-BR.yml
config/locales/pt-PT.yml [new file with mode: 0644]
config/locales/pt.yml
config/locales/ro.yml
config/locales/ru.yml
config/locales/scn.yml [new file with mode: 0644]
config/locales/sco.yml
config/locales/sk.yml
config/locales/sl.yml
config/locales/sq.yml
config/locales/sr-Latn.yml
config/locales/sr.yml
config/locales/sv.yml
config/locales/ta.yml
config/locales/te.yml
config/locales/th.yml [new file with mode: 0644]
config/locales/tl.yml
config/locales/tr.yml
config/locales/uk.yml
config/locales/vi.yml
config/locales/zh-CN.yml
config/locales/zh-TW.yml
config/nginx.conf [deleted file]
config/preinitializer.rb
config/routes.rb
config/secrets.yml
config/travis.database.yml [new file with mode: 0644]
config/wiki_pages.yml
db/README [deleted file]
db/functions/Makefile
db/migrate/001_create_osm_db.rb
db/migrate/002_cleanup_osm_db.rb
db/migrate/003_sql_session_store_setup.rb
db/migrate/004_user_enhancements.rb
db/migrate/005_tile_tracepoints.rb
db/migrate/006_tile_nodes.rb
db/migrate/007_add_relations.rb
db/migrate/008_remove_segments.rb
db/migrate/009_way_nodes_node_idx.rb
db/migrate/010_diary_comments.rb
db/migrate/011_add_user_image.rb
db/migrate/012_add_admin_flag.rb
db/migrate/013_add_email_valid.rb
db/migrate/014_add_new_email.rb
db/migrate/015_add_user_visible.rb
db/migrate/016_add_creation_ip.rb
db/migrate/017_add_gpx_indexes.rb
db/migrate/018_create_acls.rb
db/migrate/019_add_timestamp_indexes.rb
db/migrate/020_populate_node_tags_and_remove.rb
db/migrate/021_move_to_innodb.rb
db/migrate/022_key_constraints.rb
db/migrate/023_add_changesets.rb
db/migrate/024_order_relation_members.rb
db/migrate/025_add_end_time_to_changesets.rb
db/migrate/026_add_changeset_user_index.rb
db/migrate/027_add_changeset_indexes.rb
db/migrate/028_add_more_changeset_indexes.rb
db/migrate/029_add_user_foreign_keys.rb
db/migrate/030_add_foreign_keys.rb
db/migrate/031_create_countries.rb
db/migrate/032_add_user_locale.rb
db/migrate/033_change_diary_entries_language.rb
db/migrate/034_create_languages.rb
db/migrate/035_change_user_locale.rb
db/migrate/036_add_visible_to_message.rb
db/migrate/037_add_sender_visible_to_message.rb
db/migrate/038_add_message_sender_index.rb
db/migrate/039_add_more_controls_to_gpx_files.rb
db/migrate/040_create_oauth_tables.rb
db/migrate/041_add_fine_o_auth_permissions.rb
db/migrate/042_add_foreign_keys_to_oauth_tables.rb
db/migrate/043_add_referer_to_user_token.rb
db/migrate/044_create_user_roles.rb
db/migrate/045_create_user_blocks.rb
db/migrate/046_alter_user_roles_and_blocks.rb
db/migrate/047_add_visible_to_diaries.rb
db/migrate/048_add_diary_creation_indexes.rb
db/migrate/049_improve_changeset_user_index.rb
db/migrate/050_add_user_index_to_diary_comments.rb
db/migrate/051_add_status_to_user.rb
db/migrate/052_add_contributor_terms_to_user.rb
db/migrate/053_add_map_bug_tables.rb
db/migrate/054_refactor_map_bug_tables.rb
db/migrate/055_change_map_bug_comment_type.rb
db/migrate/056_add_date_closed.rb
db/migrate/057_add_map_bug_comment_event.rb
db/migrate/20100513171259_add_user_date_index_to_changeset.rb
db/migrate/20100516124737_add_open_id.rb
db/migrate/20100910084426_add_callback_to_oauth_tokens.rb
db/migrate/20101114011429_add_editor_preference_to_user.rb
db/migrate/20110322001319_add_terms_seen_to_user.rb
db/migrate/20110508145337_cleanup_bug_tables.rb
db/migrate/20110521142405_rename_bugs_to_notes.rb
db/migrate/20110925112722_rename_ids.rb
db/migrate/20111116184519_update_oauth.rb
db/migrate/20111212183945_add_lowercase_user_indexes.rb
db/migrate/20120123184321_switch_to_paperclip.rb
db/migrate/20120208122334_merge_acl_address_and_mask.rb
db/migrate/20120208194454_add_domain_to_acl.rb
db/migrate/20120214210114_add_text_format.rb
db/migrate/20120219161649_add_user_image_fingerprint.rb
db/migrate/20120318201948_create_redactions.rb
db/migrate/20120328090602_drop_session_table.rb
db/migrate/20120404205604_add_user_and_description_to_redaction.rb
db/migrate/20120808231205_add_counter_caches.rb
db/migrate/20121005195010_add_diary_entry_counter_caches.rb
db/migrate/20121012044047_add_image_use_gravatar_to_users.rb
db/migrate/20121119165817_drop_nearby_place_from_notes.rb
db/migrate/20121202155309_remove_author_name_from_note_comment.rb
db/migrate/20121203124841_change_note_address_to_inet.rb
db/migrate/20130328184137_add_write_notes_permission.rb
db/migrate/20131212124700_add_created_at_index_to_note_comments.rb
db/migrate/20140115192822_add_text_index_to_note_comments.rb
db/migrate/20140117185510_drop_countries.rb
db/migrate/20140210003018_add_user_image_content_type.rb
db/migrate/20140507110937_create_changeset_comments.rb
db/migrate/20140519141742_add_join_table_between_users_and_changesets.rb
db/migrate/20150110152606_change_default_formats.rb [new file with mode: 0644]
db/migrate/20150111192335_subscribe_old_changesets.rb [new file with mode: 0644]
db/migrate/20150222101847_rename_openid_url.rb [new file with mode: 0644]
db/migrate/20150818224516_set_default_gravatar_to_false_for_privacy.rb [new file with mode: 0644]
db/migrate/20161002153425_add_join_table_between_users_and_diary_entries.rb [new file with mode: 0644]
db/migrate/20161011010929_subscribe_authors_to_diary_entries.rb [new file with mode: 0644]
db/migrate/20170222134109_add_user_indexes.rb [new file with mode: 0644]
db/seeds.rb
db/structure.sql
lib/auth.rb [new file with mode: 0644]
lib/bounding_box.rb
lib/classic_pagination/pagination.rb
lib/classic_pagination/pagination_helper.rb
lib/consistency_validations.rb
lib/country.rb
lib/daemons/gpx_import.rb
lib/daemons/gpx_import_ctl
lib/diff_reader.rb
lib/editors.rb
lib/geo_record.rb
lib/gpx.rb
lib/id.rb
lib/locale.rb [new file with mode: 0644]
lib/migrate.rb
lib/nominatim.rb
lib/not_redactable.rb
lib/object_metadata.rb
lib/osm.rb
lib/output_compression/LICENSE [deleted file]
lib/output_compression/README [deleted file]
lib/output_compression/output_compression.rb [deleted file]
lib/password_hash.rb
lib/potlatch.rb
lib/potlatch2.rb
lib/quad_tile.rb
lib/quad_tile/quad_tile.h
lib/quova.rb [deleted file]
lib/redactable.rb
lib/rich_text.rb
lib/session_persistence.rb
lib/short_link.rb
lib/tasks/add_version_to_nodes.rake
lib/tasks/auto_annotate_models.rake [new file with mode: 0644]
lib/tasks/testing.rake
lib/utf8.rb
lib/validators.rb
public/robots.txt
script/cleanup
script/daemons
script/deliver-message
script/gravatar [new file with mode: 0755]
script/locale/po2yaml
script/locale/reload-languages
script/locale/yaml2po
script/rails
script/statistics
script/update-spam-blocks
script/vagrant/setup/provision.sh
test/application_system_test_case.rb [new file with mode: 0644]
test/controllers/amf_controller_test.rb
test/controllers/api_controller_test.rb
test/controllers/browse_controller_test.rb
test/controllers/changeset_controller_test.rb
test/controllers/diary_entry_controller_test.rb
test/controllers/directions_controller_test.rb [new file with mode: 0644]
test/controllers/export_controller_test.rb
test/controllers/geocoder_controller_test.rb
test/controllers/message_controller_test.rb
test/controllers/node_controller_test.rb
test/controllers/notes_controller_test.rb
test/controllers/oauth_clients_controller_test.rb
test/controllers/oauth_controller_test.rb
test/controllers/old_node_controller_test.rb
test/controllers/old_relation_controller_test.rb
test/controllers/old_way_controller_test.rb
test/controllers/redactions_controller_test.rb
test/controllers/relation_controller_test.rb
test/controllers/search_controller_test.rb
test/controllers/site_controller_test.rb
test/controllers/swf_controller_test.rb
test/controllers/trace_controller_test.rb
test/controllers/user_blocks_controller_test.rb
test/controllers/user_controller_test.rb
test/controllers/user_preference_controller_test.rb
test/controllers/user_roles_controller_test.rb
test/controllers/way_controller_test.rb
test/factories/acls.rb [new file with mode: 0644]
test/factories/changeset_comments.rb [new file with mode: 0644]
test/factories/changeset_tags.rb [new file with mode: 0644]
test/factories/changesets.rb [new file with mode: 0644]
test/factories/client_applications.rb [new file with mode: 0644]
test/factories/diary_comments.rb [new file with mode: 0644]
test/factories/diary_entries.rb [new file with mode: 0644]
test/factories/friends.rb [new file with mode: 0644]
test/factories/languages.rb [new file with mode: 0644]
test/factories/messages.rb [new file with mode: 0644]
test/factories/node.rb [new file with mode: 0644]
test/factories/node_tags.rb [new file with mode: 0644]
test/factories/note_comments.rb [new file with mode: 0644]
test/factories/notes.rb [new file with mode: 0644]
test/factories/old_node.rb [new file with mode: 0644]
test/factories/old_node_tags.rb [new file with mode: 0644]
test/factories/old_relation.rb [new file with mode: 0644]
test/factories/old_relation_member.rb [new file with mode: 0644]
test/factories/old_relation_tags.rb [new file with mode: 0644]
test/factories/old_way.rb [new file with mode: 0644]
test/factories/old_way_node.rb [new file with mode: 0644]
test/factories/old_way_tags.rb [new file with mode: 0644]
test/factories/redaction.rb [new file with mode: 0644]
test/factories/relation.rb [new file with mode: 0644]
test/factories/relation_member.rb [new file with mode: 0644]
test/factories/relation_tags.rb [new file with mode: 0644]
test/factories/tracepoints.rb [new file with mode: 0644]
test/factories/traces.rb [new file with mode: 0644]
test/factories/tracetags.rb [new file with mode: 0644]
test/factories/user.rb [new file with mode: 0644]
test/factories/user_blocks.rb [new file with mode: 0644]
test/factories/user_preferences.rb [new file with mode: 0644]
test/factories/user_role.rb [new file with mode: 0644]
test/factories/way.rb [new file with mode: 0644]
test/factories/way_node.rb [new file with mode: 0644]
test/factories/way_tags.rb [new file with mode: 0644]
test/fixtures/acls.yml [deleted file]
test/fixtures/changeset_comments.yml [deleted file]
test/fixtures/changeset_tags.yml [deleted file]
test/fixtures/changesets.yml [deleted file]
test/fixtures/changesets_subscribers.yml [deleted file]
test/fixtures/client_applications.yml [deleted file]
test/fixtures/countries.yml [deleted file]
test/fixtures/current_node_tags.yml [deleted file]
test/fixtures/current_nodes.yml [deleted file]
test/fixtures/current_relation_members.yml [deleted file]
test/fixtures/current_relation_tags.yml [deleted file]
test/fixtures/current_relations.yml [deleted file]
test/fixtures/current_way_nodes.yml [deleted file]
test/fixtures/current_way_tags.yml [deleted file]
test/fixtures/current_ways.yml [deleted file]
test/fixtures/diary_comments.yml [deleted file]
test/fixtures/diary_entries.yml [deleted file]
test/fixtures/friends.yml [deleted file]
test/fixtures/gps_points.yml [deleted file]
test/fixtures/gpx_file_tags.yml [deleted file]
test/fixtures/gpx_files.yml [deleted file]
test/fixtures/languages.yml [deleted file]
test/fixtures/messages.yml [deleted file]
test/fixtures/node_tags.yml [deleted file]
test/fixtures/nodes.yml [deleted file]
test/fixtures/note_comments.yml [deleted file]
test/fixtures/notes.yml [deleted file]
test/fixtures/redactions.yml [deleted file]
test/fixtures/relation_members.yml [deleted file]
test/fixtures/relation_tags.yml [deleted file]
test/fixtures/relations.yml [deleted file]
test/fixtures/user_blocks.yml [deleted file]
test/fixtures/user_preferences.yml [deleted file]
test/fixtures/user_roles.yml [deleted file]
test/fixtures/users.yml [deleted file]
test/fixtures/way_nodes.yml [deleted file]
test/fixtures/way_tags.yml [deleted file]
test/fixtures/ways.yml [deleted file]
test/gpx/fixtures/a.gif [new file with mode: 0644]
test/gpx/fixtures/a.gpx [moved from test/traces/1.gpx with 100% similarity]
test/gpx/fixtures/a_icon.gif [new file with mode: 0644]
test/gpx/fixtures/b.gif [new file with mode: 0644]
test/gpx/fixtures/b.gpx [moved from test/traces/2.gpx with 100% similarity]
test/gpx/fixtures/b_icon.gif [new file with mode: 0644]
test/gpx/fixtures/c.gif [new file with mode: 0644]
test/gpx/fixtures/c.gpx [moved from test/traces/3.gpx with 100% similarity]
test/gpx/fixtures/c_icon.gif [new file with mode: 0644]
test/gpx/fixtures/d.gif [new file with mode: 0644]
test/gpx/fixtures/d.gpx [moved from test/traces/4.gpx with 100% similarity]
test/gpx/fixtures/d_icon.gif [new file with mode: 0644]
test/gpx/fixtures/f.gif [new file with mode: 0644]
test/gpx/fixtures/f.gpx [new file with mode: 0644]
test/gpx/fixtures/f_icon.gif [new file with mode: 0644]
test/gpx/fixtures/g.gif [new file with mode: 0644]
test/gpx/fixtures/g.gpx [new file with mode: 0644]
test/gpx/fixtures/g_icon.gif [new file with mode: 0644]
test/gpx/fixtures/h.gif [new file with mode: 0644]
test/gpx/fixtures/h.gpx [new file with mode: 0644]
test/gpx/fixtures/h_icon.gif [new file with mode: 0644]
test/gpx/fixtures/i.gif [new file with mode: 0644]
test/gpx/fixtures/i.gpx [new file with mode: 0644]
test/gpx/fixtures/i_icon.gif [new file with mode: 0644]
test/gpx/fixtures/j.gpx [new file with mode: 0644]
test/gpx/images/.gitkeep [moved from test/fixtures/user_tokens.yml with 100% similarity]
test/gpx/traces/.gitkeep [new file with mode: 0644]
test/helpers/application_helper_test.rb
test/helpers/asset_helper_test.rb
test/helpers/browse_helper_test.rb
test/helpers/changeset_helper_test.rb
test/helpers/geocoder_helper_test.rb [new file with mode: 0644]
test/helpers/note_helper_test.rb
test/helpers/title_helper_test.rb
test/helpers/user_blocks_helper_test.rb [new file with mode: 0644]
test/helpers/user_helper_test.rb [new file with mode: 0644]
test/helpers/user_roles_helper_test.rb [new file with mode: 0644]
test/http/geocoder_ca.yml [new file with mode: 0644]
test/http/geonames.yml [new file with mode: 0644]
test/http/nominatim.yml [new file with mode: 0644]
test/http/npemap.yml [new file with mode: 0644]
test/integration/client_applications_test.rb [moved from test/integration/client_application_test.rb with 57% similarity]
test/integration/cors_test.rb
test/integration/oauth_test.rb
test/integration/page_locale_test.rb [new file with mode: 0644]
test/integration/redirect_test.rb
test/integration/short_links_test.rb
test/integration/user_blocks_test.rb
test/integration/user_changeset_comments_test.rb
test/integration/user_creation_test.rb
test/integration/user_diaries_test.rb
test/integration/user_login_test.rb
test/integration/user_roles_test.rb
test/integration/user_terms_seen_test.rb
test/lib/bounding_box_test.rb
test/lib/country_test.rb
test/lib/i18n_test.rb
test/lib/locale_test.rb [new file with mode: 0644]
test/lib/password_hash_test.rb
test/lib/rich_text_test.rb
test/lib/short_link_test.rb
test/lib/utf8_test.rb
test/models/acl_test.rb
test/models/changeset_comment_test.rb
test/models/changeset_tag_test.rb
test/models/changeset_test.rb
test/models/client_application_test.rb [new file with mode: 0644]
test/models/diary_comment_test.rb
test/models/diary_entry_test.rb
test/models/friend_test.rb
test/models/language_test.rb
test/models/message_test.rb
test/models/node_tag_test.rb
test/models/node_test.rb
test/models/note_comment_test.rb
test/models/note_test.rb
test/models/oauth_nonce_test.rb
test/models/oauth_token_test.rb
test/models/old_node_tag_test.rb
test/models/old_node_test.rb
test/models/old_relation_tag_test.rb
test/models/old_relation_test.rb
test/models/old_way_tag_test.rb
test/models/old_way_test.rb
test/models/redaction_test.rb
test/models/relation_member_test.rb
test/models/relation_tag_test.rb
test/models/relation_test.rb
test/models/request_token_test.rb [new file with mode: 0644]
test/models/trace_test.rb
test/models/tracepoint_test.rb
test/models/tracetag_test.rb
test/models/user_preference_test.rb
test/models/user_test.rb
test/models/user_token_test.rb
test/models/way_node_test.rb
test/models/way_tag_test.rb
test/models/way_test.rb
test/performance/browsing_test.rb [deleted file]
test/system/site_test.rb [new file with mode: 0644]
test/test_helper.rb
vendor/assets/bootstrap/bootstrap.dropdown.js
vendor/assets/bootstrap/bootstrap.tooltip.js
vendor/assets/iD/iD.css.erb
vendor/assets/iD/iD.js
vendor/assets/iD/iD/img/bing_maps.png [deleted file]
vendor/assets/iD/iD/img/cursor-pointer.png [deleted file]
vendor/assets/iD/iD/img/cursor-pointer2x.png [deleted file]
vendor/assets/iD/iD/img/iD-sprite.svg [new file with mode: 0644]
vendor/assets/iD/iD/img/line-presets.png [deleted file]
vendor/assets/iD/iD/img/maki-sprite.png [deleted file]
vendor/assets/iD/iD/img/maki-sprite.svg [new file with mode: 0644]
vendor/assets/iD/iD/img/mini-loader.gif
vendor/assets/iD/iD/img/relation-presets.png [deleted file]
vendor/assets/iD/iD/img/sprite.svg [deleted file]
vendor/assets/iD/iD/img/traffic-signs/traffic-signs.json [new file with mode: 0644]
vendor/assets/iD/iD/img/traffic-signs/traffic-signs.png [new file with mode: 0644]
vendor/assets/iD/iD/locales/af.json
vendor/assets/iD/iD/locales/ar-AA.json
vendor/assets/iD/iD/locales/ar.json
vendor/assets/iD/iD/locales/ast.json
vendor/assets/iD/iD/locales/bg-BG.json
vendor/assets/iD/iD/locales/bg.json [new file with mode: 0644]
vendor/assets/iD/iD/locales/bn.json
vendor/assets/iD/iD/locales/bs.json
vendor/assets/iD/iD/locales/ca.json
vendor/assets/iD/iD/locales/cs.json
vendor/assets/iD/iD/locales/da.json
vendor/assets/iD/iD/locales/de.json
vendor/assets/iD/iD/locales/dv.json [new file with mode: 0644]
vendor/assets/iD/iD/locales/el.json
vendor/assets/iD/iD/locales/en-GB.json
vendor/assets/iD/iD/locales/en.json
vendor/assets/iD/iD/locales/eo.json
vendor/assets/iD/iD/locales/es.json
vendor/assets/iD/iD/locales/et.json
vendor/assets/iD/iD/locales/eu.json [new file with mode: 0644]
vendor/assets/iD/iD/locales/fa.json
vendor/assets/iD/iD/locales/fi.json
vendor/assets/iD/iD/locales/fil.json [deleted file]
vendor/assets/iD/iD/locales/fr.json
vendor/assets/iD/iD/locales/gan.json
vendor/assets/iD/iD/locales/gl.json
vendor/assets/iD/iD/locales/gu.json [new file with mode: 0644]
vendor/assets/iD/iD/locales/he.json [new file with mode: 0644]
vendor/assets/iD/iD/locales/hi.json [new file with mode: 0644]
vendor/assets/iD/iD/locales/hr.json
vendor/assets/iD/iD/locales/hu.json
vendor/assets/iD/iD/locales/hy.json
vendor/assets/iD/iD/locales/ia.json [new file with mode: 0644]
vendor/assets/iD/iD/locales/id.json
vendor/assets/iD/iD/locales/is.json
vendor/assets/iD/iD/locales/it.json
vendor/assets/iD/iD/locales/ja.json
vendor/assets/iD/iD/locales/jv.json [new file with mode: 0644]
vendor/assets/iD/iD/locales/km-KH.json [deleted file]
vendor/assets/iD/iD/locales/km.json
vendor/assets/iD/iD/locales/kn.json
vendor/assets/iD/iD/locales/ko-KR.json [deleted file]
vendor/assets/iD/iD/locales/ko.json
vendor/assets/iD/iD/locales/ku.json [new file with mode: 0644]
vendor/assets/iD/iD/locales/lij.json [new file with mode: 0644]
vendor/assets/iD/iD/locales/lt.json
vendor/assets/iD/iD/locales/lv.json
vendor/assets/iD/iD/locales/mg.json [new file with mode: 0644]
vendor/assets/iD/iD/locales/mk.json [new file with mode: 0644]
vendor/assets/iD/iD/locales/ml.json [new file with mode: 0644]
vendor/assets/iD/iD/locales/mn.json [new file with mode: 0644]
vendor/assets/iD/iD/locales/ms.json [new file with mode: 0644]
vendor/assets/iD/iD/locales/ne.json [new file with mode: 0644]
vendor/assets/iD/iD/locales/nl.json
vendor/assets/iD/iD/locales/nn.json
vendor/assets/iD/iD/locales/no.json
vendor/assets/iD/iD/locales/nv.json [new file with mode: 0644]
vendor/assets/iD/iD/locales/pl.json
vendor/assets/iD/iD/locales/pt-BR.json
vendor/assets/iD/iD/locales/pt.json
vendor/assets/iD/iD/locales/rm.json [new file with mode: 0644]
vendor/assets/iD/iD/locales/ro-RO.json [deleted file]
vendor/assets/iD/iD/locales/ro.json [new file with mode: 0644]
vendor/assets/iD/iD/locales/ru.json
vendor/assets/iD/iD/locales/sc.json
vendor/assets/iD/iD/locales/si.json
vendor/assets/iD/iD/locales/sk.json
vendor/assets/iD/iD/locales/sl.json
vendor/assets/iD/iD/locales/sq-AL.json [deleted file]
vendor/assets/iD/iD/locales/sq.json
vendor/assets/iD/iD/locales/sr-RS.json [deleted file]
vendor/assets/iD/iD/locales/sr.json
vendor/assets/iD/iD/locales/sv.json
vendor/assets/iD/iD/locales/ta.json
vendor/assets/iD/iD/locales/te.json
vendor/assets/iD/iD/locales/th.json [new file with mode: 0644]
vendor/assets/iD/iD/locales/tl.json
vendor/assets/iD/iD/locales/tr.json
vendor/assets/iD/iD/locales/uk.json
vendor/assets/iD/iD/locales/ur.json [new file with mode: 0644]
vendor/assets/iD/iD/locales/vi.json
vendor/assets/iD/iD/locales/yue.json
vendor/assets/iD/iD/locales/zh-CN.GB2312.json [deleted file]
vendor/assets/iD/iD/locales/zh-CN.json
vendor/assets/iD/iD/locales/zh-HK.json
vendor/assets/iD/iD/locales/zh-TW.json
vendor/assets/iD/iD/locales/zh.json
vendor/assets/iD/iD/mapillary-js/cover-logo.svg [new file with mode: 0644]
vendor/assets/iD/iD/mapillary-js/mapillary.js [new file with mode: 0644]
vendor/assets/iD/iD/mapillary-js/mapillary.js.map [new file with mode: 0644]
vendor/assets/iD/iD/mapillary-js/mapillary.min.css [new file with mode: 0644]
vendor/assets/iD/iD/mapillary-js/mapillary.min.js [new file with mode: 0644]
vendor/assets/iD/iD/mapillary-js/pano-indicator.svg [new file with mode: 0755]
vendor/assets/iD/iD/mapillary-js/pano.svg [new file with mode: 0644]
vendor/assets/iD/iD/mapillary-js/pointer-wheat.svg [new file with mode: 0755]
vendor/assets/iD/iD/mapillary-js/pointer-white.svg [new file with mode: 0755]
vendor/assets/iD/iD/mapillary-js/spinner.svg [new file with mode: 0644]
vendor/assets/iD/iD/mapillary-js/stepper-left.svg [new file with mode: 0644]
vendor/assets/iD/iD/mapillary-js/stepper-play.svg [new file with mode: 0644]
vendor/assets/iD/iD/mapillary-js/stepper-right.svg [new file with mode: 0644]
vendor/assets/iD/iD/mapillary-js/stepper-stop.svg [new file with mode: 0644]
vendor/assets/iD/iD/mapillary-js/turn-around.svg [new file with mode: 0755]
vendor/assets/iD/iD/mapillary-js/turn.svg [new file with mode: 0755]
vendor/assets/javascripts/html5shiv.js
vendor/assets/javascripts/querystring.js [moved from app/assets/javascripts/querystring.js with 93% similarity]
vendor/assets/jquery/jquery.cookie.js
vendor/assets/leaflet/images/layers-2x.png
vendor/assets/leaflet/images/layers.png
vendor/assets/leaflet/images/marker-icon-2x.png
vendor/assets/leaflet/images/marker-icon.png
vendor/assets/leaflet/images/marker-shadow.png
vendor/assets/leaflet/leaflet.contextmenu.css [new file with mode: 0644]
vendor/assets/leaflet/leaflet.contextmenu.js [new file with mode: 0644]
vendor/assets/leaflet/leaflet.css
vendor/assets/leaflet/leaflet.js
vendor/assets/leaflet/leaflet.locate.js
vendor/assets/leaflet/leaflet.locationfilter.js
vendor/assets/leaflet/leaflet.osm.js
vendor/assets/leaflet/leaflet.polyline.js [new file with mode: 0644]
vendor/assets/potlatch2/potlatch2.swf
vendor/assets/potlatch2/potlatch2/assets.zip
vendor/assets/potlatch2/potlatch2/locales/af.swf
vendor/assets/potlatch2/potlatch2/locales/ar.swf
vendor/assets/potlatch2/potlatch2/locales/arc.swf
vendor/assets/potlatch2/potlatch2/locales/ast.swf
vendor/assets/potlatch2/potlatch2/locales/az.swf
vendor/assets/potlatch2/potlatch2/locales/ba.swf
vendor/assets/potlatch2/potlatch2/locales/be-tarask.swf
vendor/assets/potlatch2/potlatch2/locales/be.swf
vendor/assets/potlatch2/potlatch2/locales/bg.swf
vendor/assets/potlatch2/potlatch2/locales/bn.swf
vendor/assets/potlatch2/potlatch2/locales/br.swf
vendor/assets/potlatch2/potlatch2/locales/bs.swf
vendor/assets/potlatch2/potlatch2/locales/ca.swf
vendor/assets/potlatch2/potlatch2/locales/ce.swf
vendor/assets/potlatch2/potlatch2/locales/cs_CZ.swf
vendor/assets/potlatch2/potlatch2/locales/cy.swf [new file with mode: 0644]
vendor/assets/potlatch2/potlatch2/locales/da.swf
vendor/assets/potlatch2/potlatch2/locales/de-formal.swf
vendor/assets/potlatch2/potlatch2/locales/de_DE.swf
vendor/assets/potlatch2/potlatch2/locales/diq.swf
vendor/assets/potlatch2/potlatch2/locales/dsb.swf
vendor/assets/potlatch2/potlatch2/locales/el.swf
vendor/assets/potlatch2/potlatch2/locales/en_GB.swf
vendor/assets/potlatch2/potlatch2/locales/en_US.swf
vendor/assets/potlatch2/potlatch2/locales/eo.swf
vendor/assets/potlatch2/potlatch2/locales/es_ES.swf
vendor/assets/potlatch2/potlatch2/locales/et.swf
vendor/assets/potlatch2/potlatch2/locales/eu.swf
vendor/assets/potlatch2/potlatch2/locales/fa.swf
vendor/assets/potlatch2/potlatch2/locales/fi.swf
vendor/assets/potlatch2/potlatch2/locales/fo.swf
vendor/assets/potlatch2/potlatch2/locales/fr_FR.swf
vendor/assets/potlatch2/potlatch2/locales/fur.swf
vendor/assets/potlatch2/potlatch2/locales/ga.swf
vendor/assets/potlatch2/potlatch2/locales/gd.swf [new file with mode: 0644]
vendor/assets/potlatch2/potlatch2/locales/gl.swf
vendor/assets/potlatch2/potlatch2/locales/grc.swf
vendor/assets/potlatch2/potlatch2/locales/he.swf
vendor/assets/potlatch2/potlatch2/locales/hr.swf
vendor/assets/potlatch2/potlatch2/locales/hsb.swf
vendor/assets/potlatch2/potlatch2/locales/hu.swf
vendor/assets/potlatch2/potlatch2/locales/ia.swf
vendor/assets/potlatch2/potlatch2/locales/id.swf
vendor/assets/potlatch2/potlatch2/locales/is.swf [new file with mode: 0644]
vendor/assets/potlatch2/potlatch2/locales/it_IT.swf
vendor/assets/potlatch2/potlatch2/locales/ja_JP.swf
vendor/assets/potlatch2/potlatch2/locales/ka.swf
vendor/assets/potlatch2/potlatch2/locales/km.swf
vendor/assets/potlatch2/potlatch2/locales/kn.swf
vendor/assets/potlatch2/potlatch2/locales/ko.swf
vendor/assets/potlatch2/potlatch2/locales/krc.swf
vendor/assets/potlatch2/potlatch2/locales/ksh.swf [new file with mode: 0644]
vendor/assets/potlatch2/potlatch2/locales/ku-latn.swf
vendor/assets/potlatch2/potlatch2/locales/ky.swf
vendor/assets/potlatch2/potlatch2/locales/lb.swf
vendor/assets/potlatch2/potlatch2/locales/lez.swf
vendor/assets/potlatch2/potlatch2/locales/lt.swf
vendor/assets/potlatch2/potlatch2/locales/lv.swf
vendor/assets/potlatch2/potlatch2/locales/lzz.swf
vendor/assets/potlatch2/potlatch2/locales/mk.swf
vendor/assets/potlatch2/potlatch2/locales/mr.swf
vendor/assets/potlatch2/potlatch2/locales/ms.swf
vendor/assets/potlatch2/potlatch2/locales/nb_NO.swf
vendor/assets/potlatch2/potlatch2/locales/nl_NL.swf
vendor/assets/potlatch2/potlatch2/locales/nn_NO.swf
vendor/assets/potlatch2/potlatch2/locales/oc.swf
vendor/assets/potlatch2/potlatch2/locales/pa.swf
vendor/assets/potlatch2/potlatch2/locales/pl_PL.swf
vendor/assets/potlatch2/potlatch2/locales/ps.swf
vendor/assets/potlatch2/potlatch2/locales/pt_BR.swf
vendor/assets/potlatch2/potlatch2/locales/pt_PT.swf
vendor/assets/potlatch2/potlatch2/locales/ro.swf
vendor/assets/potlatch2/potlatch2/locales/ru.swf
vendor/assets/potlatch2/potlatch2/locales/rue.swf
vendor/assets/potlatch2/potlatch2/locales/sah.swf
vendor/assets/potlatch2/potlatch2/locales/scn.swf [new file with mode: 0644]
vendor/assets/potlatch2/potlatch2/locales/sk.swf
vendor/assets/potlatch2/potlatch2/locales/sl.swf
vendor/assets/potlatch2/potlatch2/locales/sq.swf
vendor/assets/potlatch2/potlatch2/locales/sr-ec.swf
vendor/assets/potlatch2/potlatch2/locales/sr-el.swf
vendor/assets/potlatch2/potlatch2/locales/sv_SE.swf
vendor/assets/potlatch2/potlatch2/locales/ta.swf
vendor/assets/potlatch2/potlatch2/locales/te.swf
vendor/assets/potlatch2/potlatch2/locales/tl.swf
vendor/assets/potlatch2/potlatch2/locales/tly.swf
vendor/assets/potlatch2/potlatch2/locales/tr.swf
vendor/assets/potlatch2/potlatch2/locales/tyv.swf
vendor/assets/potlatch2/potlatch2/locales/tzm.swf
vendor/assets/potlatch2/potlatch2/locales/uk.swf
vendor/assets/potlatch2/potlatch2/locales/vi_VN.swf
vendor/assets/potlatch2/potlatch2/locales/vo.swf
vendor/assets/potlatch2/potlatch2/locales/yi.swf
vendor/assets/potlatch2/potlatch2/locales/zh_CN.swf
vendor/assets/potlatch2/potlatch2/locales/zh_TW.swf
vendor/gems/rots-0.2.1/.specification [deleted file]
vendor/gems/rots-0.2.1/AUTHORS [deleted file]
vendor/gems/rots-0.2.1/README [deleted file]
vendor/gems/rots-0.2.1/Rakefile [deleted file]
vendor/gems/rots-0.2.1/bin/rots [deleted file]
vendor/gems/rots-0.2.1/lib/rots.rb [deleted file]
vendor/gems/rots-0.2.1/lib/rots/identity_page_app.rb [deleted file]
vendor/gems/rots-0.2.1/lib/rots/server_app.rb [deleted file]
vendor/gems/rots-0.2.1/lib/rots/test_helper.rb [deleted file]
vendor/gems/rots-0.2.1/rots.gemspec [deleted file]
vendor/gems/rots-0.2.1/spec/server_app_spec.rb [deleted file]
vendor/gems/rots-0.2.1/spec/spec_helper.rb [deleted file]

diff --git a/.coveralls.yml b/.coveralls.yml
new file mode 100644 (file)
index 0000000..9160059
--- /dev/null
@@ -0,0 +1 @@
+service_name: travis-ci
index edfd387abad0782b71b6af3401935aad2df2ef37..920ca1120ba51aa6171900e39560d36c48d1343f 100644 (file)
@@ -10,4 +10,5 @@ doc
 .vagrant
 .ruby-gemset
 .ruby-version
-.idea
\ No newline at end of file
+.idea
+coverage
index 683907698555809120a3c8c01492d2171cd67690..29f21fde6f1178be3dd239791da197b071f89b44 100644 (file)
--- a/.mailmap
+++ b/.mailmap
@@ -1,6 +1,10 @@
 Andrzej Zaborowski <balrogg@gmail.com> <andrew.zaborowski@intel.com>
 Andy Allan <andy@gravitystorm.co.uk> <gravitystorm@gmail.com> <github@gravitystorm.co.uk>
+Florian Schäfer <florian@schaeferban.de>
 Grant Slater <openstreetmap@firefishy.com> <github@firefishy.com>
 Harry Wood <git@harrywood.co.uk> <mail@harrywood.co.uk> <github@onlineanimals.co.uk>
 Kai Krueger <kakrueger@gmail.com> <kai@aiputerlx.(none)>
+Michael Glanznig <nebulon42@yandex.com>
+Petr Kadlec <mormegil@centrum.cz>
 Richard Fairhurst <richard@systemeD.net> <richard@systemed.net>
+Simon Poole <simon@poole.ch> <simon@rails-dev.poole.ch>
diff --git a/.rubocop.yml b/.rubocop.yml
new file mode 100644 (file)
index 0000000..55be814
--- /dev/null
@@ -0,0 +1,81 @@
+inherit_from: .rubocop_todo.yml
+
+AllCops:
+  Include:
+    - '**/*.gemspec'
+    - '**/*.podspec'
+    - '**/*.jbuilder'
+    - '**/*.rake'
+    - '**/*.opal'
+    - '**/config.ru'
+    - '**/Gemfile'
+    - '**/Rakefile'
+    - '**/Capfile'
+    - '**/Guardfile'
+    - '**/Podfile'
+    - '**/Thorfile'
+    - '**/Vagrantfile'
+    - '**/Berksfile'
+    - '**/Cheffile'
+    - '**/Vagabondfile'
+    - '**/Fastfile'
+    - '**/*.builder'
+
+Rails:
+  Enabled: true
+
+Layout/ExtraSpacing:
+  AllowForAlignment: true
+
+Lint/PercentStringArray:
+  Exclude:
+    - 'config/initializers/secure_headers.rb'
+    - 'app/controllers/site_controller.rb'
+
+Naming/FileName:
+  Exclude:
+    - 'script/deliver-message'
+    - 'script/locale/reload-languages'
+    - 'script/update-spam-blocks'
+
+Rails/ApplicationRecord:
+  Enabled: false
+
+Rails/HasManyOrHasOneDependent:
+  Enabled: false
+
+Rails/HttpPositionalArguments:
+  Enabled: false
+
+Rails/SkipsModelValidations:
+  Exclude:
+    - 'db/migrate/*.rb'
+    - 'app/controllers/user_controller.rb'
+
+Style/BracesAroundHashParameters:
+  EnforcedStyle: context_dependent
+
+Style/FormatStringToken:
+  EnforcedStyle: template
+
+Style/IfInsideElse:
+  Enabled: false
+
+Style/GlobalVars:
+  Exclude:
+    - 'lib/quad_tile/extconf.rb'
+
+Style/GuardClause:
+  Enabled: false
+
+Style/HashSyntax:
+  EnforcedStyle: hash_rockets
+  Exclude:
+    - 'lib/tasks/testing.rake'
+    - 'config/initializers/wrap_parameters.rb'
+
+Style/StringLiterals:
+  EnforcedStyle: double_quotes
+
+Style/SymbolArray:
+  EnforcedStyle: brackets
diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
new file mode 100644 (file)
index 0000000..b410407
--- /dev/null
@@ -0,0 +1,229 @@
+# This configuration was generated by
+# `rubocop --auto-gen-config`
+# on 2017-10-05 10:04:24 +0100 using RuboCop version 0.50.0.
+# The point is for the user to remove these configuration records
+# one by one as the offenses are removed from the code base.
+# Note that changes in the inspected code, or installation of new
+# versions of RuboCop, may require this file to be generated again.
+
+# Offense count: 1
+# Cop supports --auto-correct.
+# Configuration parameters: EnforcedStyle, SupportedStyles, IndentationWidth.
+# SupportedStyles: aligned, indented
+Layout/MultilineOperationIndentation:
+  Exclude:
+    - 'lib/bounding_box.rb'
+
+# Offense count: 34
+Lint/AmbiguousOperator:
+  Exclude:
+    - 'test/controllers/amf_controller_test.rb'
+    - 'test/controllers/changeset_controller_test.rb'
+    - 'test/lib/bounding_box_test.rb'
+    - 'test/lib/country_test.rb'
+
+# Offense count: 124
+Lint/AmbiguousRegexpLiteral:
+  Enabled: false
+
+# Offense count: 32
+# Configuration parameters: AllowSafeAssignment.
+Lint/AssignmentInCondition:
+  Exclude:
+    - 'app/controllers/application_controller.rb'
+    - 'app/controllers/geocoder_controller.rb'
+    - 'app/controllers/notes_controller.rb'
+    - 'app/controllers/trace_controller.rb'
+    - 'app/controllers/user_controller.rb'
+    - 'app/controllers/user_preference_controller.rb'
+    - 'app/helpers/application_helper.rb'
+    - 'app/helpers/browse_helper.rb'
+    - 'app/models/client_application.rb'
+    - 'app/models/notifier.rb'
+    - 'lib/nominatim.rb'
+    - 'lib/osm.rb'
+    - 'script/deliver-message'
+
+# Offense count: 4
+Lint/HandleExceptions:
+  Exclude:
+    - 'app/controllers/amf_controller.rb'
+    - 'app/controllers/user_controller.rb'
+
+# Offense count: 3
+Lint/InterpolationCheck:
+  Exclude:
+    - 'test/controllers/node_controller_test.rb'
+
+# Offense count: 2
+Lint/RescueWithoutErrorClass:
+  Exclude:
+    - 'app/helpers/browse_helper.rb'
+
+# Offense count: 2
+Lint/ShadowingOuterLocalVariable:
+  Exclude:
+    - 'app/views/changeset/list.atom.builder'
+
+# Offense count: 666
+Metrics/AbcSize:
+  Max: 280
+
+# Offense count: 41
+# Configuration parameters: CountComments, ExcludedMethods.
+Metrics/BlockLength:
+  Max: 240
+
+# Offense count: 12
+# Configuration parameters: CountBlocks.
+Metrics/BlockNesting:
+  Max: 5
+
+# Offense count: 63
+# Configuration parameters: CountComments.
+Metrics/ClassLength:
+  Max: 1796
+
+# Offense count: 71
+Metrics/CyclomaticComplexity:
+  Max: 20
+
+# Offense count: 3004
+# Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
+# URISchemes: http, https
+Metrics/LineLength:
+  Max: 1073
+
+# Offense count: 675
+# Configuration parameters: CountComments.
+Metrics/MethodLength:
+  Max: 179
+
+# Offense count: 2
+# Configuration parameters: CountComments.
+Metrics/ModuleLength:
+  Max: 147
+
+# Offense count: 4
+# Configuration parameters: CountKeywordArgs.
+Metrics/ParameterLists:
+  Max: 9
+
+# Offense count: 71
+Metrics/PerceivedComplexity:
+  Max: 23
+
+# Offense count: 5
+Naming/AccessorMethodName:
+  Exclude:
+    - 'app/controllers/application_controller.rb'
+    - 'app/helpers/title_helper.rb'
+    - 'app/models/old_way.rb'
+    - 'lib/osm.rb'
+    - 'lib/potlatch.rb'
+
+# Offense count: 8
+# Configuration parameters: NamePrefix, NamePrefixBlacklist, NameWhitelist.
+# NamePrefix: is_, has_, have_
+# NamePrefixBlacklist: is_, has_, have_
+# NameWhitelist: is_a?
+Naming/PredicateName:
+  Exclude:
+    - 'spec/**/*'
+    - 'app/models/changeset.rb'
+    - 'app/models/old_node.rb'
+    - 'app/models/old_relation.rb'
+    - 'app/models/old_way.rb'
+    - 'app/models/user.rb'
+    - 'lib/classic_pagination/pagination.rb'
+
+# Offense count: 2
+# Configuration parameters: Include.
+# Include: app/**/*.rb, config/**/*.rb, lib/**/*.rb
+Rails/Exit:
+  Exclude:
+    - 'lib/**/*.rake'
+    - 'lib/daemons/gpx_import.rb'
+
+# Offense count: 2
+# Configuration parameters: Include.
+# Include: app/models/**/*.rb
+Rails/HasAndBelongsToMany:
+  Exclude:
+    - 'app/models/changeset.rb'
+    - 'app/models/user.rb'
+
+# Offense count: 5
+# Configuration parameters: Include.
+# Include: db/migrate/*.rb
+Rails/NotNullColumn:
+  Exclude:
+    - 'db/migrate/002_cleanup_osm_db.rb'
+    - 'db/migrate/020_populate_node_tags_and_remove.rb'
+    - 'db/migrate/021_move_to_innodb.rb'
+    - 'db/migrate/025_add_end_time_to_changesets.rb'
+    - 'db/migrate/20120404205604_add_user_and_description_to_redaction.rb'
+
+# Offense count: 20
+Rails/OutputSafety:
+  Exclude:
+    - 'app/controllers/user_controller.rb'
+    - 'app/helpers/application_helper.rb'
+    - 'app/helpers/changeset_helper.rb'
+    - 'app/helpers/geocoder_helper.rb'
+    - 'app/helpers/note_helper.rb'
+    - 'app/helpers/open_graph_helper.rb'
+    - 'app/helpers/user_blocks_helper.rb'
+    - 'app/helpers/user_roles_helper.rb'
+    - 'lib/rich_text.rb'
+    - 'test/helpers/application_helper_test.rb'
+
+# Offense count: 86
+# Configuration parameters: EnforcedStyle, SupportedStyles.
+# SupportedStyles: strict, flexible
+Rails/TimeZone:
+  Enabled: false
+
+# Offense count: 1
+Style/AsciiComments:
+  Exclude:
+    - 'test/models/message_test.rb'
+
+# Offense count: 219
+Style/Documentation:
+  Enabled: false
+
+# Offense count: 1
+# Cop supports --auto-correct.
+# Configuration parameters: MaxLineLength.
+Style/IfUnlessModifier:
+  Exclude:
+    - 'app/controllers/way_controller.rb'
+
+# Offense count: 60
+# Cop supports --auto-correct.
+Style/LineEndConcatenation:
+  Exclude:
+    - 'db/migrate/008_remove_segments.rb'
+    - 'db/migrate/020_populate_node_tags_and_remove.rb'
+    - 'db/migrate/023_add_changesets.rb'
+    - 'lib/bounding_box.rb'
+    - 'lib/diff_reader.rb'
+    - 'lib/osm.rb'
+    - 'test/controllers/changeset_controller_test.rb'
+    - 'test/controllers/node_controller_test.rb'
+    - 'test/controllers/relation_controller_test.rb'
+    - 'test/controllers/way_controller_test.rb'
+
+# Offense count: 75
+# Cop supports --auto-correct.
+# Configuration parameters: Strict.
+Style/NumericLiterals:
+  MinDigits: 11
+
+# Offense count: 95
+# Cop supports --auto-correct.
+# Configuration parameters: EnforcedStyle, SupportedStyles.
+# SupportedStyles: compact, exploded
+Style/RaiseArgs:
+  Enabled: false
diff --git a/.travis.yml b/.travis.yml
new file mode 100644 (file)
index 0000000..48ddb4a
--- /dev/null
@@ -0,0 +1,30 @@
+sudo: false
+language: ruby
+rvm:
+  - 2.3.1
+cache: bundler
+addons:
+  postgresql: 9.5
+  apt:
+    packages:
+      - postgresql-server-dev-9.5
+services:
+  - memcached
+env:
+  global:
+    - OSM_MEMCACHE_SERVERS="127.0.0.1"
+before_script:
+  - cp config/example.application.yml config/application.yml
+  - psql -U postgres -c "CREATE DATABASE openstreetmap"
+  - psql -U postgres -c "CREATE EXTENSION btree_gist" openstreetmap
+  - make -C db/functions libpgosm.so
+  - ln db/functions/libpgosm.so /tmp
+  - psql -U postgres -c "CREATE FUNCTION maptile_for_point(int8, int8, int4) RETURNS int4 AS '/tmp/libpgosm', 'maptile_for_point' LANGUAGE C STRICT" openstreetmap
+  - psql -U postgres -c "CREATE FUNCTION tile_for_point(int4, int4) RETURNS int8 AS '/tmp/libpgosm', 'tile_for_point' LANGUAGE C STRICT" openstreetmap
+  - psql -U postgres -c "CREATE FUNCTION xid_to_int4(xid) RETURNS int4 AS '/tmp/libpgosm', 'xid_to_int4' LANGUAGE C STRICT" openstreetmap
+  - cp config/travis.database.yml config/database.yml
+  - bundle exec rake db:migrate
+script:
+  - bundle exec rubocop -f fuubar
+  - bundle exec rake jshint
+  - bundle exec rake test:db
index 9da33fe8c21cfa3d78cfadbd2486962a4c7e964b..477e8c63f5f9272b2fb99e27bddeb6478b286168 100644 (file)
@@ -6,7 +6,7 @@
 When writing code it is generally a good idea to try and match your
 formatting to that of any existing code in the same file, or to other
 similar files if you are writing new code. Consistency of layout is
-far more important that the layout itself as it makes reading code
+far more important than the layout itself as it makes reading code
 much easier.
 
 One golden rule of formatting -- please don't use tabs in your code
diff --git a/FAQ.md b/FAQ.md
new file mode 100644 (file)
index 0000000..423ef70
--- /dev/null
+++ b/FAQ.md
@@ -0,0 +1,30 @@
+## How do I create a banner to promote my OpenStreetMap event?
+
+We occasionally display banner images on the main page of [openstreetmap.org](https://www.openstreetmap.org/) to
+promote a large OpenStreetMap focused conference or host a worldwide donation
+drive.  This is a great way to reach a lot of people!
+
+1. Please review [openstreetmap/operations#150](https://github.com/openstreetmap/operations/issues/150) to
+know whether your event qualifies for a front-page banner.
+
+2. Create the banner image.  Some guidelines:
+  * Image should be 350px wide (exactly) x 350px tall (or shorter).
+  * Use a standard web image format (.gif, .jpg, .png)
+  * Note that a close 'X' button will be drawn over the top right 60x60px
+  corner of the banner, so please do not put anything important in that space.
+
+3. Prepare a pull request which includes the following:
+  * The banner should be saved under the
+  [`app/assets/images/banners/`](https://github.com/openstreetmap/openstreetmap-website/tree/master/app/assets/images/banners) folder, and should have a name that makes it clear what it is for (e.g. `donate-2017.jpg`)
+  * Edit [`config/banners.yml`](https://github.com/openstreetmap/openstreetmap-website/blob/master/config/banners.yml)
+  to contain an entry for the event banner.  It should contain the following:
+    * `id` - a unique identifier (e.g. `donate2017`)
+    * `alt` - alt name for the image (e.g. `OpenStreetMap Funding Drive 2017`)
+    * `link` - URL for your event page (e.g. `https://donate.openstreetmap.org/`)
+    * `img` - the filename for the banner image (e.g. `banners/donate-2017.jpg`)
+    * `enddate` - the final date that the banner will be shown (e.g. `2017-oct-31`)
+  * (optional) Feel free to cleanup the old images from the `app/assets/images/banners/`
+  folder and old entries in the `config/banners.yml` file.
+
+See [PR #1296](https://github.com/openstreetmap/openstreetmap-website/pull/1296)
+as an example.
diff --git a/Gemfile b/Gemfile
index 7da558d109a7c7ec8cbc705794776334222ef7cf..79d95f9d5af3e7bc91376002e0e3574997c28aa8 100644 (file)
--- a/Gemfile
+++ b/Gemfile
-source 'https://rubygems.org'
+source "https://rubygems.org"
 
 # Require rails
-gem 'rails', '4.1.8'
+gem "rails", "5.1.4"
 
 # Require things which have moved to gems in ruby 1.9
-gem 'bigdecimal', "~> 1.1.0", :platforms => :ruby_19
+gem "bigdecimal", "~> 1.1.0", :platforms => :ruby_19
 
 # Require things which have moved to gems in ruby 2.0
-gem 'psych', :platforms => :ruby_20
+gem "psych", :platforms => :ruby_20
 
 # Require json for multi_json
-gem 'json'
+gem "json"
 
 # Use postgres as the database
-gem 'pg'
+gem "pg"
 
 # Use SCSS for stylesheets
-gem 'sass-rails', '~> 4.0.3'
+gem "sass-rails", "~> 5.0"
 
 # Use Uglifier as compressor for JavaScript assets
-gem 'uglifier', '>= 1.3.0'
+gem "uglifier", ">= 1.3.0"
 
 # Use CoffeeScript for .js.coffee assets and views
-gem 'coffee-rails', '~> 4.0.0'
+gem "coffee-rails", "~> 4.2"
 
 # Use jquery as the JavaScript library
-gem 'jquery-rails'
+gem "jquery-rails"
 
 # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
-# gem 'jbuilder', '~> 1.2'
-gem 'jsonify-rails'
+# gem 'jbuilder', '~> 2.0'
+gem "jsonify-rails"
 
 # Use R2 for RTL conversion
-gem 'r2'
+gem "r2", "~> 0.2.7"
 
 # Use autoprefixer to generate CSS prefixes
-gem 'autoprefixer-rails'
+gem "autoprefixer-rails"
+
+# Use image_optim to optimise images
+gem "image_optim_rails"
 
 # Load rails plugins
-gem 'rails-i18n', "~> 4.0.0"
-gem 'dynamic_form'
-gem 'rinku', '>= 1.2.2', :require => 'rails_rinku'
-gem 'oauth-plugin', '>= 0.5.1'
-gem 'open_id_authentication', '>= 1.1.0'
-gem 'validates_email_format_of', '>= 1.5.1'
-gem 'composite_primary_keys', '~> 7.0.11'
-gem 'http_accept_language', '~> 2.0.0'
-gem 'paperclip', '~> 4.0'
-gem 'deadlock_retry', '>= 1.2.0'
-gem 'openstreetmap-i18n-js', '>= 3.0.0.rc5.3', :require => 'i18n-js'
-gem 'rack-cors'
-gem 'actionpack-page_caching'
-
-# We need ruby-openid 2.2.0 or later for ruby 1.9 support
-gem 'ruby-openid', '>= 2.2.0'
+gem "actionpack-page_caching"
+gem "composite_primary_keys", "~> 10.0.0"
+gem "dynamic_form"
+gem "http_accept_language", "~> 2.0.0"
+gem "i18n-js", ">= 3.0.0"
+gem "oauth-plugin", ">= 0.5.1"
+gem "openstreetmap-deadlock_retry", ">= 1.3.0", :require => "deadlock_retry"
+gem "paperclip", "~> 4.0"
+gem "rack-cors"
+gem "rails-i18n", "~> 4.0.0"
+gem "record_tag_helper"
+gem "rinku", ">= 1.2.2", :require => "rails_rinku"
+gem "validates_email_format_of", ">= 1.5.1"
+
+# Sanitise URIs
+gem "rack-uri_sanitizer"
+
+# Omniauth for authentication
+gem "omniauth"
+gem "omniauth-facebook"
+gem "omniauth-github"
+gem "omniauth-google-oauth2", ">= 0.2.7"
+gem "omniauth-mediawiki", ">= 0.0.3"
+gem "omniauth-openid"
+gem "omniauth-windowslive"
 
 # Markdown formatting support
-gem 'redcarpet'
-
-# Character conversion support for ruby 1.8
-gem 'iconv', '= 0.1', :platforms => :ruby_18
+gem "redcarpet"
 
 # Load libxml support for XML parsing and generation
-gem 'libxml-ruby', '>= 2.0.5', :require => 'libxml'
+gem "libxml-ruby", ">= 2.0.5", :require => "libxml"
 
 # Use for HTML sanitisation
-gem 'sanitize'
-gem 'htmlentities'
+gem "htmlentities"
+gem "sanitize"
 
 # Load SystemTimer for implementing request timeouts
-gem 'SystemTimer', '>= 1.1.3', :require => 'system_timer', :platforms => :ruby_18
+gem "SystemTimer", ">= 1.1.3", :require => "system_timer", :platforms => :ruby_18
+
+# Load faraday for mockable HTTP client
+gem "faraday"
+
+# Load geoip for querying Maxmind GeoIP database
+gem "geoip"
 
-# Load httpclient and soap4r for SOAP support for Quova GeoIP queries
-gem 'httpclient'
-gem 'soap4r-ruby1.9'
+# Load rotp to generate TOTP tokens
+gem "rotp"
 
 # Load memcache client in case we are using it
-gem 'dalli'
-gem 'kgio'
+gem "dalli"
+gem "kgio"
+
+# Load secure_headers for Content-Security-Policy support
+gem "secure_headers"
+
+# Load canonical-rails to generate canonical URLs
+gem "canonical-rails"
+
+# Used to generate logstash friendly log files
+gem "logstasher"
 
 # Gems useful for development
 group :development do
-  gem 'vendorer'
+  gem "annotate"
+  gem "listen"
+  gem "vendorer"
 end
 
 # Gems needed for running tests
 group :test do
-  gem 'timecop'
-  gem 'minitest', '~> 5.1', :platforms => [:ruby_19, :ruby_20]
+  gem "minitest", "~> 5.1", :platforms => [:ruby_19, :ruby_20]
+  gem "rails-controller-testing"
+  gem "rubocop"
+  gem "webmock"
 end
 
 # Needed in development as well so rake can see konacha tasks
 group :development, :test do
-  gem 'konacha'
-  gem 'poltergeist'
+  gem "capybara", "~> 2.13"
+  gem "coveralls", :require => false
+  gem "factory_bot_rails"
+  gem "jshint"
+  gem "poltergeist"
+  gem "puma", "~> 3.7"
 end
index cdbc9888de9486e1648da1820cc46519e5668cc3..b65ec4ed9706fc79e552a0b9a4aa859931275967 100644 (file)
@@ -2,103 +2,173 @@ GEM
   remote: https://rubygems.org/
   specs:
     SystemTimer (1.2.3)
-    actionmailer (4.1.8)
-      actionpack (= 4.1.8)
-      actionview (= 4.1.8)
+    actioncable (5.1.4)
+      actionpack (= 5.1.4)
+      nio4r (~> 2.0)
+      websocket-driver (~> 0.6.1)
+    actionmailer (5.1.4)
+      actionpack (= 5.1.4)
+      actionview (= 5.1.4)
+      activejob (= 5.1.4)
       mail (~> 2.5, >= 2.5.4)
-    actionpack (4.1.8)
-      actionview (= 4.1.8)
-      activesupport (= 4.1.8)
-      rack (~> 1.5.2)
-      rack-test (~> 0.6.2)
-    actionpack-page_caching (1.0.2)
-      actionpack (>= 4.0.0, < 5)
-    actionview (4.1.8)
-      activesupport (= 4.1.8)
+      rails-dom-testing (~> 2.0)
+    actionpack (5.1.4)
+      actionview (= 5.1.4)
+      activesupport (= 5.1.4)
+      rack (~> 2.0)
+      rack-test (>= 0.6.3)
+      rails-dom-testing (~> 2.0)
+      rails-html-sanitizer (~> 1.0, >= 1.0.2)
+    actionpack-page_caching (1.1.0)
+      actionpack (>= 4.0.0, < 6)
+    actionview (5.1.4)
+      activesupport (= 5.1.4)
       builder (~> 3.1)
-      erubis (~> 2.7.0)
-    activemodel (4.1.8)
-      activesupport (= 4.1.8)
-      builder (~> 3.1)
-    activerecord (4.1.8)
-      activemodel (= 4.1.8)
-      activesupport (= 4.1.8)
-      arel (~> 5.0.0)
-    activesupport (4.1.8)
-      i18n (~> 0.6, >= 0.6.9)
-      json (~> 1.7, >= 1.7.7)
+      erubi (~> 1.4)
+      rails-dom-testing (~> 2.0)
+      rails-html-sanitizer (~> 1.0, >= 1.0.3)
+    activejob (5.1.4)
+      activesupport (= 5.1.4)
+      globalid (>= 0.3.6)
+    activemodel (5.1.4)
+      activesupport (= 5.1.4)
+    activerecord (5.1.4)
+      activemodel (= 5.1.4)
+      activesupport (= 5.1.4)
+      arel (~> 8.0)
+    activesupport (5.1.4)
+      concurrent-ruby (~> 1.0, >= 1.0.2)
+      i18n (~> 0.7)
       minitest (~> 5.1)
-      thread_safe (~> 0.1)
       tzinfo (~> 1.1)
-    arel (5.0.1.20140414130214)
-    autoprefixer-rails (4.0.0.1)
+    addressable (2.5.2)
+      public_suffix (>= 2.0.2, < 4.0)
+    annotate (2.7.2)
+      activerecord (>= 3.2, < 6.0)
+      rake (>= 10.4, < 13.0)
+    arel (8.0.0)
+    ast (2.3.0)
+    autoprefixer-rails (7.1.6)
       execjs
     bigdecimal (1.1.0)
-    builder (3.2.2)
-    capybara (2.4.4)
-      mime-types (>= 1.16)
+    builder (3.2.3)
+    canonical-rails (0.2.1)
+      rails (>= 4.1, < 5.2)
+    capybara (2.15.4)
+      addressable
+      mini_mime (>= 0.1.3)
       nokogiri (>= 1.3.3)
       rack (>= 1.0.0)
       rack-test (>= 0.5.4)
       xpath (~> 2.0)
-    climate_control (0.0.3)
-      activesupport (>= 3.0)
+    climate_control (0.2.0)
     cliver (0.3.2)
-    cocaine (0.5.4)
+    cocaine (0.5.8)
       climate_control (>= 0.0.3, < 1.0)
-    coffee-rails (4.0.1)
+    coffee-rails (4.2.2)
       coffee-script (>= 2.2.0)
-      railties (>= 4.0.0, < 5.0)
-    coffee-script (2.3.0)
+      railties (>= 4.0.0)
+    coffee-script (2.4.1)
       coffee-script-source
       execjs
-    coffee-script-source (1.8.0)
-    colorize (0.7.3)
-    composite_primary_keys (7.0.12)
-      activerecord (~> 4.1.7)
-    crass (0.2.1)
-    dalli (2.7.2)
-    deadlock_retry (1.2.0)
+    coffee-script-source (1.12.2)
+    composite_primary_keys (10.0.1)
+      activerecord (~> 5.1.0)
+    concurrent-ruby (1.0.5)
+    coveralls (0.8.21)
+      json (>= 1.8, < 3)
+      simplecov (~> 0.14.1)
+      term-ansicolor (~> 1.3)
+      thor (~> 0.19.4)
+      tins (~> 1.6)
+    crack (0.4.3)
+      safe_yaml (~> 1.0.0)
+    crass (1.0.2)
+    dalli (2.7.6)
+    docile (1.1.5)
     dynamic_form (1.1.4)
-    erubis (2.7.0)
-    execjs (2.2.2)
-    faraday (0.9.0)
+    erubi (1.7.0)
+    execjs (2.7.0)
+    exifr (1.3.2)
+    factory_bot (4.8.2)
+      activesupport (>= 3.0.0)
+    factory_bot_rails (4.8.2)
+      factory_bot (~> 4.8.2)
+      railties (>= 3.0.0)
+    faraday (0.12.2)
       multipart-post (>= 1.2, < 3)
-    hike (1.2.3)
-    htmlentities (4.3.2)
-    http_accept_language (2.0.2)
-    httpclient (2.5.3.3)
-    i18n (0.6.11)
-    iconv (0.1)
-    jquery-rails (3.1.2)
-      railties (>= 3.0, < 5.0)
+    ffi (1.9.18)
+    fspath (3.1.0)
+    geoip (1.6.3)
+    globalid (0.4.1)
+      activesupport (>= 4.2.0)
+    hashdiff (0.3.7)
+    hashie (3.5.6)
+    htmlentities (4.3.4)
+    http_accept_language (2.0.5)
+    i18n (0.9.0)
+      concurrent-ruby (~> 1.0)
+    i18n-js (3.0.2)
+      i18n (~> 0.6, >= 0.6.6)
+    image_optim (0.25.0)
+      exifr (~> 1.2, >= 1.2.2)
+      fspath (~> 3.0)
+      image_size (~> 1.5)
+      in_threads (~> 1.3)
+      progress (~> 3.0, >= 3.0.1)
+    image_optim_rails (0.4.1)
+      image_optim (~> 0.24)
+      rails
+      sprockets
+    image_size (1.5.0)
+    in_threads (1.4.0)
+    jquery-rails (4.3.1)
+      rails-dom-testing (>= 1, < 3)
+      railties (>= 4.2.0)
       thor (>= 0.14, < 2.0)
-    json (1.8.1)
+    jshint (1.5.0)
+      execjs (>= 1.4.0)
+      multi_json (~> 1.0)
+      therubyracer (~> 0.12.1)
+    json (2.1.0)
     jsonify (0.3.1)
       multi_json (~> 1.0)
     jsonify-rails (0.3.2)
       actionpack
       jsonify (< 0.4.0)
-    jwt (1.0.0)
-    kgio (2.9.2)
-    konacha (3.3.0)
-      actionpack (>= 3.1, < 5)
-      capybara
-      colorize
-      railties (>= 3.1, < 5)
-      sprockets
-    libxml-ruby (2.7.0)
-    mail (2.6.3)
-      mime-types (>= 1.16, < 3)
-    mime-types (2.4.3)
-    mini_portile (0.6.1)
-    minitest (5.4.3)
-    multi_json (1.10.1)
-    multi_xml (0.5.5)
+    jwt (1.5.6)
+    kgio (2.11.0)
+    libv8 (3.16.14.19)
+    libxml-ruby (3.0.0)
+    listen (3.1.5)
+      rb-fsevent (~> 0.9, >= 0.9.4)
+      rb-inotify (~> 0.9, >= 0.9.7)
+      ruby_dep (~> 1.2)
+    logstash-event (1.2.02)
+    logstasher (1.2.2)
+      activesupport (>= 4.0)
+      logstash-event (~> 1.2.0)
+      request_store
+    loofah (2.1.1)
+      crass (~> 1.0.2)
+      nokogiri (>= 1.5.9)
+    mail (2.6.6)
+      mime-types (>= 1.16, < 4)
+    method_source (0.9.0)
+    mime-types (3.1)
+      mime-types-data (~> 3.2015)
+    mime-types-data (3.2016.0521)
+    mimemagic (0.3.0)
+    mini_mime (0.1.4)
+    mini_portile2 (2.3.0)
+    minitest (5.10.3)
+    multi_json (1.12.2)
+    multi_xml (0.6.0)
     multipart-post (2.0.0)
-    nokogiri (1.6.4.1)
-      mini_portile (~> 0.6.0)
-    nokogumbo (1.1.12)
+    nio4r (2.1.0)
+    nokogiri (1.8.1)
+      mini_portile2 (~> 2.3.0)
+    nokogumbo (1.4.13)
       nokogiri
     oauth (0.4.7)
     oauth-plugin (0.5.1)
@@ -106,92 +176,178 @@ GEM
       oauth (~> 0.4.4)
       oauth2 (>= 0.5.0)
       rack
-    oauth2 (1.0.0)
-      faraday (>= 0.8, < 0.10)
+    oauth2 (1.4.0)
+      faraday (>= 0.8, < 0.13)
       jwt (~> 1.0)
       multi_json (~> 1.3)
       multi_xml (~> 0.5)
-      rack (~> 1.2)
-    open_id_authentication (1.2.0)
-      rack-openid (~> 1.3)
-    openstreetmap-i18n-js (3.0.0.rc5.3)
-      i18n
-    paperclip (4.2.0)
-      activemodel (>= 3.0.0)
-      activesupport (>= 3.0.0)
-      cocaine (~> 0.5.3)
+      rack (>= 1.2, < 3)
+    omniauth (1.7.1)
+      hashie (>= 3.4.6, < 3.6.0)
+      rack (>= 1.6.2, < 3)
+    omniauth-facebook (4.0.0)
+      omniauth-oauth2 (~> 1.2)
+    omniauth-github (1.3.0)
+      omniauth (~> 1.5)
+      omniauth-oauth2 (>= 1.4.0, < 2.0)
+    omniauth-google-oauth2 (0.5.2)
+      jwt (~> 1.5)
+      multi_json (~> 1.3)
+      omniauth (>= 1.1.1)
+      omniauth-oauth2 (>= 1.3.1)
+    omniauth-mediawiki (0.0.3)
+      jwt (~> 1.0)
+      omniauth-oauth (~> 1.0)
+    omniauth-oauth (1.1.0)
+      oauth
+      omniauth (~> 1.0)
+    omniauth-oauth2 (1.4.0)
+      oauth2 (~> 1.0)
+      omniauth (~> 1.2)
+    omniauth-openid (1.0.1)
+      omniauth (~> 1.0)
+      rack-openid (~> 1.3.1)
+    omniauth-windowslive (0.0.12)
+      multi_json (~> 1.12)
+      omniauth-oauth2 (~> 1.4)
+    openstreetmap-deadlock_retry (1.3.0)
+    paperclip (4.3.7)
+      activemodel (>= 3.2.0)
+      activesupport (>= 3.2.0)
+      cocaine (~> 0.5.5)
       mime-types
-    pg (0.17.1)
-    poltergeist (1.5.1)
+      mimemagic (= 0.3.0)
+    parallel (1.12.0)
+    parser (2.4.0.0)
+      ast (~> 2.2)
+    pg (0.21.0)
+    poltergeist (1.16.0)
       capybara (~> 2.1)
       cliver (~> 0.3.1)
-      multi_json (~> 1.0)
       websocket-driver (>= 0.2.0)
-    psych (2.0.6)
-    r2 (0.2.5)
-    rack (1.5.2)
-    rack-cors (0.2.9)
-    rack-openid (1.4.2)
+    powerpack (0.1.1)
+    progress (3.4.0)
+    psych (2.2.4)
+    public_suffix (3.0.0)
+    puma (3.10.0)
+    r2 (0.2.7)
+    rack (2.0.3)
+    rack-cors (1.0.2)
+    rack-openid (1.3.1)
       rack (>= 1.1.0)
       ruby-openid (>= 2.1.8)
-    rack-test (0.6.2)
-      rack (>= 1.0)
-    rails (4.1.8)
-      actionmailer (= 4.1.8)
-      actionpack (= 4.1.8)
-      actionview (= 4.1.8)
-      activemodel (= 4.1.8)
-      activerecord (= 4.1.8)
-      activesupport (= 4.1.8)
-      bundler (>= 1.3.0, < 2.0)
-      railties (= 4.1.8)
-      sprockets-rails (~> 2.0)
-    rails-i18n (4.0.3)
+    rack-test (0.7.0)
+      rack (>= 1.0, < 3)
+    rack-uri_sanitizer (0.0.2)
+    rails (5.1.4)
+      actioncable (= 5.1.4)
+      actionmailer (= 5.1.4)
+      actionpack (= 5.1.4)
+      actionview (= 5.1.4)
+      activejob (= 5.1.4)
+      activemodel (= 5.1.4)
+      activerecord (= 5.1.4)
+      activesupport (= 5.1.4)
+      bundler (>= 1.3.0)
+      railties (= 5.1.4)
+      sprockets-rails (>= 2.0.0)
+    rails-controller-testing (1.0.2)
+      actionpack (~> 5.x, >= 5.0.1)
+      actionview (~> 5.x, >= 5.0.1)
+      activesupport (~> 5.x)
+    rails-dom-testing (2.0.3)
+      activesupport (>= 4.2.0)
+      nokogiri (>= 1.6)
+    rails-html-sanitizer (1.0.3)
+      loofah (~> 2.0)
+    rails-i18n (4.0.2)
       i18n (~> 0.6)
-      railties (~> 4.0)
-    railties (4.1.8)
-      actionpack (= 4.1.8)
-      activesupport (= 4.1.8)
+      rails (>= 4.0)
+    railties (5.1.4)
+      actionpack (= 5.1.4)
+      activesupport (= 5.1.4)
+      method_source
       rake (>= 0.8.7)
       thor (>= 0.18.1, < 2.0)
-    rake (10.3.2)
-    redcarpet (3.2.0)
-    rinku (1.7.3)
-    ruby-openid (2.6.0)
-    sanitize (3.0.3)
-      crass (~> 0.2.0)
+    rainbow (2.2.2)
+      rake
+    rake (12.2.1)
+    rb-fsevent (0.10.2)
+    rb-inotify (0.9.10)
+      ffi (>= 0.5.0, < 2)
+    record_tag_helper (1.0.0)
+      actionview (~> 5.x)
+    redcarpet (3.4.0)
+    ref (2.0.0)
+    request_store (1.3.2)
+    rinku (2.0.3)
+    rotp (3.3.0)
+    rubocop (0.51.0)
+      parallel (~> 1.10)
+      parser (>= 2.3.3.1, < 3.0)
+      powerpack (~> 0.1)
+      rainbow (>= 2.2.2, < 3.0)
+      ruby-progressbar (~> 1.7)
+      unicode-display_width (~> 1.0, >= 1.0.1)
+    ruby-openid (2.7.0)
+    ruby-progressbar (1.9.0)
+    ruby_dep (1.5.0)
+    safe_yaml (1.0.4)
+    sanitize (4.5.0)
+      crass (~> 1.0.2)
       nokogiri (>= 1.4.4)
-      nokogumbo (= 1.1.12)
-    sass (3.2.19)
-    sass-rails (4.0.4)
-      railties (>= 4.0.0, < 5.0)
-      sass (~> 3.2.2)
-      sprockets (~> 2.8, < 2.12)
-      sprockets-rails (~> 2.0)
-    soap4r-ruby1.9 (2.0.5)
-    sprockets (2.11.3)
-      hike (~> 1.2)
-      multi_json (~> 1.0)
-      rack (~> 1.0)
-      tilt (~> 1.1, != 1.3.0)
-    sprockets-rails (2.2.0)
-      actionpack (>= 3.0)
-      activesupport (>= 3.0)
+      nokogumbo (~> 1.4.1)
+    sass (3.5.3)
+      sass-listen (~> 4.0.0)
+    sass-listen (4.0.0)
+      rb-fsevent (~> 0.9, >= 0.9.4)
+      rb-inotify (~> 0.9, >= 0.9.7)
+    sass-rails (5.0.6)
+      railties (>= 4.0.0, < 6)
+      sass (~> 3.1)
       sprockets (>= 2.8, < 4.0)
-    thor (0.19.1)
-    thread_safe (0.3.4)
-    tilt (1.4.1)
-    timecop (0.7.1)
-    tzinfo (1.2.2)
+      sprockets-rails (>= 2.0, < 4.0)
+      tilt (>= 1.1, < 3)
+    secure_headers (5.0.1)
+      useragent (>= 0.15.0)
+    simplecov (0.14.1)
+      docile (~> 1.1.0)
+      json (>= 1.8, < 3)
+      simplecov-html (~> 0.10.0)
+    simplecov-html (0.10.2)
+    sprockets (3.7.1)
+      concurrent-ruby (~> 1.0)
+      rack (> 1, < 3)
+    sprockets-rails (3.2.1)
+      actionpack (>= 4.0)
+      activesupport (>= 4.0)
+      sprockets (>= 3.0.0)
+    term-ansicolor (1.6.0)
+      tins (~> 1.0)
+    therubyracer (0.12.3)
+      libv8 (~> 3.16.14.15)
+      ref
+    thor (0.19.4)
+    thread_safe (0.3.6)
+    tilt (2.0.8)
+    tins (1.15.0)
+    tzinfo (1.2.4)
       thread_safe (~> 0.1)
-    uglifier (2.5.3)
-      execjs (>= 0.3.0)
-      json (>= 1.8.0)
-    validates_email_format_of (1.6.1)
+    uglifier (3.2.0)
+      execjs (>= 0.3.0, < 3)
+    unicode-display_width (1.3.0)
+    useragent (0.16.8)
+    validates_email_format_of (1.6.3)
       i18n
     vendorer (0.1.16)
-    websocket-driver (0.4.0)
-    xpath (2.0.0)
+    webmock (3.1.0)
+      addressable (>= 2.3.6)
+      crack (>= 0.3.2)
+      hashdiff
+    websocket-driver (0.6.5)
+      websocket-extensions (>= 0.1.0)
+    websocket-extensions (0.1.2)
+    xpath (2.1.0)
       nokogiri (~> 1.3)
 
 PLATFORMS
@@ -200,42 +356,64 @@ PLATFORMS
 DEPENDENCIES
   SystemTimer (>= 1.1.3)
   actionpack-page_caching
+  annotate
   autoprefixer-rails
   bigdecimal (~> 1.1.0)
-  coffee-rails (~> 4.0.0)
-  composite_primary_keys (~> 7.0.11)
+  canonical-rails
+  capybara (~> 2.13)
+  coffee-rails (~> 4.2)
+  composite_primary_keys (~> 10.0.0)
+  coveralls
   dalli
-  deadlock_retry (>= 1.2.0)
   dynamic_form
+  factory_bot_rails
+  faraday
+  geoip
   htmlentities
   http_accept_language (~> 2.0.0)
-  httpclient
-  iconv (= 0.1)
+  i18n-js (>= 3.0.0)
+  image_optim_rails
   jquery-rails
+  jshint
   json
   jsonify-rails
   kgio
-  konacha
   libxml-ruby (>= 2.0.5)
+  listen
+  logstasher
   minitest (~> 5.1)
   oauth-plugin (>= 0.5.1)
-  open_id_authentication (>= 1.1.0)
-  openstreetmap-i18n-js (>= 3.0.0.rc5.3)
+  omniauth
+  omniauth-facebook
+  omniauth-github
+  omniauth-google-oauth2 (>= 0.2.7)
+  omniauth-mediawiki (>= 0.0.3)
+  omniauth-openid
+  omniauth-windowslive
+  openstreetmap-deadlock_retry (>= 1.3.0)
   paperclip (~> 4.0)
   pg
   poltergeist
   psych
-  r2
+  puma (~> 3.7)
+  r2 (~> 0.2.7)
   rack-cors
-  rails (= 4.1.8)
+  rack-uri_sanitizer
+  rails (= 5.1.4)
+  rails-controller-testing
   rails-i18n (~> 4.0.0)
+  record_tag_helper
   redcarpet
   rinku (>= 1.2.2)
-  ruby-openid (>= 2.2.0)
+  rotp
+  rubocop
   sanitize
-  sass-rails (~> 4.0.3)
-  soap4r-ruby1.9
-  timecop
+  sass-rails (~> 5.0)
+  secure_headers
   uglifier (>= 1.3.0)
   validates_email_format_of (>= 1.5.1)
   vendorer
+  webmock
+
+BUNDLED WITH
+   1.15.4
index 780ffdf07057d4b644f4e216cd4028dc66b418b9..d036673b1ee1923bdffcdb8dfc36ab7cbd5cde15 100644 (file)
@@ -3,12 +3,12 @@
 These instructions are designed for setting up The Rails Port for development and testing.
 If you want to deploy the software for your own project, then see the notes at the end.
 
-You can install the software directly on your machine, which is the traditional and probably best-bupported approach. However, there is an alternative which may be easier: Vagrant. This installs the software into a virtual machine, which makes it easier to get a consistent development environment and may avoid installation difficulties. For Vagrant instructions, see [VAGRANT.md](VAGRANT.md).
+You can install the software directly on your machine, which is the traditional and probably best-supported approach. However, there is an alternative which may be easier: Vagrant. This installs the software into a virtual machine, which makes it easier to get a consistent development environment and may avoid installation difficulties. For Vagrant instructions, see [VAGRANT.md](VAGRANT.md).
 
 These instructions are based on Ubuntu 12.04 LTS, which is the platform used by the OSMF servers.
 The instructions also work, with only minor amendments, for all other current Ubuntu releases, Fedora and MacOSX
 
-We don't recommend attempting to develop or deploy this software on Windows. If you need to use Windows, then try developing this sofware using Ubuntu in a virtual machine, or use [Vagrant](VAGRANT.md).
+We don't recommend attempting to develop or deploy this software on Windows. If you need to use Windows, then try developing this software using Ubuntu in a virtual machine, or use [Vagrant](VAGRANT.md).
 
 ## Dependencies
 
@@ -18,26 +18,24 @@ of packages required before you can get the various gems installed.
 
 ## Minimum requirements
 
-* Ruby 1.9.3
+* Ruby 2.3
 * RubyGems 1.3.1+
-* Postgres 8.3+
+* PostgreSQL 9.1+
 * ImageMagick
 * Bundler
 * Javascript Runtime
 
-These can be installed on Ubuntu 10.10 or later with:
+These can be installed on Ubuntu 16.04 or later with:
 
 ```
-sudo apt-get install ruby1.9.1 libruby1.9.1 ruby1.9.1-dev ri1.9.1 \
+sudo apt-get install ruby2.3 libruby2.3 ruby2.3-dev \
                      libmagickwand-dev libxml2-dev libxslt1-dev nodejs \
-                     apache2 apache2-threaded-dev build-essential git-core \
+                     apache2 apache2-dev build-essential git-core \
                      postgresql postgresql-contrib libpq-dev postgresql-server-dev-all \
-                     libsasl2-dev
-sudo gem1.9.1 install bundler
+                     libsasl2-dev imagemagick
+sudo gem2.3 install bundler
 ```
 
-Note that the "1.9.1" Ubuntu packages do in fact contain ruby 1.9.3.
-
 ### Alternative platforms
 
 #### Fedora
@@ -49,17 +47,17 @@ sudo yum install ruby ruby-devel rubygem-rdoc rubygem-bundler rubygems \
                  libxml2-devel js \
                  gcc gcc-c++ git \
                  postgresql postgresql-server postgresql-contrib postgresql-devel \
-                 perl-podlators
+                 perl-podlators ImageMagick
 ```
 
-If you didn't already have Postgres installed then create a Postgres instance and start the server:
+If you didn't already have PostgreSQL installed then create a PostgreSQL instance and start the server:
 
 ```
 sudo postgresql-setup initdb
 sudo systemctl start postgresql.service
 ```
 
-Optionally set Postgres to start on boot:
+Optionally set PostgreSQL to start on boot:
 
 ```
 sudo systemctl enable postgresql.service
@@ -69,10 +67,10 @@ sudo systemctl enable postgresql.service
 
 For MacOSX, you will need XCode installed from the Mac App Store; OS X 10.7 (Lion) or later; and some familiarity with Unix development via the Terminal.
 
-Installing Postgres:
+Installing PostgreSQL:
 
 * Install Postgres.app from http://postgresapp.com/
-* Add Postgres to your path, by editing your profile:
+* Add PostgreSQL to your path, by editing your profile:
 
 `nano ~/.profile`
 
@@ -83,9 +81,9 @@ and adding:
 Installing other dependencies:
 
 * Install Homebrew from http://mxcl.github.io/homebrew/
-* Install the latest version of Ruby: brew install ruby
-* Install ImageMagick: brew install imagemagick
-* Install Bundler: gem install bundler
+* Install the latest version of Ruby: `brew install ruby`
+* Install ImageMagick: `brew install imagemagick`
+* Install Bundler: `gem install bundler`
 
 Note that OS X does not have a /home directory by default, so if you are using the GPX functions, you will need to change the directories specified in config/application.yml.
 
@@ -140,7 +138,7 @@ instructions below as appropriate.
 
 ### PostgreSQL account setup
 
-We need to create a PostgreSQL role (i.e. user account) for your current user, and it needs to be a superuser so that we can create more database.
+We need to create a PostgreSQL role (i.e. user account) for your current user, and it needs to be a superuser so that we can create more databases.
 
 ```
 sudo -u postgres -i
@@ -158,15 +156,7 @@ bundle exec rake db:create
 
 ### PostgreSQL Btree-gist Extension
 
-We need to load the btree-gist extension, which is needed for showing changesets on the history tab.
-
-For PostgreSQL < 9.1 (change the version number in the path as necessary):
-
-```
-psql -d openstreetmap < /usr/share/postgresql/9.0/contrib/btree_gist.sql
-```
-
-For PostgreSQL >= 9.1:
+We need to load the `btree-gist` extension, which is needed for showing changesets on the history tab.
 
 ```
 psql -d openstreetmap -c "CREATE EXTENSION btree_gist"
@@ -174,7 +164,7 @@ psql -d openstreetmap -c "CREATE EXTENSION btree_gist"
 
 ### PostgreSQL Functions
 
-We need to install special functions into the postgresql databases, and these are provided by a library that needs compiling first.
+We need to install special functions into the PostgreSQL databases, and these are provided by a library that needs compiling first.
 
 ```
 cd db/functions
@@ -203,7 +193,7 @@ bundle exec rake db:migrate
 To ensure that everything is set up properly, you should now run:
 
 ```
-bundle exec rake test
+bundle exec rake test:db
 ```
 
 This test will take a few minutes, reporting tests run, assertions, and any errors. If you receive no errors, then your installation is successful.
index 90a9b93ef4af7e8fbeb141c4c3a32a382ec029d0..6b929fef9f48e7e9be810c2576d7eb6ef47eaa38 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1,5 +1,8 @@
 # "The Rails Port"
 
+[![Build Status](https://travis-ci.org/openstreetmap/openstreetmap-website.svg?branch=master)](https://travis-ci.org/openstreetmap/openstreetmap-website)
+[![Coverage Status](https://coveralls.io/repos/openstreetmap/openstreetmap-website/badge.svg?branch=master)](https://coveralls.io/r/openstreetmap/openstreetmap-website?branch=master)
+
 This is The Rails Port, the [Ruby on Rails](http://rubyonrails.org/)
 application that powers the [OpenStreetMap](http://www.openstreetmap.org) website and API.
 The software is also known as "openstreetmap-website".
@@ -14,7 +17,7 @@ This repository consists of:
 
 A fully-functional Rails Port installation depends on other services, including map tile
 servers and geocoding services, that are provided by other software. The default installation
-uses publically-available services to help with development and testing.
+uses publicly-available services to help with development and testing.
 
 # License
 
@@ -35,6 +38,10 @@ We're always keen to have more developers! Pull requests are very welcome.
 * Translation is managed by [Translatewiki](https://translatewiki.net/wiki/Translating:OpenStreetMap)
 * There is a [rails-dev@openstreetmap.org](http://lists.openstreetmap.org/listinfo/rails-dev) mailing list for development discussion.
 * IRC - there is the #osm-dev channel on irc.oftc.net.
-* There are also weekly meetings of the OpenStreetMap Foundation Engineering Working Group (EWG) on Mondays at 1700 UTC on the #osm-ewg channel.
 
 More details on contributing to the code are in the [CONTRIBUTING.md](CONTRIBUTING.md) file.
+
+# Maintainers
+
+* Tom Hughes [@tomhughes](https://github.com/tomhughes/)
+* Andy Allan [@gravitystorm](https://github.com/gravitystorm/)
index 039e38f47aa6773d588e355ca59d27ce013605d7..9a5ea7383aa83eec12490380a7391d1bb93eeb96 100644 (file)
--- a/Rakefile
+++ b/Rakefile
@@ -1,7 +1,6 @@
 # Add your own tasks in files placed in lib/tasks ending in .rake,
 # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
 
-require File.expand_path('../config/application', __FILE__)
-require 'rake'
+require_relative "config/application"
 
-OpenStreetMap::Application.load_tasks
+Rails.application.load_tasks
index 0155a3383b1cd7d69fb2e9f25858fcbb62dd8670..3825ad988242567e0e4af260b1e850c8faf04f05 100644 (file)
@@ -6,9 +6,12 @@ On Ubuntu, it should be as simple as:
 sudo apt-get install vagrant
 ```
 
-Other Linux distributions should have similar installation instructions using `yum` or similar.
+Other Linux distributions should have similar installation instructions using `dnf`, `pacman`, or similar.
 
-Installers are available for Mac OS X and Windows, please see the [Vagrant project download page](http://www.vagrantup.com/downloads) for more information.
+Installers are available for Mac OS X and Windows, please see the [Vagrant project download page](http://www.vagrantup.com/downloads.html) for more information.
+
+Note than until there are suitable _xenial64_ [vagrant boxes](https://atlas.hashicorp.com/boxes/search?utf8=%E2%9C%93&sort=&provider=&q=xenial64) for other providers,
+the only virtualization provider supported is virtualbox. You might need to install it and specify `--provider virtualbox` when setting up your environment.
 
 # Setting up openstreetmap-website
 
@@ -38,7 +41,7 @@ To access the web pages you run the following commands then access the site in y
 ```
 vagrant ssh
 cd /srv/openstreetmap-website/
-rails server
+rails server --binding=0.0.0.0
 ```
 
 You edit the code on your computer using the code editor you are used to using, then through shared folders the code is updated on the VM instantly.
index 5489192f4af88f7251aaca4cad4a395471a35a86..f41f9676c7e4bf55510499a7803f493f1b9d5dd8 100644 (file)
@@ -2,14 +2,34 @@
 # vi: set ft=ruby :
 
 Vagrant.configure("2") do |config|
-  config.vm.box = "precise64"
-  config.vm.box_url = "http://files.vagrantup.com/precise64.box"
-  
-  # port forward for webrick on 3000
-  config.vm.network :forwarded_port, guest: 3000, host: 3000
+  # use official ubuntu image for virtualbox
+  config.vm.provider "virtualbox" do |vb, override|
+    override.vm.box = "ubuntu/xenial64"
+    override.vm.synced_folder ".", "/srv/openstreetmap-website"
+    vb.customize ["modifyvm", :id, "--memory", "1024"]
+    vb.customize ["modifyvm", :id, "--cpus", "2"]
+  end
+
+  # use third party image and NFS sharing for lxc
+  config.vm.provider "lxc" do |_, override|
+    override.vm.box = "sputnik13/trusty64"
+    override.vm.synced_folder ".", "/srv/openstreetmap-website", :type => "nfs"
+  end
+
+  # use third party image and NFS sharing for libvirt
+  config.vm.provider "libvirt" do |_, override|
+    override.vm.box = "sputnik13/trusty64"
+    override.vm.synced_folder ".", "/srv/openstreetmap-website", :type => "nfs"
+  end
 
-  # set up synced folder to source in /srv/openstreetmap-website
-  config.vm.synced_folder ".", "/srv/openstreetmap-website"
+  # configure shared package cache if possible
+  if Vagrant.has_plugin?("vagrant-cachier")
+    config.cache.enable :apt
+    config.cache.scope = :box
+  end
+
+  # port forward for webrick on 3000
+  config.vm.network :forwarded_port, :guest => 3000, :host => 3000
 
   # provision using a simple shell script
   config.vm.provision :shell, :path => "script/vagrant/setup/provision.sh"
index 6468d506745b675f06103faad2dbe0aa43a34516..d66dd80d8077afcbaf3f04aa394a6f767cbdf6ac 100644 (file)
@@ -6,18 +6,23 @@ folder 'vendor/assets' do
   end
 
   folder 'bootstrap' do
-    file 'bootstrap.tooltip.js', 'https://raw.githubusercontent.com/twbs/bootstrap/v2.3.2/js/bootstrap-tooltip.js'
-    file 'bootstrap.dropdown.js', 'https://raw.githubusercontent.com/twbs/bootstrap/v2.3.2/js/bootstrap-dropdown.js'
+    file 'bootstrap.tooltip.js', 'https://raw.githubusercontent.com/twbs/bootstrap/v3.3.2/js/tooltip.js'
+    file 'bootstrap.dropdown.js', 'https://raw.githubusercontent.com/twbs/bootstrap/v3.3.2/js/dropdown.js'
   end
 
   folder 'leaflet' do
-    file 'leaflet.js', 'http://cdn.leafletjs.com/leaflet-0.7.3/leaflet-src.js'
-    file 'leaflet.css', 'http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.css'
+    file 'leaflet.js', 'https://unpkg.com/leaflet@1.2.0/dist/leaflet-src.js'
+    file 'leaflet.css', 'https://unpkg.com/leaflet@1.2.0/dist/leaflet.css'
 
     [ 'layers.png', 'layers-2x.png',
       'marker-icon.png', 'marker-icon-2x.png',
       'marker-shadow.png' ].each do |image|
-      file "images/#{image}", "http://cdn.leafletjs.com/leaflet-0.7.3/images/#{image}"
+      file "images/#{image}", "https://unpkg.com/leaflet@1.2.0/dist/images/#{image}"
+    end
+
+    from 'git://github.com/aratcliffe/Leaflet.contextmenu.git', :tag => 'v1.2.1' do
+      file 'leaflet.contextmenu.js', 'dist/leaflet.contextmenu.js'
+      file 'leaflet.contextmenu.css', 'dist/leaflet.contextmenu.css'
     end
 
     from 'git://github.com/kajic/leaflet-locationfilter.git' do
@@ -26,13 +31,17 @@ folder 'vendor/assets' do
       folder 'img', 'src/img'
     end
 
-    from 'git://github.com/domoritz/leaflet-locatecontrol.git' do
+    from 'git://github.com/domoritz/leaflet-locatecontrol.git', :tag => 'v0.62.0' do
       file 'leaflet.locate.js', 'src/L.Control.Locate.js'
     end
 
     from 'git://github.com/jfirebaugh/leaflet-osm.git' do
       file 'leaflet.osm.js', 'leaflet-osm.js'
     end
+
+    from 'git://github.com/jieter/Leaflet.encoded.git', :tag => '0.0.8' do
+      file 'leaflet.polyline.js', 'Polyline.encoded.js'
+    end
   end
 
   folder 'ohauth' do
@@ -45,9 +54,14 @@ folder 'vendor/assets' do
     from 'git://github.com/openstreetmap/iD', :branch => 'release' do
       folder 'iD/img', 'dist/img'
       folder 'iD/locales', 'dist/locales'
+      folder 'iD/mapillary-js', 'dist/mapillary-js'
+
       file 'iD.css.erb', 'dist/iD.css' do |path|
-        rewrite(path) { |content| content.gsub(/url\('?(img\/[^')]+)'?\)/, 'url(<%= asset_path("iD/\1") %>)') }
+        rewrite(path) do |content|
+          content.gsub(/url\('?(img\/[^')]+)'?\)/, 'url(<%= asset_path("iD/\1") %>)')
+        end
       end
+
       file 'iD.js', 'dist/iD.js'
     end
   end
diff --git a/app/assets/favicons/android-chrome-144x144.png b/app/assets/favicons/android-chrome-144x144.png
new file mode 100644 (file)
index 0000000..5e6552e
Binary files /dev/null and b/app/assets/favicons/android-chrome-144x144.png differ
diff --git a/app/assets/favicons/android-chrome-192x192.png b/app/assets/favicons/android-chrome-192x192.png
new file mode 100644 (file)
index 0000000..8e02ec9
Binary files /dev/null and b/app/assets/favicons/android-chrome-192x192.png differ
diff --git a/app/assets/favicons/android-chrome-36x36.png b/app/assets/favicons/android-chrome-36x36.png
new file mode 100644 (file)
index 0000000..5d40276
Binary files /dev/null and b/app/assets/favicons/android-chrome-36x36.png differ
diff --git a/app/assets/favicons/android-chrome-48x48.png b/app/assets/favicons/android-chrome-48x48.png
new file mode 100644 (file)
index 0000000..2a87813
Binary files /dev/null and b/app/assets/favicons/android-chrome-48x48.png differ
diff --git a/app/assets/favicons/android-chrome-72x72.png b/app/assets/favicons/android-chrome-72x72.png
new file mode 100644 (file)
index 0000000..67aeb34
Binary files /dev/null and b/app/assets/favicons/android-chrome-72x72.png differ
diff --git a/app/assets/favicons/android-chrome-96x96.png b/app/assets/favicons/android-chrome-96x96.png
new file mode 100644 (file)
index 0000000..37ede1c
Binary files /dev/null and b/app/assets/favicons/android-chrome-96x96.png differ
diff --git a/app/assets/favicons/apple-touch-icon-114x114.png b/app/assets/favicons/apple-touch-icon-114x114.png
new file mode 100644 (file)
index 0000000..46d11b3
Binary files /dev/null and b/app/assets/favicons/apple-touch-icon-114x114.png differ
diff --git a/app/assets/favicons/apple-touch-icon-120x120.png b/app/assets/favicons/apple-touch-icon-120x120.png
new file mode 100644 (file)
index 0000000..03f32cb
Binary files /dev/null and b/app/assets/favicons/apple-touch-icon-120x120.png differ
diff --git a/app/assets/favicons/apple-touch-icon-144x144.png b/app/assets/favicons/apple-touch-icon-144x144.png
new file mode 100644 (file)
index 0000000..26c23a3
Binary files /dev/null and b/app/assets/favicons/apple-touch-icon-144x144.png differ
diff --git a/app/assets/favicons/apple-touch-icon-152x152.png b/app/assets/favicons/apple-touch-icon-152x152.png
new file mode 100644 (file)
index 0000000..1fc5b8a
Binary files /dev/null and b/app/assets/favicons/apple-touch-icon-152x152.png differ
diff --git a/app/assets/favicons/apple-touch-icon-180x180.png b/app/assets/favicons/apple-touch-icon-180x180.png
new file mode 100644 (file)
index 0000000..93b1cc9
Binary files /dev/null and b/app/assets/favicons/apple-touch-icon-180x180.png differ
diff --git a/app/assets/favicons/apple-touch-icon-57x57.png b/app/assets/favicons/apple-touch-icon-57x57.png
new file mode 100644 (file)
index 0000000..563e8ad
Binary files /dev/null and b/app/assets/favicons/apple-touch-icon-57x57.png differ
diff --git a/app/assets/favicons/apple-touch-icon-60x60.png b/app/assets/favicons/apple-touch-icon-60x60.png
new file mode 100644 (file)
index 0000000..9d907d9
Binary files /dev/null and b/app/assets/favicons/apple-touch-icon-60x60.png differ
diff --git a/app/assets/favicons/apple-touch-icon-72x72.png b/app/assets/favicons/apple-touch-icon-72x72.png
new file mode 100644 (file)
index 0000000..fbd1c31
Binary files /dev/null and b/app/assets/favicons/apple-touch-icon-72x72.png differ
diff --git a/app/assets/favicons/apple-touch-icon-76x76.png b/app/assets/favicons/apple-touch-icon-76x76.png
new file mode 100644 (file)
index 0000000..e403736
Binary files /dev/null and b/app/assets/favicons/apple-touch-icon-76x76.png differ
diff --git a/app/assets/favicons/apple-touch-icon-precomposed.png b/app/assets/favicons/apple-touch-icon-precomposed.png
new file mode 100644 (file)
index 0000000..9792740
Binary files /dev/null and b/app/assets/favicons/apple-touch-icon-precomposed.png differ
diff --git a/app/assets/favicons/apple-touch-icon.png b/app/assets/favicons/apple-touch-icon.png
new file mode 100644 (file)
index 0000000..93b1cc9
Binary files /dev/null and b/app/assets/favicons/apple-touch-icon.png differ
diff --git a/app/assets/favicons/browserconfig.xml.erb b/app/assets/favicons/browserconfig.xml.erb
new file mode 100644 (file)
index 0000000..e0c343e
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<browserconfig>
+  <msapplication>
+    <tile>
+      <square70x70logo src="<%= image_path("mstile-70x70.png") %>"/>
+      <square150x150logo src="<%= image_path("mstile-150x150.png") %>"/>
+      <square310x310logo src="<%= image_path("mstile-310x310.png") %>"/>
+      <wide310x150logo src="<%= image_path("mstile-310x150.png") %>"/>
+      <TileColor>#00a300</TileColor>
+    </tile>
+  </msapplication>
+</browserconfig>
diff --git a/app/assets/favicons/favicon-16x16.png b/app/assets/favicons/favicon-16x16.png
new file mode 100644 (file)
index 0000000..2560c72
Binary files /dev/null and b/app/assets/favicons/favicon-16x16.png differ
diff --git a/app/assets/favicons/favicon-194x194.png b/app/assets/favicons/favicon-194x194.png
new file mode 100644 (file)
index 0000000..779436b
Binary files /dev/null and b/app/assets/favicons/favicon-194x194.png differ
diff --git a/app/assets/favicons/favicon-32x32.png b/app/assets/favicons/favicon-32x32.png
new file mode 100644 (file)
index 0000000..3a6009d
Binary files /dev/null and b/app/assets/favicons/favicon-32x32.png differ
diff --git a/app/assets/favicons/favicon-96x96.png b/app/assets/favicons/favicon-96x96.png
new file mode 100644 (file)
index 0000000..b60083b
Binary files /dev/null and b/app/assets/favicons/favicon-96x96.png differ
diff --git a/app/assets/favicons/favicon.ico b/app/assets/favicons/favicon.ico
new file mode 100644 (file)
index 0000000..0c2f56c
Binary files /dev/null and b/app/assets/favicons/favicon.ico differ
diff --git a/app/assets/favicons/manifest.json.erb b/app/assets/favicons/manifest.json.erb
new file mode 100644 (file)
index 0000000..8938f2c
--- /dev/null
@@ -0,0 +1,41 @@
+{
+       "name": "OpenStreetMap",
+       "icons": [
+               {
+                       "src": "<%= image_path("android-chrome-36x36.png").gsub("/", "\\/") %>",
+                       "sizes": "36x36",
+                       "type": "image\/png",
+                       "density": "0.75"
+               },
+               {
+                       "src": "<%= image_path("android-chrome-48x48.png").gsub("/", "\\/") %>",
+                       "sizes": "48x48",
+                       "type": "image\/png",
+                       "density": "1.0"
+               },
+               {
+                       "src": "<%= image_path("android-chrome-72x72.png").gsub("/", "\\/") %>",
+                       "sizes": "72x72",
+                       "type": "image\/png",
+                       "density": "1.5"
+               },
+               {
+                       "src": "<%= image_path("android-chrome-96x96.png").gsub("/", "\\/") %>",
+                       "sizes": "96x96",
+                       "type": "image\/png",
+                       "density": "2.0"
+               },
+               {
+                       "src": "<%= image_path("android-chrome-144x144.png").gsub("/", "\\/") %>",
+                       "sizes": "144x144",
+                       "type": "image\/png",
+                       "density": "3.0"
+               },
+               {
+                       "src": "<%= image_path("android-chrome-192x192.png").gsub("/", "\\/") %>",
+                       "sizes": "192x192",
+                       "type": "image\/png",
+                       "density": "4.0"
+               }
+       ]
+}
diff --git a/app/assets/favicons/mstile-144x144.png b/app/assets/favicons/mstile-144x144.png
new file mode 100644 (file)
index 0000000..e86a0ab
Binary files /dev/null and b/app/assets/favicons/mstile-144x144.png differ
diff --git a/app/assets/favicons/mstile-150x150.png b/app/assets/favicons/mstile-150x150.png
new file mode 100644 (file)
index 0000000..a4be2b3
Binary files /dev/null and b/app/assets/favicons/mstile-150x150.png differ
diff --git a/app/assets/favicons/mstile-310x150.png b/app/assets/favicons/mstile-310x150.png
new file mode 100644 (file)
index 0000000..ea90754
Binary files /dev/null and b/app/assets/favicons/mstile-310x150.png differ
diff --git a/app/assets/favicons/mstile-310x310.png b/app/assets/favicons/mstile-310x310.png
new file mode 100644 (file)
index 0000000..59b5a55
Binary files /dev/null and b/app/assets/favicons/mstile-310x310.png differ
diff --git a/app/assets/favicons/mstile-70x70.png b/app/assets/favicons/mstile-70x70.png
new file mode 100644 (file)
index 0000000..938959e
Binary files /dev/null and b/app/assets/favicons/mstile-70x70.png differ
index 4838e5a702f84280c7bdb2ca95bfc9c87f720a35..89dda0c00c9b5c5efd6a97e62b84001a6a7949cd 100644 (file)
Binary files a/app/assets/images/RSS.png and b/app/assets/images/RSS.png differ
index d5479eea39b7f1ca6baf9d0dc9327b6dac5398fc..d97904e134bc532f5cfd5cb4842e4dfa8b0717d8 100644 (file)
Binary files a/app/assets/images/about/osm.png and b/app/assets/images/about/osm.png differ
index bc76ee09751dccb7c9a70dcbbe75b3697ff693f2..fa0ce2986aa1e878a1c503e4bda519b67b970ba9 100644 (file)
Binary files a/app/assets/images/about/sprite.png and b/app/assets/images/about/sprite.png differ
diff --git a/app/assets/images/about/sprite.svg b/app/assets/images/about/sprite.svg
new file mode 100644 (file)
index 0000000..01a80ae
--- /dev/null
@@ -0,0 +1,388 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="320"
+   height="200"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   inkscape:export-filename="./sprite@2x.png"
+   inkscape:export-xdpi="180"
+   inkscape:export-ydpi="180"
+   sodipodi:docname="sprite.svg">
+  <defs
+     id="defs4">
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath4253">
+      <path
+         style="color:#000000;fill:#555555;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="m 445.5,-52.21875 c -8.23506,3.941544 -15.68019,9.273939 -22.0625,15.65625 l 113.125,113.125 C 542.94481,70.18019 548.27721,62.73506 552.21875,54.5 L 445.5,-52.21875 z"
+         id="path4255"
+         inkscape:connector-curvature="0" />
+    </clipPath>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath4257">
+      <path
+         style="color:#000000;fill:#555555;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="m 407.78125,-14.5 c -4.39728,9.187219 -7.07096,19.3435 -7.65625,30.0625 l 84.3125,84.3125 c 10.719,-0.58529 20.87528,-3.25897 30.0625,-7.65625 L 407.78125,-14.5 z"
+         id="path4259"
+         inkscape:connector-curvature="0" />
+    </clipPath>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath4261">
+      <path
+         style="color:#000000;fill:#555555;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="m 423.4375,-36.5625 c -6.38231,6.382311 -11.71471,13.827444 -15.65625,22.0625 L 514.5,92.21875 c 8.23506,-3.94154 15.68019,-9.27394 22.0625,-15.65625 l -113.125,-113.125 z"
+         id="path4263"
+         inkscape:connector-curvature="0" />
+    </clipPath>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath4265">
+      <path
+         style="color:#000000;fill:#555555;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 400.125,15.5625 C 400.04489,17.02967 400,18.51283 400,20 c 0,22.09139 8.96035,42.08535 23.4375,56.5625 C 437.91465,91.03965 457.90861,100 480,100 c 1.48717,0 2.97033,-0.04489 4.4375,-0.125 L 400.125,15.5625 z"
+         id="path4267"
+         inkscape:connector-curvature="0" />
+    </clipPath>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath4280">
+      <path
+         style="color:#000000;fill:#555555;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="m 475.5625,-59.875 c -10.719,0.585293 -20.87528,3.258972 -30.0625,7.65625 L 552.21875,54.5 c 4.39728,-9.18722 7.07096,-19.3435 7.65625,-30.0625 L 475.5625,-59.875 z"
+         id="path4282"
+         inkscape:connector-curvature="0" />
+    </clipPath>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath4295">
+      <path
+         style="color:#000000;fill:#555555;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="m 480,-60 c -1.48717,0 -2.97033,0.04489 -4.4375,0.125 L 559.875,24.4375 C 559.95511,22.97033 560,21.48717 560,20 560,-2.09139 551.03965,-22.085347 536.5625,-36.5625 522.08535,-51.039653 502.09139,-60 480,-60 z"
+         id="path4297"
+         inkscape:connector-curvature="0" />
+    </clipPath>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath4864">
+      <rect
+         style="color:#000000;fill:#202020;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         id="rect4866"
+         width="420"
+         height="160"
+         x="110"
+         y="812.36218" />
+    </clipPath>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath5076">
+      <rect
+         y="785.52893"
+         x="39.999992"
+         height="213.3333"
+         width="559.99988"
+         id="rect5078"
+         style="color:#000000;fill:#202020;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+    </clipPath>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath3009">
+      <rect
+         y="732.86218"
+         x="0"
+         height="320"
+         width="640"
+         id="rect3011"
+         style="color:#000000;fill:#222b30;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:11;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+    </clipPath>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath5092">
+      <rect
+         style="color:#000000;fill:#202020;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         id="rect5094"
+         width="420"
+         height="160"
+         x="30"
+         y="852.36218" />
+    </clipPath>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.8177596"
+     inkscape:cx="119.20742"
+     inkscape:cy="107.0188"
+     inkscape:document-units="px"
+     inkscape:current-layer="svg2"
+     showgrid="true"
+     showguides="false"
+     inkscape:guide-bbox="true"
+     showborder="true"
+     width="4212.99px"
+     inkscape:window-width="1242"
+     inkscape:window-height="760"
+     inkscape:window-x="51"
+     inkscape:window-y="189"
+     inkscape:window-maximized="0"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2985"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="gray"
+     style="display:inline"
+     transform="translate(0,20)" />
+  <g
+     inkscape:groupmode="layer"
+     id="layer3"
+     inkscape:label="sprite"
+     style="display:inline"
+     transform="translate(0,20)">
+    <path
+       sodipodi:type="arc"
+       style="opacity:0.98000004;color:#000000;fill:#7ec95c;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path4499"
+       sodipodi:cx="220"
+       sodipodi:cy="20"
+       sodipodi:rx="15"
+       sodipodi:ry="15"
+       d="m 235,20 c 0,8.284271 -6.71573,15 -15,15 -8.28427,0 -15,-6.715729 -15,-15 0,-8.284271 6.71573,-15 15,-15 8.28427,0 15,6.715729 15,15 z"
+       transform="translate(0,-20)" />
+    <path
+       style="opacity:0.98000004;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       d="M 215.5,-6 214,-4.5 218.5,0 214,4.5 215.5,6 220,1.5 224.5,6 226,4.5 221.5,0 226,-4.5 224.5,-6 220,-1.5 215.5,-6 z"
+       id="path3965"
+       inkscape:connector-curvature="0" />
+    <path
+       style="opacity:0.98000004;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       d="m 303,-6 -1,1 0,3 -6,0 -1,1 0,2 1,1 6,0 0,3 1,1 5,-6 z"
+       id="path3921"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccccccc" />
+    <g
+       transform="translate(-260,-1042.3622)"
+       id="g7110">
+      <path
+         transform="matrix(0.86666662,0,0,0.86666662,54.000012,588.69555)"
+         d="m 270,610 c 0,8.28427 -6.71573,15 -15,15 -8.28427,0 -15,-6.71573 -15,-15 0,-8.28427 6.71573,-15 15,-15 8.28427,0 15,6.71573 15,15 z"
+         sodipodi:ry="15"
+         sodipodi:rx="15"
+         sodipodi:cy="610"
+         sodipodi:cx="255"
+         id="path15441"
+         style="color:#000000;fill:none;stroke:#c0c0c0;stroke-width:4.61538458;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:type="arc" />
+      <text
+         sodipodi:linespacing="125%"
+         id="text15443"
+         y="1123.7971"
+         x="281.65521"
+         style="font-size:18px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:end;text-decoration:none;line-height:125%;letter-spacing:0px;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:end;baseline-shift:baseline;color:#000000;fill:#c0c0c0;fill-opacity:1;fill-rule:nonzero;stroke:#c0c0c0;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Helvetica Neue;-inkscape-font-specification:Helvetica Neue Bold"
+         xml:space="preserve"><tspan
+           y="1123.7971"
+           x="281.65521"
+           id="tspan15445"
+           sodipodi:role="line">C</tspan></text>
+    </g>
+    <g
+       transform="translate(-260,-1722.3623)"
+       id="g7115">
+      <path
+         sodipodi:type="arc"
+         style="color:#000000;fill:none;stroke:#c0c0c0;stroke-width:4.61538458;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         id="path15563"
+         sodipodi:cx="255"
+         sodipodi:cy="610"
+         sodipodi:rx="15"
+         sodipodi:ry="15"
+         d="m 270,610 c 0,8.28427 -6.71573,15 -15,15 -8.28427,0 -15,-6.71573 -15,-15 0,-8.28427 6.71573,-15 15,-15 8.28427,0 15,6.71573 15,15 z"
+         transform="matrix(0.86666662,0,0,0.86666662,54.000012,1308.6956)" />
+      <rect
+         ry="2"
+         rx="2"
+         transform="matrix(0,-1,1,0,0,0)"
+         style="color:#000000;fill:#c0c0c0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         id="rect11874-2"
+         width="12"
+         height="4"
+         x="-1843.3622"
+         y="273" />
+      <rect
+         y="1835.3622"
+         x="269.00009"
+         height="4.0002432"
+         width="12"
+         id="rect15609"
+         style="color:#000000;fill:#c0c0c0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         rx="2.0001216"
+         ry="2.0001216" />
+    </g>
+    <g
+       transform="translate(-260,-2012.3623)"
+       id="g7120">
+      <path
+         transform="matrix(0.86666662,0,0,0.86666662,54.000012,1638.6956)"
+         d="m 270,610 c 0,8.28427 -6.71573,15 -15,15 -8.28427,0 -15,-6.71573 -15,-15 0,-8.28427 6.71573,-15 15,-15 8.28427,0 15,6.71573 15,15 z"
+         sodipodi:ry="15"
+         sodipodi:rx="15"
+         sodipodi:cy="610"
+         sodipodi:cx="255"
+         id="path15611"
+         style="color:#000000;fill:none;stroke:#c55151;stroke-width:4.61538458;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:type="arc" />
+      <rect
+         y="1725.0107"
+         x="-1344.1022"
+         height="4"
+         width="12"
+         id="rect15631"
+         style="color:#000000;fill:#c55151;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,0,0)"
+         rx="2"
+         ry="2" />
+      <rect
+         transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,0,0)"
+         ry="2.0001216"
+         rx="2.0001216"
+         style="color:#000000;fill:#c55151;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         id="rect15633"
+         width="12"
+         height="4.0002432"
+         x="1721.0109"
+         y="1336.1022" />
+    </g>
+    <g
+       transform="translate(-260,-772.36218)"
+       id="g6944">
+      <path
+         sodipodi:type="arc"
+         style="color:#000000;fill:none;stroke:#c0c0c0;stroke-width:4.61538458;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         id="path6661"
+         sodipodi:cx="255"
+         sodipodi:cy="610"
+         sodipodi:rx="15"
+         sodipodi:ry="15"
+         d="m 270,610 c 0,8.28427 -6.71573,15 -15,15 -8.28427,0 -15,-6.71573 -15,-15 0,-8.28427 6.71573,-15 15,-15 8.28427,0 15,6.71573 15,15 z"
+         transform="matrix(0.86666662,0,0,0.86666662,54.000012,238.69555)" />
+      <path
+         sodipodi:nodetypes="csssc"
+         inkscape:connector-curvature="0"
+         id="path6667"
+         d="m 275,774.36218 c 0,0 5,-4.5199 5,-8 0,-3 -2,-5 -5,-5 -3,0 -5,2 -5,5 0,3.4801 5,8 5,8 z"
+         style="color:#000000;fill:#c0c0c0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+    </g>
+    <g
+       transform="translate(-260,-872.36219)"
+       id="g6940">
+      <path
+         transform="matrix(0.86666662,0,0,0.86666662,54.000012,378.69555)"
+         d="m 270,610 c 0,8.28427 -6.71573,15 -15,15 -8.28427,0 -15,-6.71573 -15,-15 0,-8.28427 6.71573,-15 15,-15 8.28427,0 15,6.71573 15,15 z"
+         sodipodi:ry="15"
+         sodipodi:rx="15"
+         sodipodi:cy="610"
+         sodipodi:cx="255"
+         id="path6737"
+         style="color:#000000;fill:none;stroke:#c0c0c0;stroke-width:4.61538458;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:nodetypes="cccccccccc"
+         inkscape:connector-curvature="0"
+         id="path6753"
+         d="m 275,899.36218 -6,6 0,7 4,0 0,-4 4,0 0,4 4,0 0,-7 z"
+         style="color:#000000;fill:#c0c0c0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+    </g>
+    <image
+       y="-9"
+       x="250"
+       id="image9767"
+       xlink:href="data:image/png;base64,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 kyJ