Merge branch 'master' into openid

This commit is contained in:
Tom Hughes 2010-09-24 09:35:36 +01:00
commit f70feedc65
115 changed files with 1701 additions and 2867 deletions

View file

@ -1,8 +0,0 @@
class ChangesetTagController < ApplicationController
layout 'site'
def search
@tags = ChangesetTag.find(:all, :limit => 11, :conditions => ["match(v) against (?)", params[:query][:query].to_s] )
end
end

View file

@ -52,9 +52,17 @@ class OauthController < ApplicationController
if any_auth
@token.authorize!(@user)
if @token.oauth10?
redirect_url = params[:oauth_callback] || @token.client_application.callback_url
if redirect_url
else
redirect_url = @token.oob? ? @token.client_application.callback_url : @token.callback_url
end
if redirect_url and not redirect_url.empty?
if @token.oauth10?
redirect_to "#{redirect_url}?oauth_token=#{@token.token}"
else
redirect_to "#{redirect_url}?oauth_token=#{@token.token}&oauth_verifier=#{@token.verifier}"
end
else
render :action => "authorize_success"
end

View file

@ -1,3 +0,0 @@
class OldRelationTagController < ApplicationController
end

View file

@ -1,2 +0,0 @@
class OldWayTagController < ApplicationController
end

View file

@ -1,9 +0,0 @@
class RelationTagController < ApplicationController
layout 'site'
def search
@tags = RelationTag.find(:all, :limit => 11, :conditions => ["match(v) against (?)", params[:query][:query].to_s] )
end
end

View file

@ -231,7 +231,7 @@ class UserController < ApplicationController
else
password_authentication(params[:username], params[:password])
end
else
elsif flash[:notice].nil?
flash.now[:notice] = t 'user.login.notice'
end
end

View file

@ -1,9 +0,0 @@
class WayTagController < ApplicationController
layout 'site'
def search
@tags = WayTag.find(:all, :limit => 11, :conditions => ["match(v) against (?)", params[:query][:query].to_s] )
end
end

View file

@ -6,6 +6,21 @@ class ClientApplication < ActiveRecord::Base
validates_uniqueness_of :key
before_validation_on_create :generate_keys
validates_format_of :url, :with => /\Ahttp(s?):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/i
validates_format_of :support_url, :with => /\Ahttp(s?):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/i, :allow_blank=>true
validates_format_of :callback_url, :with => /\Ahttp(s?):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/i, :allow_blank=>true
attr_accessor :token_callback_url
def self.find_token(token_key)
token = OauthToken.find_by_token(token_key, :include => :client_application)
if token && token.authorized?
token
else
nil
end
end
def self.verify_request(request, options = {}, &block)
begin
signature = OAuth::Signature.build(request, options, &block)
@ -35,7 +50,7 @@ class ClientApplication < ActiveRecord::Base
end
def create_request_token
RequestToken.create :client_application => self
RequestToken.create :client_application => self, :callback_url => self.token_callback_url
end
# the permissions that this client would like from the user
@ -52,8 +67,8 @@ protected
:allow_write_api, :allow_read_gpx, :allow_write_gpx ]
def generate_keys
@oauth_client = oauth_server.generate_consumer_credentials
self.key = @oauth_client.key
self.secret = @oauth_client.secret
oauth_client = oauth_server.generate_consumer_credentials
self.key = oauth_client.key
self.secret = oauth_client.secret
end
end

View file

@ -1,13 +1,19 @@
class RequestToken < OauthToken
attr_accessor :provided_oauth_verifier
def authorize!(user)
return false if authorized?
self.user = user
self.authorized_at = Time.now
self.verifier = OAuth::Helper.generate_key(16)[0,20] unless oauth10?
self.save
end
def exchange!
return false unless authorized?
return false unless oauth10? || verifier == provided_oauth_verifier
RequestToken.transaction do
params = { :user => user, :client_application => client_application }
# copy the permissions from the authorised request token to the access token
@ -20,4 +26,21 @@ class RequestToken < OauthToken
access_token
end
end
def to_query
if oauth10?
super
else
"#{super}&oauth_callback_confirmed=true"
end
end
def oob?
self.callback_url=='oob'
end
def oauth10?
(defined? OAUTH_10_SUPPORT) && OAUTH_10_SUPPORT && self.callback_url.blank?
end
end

View file

@ -25,10 +25,10 @@ page << <<EOJ
sides: 4,
snapAngle: 90,
irregular: true,
persist: true,
callbacks: { done: endDrag }
persist: true
}
});
browseBoxControl.handler.callbacks.done = endDrag;
map.addControl(browseBoxControl);
map.events.register("moveend", map, showData);

View file

@ -17,10 +17,10 @@ page << <<EOJ
sides: 4,
snapAngle: 90,
irregular: true,
persist: true,
callbacks: { done: endDrag }
persist: true
}
});
box.handler.callbacks.done = endDrag;
map.addControl(box);
map.events.register("moveend", map, mapMoved);
@ -228,12 +228,12 @@ page << <<EOJ
function htmlUrlChanged() {
var bounds = new OpenLayers.Bounds($("minlon").value, $("minlat").value, $("maxlon").value, $("maxlat").value);
var layerName = map.baseLayer.keyid;
var url = "http://#{SERVER_URL}/export/embed.html?bbox=" + bounds.toBBOX() + "&layer=" + layerName;
var url = "http://#{SERVER_URL}/export/embed.html?bbox=" + bounds.toBBOX() + "&amp;layer=" + layerName;
var markerUrl = "";
if ($("marker_lat").value && $("marker_lon").value) {
markerUrl = "&mlat=" + $("marker_lat").value + "&mlon=" + $("marker_lon").value;
url += "&marker=" + $("marker_lat").value + "," + $("marker_lon").value;
markerUrl = "&amp;mlat=" + $("marker_lat").value + "&amp;mlon=" + $("marker_lon").value;
url += "&amp;marker=" + $("marker_lat").value + "," + $("marker_lon").value;
}
var html = '<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="'+url+'" style="border: 1px solid black"></iframe>';
@ -248,7 +248,7 @@ page << <<EOJ
var layers = getMapLayers();
html += '<br /><small><a href="http://#{SERVER_URL}/?lat='+center.lat+'&lon='+center.lon+'&zoom='+zoom+'&layers='+layers+markerUrl+'">'+"#{html_escape_unicode(I18n.t('export.start_rjs.view_larger_map'))}"+'</a></small>';
html += '<br /><small><a href="http://#{SERVER_URL}/?lat='+center.lat+'&amp;lon='+center.lon+'&amp;zoom='+zoom+'&amp;layers='+layers+markerUrl+'">'+"#{html_escape_unicode(I18n.t('export.start_rjs.view_larger_map'))}"+'</a></small>';
$("export_html_text").value = html;

View file

@ -117,7 +117,10 @@
<% end %>
<div id="left_menu" class="left_menu">
<a href="<%= t 'layouts.help_wiki_url' %>" title="<%= t 'layouts.help_wiki_tooltip' %>"><%= t 'layouts.help_wiki' %></a><br />
<%= t 'layouts.help_and_wiki',
:help => link_to(t('layouts.help'), t('layouts.help_url'), :title => t('layouts.help_title')),
:wiki => link_to(t('layouts.wiki'), t('layouts.wiki_url'), :title => t('layouts.wiki_title'))
%><br />
<%= link_to t('layouts.copyright'), {:controller => 'site', :action => 'copyright'} %><br />
<a href="http://blogs.openstreetmap.org/" title="<%= t 'layouts.news_blog_tooltip' %>"><%= t 'layouts.news_blog' %></a><br />
<a href="<%= t 'layouts.shop_url' %>" title="<%= t 'layouts.shop_tooltip' %>"><%= t 'layouts.shop' %></a><br />

View file

@ -11,6 +11,8 @@
<p><%= t'notifier.signup_confirm_html.get_reading' %></p>
<p><%= t'notifier.signup_confirm_html.ask_questions' %></p>
<p><%= t'notifier.signup_confirm_html.wiki_signup' %></p>
<p><%= t'notifier.signup_confirm_html.user_wiki_page' %></p>

View file

@ -29,6 +29,10 @@
http://www.opengeodata.org/
<%= t'notifier.signup_confirm_plain.ask_questions' %>
http://help.openstreetmap.org/
<%= t'notifier.signup_confirm_plain.wiki_signup' %>
<%= t'notifier.signup_confirm_plain.wiki_signup_url' %>

View file

@ -1 +1,5 @@
<h1>You have allowed this request</h1>
<% if @token.oob? %>
<p>The verification code is <%= @token.verifier %></p>
<% end %>

View file

@ -1,24 +0,0 @@
<h2>Search results</h5>
fixme postcodes and geonames
<% form_tag :controller => 'way_tag', :action => 'search' do %>
<%= text_field 'query', 'query'%>
<%= submit_tag 'Search' %>
<% end %>
<table border="0">
<% @tags.each do |tag| %>
<tr>
<td>
<%= link_to tag.v, :controller => 'site', :action => 'goto_way', :id => tag.id %> (k:<%= tag.k %>)<br>
<font size="-2" color="green">
Way <%= tag.id %> (<%= tag.way.timestamp %>)
<%= link_to 'Map', :controller => 'site', :action => 'goto_way', :id => tag.id %> -
<%= link_to 'API', :controller => 'way', :action => 'rest', :id => tag.id %>
<br /><br/ >
</font>
</td>
</tr>
<% end %>
</table>

View file

@ -20,7 +20,8 @@ Rails::Initializer.run do |config|
end
config.gem 'libxml-ruby', :version => '>= 1.1.1', :lib => 'libxml'
config.gem 'rmagick', :lib => 'RMagick'
config.gem 'oauth', :version => '>= 0.3.6'
config.gem 'oauth', :version => '>= 0.4.3'
config.gem 'oauth-plugin', :version => '>= 0.3.14'
config.gem 'httpclient'
config.gem 'SystemTimer', :version => '>= 1.1.3', :lib => 'system_timer'
config.gem 'sanitize'

View file

@ -53,6 +53,8 @@ standard_settings: &standard_settings
gpx_image_dir: "/home/osm/images"
# Location of data for file columns
#file_column_root: ""
# Enable legacy OAuth 1.0 support
oauth_10_support: true
development:
<<: *standard_settings

View file

@ -758,8 +758,6 @@ af:
export_tooltip: Eksporteer kaartdata
gps_traces: GPS-spore
gps_traces_tooltip: Beheer GPS-spore
help_wiki: Help &amp; Wiki
help_wiki_tooltip: Help en wiki vir die projek
history: Geskiedenis
home: tuis
home_tooltip: Gaan na tuisligging

View file

@ -883,8 +883,6 @@ aln:
export_tooltip: Harta dhënat Eksporti
gps_traces: GPS Gjurmët
gps_traces_tooltip: Manage gjurmë GPS
help_wiki: Ndihmë & Wiki
help_wiki_tooltip: Ndihmë & Wiki faqe interneti për projektin
history: Historia
home: shtëpi
home_tooltip: Shkoni në shtëpi vend

View file

@ -890,8 +890,6 @@ ar:
export_tooltip: صدّر بيانات الخريطة
gps_traces: آثار جي بي أس
gps_traces_tooltip: عالج آثار جي بي إس
help_wiki: المساعدة والويكي
help_wiki_tooltip: المساعدة وموقع الويكي للمشروع
history: تاريخ
home: الصفحة الرئيسية
home_tooltip: اذهب إلى الصفحة الرئيسية

View file

@ -822,8 +822,6 @@ arz:
export_tooltip: صدّر بيانات الخريطة
gps_traces: آثار جى بى أس
gps_traces_tooltip: عالج الآثار
help_wiki: المساعده والويكي
help_wiki_tooltip: المساعده وموقع الويكى للمشروع
history: تاريخ
home: الصفحه الرئيسية
home_tooltip: اذهب إلى الصفحه الرئيسية

View file

@ -286,9 +286,6 @@ be:
export_tooltip: Экспартаваць данныя карты
gps_traces: GPS Трэкі
gps_traces_tooltip: Працаваць з трэкамі
help_wiki: Дапамога і Wiki
help_wiki_tooltip: Даведка і сайт Вікі
help_wiki_url: http://wiki.openstreetmap.org/wiki/RU:Main_Page?uselang=be
history: Гісторыя
home: дамоў
home_tooltip: Паказаць маю хату

View file

@ -879,8 +879,6 @@ br:
export_tooltip: Ezporzhiañ roadennoù ar gartenn
gps_traces: Roudoù GPS
gps_traces_tooltip: Merañ ar roudoù GPS
help_wiki: Skoazell &amp; Wiki
help_wiki_tooltip: Skoazell &amp; lec'hienn Wiki evit ar raktres
history: Istor
home: degemer
home_tooltip: Mont da lec'h ar gêr

View file

@ -287,11 +287,19 @@ cs:
subject: "Předmět:"
use_map_link: použít mapu
feed:
all:
description: Nedávné záznamy v deníčcích uživatelů OpenStreetMap
title: Deníčkové záznamy OpenStreetMap
language:
description: Aktuální záznamy v deníčcích uživatelů OpenStreetMap v jazyce {{language_name}}
title: Deníčkové záznamy OpenStreetMap v jazyce {{language_name}}
user:
description: Nedávné záznamy v OpenStreetMap deníčku uživatele {{user}}
title: Záznamy v OpenStreetMap deníčku uživatele {{user}}
list:
in_language_title: Deníčkové záznamy v jazyce {{language}}
new: Nový záznam do deníčku
new_title: Sepsat nový záznam do vašeho uživatelského deníčku
no_entries: Žádné záznamy v deníčku
recent_entries: "Aktuální deníčkové záznamy:"
title: Deníčky uživatelů
@ -390,21 +398,41 @@ cs:
amenity:
airport: Letiště
bank: Banka
bench: Lavička
cafe: Kavárna
cinema: Kino
courthouse: Soud
crematorium: Krematorium
embassy: Velvyslanectví
ferry_terminal: Přístaviště přívozu
fire_station: Hasičská stanice
fountain: Fontána
fuel: Čerpací stanice
grave_yard: Hřbitov
hospital: Nemocnice
hunting_stand: Posed
kindergarten: Mateřská škola
library: Knihovna
mountain_rescue: Horská služba
park: Park
parking: Parkoviště
place_of_worship: Náboženský objekt
post_box: Poštovní schránka
post_office: Pošta
prison: Věznice
retirement_home: Domov důchodců
school: Škola
telephone: Telefonní automat
theatre: Divadlo
toilets: Toalety
townhall: Radnice
boundary:
administrative: Administrativní hranice
building:
city_hall: Radnice
entrance: Vstup do objektu
hospital: Nemocniční budova
public: Veřejná budova
stadium: Stadion
tower: Věž
train_station: Železniční stanice
@ -413,13 +441,16 @@ cs:
bus_stop: Autobusová zastávka
construction: Silnice ve výstavbě
gate: Brána
living_street: Obytná zóna
motorway: Dálnice
residential: Ulice
secondary: Silnice II. třídy
secondary_link: Silnice II. třídy
steps: Schody
unsurfaced: Nezpevněná cesta
historic:
battlefield: Bojiště
building: Budova
memorial: Památník
museum: Muzeum
wreck: Vrak
@ -429,6 +460,7 @@ cs:
construction: Staveniště
landfill: Skládka
military: Vojenský prostor
piste: Sjezdovka
vineyard: Vinice
leisure:
garden: Zahrada
@ -442,12 +474,19 @@ cs:
swimming_pool: Bazén
natural:
beach: Pláž
cliff: Útes
coastline: Pobřežní čára
fjord: Fjord
geyser: Gejzír
glacier: Ledovec
hill: Kopec
island: Ostrov
marsh: Mokřina
peak: Vrchol
river: Řeka
tree: Strom
valley: Údolí
volcano: Sopka
place:
airport: Letiště
city: Velkoměsto
@ -484,6 +523,7 @@ cs:
hairdresser: Kadeřnictví
jewelry: Klenotnictví
optician: Oční optika
travel_agency: Cestovní kancelář
tourism:
alpine_hut: Vysokohorská chata
attraction: Turistická atrakce
@ -520,9 +560,10 @@ cs:
edit: Upravit
export: Export
export_tooltip: Exportovat mapová data
help_wiki: Nápověda &amp; wiki
help_wiki_tooltip: Server s nápovědou a wiki k tomuto projektu
help_wiki_url: http://wiki.openstreetmap.org/wiki/Cs:Main_Page?uselang=cs
gps_traces: GPS stopy
help: Nápověda
help_and_wiki: "{{help}} & {{wiki}}"
help_title: Stránky s nápovědou k tomuto projektu
history: Historie
home: domů
home_tooltip: Přejít na polohu domova
@ -564,6 +605,8 @@ cs:
view_tooltip: Zobrazit mapu
welcome_user: Vítejte, {{user_link}}
welcome_user_link_tooltip: Vaše uživatelská stránka
wiki: wiki
wiki_title: Wiki k tomuto projektu
license_page:
native:
title: O této stránce
@ -647,6 +690,18 @@ cs:
signup_confirm_plain:
the_wiki_url: http://wiki.openstreetmap.org/wiki/Cs:Beginners_Guide?uselang=cs
wiki_signup_url: http://wiki.openstreetmap.org/index.php?title=Special:UserLogin&type=signup&returnto=Cs:Main_Page&uselang=cs
oauth:
oauthorize:
allow_read_gpx: číst vaše soukromé GPS stopy.
allow_read_prefs: číst vaše uživatelské nastavení.
allow_to: "Umožnit klientské aplikaci:"
allow_write_api: upravovat mapu.
allow_write_diary: vytvářet deníčkové záznamy, komentovat a navazovat přátelství.
allow_write_gpx: nahrávat GPS stopy.
allow_write_prefs: měnit vaše uživatelské nastavení.
request_access: Aplikace {{app_name}} žádá o přístup k vašemu účtu. Vyberte si, zda si přejete, aby aplikace měla následující oprávnění. Můžete jich zvolit libovolný počet.
revoke:
flash: Přístup pro aplikaci {{application}} byl odvolán.
oauth_clients:
index:
my_apps: Mé klientské aplikace
@ -680,6 +735,7 @@ cs:
bridleway: Koňská stezka
brownfield: Zbořeniště
building: Významná budova
byway: Cesta
cable:
- Lanovka
- sedačková lanovka
@ -733,6 +789,7 @@ cs:
tunnel: Čárkované obrysy = tunel
unclassified: Silnice
unsurfaced: Nezpevněná cesta
wood: Les
heading: Legenda pro z{{zoom_level}}
search:
search: Hledat
@ -749,73 +806,103 @@ cs:
trace:
create:
trace_uploaded: Váš GPX soubor byl uložen a čeká na zařazení do databáze. Obvykle to netrvá víc jak půl hodiny. Až bude zařazen, budete informováni emailem.
upload_trace: Nahrát GPS záznam
upload_trace: Nahrát GPS stopu
delete:
scheduled_for_deletion: Stopa označena ke smazání
edit:
description: "Popis:"
download: stáhnout
edit: upravit
filename: "Název souboru:"
heading: Úprava GPS záznamu {{name}}
heading: Úprava stopy {{name}}
map: mapa
owner: "Vlastník:"
points: "Body:"
save_button: Uložit změny
start_coord: "Souřadnice začátku:"
tags: "Tagy:"
tags: "Štítky:"
tags_help: oddělené čárkou
title: Úprava stopy {{name}}
uploaded_at: "Nahráno v:"
visibility: "Viditelnost:"
visibility_help: co tohle znamená?
list:
your_traces: Vaše GPS záznamy
public_traces: Veřejné GPS stopy
public_traces_from: Veřejné GPS stopy uživatele {{user}}
tagged_with: " oštítkované jako {{tags}}"
your_traces: Vaše GPS stopy
make_public:
made_public: Stopa zveřejněna
no_such_user:
body: Lituji, ale uživatel {{user}} neexistuje. Zkontrolujte překlepy nebo jste možná klikli na chybný odkaz.
heading: Uživatel {{user}} neexistuje
title: Uživatel nenalezen
offline:
heading: GPX úložiště offline
message: Úložiště GPX souborů a systém pro nahrávání jsou momentálně mimo provoz.
offline_warning:
message: Systém pro načítání GPX souborů je momentálně mimo provoz.
trace:
ago: před {{time_in_words_ago}}
by: od
count_points: "{{count}} bodů"
edit: upravit
edit_map: Upravit mapu
identifiable: IDENTIFIKOVATELNÁ
in: v
map: mapa
more: více
pending: ZPRACOVÁVÁ SE
private: SOUKROMÁ
public: VEŘEJNÁ
trace_details: Zobrazit podrobnosti stopy
trackable: STOPOVATELNÁ
view_map: Zobrazit mapu
trace_form:
description: Popis
help: Nápověda
tags: Tagy
tags_help: oddělěné čárkou
tags: Štítky
tags_help: oddělené čárkou
upload_button: Nahrát
upload_gpx: Nahrát GPX soubor
visibility: Viditelnost
visibility_help: co tohle znamená?
trace_header:
see_all_traces: Zobrazit všechny GPS záznamy
see_your_traces: Zobrazit všechny vaše GPS záznamy
see_all_traces: Zobrazit všechny stopy
see_your_traces: Zobrazit všechny vaše stopy
traces_waiting: Na zpracování čeká {{count}} vašich stop. Zvažte, zda by nebylo před nahráním dalších lepší počkat, dokud nebudou zpracovány, abyste neblokovali frontu dalším uživatelům.
upload_trace: Nahrát stopu
your_traces: Zobrazit pouze vaše stopy
trace_optionals:
tags: Tagy
tags: Štítky
trace_paging_nav:
next: Následující &raquo;
previous: "&laquo; Předchozí"
showing_page: Zobrazuji stranu {{page}}
view:
delete_track: Smazat tuto stopu
description: "Popis:"
download: stáhnout
edit: upravit
edit_track: Upravit tuto stopu
filename: "Název souboru:"
heading: Zobrazení stopy {{name}}
map: mapa
none: Žádné
owner: "Vlastník:"
tags: "Tagy:"
trace_not_found: GPS záznam nenalezen!
pending: ZPRACOVÁVÁ SE
points: "Bodů:"
start_coordinates: "Souřadnice začátku:"
tags: "Štítky:"
title: Zobrazení stopy {{name}}
trace_not_found: Stopa nenalezena!
uploaded: "Nahráno v:"
visibility: "Viditelnost:"
visibility:
identifiable: Identifikovatelný (zobrazuje se v seznamu a jako identifikovatelné, uspořádané body s časovou značkou)
private: Soukromý (dostupná jedině jako anonymní, neuspořádané body)
public: Veřejný (zobrazuje se v seznamu i jako anonymní, neuspořádané body)
trackable: Trackable (dostupný jedině jako anonymní, uspořádané body s časovými značkami)
identifiable: Identifikovatelná (zobrazuje se v seznamu a jako identifikovatelné uspořádané body s časovou značkou)
private: Soukromá (veřejně dostupná jedině jako anonymní, neuspořádané body)
public: Veřejná (zobrazuje se v seznamu i jako anonymní, neuspořádané body)
trackable: Stopovatelná (veřejně dostupná jedině jako anonymní, uspořádané body s časovými značkami)
user:
account:
current email address: "Stávající e-mailová adresa:"
@ -857,6 +944,9 @@ cs:
success: Vaše e-mailová adresa byla potvrzena, děkujeme za registraci!
filter:
not_an_administrator: K provedení této akce musíte být správce.
list:
heading: Uživatelé
title: Uživatelé
login:
account not active: Je mi líto, ale váš uživatelský účet dosud nebyl aktivován.<br />Svůj účet si můžete aktivovat kliknutím na odkaz v potvrzovacím e-mailu.
account suspended: Je nám líto, ale váš účet byl pozastaven kvůli podezřelé aktivitě.<br />Pokud to chcete řešit, kontaktujte {{webmaster}}.
@ -957,7 +1047,7 @@ cs:
remove as friend: odstranit jako přítele
send message: poslat zprávu
settings_link_text: nastavení
traces: záznamy
traces: stopy
user location: Pozice uživatele
your friends: Vaši přátelé
user_block:

View file

@ -343,9 +343,6 @@ da:
export_tooltip: Eksporter kortdata
gps_traces: GPS-spor
gps_traces_tooltip: Håndter GPS-spor
help_wiki: Hjælp &amp; Wiki
help_wiki_tooltip: Hjælp- og Wiki-side for projektet
help_wiki_url: http://wiki.openstreetmap.org/wiki/Da:Main_Page?uselang=da
history: Historik
home: hjem
home_tooltip: Gå til hjemmeposition

View file

@ -897,9 +897,9 @@ de:
export_tooltip: Kartendaten exportieren
gps_traces: GPS-Tracks
gps_traces_tooltip: GPS-Tracks verwalten
help_wiki: Hilfe + Wiki
help_wiki_tooltip: Hilfe + Wiki des Projekts
help_wiki_url: http://wiki.openstreetmap.org/wiki/Hauptseite?uselang=de
help: Hilfe
help_and_wiki: "{{help}} + {{wiki}}"
help_title: Hilfesite des Projekts
history: Chronik
home: Standort
home_tooltip: Eigener Standort
@ -938,6 +938,8 @@ de:
view_tooltip: Karte anzeigen
welcome_user: Willkommen, {{user_link}}
welcome_user_link_tooltip: Eigene Benutzerseite
wiki: Wiki
wiki_title: Wiki des Projekts
license_page:
foreign:
english_link: dem englischsprachigen Original
@ -1070,6 +1072,7 @@ de:
signup_confirm:
subject: "[OpenStreetMap] Deine E-Mail-Adresse bestätigen"
signup_confirm_html:
ask_questions: Du kannst jegliche Fragen zu OpenStreetMap auf unserer Website mit <a href="http://help.openstreetmap.org/">Fragen und Antworten</a> stellen.
click_the_link: Wenn du das bist, Herzlich Willkommen! Bitte klicke auf den folgenden Link unter dieser Zeile um dein Benutzerkonto zu bestätigen. Lies danach weiter, denn es folgen mehr Informationen über OSM.
current_user: Ebenso ist <a href="http://wiki.openstreetmap.org/wiki/Category:Users_by_geographical_region">eine Liste mit allen Benutzern in einer Kategorie</a>, die anzeigt wo diese auf der Welt sind, verfügbar.
get_reading: Weitere Informationen über OpenStreetMap findest du in <a href="http://wiki.openstreetmap.org/wiki/DE:Beginners_Guide">unserem Wiki</a>, informiere dich über die neusten Nachrichten über das <a href="http://blog.openstreetmap.org/">OpenStreetMap-Blog</a> oder <a href="http://twitter.com/openstreetmap">Twitter</a>, oder besuche das <a href="http://www.opengeodata.org/">OpenGeoData-Blog</a> von OpenStreetMap-Gründer Steve Coast für die gekürzte Geschichte des Projektes, dort werden auch <a href="http://www.opengeodata.org/?cat=13">Podcasts zum Hören</a> angeboten.
@ -1082,6 +1085,7 @@ de:
video_to_openstreetmap: Einführungsvideo zu OpenStreetMap
wiki_signup: Im <a href="http://wiki.openstreetmap.org/wiki/Hauptseite">Wiki von OpenStreetMap</a> kannst du dich ebenfalls <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup">registrieren</a>.
signup_confirm_plain:
ask_questions: "Du kannst jegliche Fragen zu OpenStreetMap auf unserer Website mit Fragen und Antworten stellen:"
blog_and_twitter: "Immer auf dem neuesten Stand dank dem OpenStreetMap-Blog oder Twitter:"
click_the_link_1: Wenn du das bist, Herzlich Willkommen! Bitte klicke auf den folgenden Link unter dieser Zeile, um dein
click_the_link_2: Benutzerkonto zu bestätigen. Lies danach weiter, denn es folgen mehr Informationen über OSM.

View file

@ -890,8 +890,6 @@ dsb:
export_tooltip: Kórtowe daty eksportěrowaś
gps_traces: GPS-slědy
gps_traces_tooltip: GPS-slědy zastojaś
help_wiki: Pomoc &amp; wiki
help_wiki_tooltip: Pomoc &amp; wikisedło za projekt
history: Historija
home: domoj
home_tooltip: K stojnišćoju

View file

@ -924,9 +924,13 @@ en:
osm_read_only: "The OpenStreetMap database is currently in read-only mode while essential database maintenance work is carried out."
donate: "Support OpenStreetMap by {{link}} to the Hardware Upgrade Fund."
donate_link_text: donating
help_wiki: "Help &amp; Wiki"
help_wiki_tooltip: "Help &amp; Wiki site for the project"
help_wiki_url: "http://wiki.openstreetmap.org"
help_and_wiki: "{{help}} & {{wiki}}"
help: Help
help_url: http://help.openstreetmap.org/
help_title: Help site for the project
wiki: Wiki
wiki_url: http://wiki.openstreetmap.org/
wiki_title: Wiki site for the project
copyright: "Copyright &amp; License"
news_blog: "News blog"
news_blog_tooltip: "News blog about OpenStreetMap, free geographical data, etc."
@ -1100,6 +1104,7 @@ en:
the_wiki_url: "http://wiki.openstreetmap.org/wiki/Beginners%27_Guide"
blog_and_twitter: "Catch up with the latest news via the OpenStreetMap blog or Twitter:"
opengeodata: "OpenGeoData.org is OpenStreetMap founder Steve Coast's blog, and it has podcasts too:"
ask_questions: "You can ask any questions you may have about OpenStreetMap at our question and answer site:"
wiki_signup: "You may also want to sign up to the OpenStreetMap wiki at:"
wiki_signup_url: "http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Main_Page"
# next four translations are in pairs : please word wrap appropriately
@ -1116,6 +1121,7 @@ en:
more_videos: "There are {{more_videos_link}}."
more_videos_here: "more videos here"
get_reading: Get reading about OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide">on the wiki</a>, catch up with the latest news via the <a href="http://blog.openstreetmap.org/">OpenStreetMap blog</a> or <a href="http://twitter.com/openstreetmap">Twitter</a>, or browse through OpenStreetMap founder Steve Coast's <a href="http://www.opengeodata.org/">OpenGeoData blog</a> for the potted history of the project, which has <a href="http://www.opengeodata.org/?cat=13">podcasts to listen to</a> also!
ask_questions: You can ask any questions you may have about OpenStreetMap at our <a href="http://help.openstreetmap.org/">question and answer site</a>.
wiki_signup: 'You may also want to <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Main_Page">sign up to the OpenStreetMap wiki</a>.'
user_wiki_page: 'It is recommended that you create a user wiki page, which includes category tags noting where you are, such as <a href="http://wiki.openstreetmap.org/wiki/Category:Users_in_London">[[Category:Users_in_London]]</a>.'
current_user: 'A list of current users in categories, based on where in the world they are, is available from <a href="http://wiki.openstreetmap.org/wiki/Category:Users_by_geographical_region">Category:Users_by_geographical_region</a>.'

View file

@ -345,8 +345,6 @@ eo:
export_tooltip: Eksporti mapajn datumojn
gps_traces: GPS spuroj
gps_traces_tooltip: Manipuli spurojn
help_wiki: Helpo kaj Vikio
help_wiki_tooltip: Helpo kaj Vikio por la projekto
history: Historio
home: hejmo
home_tooltip: Iri al hejmloko
@ -384,7 +382,7 @@ eo:
inbox:
date: Dato
my_inbox: Mia leterkesto
title: Leterkesto
title: Alvenkesto
you_have: Vi havas {{new_count}} novajn mesaĝojn kaj {{old_count}} malnovajn mesaĝojn
mark:
as_read: Mesaĝo markita kiel legita
@ -405,7 +403,7 @@ eo:
title: Tiu uzanto aŭ mesaĝo ne ekzistas
outbox:
date: Dato
inbox: leterkesto
inbox: Alvenkesto
my_inbox: Mia {{inbox_link}}
you_have_sent_messages:
one: Vi havas 1 mesaĝon

View file

@ -883,9 +883,6 @@ es:
export_tooltip: Exportar datos del mapa
gps_traces: Trazas GPS
gps_traces_tooltip: Gestiona las trazas GPS
help_wiki: Ayuda y Wiki
help_wiki_tooltip: Ayuda y sitio Wiki del proyecto
help_wiki_url: http://wiki.openstreetmap.org/wiki/ES:Main_Page?uselang=es
history: Historial
home: inicio
home_tooltip: Ir a la página inicial

View file

@ -495,7 +495,6 @@ eu:
layouts:
edit: Aldatu
export: Esportatu
help_wiki: Laguntza eta Wiki
history: Historia
home: hasiera
inbox: sarrera-ontzia ({{count}})

View file

@ -723,8 +723,6 @@ fi:
export: Vienti
export_tooltip: Karttatiedon vienti
gps_traces: GPS-jäljet
help_wiki: Wiki ja ohjeet
help_wiki_tooltip: Projektin ohje ja wiki
history: Historia
home: koti
home_tooltip: Siirry kotisijaintiin

View file

@ -888,8 +888,6 @@ fr:
export_tooltip: Exporter les données de la carte
gps_traces: Traces GPS
gps_traces_tooltip: Gérer les traces GPS
help_wiki: Aide &amp; Wiki
help_wiki_tooltip: Aide et site Wiki du projet
history: Historique
home: Chez moi
home_tooltip: Aller à l'emplacement de mon domicile

View file

@ -479,8 +479,6 @@ fur:
export_tooltip: Espuarte i dâts de mape
gps_traces: Percors GPS
gps_traces_tooltip: Gjestìs i percors GPS
help_wiki: Jutori &amp; Vichi
help_wiki_tooltip: Jutori &amp; Vichi pal progjet
history: Storic
home: lûc iniziâl
home_tooltip: Va al lûc iniziâl

View file

@ -881,8 +881,9 @@ gl:
export_tooltip: Exportar os datos do mapa
gps_traces: Pistas GPS
gps_traces_tooltip: Xestionar as pistas GPS
help_wiki: Axuda e wiki
help_wiki_tooltip: Axuda e sitio wiki do proxecto
help: Axuda
help_and_wiki: "{{help}} e {{wiki}}"
help_title: Sitio de axuda do proxecto
history: Historial
home: inicio
home_tooltip: Ir ao meu domicilio
@ -921,6 +922,8 @@ gl:
view_tooltip: Ver o mapa
welcome_user: Benvido, {{user_link}}
welcome_user_link_tooltip: A súa páxina de usuario
wiki: wiki
wiki_title: Wiki de axuda do proxecto
license_page:
foreign:
english_link: a orixinal en inglés
@ -1053,6 +1056,7 @@ gl:
signup_confirm:
subject: "[OpenStreetMap] Confirme o seu enderezo de correo electrónico"
signup_confirm_html:
ask_questions: Pode facer calquera pregunta en relación ao OpenStreetMap no noso <a href="http://help.openstreetmap.org/">sitio de preguntas e respostas</a>.
click_the_link: Se este é vostede, benvido! Prema na ligazón que aparece a continuación para confirmar a súa conta e obter máis información sobre o OpenStreetMap.
current_user: "A lista de todos os usuarios por categorías, baseada segundo a súa localización no mundo, está dispoñible en: <a href=\"http://wiki.openstreetmap.org/wiki/Category:Users_by_geographical_region\">Category:Users_by_geographical_region</a>."
get_reading: Infórmese sobre o OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide">no wiki</a>, póñase ao día das últimas novas a través do <a href="http://blog.openstreetmap.org/">blogue</a> ou o <a href="http://twitter.com/openstreetmap">Twitter</a> do OpenStreetMap ou vaia polo <a href="http://www.opengeodata.org/">blogue OpenGeoData</a> de Steve Coast, o fundador do OpenStreetMap, para ler a pequena historia do proxecto e <a href="http://www.opengeodata.org/?cat=13">escoitar os podcasts</a> tamén!
@ -1065,6 +1069,7 @@ gl:
video_to_openstreetmap: vídeo introdutorio ao OpenStreetMap
wiki_signup: Poida que tamén queira <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Main_Page">crear unha conta no wiki do OpenStreetMap</a>.
signup_confirm_plain:
ask_questions: "Pode facer calquera pregunta en relación ao OpenStreetMap no noso sitio de preguntas e respostas:"
blog_and_twitter: "Póñase ao día das últimas novas a través do blogue ou o Twitter do OpenStreetMap:"
click_the_link_1: Se este é vostede, benvido! Prema na ligazón que aparece a continuación para confirmar a súa
click_the_link_2: conta e obter máis información sobre o OpenStreetMap.

View file

@ -3,6 +3,7 @@
# Export driver: syck
# Author: Mnalis
# Author: Mvrban
# Author: SpeedyGonsales
hr:
activerecord:
attributes:
@ -885,9 +886,9 @@ hr:
export_tooltip: Izvoz podataka karte
gps_traces: GPS trase
gps_traces_tooltip: Upravljaj GPS trasama
help_wiki: Pomoć &amp; Wiki
help_wiki_tooltip: Pomoć &amp; Wiki-site za projekt
help_wiki_url: http://wiki.openstreetmap.org/wiki/Hr:Main_Page?uselang=hr
help: Pomoć
help_and_wiki: "{{help}} & {{wiki}}"
help_title: Stranice pomoći za projekt
history: Povijest
home: dom
home_tooltip: Idi na lokaciju svog doma
@ -928,6 +929,8 @@ hr:
view_tooltip: Pogledaj na karti
welcome_user: Dobrodošli, {{user_link}}
welcome_user_link_tooltip: Tvoja korisnička stranica
wiki: Wiki
wiki_title: Wiki stranice projekta
license_page:
foreign:
english_link: Engleski izvornik
@ -1060,6 +1063,7 @@ hr:
signup_confirm:
subject: "[OpenStreetMap] potvrdi email adresu"
signup_confirm_html:
ask_questions: Možete postaviti bilo kakva pitanja koja imate o projektu OpenStreetMap na našim <a href="http://help.openstreetmap.org/">stranicama pitanja i odgovora</a>.
click_the_link: Ako si ovo ti, dobrodošao! Molim klikni na link ispod za potvrdu korisničkog računa i čitaj dalje za više informacija o OpenStreetMap-u
current_user: Lista trenutnih korisnika u kategorijama, bazirano gdje su na svijetu, je dostupna s <a href="http://wiki.openstreetmap.org/wiki/Category:Users_by_geographical_region">Category:Users_by_geographical_region</a>.
get_reading: Čitajte o OpenStreetMap-u <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide">na wiki-ju</a>, budute u toku s zadnjim novostima preko <a href="http://blog.openstreetmap.org/">OpenStreetMap bloga</a> ili <a href="http://twitter.com/openstreetmap">Twittera</a>, ili pregledajte <a href="http://www.opengeodata.org/">OpenGeoData blog</a> osnivača OpenStreetMap-a, Stevea Coasta za povijest projekta, gdje imate i <a href="http://www.opengeodata.org/?cat=13">podcaste za slušanje</a>!
@ -1072,6 +1076,7 @@ hr:
video_to_openstreetmap: uvodni video za OpenStreetMap
wiki_signup: Možda se želiš <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Main_Page">otvoriti račun na OpenStreetMap wiki</a>.
signup_confirm_plain:
ask_questions: "Možete postaviti bilo kakva pitanja koja imate o projektu OpenStreetMap na našim stranicama pitanja i odgovora:"
blog_and_twitter: "Budite u toku s najnovijim vijestima preko OpenstreetMap bloga ili Twittera:"
click_the_link_1: Ako si to ti, dobrodošao! Molim klikni donji link za potvrdu
click_the_link_2: korinički račun i čitaj za više informacija o OpenStreetMap-u.

View file

@ -890,8 +890,6 @@ hsb:
export_tooltip: Kartowe daty eksportować
gps_traces: GPS-ćěrje
gps_traces_tooltip: GPS-ćěrje zrjadować
help_wiki: Pomoc &amp; wiki
help_wiki_tooltip: Sydło Pomoc & wiki za projekt
history: Historija
home: domoj
home_tooltip: Domoj hić

View file

@ -885,9 +885,6 @@ hu:
export_tooltip: Térképadatok exportálása
gps_traces: Nyomvonalak
gps_traces_tooltip: GPS nyomvonalak kezelése
help_wiki: Segítség és wiki
help_wiki_tooltip: Segítség és wikioldal a projekthez
help_wiki_url: http://wiki.openstreetmap.org/wiki/HU:Main_Page?uselang=hu
history: Előzmények
home: otthon
home_tooltip: Ugrás otthonra

View file

@ -880,8 +880,9 @@ ia:
export_tooltip: Exportar datos cartographic
gps_traces: Tracias GPS
gps_traces_tooltip: Gerer tracias GPS
help_wiki: Adjuta &amp; Wiki
help_wiki_tooltip: Adjuta &amp; sito Wiki pro le projecto
help: Adjuta
help_and_wiki: "{{help}} & {{wiki}}"
help_title: Sito de adjuta pro le projecto
history: Historia
home: initio
home_tooltip: Ir al position de origine
@ -922,6 +923,8 @@ ia:
view_tooltip: Vider le carta
welcome_user: Benvenite, {{user_link}}
welcome_user_link_tooltip: Tu pagina de usator
wiki: Wiki
wiki_title: Sito wiki pro le projecto
license_page:
foreign:
english_link: le original in anglese
@ -1054,6 +1057,7 @@ ia:
signup_confirm:
subject: "[OpenStreetMap] Confirma tu adresse de e-mail"
signup_confirm_html:
ask_questions: Tu pote poner qualcunque questiones super OpenStreetMap a nostre <a href="http://help.openstreetmap.org/">sito de questiones e responsas</a>.
click_the_link: Si isto es tu, benvenite! Per favor clicca super le ligamine ci infra pro confirmar iste conto e continua a leger pro ulterior informationes super OpenStreetMap
current_user: Un lista de usatores actual in categorias, a base de lor position geographic, es disponibile de <a href="http://wiki.openstreetmap.org/wiki/Category:Users_by_geographical_region">Category:Users_by_geographical_region</a>.
get_reading: Informa te super OpenStreetMap per <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide">leger le wiki</a>, tene te al currente con le ultime novas via le <a href="http://blog.openstreetmap.org/">blog de OpenStreetMap</a> o con <a href="http://twitter.com/openstreetmap">Twitter</a>, o percurre le <a href="http://www.opengeodata.org/">blog OpenGeoData</a> del fundator de OpenStreetMap Steve Coast pro le historia compendiose del projecto, le qual include tamben <a href="http://www.opengeodata.org/?cat=13">podcasts a ascoltar</a>!
@ -1066,6 +1070,7 @@ ia:
video_to_openstreetmap: video de introduction a OpenStreetMap
wiki_signup: Considera tamben <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Main_Page">inscriber te al wiki de OpenStreetMap</a>.
signup_confirm_plain:
ask_questions: "Tu pote poner qualcunque questiones super OpenStreetMap a nostre sito de questiones e responsas:"
blog_and_twitter: "Tene te al currente con le ultime novas al blog de OpenStreetMap o con Twitter:"
click_the_link_1: Si isto es tu, benvenite! Per favor clicca super le ligamine ci infra pro confirmar tu
click_the_link_2: conto. Continua a leger pro plus informationes a proposito de OpenStreetMap.

View file

@ -579,9 +579,6 @@ is:
export_tooltip: Niðurhala kortagögnum á hinum ýmsu sniðum
gps_traces: GPS ferlar
gps_traces_tooltip: Sjá alla GPS ferla
help_wiki: Hjálp &amp; Wiki
help_wiki_tooltip: Hjálpar og wiki-síða fyrir verkefnið
help_wiki_url: http://wiki.openstreetmap.org/wiki/Fors%C3%AD%C3%B0a?uselang=is
history: Breytingarskrá
home: heim
home_tooltip: Færa kortasýnina á þína staðsetningu

View file

@ -815,8 +815,6 @@ it:
export_tooltip: Esporta i dati della mappa
gps_traces: Tracciati GPS
gps_traces_tooltip: Gestisci i tracciati GPS
help_wiki: Aiuto &amp; Wiki
help_wiki_tooltip: Sito e Wiki di supporto per il progetto
history: Storico
home: posizione iniziale
inbox: in arrivo ({{count}})

View file

@ -618,6 +618,7 @@ ja:
place:
airport: 空港
city:
country:
county:
farm: 牧場
hamlet:
@ -714,9 +715,6 @@ ja:
export_tooltip: 地図データのエクスポート
gps_traces: GPS トレース
gps_traces_tooltip: トレースの管理
help_wiki: ヘルプと Wiki
help_wiki_tooltip: プロジェクトのヘルプと Wiki
help_wiki_url: http://wiki.openstreetmap.org/wiki/Ja:Main_Page?uselang=ja
history: 履歴
home: ホーム
home_tooltip: ホームへ戻る
@ -1180,6 +1178,7 @@ ja:
list:
confirm: 選択したユーザを確認
empty: 条件に一致するユーザーが見つかりません
heading: 利用者
hide: 選択したユーザーを隠す
title: ユーザー
login:

637
config/locales/lb.yml Normal file
View file

@ -0,0 +1,637 @@
# Messages for Luxembourgish (Lëtzebuergesch)
# Exported from translatewiki.net
# Export driver: syck
# Author: Robby
lb:
activerecord:
attributes:
diary_entry:
language: Sprooch
title: Titel
user: Benotzer
friend:
friend: Frënd
user: Benotzer
message:
title: Titel
trace:
description: Beschreiwung
name: Numm
public: Ëffentlech
size: Gréisst
user: Benotzer
user:
active: Aktiv
description: Beschreiwung
display_name: Numm dee gewise gëtt
email: E-Mail
languages: Sproochen
pass_crypt: Passwuert
models:
country: Land
friend: Frënd
language: Sprooch
message: Message
node: Knuet
old_node: Ale Knuet
old_relation: Al Relatioun
old_way: Ale Wee
relation: Relatioun
user: Benotzer
user_preference: Benotzerastellung
way: Wee
browse:
changeset:
download: Als {{changeset_xml_link}} oder {{osmchange_xml_link}} eroflueden.
osmchangexml: osmChange XML
changeset_details:
belongs_to: "Gehéiert dem:"
closed_at: "Zougemaach den:"
common_details:
changeset_comment: "Bemierkung:"
edited_at: "Geännert den:"
edited_by: "Geännert vum:"
version: "Versioun:"
containing_relation:
entry: Relatioun {{relation_name}}
entry_role: Relatioun {{relation_name}} (als {{relation_role}})
map:
deleted: Geläscht
larger:
area: Géigend op méi enger grousser Kaart weisen
node: Knuet op méi enger grousser Kaart weisen
relation: D'Relatioun op méi enger grousser Kaart weisen
way: Wee op méi enger grousser Kaart weisen
loading: Lueden...
navigation:
all:
next_node_tooltip: Nächste Knuet
next_relation_tooltip: Nächst Relatioun
next_way_tooltip: Nächste Wee
prev_node_tooltip: Virege Knuet
prev_relation_tooltip: Vireg Relatioun
prev_way_tooltip: Virege Wee
user:
name_changeset_tooltip: Ännerunge vum {{user}} weisen
next_changeset_tooltip: Nächst Ännerung vum {{user}}
prev_changeset_tooltip: Vireg Ännerung vum {{user}}
node:
download: "{{download_xml_link}}, {{view_history_link}} oder {{edit_link}}"
download_xml: XML eroflueden
edit: änneren
node: Knuet
node_title: "Knuet: {{node_name}}"
view_history: Versioune weisen
node_details:
coordinates: "Koordinaten:"
part_of: "Deel vu(n):"
node_history:
download: "{{download_xml_link}} oder {{view_details_link}}"
download_xml: XML eroflueden
view_details: Detailer weisen
not_found:
type:
node: Knuet
relation: Relatioun
way: Wee
paging_nav:
of: vu(n)
showing_page: Säit gëtt gewisen
relation:
download: "{{download_xml_link}} oder {{view_history_link}}"
download_xml: XML eroflueden
relation: Relatioun
relation_title: "Relatioun: {{relation_name}}"
view_history: Versioune weisen
relation_details:
members: "Memberen:"
part_of: "Deel vu(n):"
relation_history:
download: "{{download_xml_link}} oder {{view_details_link}}"
download_xml: XML eroflueden
view_details: Detailer weisen
relation_member:
entry_role: "{{type}} {{name}} als {{role}}"
type:
node: Knuet
relation: Relatioun
way: Wee
start_rjs:
data_frame_title: Donnéeën
data_layer_name: Donnéeën
details: Detailer
edited_by_user_at_timestamp: Vum [[user]] de(n) [[timestamp]] geännert
load_data: Donnéeë lueden
loading: Lueden...
object_list:
details: Detailer
heading: Lëscht mat Objeten
history:
type:
node: Knuet [[id]]
way: Wee [[id]]
selected:
type:
node: Knuet [[id]]
way: Wee [[id]]
type:
node: Knuet
way: Wee
private_user: private Benotzer
show_history: Versioune weisen
wait: Waart w.e.g. ...
tag_details:
wikipedia_link: Den Artikel {{page}} op der Wikipedia
timeout:
type:
node: Knuet
relation: Relatioun
way: Wee
way:
download: "{{download_xml_link}}, {{view_history_link}} oder {{edit_link}}"
download_xml: XML eroflueden
edit: änneren
view_history: Versioune weisen
way: Wee
way_title: "Wee: {{way_name}}"
way_details:
nodes: "Kniet:"
part_of: "Deel vu(n):"
way_history:
download: "{{download_xml_link}} oder {{view_details_link}}"
download_xml: XML eroflueden
view_details: Detailer weisen
changeset:
changeset:
anonymous: Anonym
big_area: (grouss)
no_edits: (keng Ännerungen)
changeset_paging_nav:
next: Nächst &raquo;
previous: "&laquo; Vireg"
changesets:
user: Benotzer
diary_entry:
diary_comment:
confirm: Confirméieren
diary_entry:
confirm: Confirméieren
edit:
language: "Sprooch:"
save_button: Späicheren
subject: "Sujet:"
location:
edit: Änneren
no_such_user:
heading: De Benotzer {{user}} gëtt et net
title: Esou e Benotzer gëtt et net
view:
save_button: Späicheren
export:
start:
format: Format
image_size: "Gréisst vum Bild:"
licence: Lizenz
options: Optiounen
scale: Maassstab
zoom: Zoom
geocoder:
direction:
east: ëstlech
north: nërdlech
north_east: nordost
north_west: nordwest
south: südlech
south_east: südost
south_west: südwest
west: westlech
search_osm_namefinder:
suffix_place: ", {{distance}} {{direction}} vu(n) {{placename}}"
search_osm_nominatim:
prefix:
amenity:
airport: Fluchhafen
bank: Bank
bus_station: Busarrêt
cafe: Café
cinema: Kino
clinic: Klinik
crematorium: Crematoire
dentist: Zänndokter
doctors: Dokteren
driving_school: Fahrschoul
embassy: Ambassade
fire_station: Pompjeeën
fountain: Sprangbur
hospital: Klinik
hotel: Hotel
kindergarten: Spillschoul
market: Maart
marketplace: Maartplaz
mountain_rescue: Biergrettung
park: Park
pharmacy: Apdikt
police: Police
preschool: Spillschoul
prison: Prisong
restaurant: Restaurant
sauna: Sauna
school: Schoul
supermarket: Supermarché
taxi: Taxi
telephone: Telefonscabine
theatre: Theater
toilets: Toiletten
townhall: Stadhaus
university: Universitéit
building:
bunker: Bunker
chapel: Kapell
church: Kierch
hotel: Hotel
house: Haus
stadium: Stadion
terrace: Terrasse
tower: Tuerm
train_station: Gare (Eisebunn)
"yes": Gebai
highway:
footway: Fousswee
gate: Paard
motorway: Autobunn
path: Pad
road: Strooss
historic:
building: Gebai
castle: Schlass
church: Kierch
house: Haus
monument: Monument
museum: Musée
ruins: Ruinen
tower: Tuerm
landuse:
cemetery: Kierfecht
forest: Bësch
military: Militairegebitt
park: Park
railway: Eisebunn
vineyard: Wéngert
wood: Bësch
leisure:
marina: Yachthafen
miniature_golf: Minigolf
playground: Spillplaz
stadium: Stadion
swimming_pool: Schwëmm
natural:
crater: Krater
fjord: Fjord
geyser: Geysir
glacier: Gletscher
hill: Hiwwel
island: Insel
point: Punkt
river: Floss
rock: Steng
spring: Quell
tree: Bam
valley: Dall
volcano: Vulkan
water: Waasser
wood: Bësch
place:
airport: Fluchhafen
country: Land
houses: Haiser
island: Insel
region: Regioun
sea: Mier
town: Stad
village: Duerf
railway:
disused: Fréier Eisebunn
tram: Tram
shop:
bakery: Bäckerei
books: Bichergeschäft
chemist: Apdikt
clothes: Kleedergeschäft
dry_cleaning: Botzerei
hairdresser: Coiffeur
insurance: Versécherungsbüro
jewelry: Bijouterie
optician: Optiker
photo: Fotosgeschäft
shoes: Schonggeschäft
supermarket: Supermarché
travel_agency: Reesbüro
tourism:
artwork: Konschtwierk
attraction: Attraktioun
information: Informatioun
museum: Musée
picnic_site: Piknikplaz
valley: Dall
viewpoint: Aussiichtspunkt
zoo: Zoo
waterway:
canal: Kanal
river: Floss
wadi: Wadi
waterfall: Waasserfall
javascripts:
site:
edit_tooltip: Kaart änneren
layouts:
copyright: Copyright &amp; Lizenz
donate_link_text: Don
edit: Änneren
intro_3_partners: Wiki
make_a_donation:
text: En Don maachen
shop: Geschäft
user_diaries: Benotzer Bloggen
welcome_user: Wëllkomm, {{user_link}}
welcome_user_link_tooltip: Är Benotzersäit
license_page:
foreign:
english_link: den engleschen Original
title: Iwwer dës Iwwersetzung
native:
native_link: lëtzebuergesch Versioun
title: Iwwer dës Säit
message:
delete:
deleted: Message geläscht
inbox:
date: Datum
subject: Sujet
message_summary:
delete_button: Läschen
reply_button: Äntwerten
new:
send_button: Schécken
subject: Sujet
title: Noriicht schécken
no_such_user:
heading: Esou e Benotzer gëtt et net
title: Esou e Benotzer gëtt et net
outbox:
date: Datum
subject: Sujet
read:
date: Datum
reply_button: Äntwerten
sent_message_summary:
delete_button: Läschen
notifier:
diary_comment_notification:
hi: Salut {{to_user}},
email_confirm_html:
greeting: Salut,
email_confirm_plain:
greeting: Salut,
gpx_notification:
greeting: Salut,
with_description: mat der Beschreiwung
lost_password_html:
greeting: Salut,
lost_password_plain:
greeting: Salut,
signup_confirm_plain:
more_videos: "Hei si méi Videoen:"
oauth_clients:
edit:
submit: Änneren
form:
name: Numm
new:
submit: Registréieren
show:
allow_write_api: Kaart änneren
site:
edit:
user_page_link: Benotzersäit
key:
table:
entry:
golf: Golfterrain
lake:
- Séi
motorway: Autobunn
rail: Eisebunn
school:
- Schoul
- Universitéit
subway: Metro
summit:
- Spëtzt
wood: Bësch
search:
search: Sichen
submit_text: Lass
sidebar:
close: Zoumaachen
search_results: Reaultater vun der Sich
time:
formats:
friendly: "%e %B %Y ëm %H:%M"
trace:
edit:
description: "Beschreiwung:"
download: eroflueden
edit: änneren
filename: "Numm vum Fichier:"
map: Kaart
owner: "Besëtzer:"
points: "Punkten:"
save_button: Ännerunge späicheren
tags_help: Mat Komma getrennt
uploaded_at: "Eropgelueden:"
visibility: "Visibilitéit:"
visibility_help: wat heescht dat?
no_such_user:
heading: De Benotzer {{user}} gëtt et net
title: Esou e Benotzer gëtt et net
trace:
ago: viru(n) {{time_in_words_ago}}
by: vum
count_points: "{{count}} Punkten"
edit: änneren
edit_map: Kaart änneren
in: an
map: Kaart
more: méi
private: PRIVAT
public: ËFFENTLECH
view_map: Kaart weisen
trace_form:
description: Beschreiwung
help: Hëllef
upload_button: Eroplueden
upload_gpx: GPX-Fichier eroplueden
visibility: Visibilitéit
visibility_help: wat heescht dat?
trace_paging_nav:
next: Nächst &raquo;
previous: "&laquo; Vireg"
showing_page: D'Säit {{page}} gëtt gewisen
view:
description: "Beschreiwung:"
download: eroflueden
edit: änneren
filename: "Numm vum Fichier:"
map: Kaart
none: Keen
owner: "Besëtzer:"
points: "Punkten:"
uploaded: "Eropgelueden:"
visibility: "Visibilitéit:"
user:
account:
contributor terms:
link text: wat ass dëst?
current email address: "Aktuell E-Mailadress:"
delete image: Dat aktuellt Bild ewechhuelen
flash update success: Benotzerinformatioun ass elo aktualiséiert.
image: "Bild:"
keep image: Dat aktuellt Bild behalen
make edits public button: All meng Ännerunge ëffentlech maachen
my settings: Meng Astellungen
new email address: "Nei E-Mailadress:"
new image: E Bild derbäisetzen
preferred languages: "Léifste Sproochen:"
public editing:
disabled link text: Firwat kann ech net änneren?
enabled link text: wat ass dëst?
replace image: Dat aktuellt Bild ersetzen
save changes button: Ännerunge späicheren
confirm:
button: Confirméieren
heading: E Benotzerkont confirméieren
press confirm button: Klickt w.e.g. op de Knäppchen confirméieren fir Äre Benotzerkont z'aktivéieren.
confirm_email:
button: Confirméieren
go_public:
flash success: All Är Ännerunge sinn elo ëffentlech, an Dir däerft elo änneren.
list:
confirm: Erausgesichte Benotzer confirméieren
heading: Benotzer
hide: Erausgesichte Benotzer vrstoppen
title: Benotzer
login:
lost password link: Hutt Dir Äert Passwuert vergiess?
password: "Passwuert:"
webmaster: Webmaster
logout:
logout_button: Ofmellen
title: Ofmellen
lost_password:
email address: "E-Mailadress:"
heading: Passwuert vergiess?
new password button: Passwuert zrécksetzen
notice email cannot find: Déi E-Mailadress konnt net fonnt ginn, pardon
title: Passwuert vergiess
make_friend:
already_a_friend: Dir sidd schonn de Frënd vum {{name}}.
success: "{{name}} ass elo Äre Frënd."
new:
confirm email address: "E-Mailadress confirméieren:"
confirm password: "Passwuert confirméieren:"
continue: Weider
display name: Numm weisen
email address: "E-Mailadress:"
heading: E Benotzerkont uleeën
password: "Passwuert:"
no_such_user:
heading: De Benotzer {{user}} gëtt et net
title: Esou e Benotzer gëtt et net
popup:
friend: Frënn
remove_friend:
not_a_friend: "{{name}} ass kee vun Äre Frënn."
reset_password:
confirm password: "Passwuert confirméieren:"
flash changed: Äert Passwuert gouf geännert.
heading: Passwuert fir {{user}} zrécksetzen
password: "Passwuert:"
reset: Passwuert zrécksetzen
title: Passwuert zrécksetzen
suspended:
webmaster: Webmaster
terms:
agree: Akzeptéieren
consider_pd_why: wat ass dat?
legale_names:
france: Frankräich
italy: Italien
rest_of_world: Rescht vun der Welt
legale_select: "Sicht w.e.g. d'Land eraus wou Dir wunnt:"
view:
activate_user: dëse Benotzer aktivéieren
add as friend: als Frënd derbäisetzen
ago: (viru(n) {{time_in_words_ago}})
confirm: Confirméieren
confirm_user: dëse Benotzer confirméieren
create_block: dëse Benotzer spären
deactivate_user: dëse Benotzer desaktivéieren
delete_user: dëse Benotzer läschen
description: Beschreiwung
diary: Blog
edits: Ännerungen
email address: "E-Mailadress:"
hide_user: dëse Benotzer verstoppen
km away: "{{count}} km ewech"
m away: "{{count}} m ewech"
my diary: mäi Blog
my edits: meng Ännerungen
my settings: meng Astellungen
nearby users: Aner Benotzer nobäi
remove as friend: als Frënd ewechhuelen
role:
administrator: Dëse Benotzer ass en Administrateur
settings_link_text: Astellungen
unhide_user: dëse Benotzer net méi verstoppen
your friends: Är Frënn
user_block:
blocks_by:
title: Späre vum {{name}}
edit:
submit: Spär aktualiséieren
index:
title: Benotzerspären
new:
submit: Spär uleeën
partial:
confirm: Sidd Dir sécher?
display_name: Gespaarte Benotzer
edit: Änneren
reason: Grond fir d'Spär
show: Weisen
period:
one: 1 Stonn
other: "{{count}} Stonnen"
show:
confirm: Sidd Dir sécher?
edit: Änneren
heading: "{{block_on}} gespaart vum {{block_by}}"
reason: "Grond fir d'Spär:"
show: Weisen
title: "{{block_on}} gespaart vum {{block_by}}"
update:
success: Spär aktualiséiert
user_role:
filter:
already_has_role: De Benotzer huet d'Roll {{role}} schonn.
doesnt_have_role: De Benotzer huet d'Roll {{role}} net.
not_a_role: D'Zeechen '{{role}}' ass keng valabel Roll.
not_an_administrator: Nëmmen Adminstrateure kënnen d'Gstioun vun de Rolle maachen, an Dir sidd net Administrateur.
grant:
confirm: Confirméieren
revoke:
are_you_sure: Sidd Dir sécher datt Dir dem Benotzer '{{name}}' d'Roll '{{role}}' ofhuele wëllt?
confirm: Confirméieren
fail: D'Roll '{{role}}' konnt met vum Benotzer '{{name}}' ewechgeholl ginn. Kuckt w.e.g. no ob de Benotzer an d'Roll allen zwee valabel sinn.
heading: Confirméiert d'Zréckzéie vun der Roll
title: Confirméiert d'Zréckzéie vun der Roll

View file

@ -301,9 +301,9 @@ mk:
body: "Содржина:"
language: "Јазик:"
latitude: Геог. ширина
location: "Локација:"
location: "Местоположба:"
longitude: Геог. должина
marker_text: Локација на дневничкиот запис
marker_text: Место на дневничкиот запис
save_button: Зачувај
subject: "Наслов:"
title: Уреди дневничка ставка
@ -386,9 +386,9 @@ mk:
geocoder:
description:
title:
geonames: Локација од <a href="http://www.geonames.org/">GeoNames</a>
geonames: Местоположба од <a href="http://www.geonames.org/">GeoNames</a>
osm_namefinder: "{{types}} од <a href=\"http://gazetteer.openstreetmap.org/namefinder/\">OpenStreetMap Именикот</a>"
osm_nominatim: Локација од <a href="http://nominatim.openstreetmap.org/">OpenStreetMap Nominatim</a>
osm_nominatim: Местоположба од <a href="http://nominatim.openstreetmap.org/">OpenStreetMap Nominatim</a>
types:
cities: Градови
places: Места
@ -880,11 +880,12 @@ mk:
export_tooltip: Извоз на податоци од картата
gps_traces: GPS-траги
gps_traces_tooltip: Работа со GPS траги
help_wiki: Помош и вики
help_wiki_tooltip: Помош и Вики-страница за овој проект
help: Помош
help_and_wiki: "{{help}} и {{wiki}}"
help_title: Помошна страница за проектот
history: Историја
home: дома
home_tooltip: Оди на домашна локација
home_tooltip: Оди на матичната местоположба
inbox: пораки ({{count}})
inbox_tooltip:
one: Имате 1 непрочитана порака во сандачето
@ -922,6 +923,8 @@ mk:
view_tooltip: Види карта
welcome_user: Добредојде, {{user_link}}
welcome_user_link_tooltip: Ваша корисничка страница
wiki: Вики
wiki_title: Помошна страница за проектот
license_page:
foreign:
english_link: англискиот оригинал
@ -1054,6 +1057,7 @@ mk:
signup_confirm:
subject: "[OpenStreetMap] Потврдете ја вашата е-поштенска адреса"
signup_confirm_html:
ask_questions: Можете да поставувате прашања за OpenStreetMap на нашата <a href="http://help.openstreetmap.org/">страница за прашања и одговори</a>.
click_the_link: Ако ова сте вие, добредојдовте! Кликнете на врската подолу за да ја потврдите таа сметка и да прочитате повеќе информации за OpenStreetMap
current_user: На <a href="http://wiki.openstreetmap.org/wiki/Category:Users_by_geographical_region">Категорија:Корисници_по_географски_регион</a> ќе најдете список на тековни корисници во категории, зависно од нивната местоположба во светот.
get_reading: Читајте за OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide">на викито</a>, информирајте се за најновите збиднувања преку <a href="http://blog.openstreetmap.org/">OpenStreetMap блогот</a> или <a href="http://twitter.com/openstreetmap">Twitter</a>, или пак прелистајте го<a href="http://www.opengeodata.org/">блогот „OpenGeoData“</a> на основачот на OpenStreetMap, Стив Коуст за историја на проектот, заедно со <a href="http://www.opengeodata.org/?cat=13">под-емитувања</a>!
@ -1066,11 +1070,12 @@ mk:
video_to_openstreetmap: воведен видеоклип за OpenStreetMap
wiki_signup: Препорачуваме да <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Main_Page">се регистрирате на викито на OpenStreetMap</a>.
signup_confirm_plain:
ask_questions: "Можете да поставувате прашања за OpenStreetMap на нашата страница за прашања и одговори:"
blog_and_twitter: "Бидете информирани за најновите збиднувања преку блогот на OpenStreetMap blog или Twitter:"
click_the_link_1: Ако ова сте вие, добредојдовте! Кликнете на врската подолу за да ја потврдите
click_the_link_2: сметка и прочитајте повеќе за дополнителни информации за OpenStreetMap.
current_user_1: Список на тековни корисници во категории, врз основа на нивната местоположба во светот
current_user_2: "локација во светот ќе најдете на:"
current_user_2: "местоположба во светот ќе најдете на:"
greeting: Здраво!
hopefully_you: Некој (се надеваме, Вие) сака да отвори сметка на
introductory_video: "Погледајте го воведниот видеоклип за OpenStreetMap тука:"
@ -1240,7 +1245,7 @@ mk:
search_help: "примери: 'Струмица', 'Илинденска', 'Regent Street, Cambridge', 'CB2 5AQ' или 'post offices near Lünen' <a href='http://wiki.openstreetmap.org/wiki/Search'>повеќе примери...</a>"
submit_text: ->
where_am_i: Каде сум?
where_am_i_title: Опишете ја моменталната локација со помош на пребарувачот
where_am_i_title: Опишете ја моменталната местоположба со помош на пребарувачот
sidebar:
close: Затвори
search_results: Резултати од пребарувањето
@ -1361,7 +1366,7 @@ mk:
email never displayed publicly: (никогаш не се прикажува јавно)
flash update success: Корисничките информации се успешно ажурирани.
flash update success confirm needed: Корисничките информации се успешно ажурирани. Проверете е-пошта за да ја потврдите на адресата.
home location: "Домашна локација:"
home location: "Матична местоположба:"
image: "Слика:"
image size hint: (најдобро работат квадратни слики, барем 100x100)
keep image: Задржи ја тековната слика
@ -1371,7 +1376,7 @@ mk:
my settings: Мои прилагодувања
new email address: "Нова е-поштенска адреса:"
new image: Додај слика
no home location: Немате внесено домашна локација.
no home location: Немате внесено матична местоположба.
preferred languages: "Претпочитани јазици:"
profile description: "Опис за профилот:"
public editing:
@ -1388,7 +1393,7 @@ mk:
return to profile: Назад кон профилот
save changes button: Зачувај ги промените
title: Уреди сметка
update home location on click: Подновувај ја домашната локација кога ќе кликнам на картата
update home location on click: Подновувај го матичната местоположба кога ќе кликнам на картата
confirm:
button: Потврди
failure: Веќе имаме потврдено корисничка сметка со овој жетон.
@ -1471,7 +1476,7 @@ mk:
popup:
friend: Пријател
nearby mapper: Соседен картограф
your location: Ваша локација
your location: Ваша местоположба
remove_friend:
not_a_friend: "{{name}} не е меѓу вашите пријатели."
success: Корисникот {{name}} е отстранет од вашите пријатели.
@ -1480,11 +1485,11 @@ mk:
flash changed: Лозинката ви е сменета.
flash token bad: Не го пронајдов тој жетон. Проверете ја URL адресата.
heading: Смени лозинка за {{user}}
password: Лозинка
password: "Лозинка:"
reset: Смени лозинка
title: Смени лозинка
set_home:
flash success: Домашната локација е успешно зачувана
flash success: Матичната местоположба е успешно зачувана
suspended:
body: "<p>\n Нажалост, вашата сметка беше автоматски закочена поради\n сомнителни активности.\n</p>\n<p>\n Донесената одлуката набргу ќе ја прегледа администратор, но\n можете да се обратите кај {{webmaster}} ако сакате да продискутирате за овој проблем.\n</p>"
heading: Сметката е закочена
@ -1521,7 +1526,7 @@ mk:
edits: уредувања
email address: Е-пошта
hide_user: сокриј го корисников
if set location: Ако ја наместите вашата локација, под ова ќе ви се појави убава карта и други работи. Домашната локација можете да си ја наместите на страницата {{settings_link}}.
if set location: Ако ја наместите вашата местоположба, под ова ќе ви се појави убава карта и други работи. Матичната местоположба можете да си ја наместите на страницата {{settings_link}}.
km away: "{{count}}km од вас"
m away: "{{count}}m од вас"
mapper since: "Картограф од:"
@ -1551,7 +1556,7 @@ mk:
status: "Статус:"
traces: траги
unhide_user: покажи го корисникот
user location: Локација на корисникот
user location: Местоположба на корисникот
your friends: Ваши пријатели
user_block:
blocks_by:

View file

@ -883,8 +883,9 @@ nl:
export_tooltip: Kaartgegevens exporteren
gps_traces: GPS-tracks
gps_traces_tooltip: GPS-tracks beheren
help_wiki: Help &amp; wiki
help_wiki_tooltip: Help en wikisite voor het project
help: Hulp
help_and_wiki: "{{help}} en {{wiki}}"
help_title: Helpsite voor dit project
history: Geschiedenis
home: home
home_tooltip: Naar thuislocatie gaan
@ -923,6 +924,8 @@ nl:
view_tooltip: Kaart bekijken
welcome_user: Welkom, {{user_link}}
welcome_user_link_tooltip: Uw gebruikerspagina
wiki: wiki
wiki_title: Wikisite voor het project
license_page:
foreign:
english_link: Engelstalige origineel
@ -1055,6 +1058,7 @@ nl:
signup_confirm:
subject: "[OpenStreetMap] Bevestig uw e-mailadres"
signup_confirm_html:
ask_questions: U kunt vragen stellen over OpenStreetMap op onze <a href="http://help.openstreetmap.org/">vraag en antwoordsite</a>.
click_the_link: Als u dat bent, welkom! Volg de verwijzing hieronder beneden om uw gebruiker bevestigen en om meer over OpenStreetMap te weten te komen
current_user: Een lijst van gebruikers, gesorteerd op woonplaats, is te zien op <a href="http://wiki.openstreetmap.org/wiki/Category:Users_by_geographical_region">Category:Users_by_geographical_region</a>.
get_reading: Lees over OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide">op de wiki</a>, volg het laatste nieuws op de <a href="http://blog.openstreetmap.org/">OpenStreetMap-blog</a> of via <a href="http://twitter.com/openstreetmap">Twitter</a>. Lees ook de <a href="http://www.opengeodata.org/">OpenGeoData-blog</a> van OpenSteetMap-grondlegger Steve Coast, die ook <a href="http://www.opengeodata.org/?cat=13">podcasts</a> aanbiedt!
@ -1067,6 +1071,7 @@ nl:
video_to_openstreetmap: introductievideo over OpenStreetMap bekijken
wiki_signup: U kunt zich ook <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Main_Page">registreren op de OpenStreetMap-wiki</a>.
signup_confirm_plain:
ask_questions: "U kunt vragen stellen over OpenStreetMap op onze vraag en antwoordsite:"
blog_and_twitter: "Volg het laatste nieuws via de OpenStreetMap-blog of Twitter:"
click_the_link_1: Als u dat bent, welkom! Volg de verwijzing hieronder om uw gebruiker te bevestigen
click_the_link_2: en om meer informatie over OpenStreetMap te krijgen.

View file

@ -93,7 +93,7 @@
title: Endringssett
changeset_details:
belongs_to: "Tilhører:"
bounding_box: "Bounding box:"
bounding_box: "Avgrensingsboks:"
box: boks
closed_at: "Lukket:"
created_at: "Opprettet:"
@ -106,7 +106,7 @@
has_ways:
one: "Har følgende {{count}} vei:"
other: "Har følgende {{count}} veier:"
no_bounding_box: Ingen bounding box er lagret for dette endringssettet.
no_bounding_box: Ingen avgrensingsboks er lagret for dette endringssettet.
show_area_box: Vis boks for område
common_details:
changeset_comment: "Kommentar:"
@ -218,7 +218,7 @@
way: Vei
private_user: privat bruker
show_history: Vis historikk
unable_to_load_size: "Klarte ikke laste inn: Bounding box med størrelse [[bbox_size]] er for stor (må være mindre enn {{max_bbox_size}})"
unable_to_load_size: "Klarte ikke laste inn: Avgrensingsboks med størrelse [[bbox_size]] er for stor (må være mindre enn {{max_bbox_size}})"
wait: Vent ...
zoom_or_select: Zoom inn eller velg et område av kartet for visning
tag_details:
@ -530,8 +530,10 @@
chapel: Kapell
church: Kirke
city_hall: Rådhus
commercial: Kommersiell bygning
dormitory: Sovesal
entrance: Bygningsinngang
faculty: Fakultetsbygning
farm: Gårdsbygg
flats: Leiligheter
garage: Garasje
@ -543,6 +545,7 @@
office: Kontorbygg
public: Offentlig bygg
residential: Boligbygg
retail: Detaljsalgbygg
school: Skolebygg
shop: Butikk
stadium: Stadion
@ -554,6 +557,7 @@
"yes": Bygning
highway:
bridleway: Ridevei
bus_guideway: Ledet bussfelt
bus_stop: Busstopp
byway: Stikkvei
construction: Motorvei under konstruksjon
@ -561,20 +565,27 @@
distance_marker: Avstandsmarkør
emergency_access_point: Nødtilgangspunkt
footway: Gangsti
ford: Vadested
gate: Bom
living_street: Gatetun
minor: Mindre vei
motorway: Motorvei
motorway_junction: Motorveikryss
motorway_link: Vei til motorvei
path: Sti
pedestrian: Gangvei
platform: Perrong
primary: Primær vei
primary_link: Primær vei
raceway: Racerbane
residential: Bolig
road: Vei
secondary: Sekundær vei
secondary_link: Sekundær vei
service: Tjenestevei
services: Motorveitjenester
steps: Trapper
stile: Stige
tertiary: Tertiær vei
track: Sti
trail: Sti
@ -600,14 +611,19 @@
tower: Tårn
wreck: Vrak
landuse:
allotments: Kolonihager
basin: Elveområde
brownfield: Tidligere industriområde
cemetery: Gravplass
commercial: Kommersielt område
conservation: Fredet
construction: Kontruksjon
farm: Gård
farmland: Jordbruksland
farmyard: Gårdstun
forest: Skog
grass: Gress
greenfield: Ikke-utviklet område
industrial: Industriområde
landfill: Landfylling
meadow: Eng
@ -616,11 +632,15 @@
mountain: Fjell
nature_reserve: Naturreservat
park: Park
piste: Løype
plaza: Torg
quarry: Steinbrudd
railway: Jernbane
recreation_ground: Idrettsplass
reservoir: Reservoar
residential: Boligområde
retail: Detaljsalg
village_green: landsbypark
vineyard: Vingård
wetland: Våtland
wood: Skog
@ -635,6 +655,7 @@
miniature_golf: Minigolf
nature_reserve: Naturreservat
park: Park
pitch: Sportsarena
playground: Lekeplass
recreation_ground: Idrettsplass
slipway: Slipp
@ -715,18 +736,24 @@
junction: Jernbanekryss
light_rail: Bybane
monorail: Enskinnebane
narrow_gauge: Smalspor jernbane
platform: Jernbaneperrong
preserved: Bevart jernbane
spur: Jernbaneforgrening
station: Jernbanestasjon
subway: T-banestasjon
subway_entrance: T-baneinngang
switch: Sporveksel
tram: Sporvei
tram_stop: Trikkestopp
yard: Skiftetomt
shop:
alcohol: Utenfor lisens
apparel: Klesbutikk
art: Kunstbutikk
bakery: Bakeri
beauty: Skjønnhetssalong
beverages: Drikkevarerbutikk
bicycle: Sykkelbutikk
books: Bokhandel
butcher: Slakter
@ -739,6 +766,7 @@
chemist: Kjemiker
clothes: Klesbutikk
computer: Databutikk
confectionery: Konditori
convenience: Nærbutikk
copyshop: Kopieringsbutikk
cosmetics: Kosmetikkforretning
@ -754,6 +782,7 @@
fish: Fiskebutikk
florist: Blomsterbutikk
food: Matbutikk
funeral_directors: Begravelsesforretning
furniture: Møbler
gallery: Galleri
garden_centre: Hagesenter
@ -783,6 +812,7 @@
shoes: Skobutikk
shopping_centre: Kjøpesenter
sports: Sportsbutikk
stationery: Papirbutikk
supermarket: Supermarked
toys: Lekebutikk
travel_agency: Reisebyrå
@ -810,16 +840,25 @@
viewpoint: Utsiktspunkt
zoo: Dyrepark
waterway:
boatyard: Båthan
canal: Kanal
connector: Vannveiforbindelse
dam: Demning
ditch: Grøft
dock: Dokk
drain: Avløp
lock: Sluse
lock_gate: Sluseport
mineral_spring: Mineralkilde
mooring: Fortøyning
rapids: Stryk
river: Elv
riverbank: Elvebredd
stream: Strøm
wadi: Elveleie
water_point: Vannpunkt
waterfall: Foss
weir: Overløpskant \
javascripts:
map:
base:
@ -841,8 +880,6 @@
export_tooltip: Eksporter kartdata
gps_traces: GPS-spor
gps_traces_tooltip: Behandle GPS-spor
help_wiki: Hjelp &amp; Wiki
help_wiki_tooltip: Hjelp- &amp; Wiki-side for prosjektet
history: Historikk
home: hjem
home_tooltip: Gå til hjemmeposisjon
@ -1121,15 +1158,17 @@
shortlink: Kort lenke
key:
map_key: Kartforklaring
map_key_tooltip: Kartforklaring for Mapnik-visninen på dette zoom-nivået
map_key_tooltip: Kartforklaring for Mapnik-visningen på dette zoom-nivået
table:
entry:
admin: Administrativ grense
allotments: Kolonihager
apron:
- terminal
- terminal
bridge: Sort kant = bru
bridleway: Ridevei
brownfield: Tidligere industriområde
building: Viktig bygning
byway: Stikkvei
cable:
@ -1148,6 +1187,7 @@
footway: Gangvei
forest: Skog
golf: Golfbane
heathland: Heilandskap
industrial: Industriområde
lake:
- Innsjø
@ -1156,12 +1196,13 @@
motorway: Motorvei
park: Park
permissive: Betinget tilgang
pitch: Sportsarena
primary: Primær vei
private: Privat tilgang
rail: Jernbane
reserve: Naturreservat
resident: Boligområde
retail: Militært område
retail: Detaljsalgområde
runway:
- Flystripe
- taksebane
@ -1359,6 +1400,9 @@
empty: Ingen samsvarende brukere funnet
heading: Brukere
hide: Skjul valgte brukere
showing:
one: Viser side {{page}} ({{page}} av {{page}})
other: Viser side {{page}} ({{page}}-{{page}} av {{page}})
summary: "{{name}} opprettet fra {{ip_address}} den {{date}}"
summary_no_ip: "{{name}} opprettet {{date}}"
title: Brukere
@ -1371,6 +1415,7 @@
heading: Logg inn
login_button: Logg inn
lost password link: Mistet passordet ditt?
notice: <a href="http://www.osmfoundation.org/wiki/License/We_Are_Changing_The_License">Finn ut mer om OpenStreetMap sitt kommende bytte av lisens</a> (<a href="http://wiki.openstreetmap.org/wiki/ODbL/We_Are_Changing_The_License">oversettelser</a>) (<a href="http://wiki.openstreetmap.org/wiki/Talk:ODbL/Upcoming">diskusjon</a>)
password: "Passord:"
please login: Logg inn eller {{create_user_link}}.
remember: "Huske meg:"
@ -1446,6 +1491,7 @@
italy: Italia
rest_of_world: Resten av verden
legale_select: "Velg ditt bostedsland:"
read and accept: Les avtalen nedenfor og trykk godkjenningsknapp for å bekrefte at du godtar betingelsene i denne avtalen for dine eksisterende og kommende bidrag.
title: Bidragsytervilkår
view:
activate_user: aktiver denne brukeren
@ -1577,6 +1623,7 @@
needs_view: Brukeren må logge inn før denne blokkeringen blir fjernet.
reason: "Årsak for blokkering:"
revoke: Tilbakekall!
revoker: "Tilbakekaller:"
show: Vis
status: Status
time_future: Slutter om {{time}}

View file

@ -882,8 +882,6 @@ pl:
export_tooltip: Eksport danych mapy
gps_traces: Ślady GPS
gps_traces_tooltip: Zarządzanie śladami GPS
help_wiki: Pomoc &amp; Wiki
help_wiki_tooltip: Pomoc i strony Wiki projektu
history: Zmiany
home: główna
home_tooltip: Przejdź do strony głównej

View file

@ -901,9 +901,9 @@ pt-BR:
export_tooltip: Exportar dados do mapa
gps_traces: Trilhas GPS
gps_traces_tooltip: Gerenciar trilhas GPS
help_wiki: Ajuda & Wiki
help_wiki_tooltip: Ajuda &amp; Wiki do projeto
help_wiki_url: http://wiki.openstreetmap.org/wiki/Pt-br:Main_Page?uselang=pt-br
help: Ajuda
help_and_wiki: "{{help}} & {{wiki}}"
help_title: Site de ajuda para o projeto
history: Histórico
home: início
home_tooltip: Ir para a sua localização
@ -950,6 +950,8 @@ pt-BR:
view_tooltip: Veja o mapa
welcome_user: Bem vindo, {{user_link}}
welcome_user_link_tooltip: Sua Página de usuário
wiki: Wikia
wiki_title: Site wiki para o projeto
license_page:
foreign:
english_link: o original em Inglês

View file

@ -12,6 +12,7 @@
# Author: Lockal
# Author: Yuri Nazarov
# Author: Александр Сигачёв
# Author: Сrower
ru:
activerecord:
attributes:
@ -892,9 +893,9 @@ ru:
export_tooltip: Экспортировать данные карты
gps_traces: GPS-треки
gps_traces_tooltip: Работать с GPS треками
help_wiki: Справка и вики
help_wiki_tooltip: Справка и вики-сайт проекта
help_wiki_url: http://wiki.openstreetmap.org/wiki/RU:Main_Page?uselang=ru
help: Помощь
help_and_wiki: "{{help}} & {{wiki}}"
help_title: Сайт помощи проекта
history: История
home: домой
home_tooltip: Показать мой дом
@ -934,6 +935,8 @@ ru:
view_tooltip: Посмотреть карту
welcome_user: Добро пожаловать, {{user_link}}
welcome_user_link_tooltip: Ваша страница пользователя
wiki: Вики
wiki_title: Вики-сайт проекта
license_page:
foreign:
english_link: английского оригинала
@ -1067,6 +1070,7 @@ ru:
signup_confirm:
subject: "[OpenStreetMap] Подтвердите ваш адрес электронной почты"
signup_confirm_html:
ask_questions: Вы можете задать интересующие Вас вопросы о OpenStreetMap на нашем <a href="http://help.openstreetmap.org/">сайте вопросов и ответов</a> .
click_the_link: Если это действительно вы — добро пожаловать! Пожалуйста, перейдите по ссылке ниже, чтобы подтвердить регистрацию и просмотреть дополнительную информацию об OpenStreetMap
current_user: "Список пользователей, основанный на их местоположении, доступен здесь: <a href=\"http://wiki.openstreetmap.org/index.php?title=Category:Users_by_geographical_region&uselang=ru\">Category:Users_by_geographical_region</a>."
get_reading: Прочтите об OpenStreetMap в <a href="http://wiki.openstreetmap.org/index.php?title=RU:Beginners_Guide&uselang=ru">вики</a>, узнайте последние новости в <a href="http://blog.openstreetmap.org/">блоге OpenStreetMap</a> или в <a href="http://twitter.com/openstreetmap">Twitter</a>. Ознакомьтесь с историей проекта в <a href="http://www.opengeodata.org/">блоге OpenGeoData</a>, автором которого является Стив Коуст (Steve Coast), основатель OpenStreetMap, в этом блоге есть <a href="http://www.opengeodata.org/?cat=13">подкасты</a>, которые также можно прослушать!
@ -1079,6 +1083,7 @@ ru:
video_to_openstreetmap: ознакомительное видео об OpenStreetMap
wiki_signup: Вы можете <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Ru:Main_Page&uselang=ru">зарегистрироваться в вики OpenStreetMap</a>.
signup_confirm_plain:
ask_questions: "Вы можете задать интересующие Вас вопросы об OpenStreetMap на нашем сайте вопросов и ответов:"
blog_and_twitter: "Ознакомиться с последними новостями через блог OpenStreetMap или Twitter:"
click_the_link_1: Если это действительно вы — добро пожаловать! Пожалуйста, перейдите по ссылке ниже, чтобы подтвердить
click_the_link_2: регистрацию и прочитать больше об OpenStreetMap.

View file

@ -829,8 +829,6 @@ sk:
export_tooltip: Export mapových dát
gps_traces: GPS Stopy
gps_traces_tooltip: Správa GPS stopy
help_wiki: Pomocník &amp; Wiki
help_wiki_tooltip: Help &amp; Wiki stránka projektu
history: História
home: domov
home_tooltip: Choďte na domácu polohu

View file

@ -479,9 +479,6 @@ sl:
export_tooltip: Izvozite podatke zemljevida
gps_traces: GPS sledi
gps_traces_tooltip: Upravljaj sledi GPS
help_wiki: Pomoč in Wiki
help_wiki_tooltip: Pomoč in Wiki strani projekta
help_wiki_url: http://wiki.openstreetmap.org/wiki/Sl:Main_Page?uselang=sl
history: Zgodovina
home: domov
home_tooltip: Prikaži domači kraj

File diff suppressed because one or more lines are too long

View file

@ -683,7 +683,11 @@ sv:
cycle_map: Cykelkarta
noname: NoName
site:
edit_disabled_tooltip: Zooma in för att redigera kartan
edit_tooltip: Redigera kartan
edit_zoom_alert: Du måste zooma in för att kunna ändra kartan
history_disabled_tooltip: Zooma in för att kunna se karteringshistorik för detta område
history_tooltip: Visa ändringar för detta område
history_zoom_alert: Du måste zooma in för att kunna se karteringshistorik.
layouts:
donate: Donera till OpenStreetMap via {{link}} till hårdvaruuppgraderingsfonden.
@ -692,9 +696,7 @@ sv:
export: Exportera
export_tooltip: Exportera kartdata som bild eller rådata
gps_traces: GPS-spår
gps_traces_tooltip: Hantera spår
help_wiki: Hjälp &amp; wiki
help_wiki_tooltip: Hjälp och wiki för projektet
gps_traces_tooltip: Visa, ladda upp och ändra GPS-spår.
history: Historik
home: hem
home_tooltip: Gå till hempositionen
@ -878,6 +880,7 @@ sv:
map_key: Kartnyckel
table:
entry:
admin: Administrativ gräns
allotments: Koloniträdgårdar
apron:
- Flygplatsterminal
@ -931,7 +934,7 @@ sv:
heading: Symbolförklaring för z{{zoom_level}}
search:
search: Sök
search_help: "exempel: 'Delsbo', 'Storgatan, Svedala', 'post offices near Hässelby' <a href='http://wiki.openstreetmap.org/wiki/Sv:Search'>Fler exempel..</a>"
search_help: "exempel: 'Delsbo', 'Storgatan, Svedala', <a href='http://wiki.openstreetmap.org/wiki/Sv:Search'>Fler exempel..</a>"
submit_text:
where_am_i: Var är jag
sidebar:

View file

@ -889,9 +889,6 @@ uk:
export_tooltip: Експортувати картографічні дані
gps_traces: GPS-треки
gps_traces_tooltip: Управління GPS треками
help_wiki: Довідка та Вікі
help_wiki_tooltip: Довідка та Вікі проекту
help_wiki_url: http://wiki.openstreetmap.org/wiki/Uk:Main_Page?uselang=uk
history: Історія
home: додому
home_tooltip: Показати моє місце знаходження

View file

@ -796,9 +796,9 @@ vi:
export_tooltip: Xuất dữ liệu bản đồ
gps_traces: Tuyến đường GPS
gps_traces_tooltip: Quản lý tuyến đường GPS
help_wiki: Trợ giúp &amp; Wiki
help_wiki_tooltip: Site trợ giúp &amp; wiki của dự án
help_wiki_url: http://wiki.openstreetmap.org/wiki/Vi:Main_Page?uselang=vi
help: Trợ giúp
help_and_wiki: "{{help}} & {{wiki}}"
help_title: Trang trợ giúp của dự án
history: Lịch sử
home: nhà
home_tooltip: Về vị trí nhà
@ -840,6 +840,8 @@ vi:
view_tooltip: Xem bản đồ
welcome_user: Hoan nghênh, {{user_link}}
welcome_user_link_tooltip: Trang cá nhân của bạn
wiki: Wiki
wiki_title: Trang wiki của dự án
license_page:
foreign:
english_link: nguyên bản tiếng Anh
@ -973,6 +975,7 @@ vi:
signup_confirm:
subject: "[OpenStreetMap] Xác nhận địa chỉ thư điện tử của bạn"
signup_confirm_html:
ask_questions: Có thể đặt bất kỳ câu hỏi mà bạn có về OpenStreetMap tại <a href="http://help.openstreetmap.org/">trang hỏi đáp</a>.
click_the_link: Nếu bạn là người đó, hoan nghênh! Xin hãy nhấn chuột vào liên kết ở dưới để xác nhân tài khoản đó và đọc tiếp để tìm hiểu thêm về OpenStreetMap.
current_user: Có danh sách các người dùng, xếp thể loại theo nơi ở, tại <a href="http://wiki.openstreetmap.org/wiki/Category:Users_by_geographical_region?uselang=vi">Category:Users by geographical region</a>.
get_reading: Bắt đầu tìm hiểu về OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Vi:Beginners%27_Guide?uselang=vi">tại wiki</a>, theo dõi tin tức gần đây tại <a href="http://blog.openstreetmap.org/">blog OpenGeoData</a> hay <a href="http://twitter.com/openstreetmap">Twitter</a>, hoặc đọc <a href="http://www.opengeodata.org/">blog</a> và nghe <a href="http://www.opengeodata.org/?cat=13">podcast</a> của nhà sáng lập Steve Coast!
@ -985,6 +988,7 @@ vi:
video_to_openstreetmap: video giới thiệu về OpenStreetMap
wiki_signup: Có lẽ bạn cũng muốn <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Vi:Main_Page&uselang=vi">mở tài khoản ở wiki OpenStreetMap</a>.
signup_confirm_plain:
ask_questions: "Có thể đặt bất kỳ câu hỏi mà bạn có về OpenStreetMap tại trang hỏi đáp:"
blog_and_twitter: "Theo dõi tin tức gần đây tại blog OpenStreetMap và Twitter:"
click_the_link_1: Nếu bạn là người đó, hoan nghênh! Xin hãy nhấn chuột vào liên kết ở dưới để
click_the_link_2: xác nhận tài khoản của bạn và đọc tiếp để tìm hiểu thêm về OpenStreetMap.

View file

@ -269,7 +269,6 @@ zh-CN:
export_tooltip: 输出地图数据
gps_traces: GPS 追踪
gps_traces_tooltip: 管理追踪
help_wiki: 帮助 &amp; Wiki
history: 历史
home: 主页
home_tooltip: 回到主页位置

View file

@ -454,8 +454,6 @@ zh-TW:
export_tooltip: 匯出地圖資料
gps_traces: GPS 軌跡
gps_traces_tooltip: 管理 GPS 軌跡
help_wiki: 求助 &amp; Wiki
help_wiki_tooltip: 本計畫的求助 &amp; Wiki 網站
history: 歷史
home:
home_tooltip: 移至家位置

View file

@ -24,4 +24,3 @@ police amenity=police
place_of_worship amenity=place_of_worship
museum tourism=museum
school amenity=school
disaster building=yes;earthquake_damage=(type damage here)

View file

@ -1,6 +1,7 @@
# Messages for Czech (Česky)
# Exported from translatewiki.net
# Export driver: syck
# Author: Mormegil
cs:
a_poi: $1 bod zájmu
a_way: $1 cestu
@ -56,7 +57,7 @@ cs:
prompt_launch: Otevřít externí webovou adresu?
prompt_revertversion: "Vrátit se ke dříve uložené verzi:"
prompt_savechanges: Uložit změny
prompt_taggedpoints: Některé uzle této cesty mají tagy, opravdu smazat?
prompt_taggedpoints: Některé body na této cestě jsou označené nebo v relacích. Opravdu smazat?
prompt_track: Převede vaši GPS stopu na (uzamčené) cesty, které následně můžete upravit.
prompt_welcome: Vítejte na OpenStreetMap
save: Uložit změny
@ -66,7 +67,7 @@ cs:
tip_anticlockwise: Proti směru hodinových ručiček (kliknutím otočíte směr kruhové cesty)
tip_clockwise: Po směru hodinových ručiček (kliknutím otočíte směr kruhové cesty)
tip_direction: Směr cesty (kliknutím otočíte)
tip_gps: Zobrazit GPX stopy (GPS logy) (G)
tip_gps: Zobrazit GPS stopy (G)
tip_noundo: Není, co vzít zpět
tip_options: Možnosti (vyberte si mapu na pozadí)
tip_presettype: Zvolit skupinu předvoleb v menu.

View file

@ -2,6 +2,7 @@
# Exported from translatewiki.net
# Export driver: syck
# Author: Mvrban
# Author: SpeedyGonsales
hr:
a_poi: $1 POI (točka interesa)
a_way: $1 put
@ -64,7 +65,7 @@ hr:
emailauthor: \n\nMolim pošalji e-mail richard\@systemeD.net sa izvješćem o bug-u, recite što ste radili u to vrijeme.
error_anonymous: Ne možete kontaktirati anonimnog mappera.
error_connectionfailed: Žao mi je, veza sa OpenstreetMap serverom nije uspjela. Neke nedavne promjene nisu spremljene.\n\nŽelite li pokušati ponovno?
error_microblog_long: "Slanje na $1 nije uspjelo:\nHTTP code: $2\nPoruka o grešci: $3\n$1 greška: $4"
error_microblog_long: "Slanje na $1 nije uspjelo:\nHTTP kod pogreške: $2\nTekst pogreške: $3\n$1 pogreška: $4"
error_nopoi: POI se ne može naći (možda ste pomakli kartu), tako da ne mogu poništiti.
error_nosharedpoint: Putevi $1 i $2 više ne dijele zajedničku točku, pa se ne mogu razdvojiti.
error_noway: Put $1 se ne može pronaći (možda ste pomakli kartu?), pa ne mogu poništiti.
@ -129,19 +130,22 @@ hr:
option_layer_ooc_25k: UK povijesni 1:25k
option_layer_ooc_7th: "UK povijesni: 7th"
option_layer_ooc_npe: "UK povijesni: NPE"
option_layer_ooc_scotland: "UK povijesni: Škotska"
option_layer_os_streetview: "UK: OS pregled ulica"
option_layer_streets_haiti: "Haiti: imena ulica"
option_layer_surrey_air_survey: "UK: Surrey fotografije iz zraka"
option_layer_tip: Izaberite pozadinu za prikaz
option_limitways: Upozori kada se učitava puno podataka
option_microblog_id: "Naziv Microbloga:"
option_microblog_pwd: "Microblog lozinka:"
option_noname: Osvjetli neimenovane ceste
option_photo: "Fotografija KML:"
option_thinareas: Koristi take linije za područja
option_thinareas: Koristi tanke linije za područja
option_thinlines: Koristi tanke linije u svim uvećanjima
option_tiger: Osvjetli nepromjenjeni TIGER
option_warnings: Prikaži plutajuća upozorenja
point: Točka
preset_icon_airport: Aerodrom
preset_icon_airport: Zračna luka
preset_icon_bar: Bar
preset_icon_bus_stop: Autobusno stajalište
preset_icon_cafe: Caffe bar
@ -189,7 +193,7 @@ hr:
retry: Pokušaj ponovo
revert: Vrati na staro
save: Spremi
tags_backtolist: Povratak na listu
tags_backtolist: Povratak na popis
tags_descriptions: Opisi '$1'
tags_findatag: Pronađi oznaku (tag)
tags_findtag: Pronađi oznaku (tag)
@ -217,8 +221,8 @@ hr:
uploading_deleting_ways: Brišem puteve
uploading_poi: Uploadiram POI $1
uploading_poi_name: Uploadiram POI $1, $2
uploading_relation: Upoloadiram relaciju $1
uploading_relation_name: Uploadiram relaciju $1, $2
uploading_relation: Snimam relaciju $1 na poslužitelj
uploading_relation_name: Snimam relaciju $1, $2 na poslužitelj
uploading_way: Uploadiram put $1
uploading_way_name: Uploadiram put $1, $2
warning: Upozorenje!

View file

@ -5,8 +5,10 @@
lb:
a_way: $1 ee Wee
action_deletepoint: e Punkt läschen
action_mergeways: Zwee Weeër zesummeleeën
action_movepoint: e Punkt réckelen
action_splitway: e Wee opdeelen
advanced: Erweidert
advanced_inspector: Inspekter
advanced_maximise: Fënster maximéieren
advanced_minimise: Fënster minimiséieren
@ -22,12 +24,16 @@ lb:
delete: Läschen
deleting: läschen
heading_drawing: Zeechnen
heading_introduction: Aféierung
help: Hëllef
hint_loading: Donnéeë lueden
inspector: Inspekter
inspector_duplicate: Doublon vu(n)
inspector_locked: Gespaart
inspector_node_count: ($1 mol)
inspector_unsaved: Net gespäichert
inspector_uploading: (eroplueden)
inspector_way_nodes: $1 Kniet
loading: Lueden...
login_pwd: "Passwuert:"
login_uid: "Benotzernumm:"
@ -37,10 +43,15 @@ lb:
offset_motorway: Autobunn (D3)
ok: OK
option_layer_cycle_map: OSM - Vëloskaart
option_layer_nearmap: "Australien: NearMap"
option_layer_os_streetview: "UK : OS StreetView"
option_layer_streets_haiti: "Haiti: Stroossennimm"
option_photo: "Foto-KML:"
point: Punkt
preset_icon_airport: Fluchhafen
preset_icon_bar: Bar
preset_icon_bus_stop: Busarrêt
preset_icon_cafe: Café
preset_icon_cinema: Kino
preset_icon_disaster: Haiti Gebai
preset_icon_ferry_terminal: Fähr
@ -50,24 +61,40 @@ lb:
preset_icon_museum: Musée
preset_icon_parking: Parking
preset_icon_pharmacy: Apdikt
preset_icon_police: Policebüro
preset_icon_post_box: Bréifboîte
preset_icon_pub: Bistro
preset_icon_recycling: Recyclage
preset_icon_restaurant: Restaurant
preset_icon_school: Schoul
preset_icon_station: Gare
preset_icon_supermarket: Supermarché
preset_icon_telephone: Telefon
preset_icon_theatre: Theater
prompt_addtorelation: $1 bäi eng Relatioun derbäisetzen
prompt_changesetcomment: "Gitt eng Beschreiwung vun Ären Ännerungen:"
prompt_editlive: Live änneren
prompt_editsave: Mat späicheren änneren
prompt_helpavailable: Neie Benotzer? Kuckt ënne lenks fir Hëllef.
prompt_launch: Extern URL opmaachen
prompt_revertversion: "Op eng méi fréi gespäichert Versioun zerécksetzen:"
prompt_savechanges: Ännerunge späicheren
prompt_welcome: Wëllkomm op OpenStreetMap!
retry: Nach eng Kéier probéieren
revert: Zrécksetzen
save: Späicheren
tags_backtolist: Zréck op d'Lëscht
tags_descriptions: Beschreiwunge vu(n) '$1'
tip_alert: Et ass e Feeler geschitt - klickt hei fir weider Detailer
tip_options: Optiounen astellen (Sicht den Hannergrond vun der Kaart eraus)
tip_photo: Fotoe lueden
tip_undo: $1 réckgängeg maachen (Z)
uploading: Eroplueden...
uploading_deleting_ways: Weeër läschen
uploading_poi: POI $1 eroplueden
uploading_poi_name: POI $1, $2 eroplueden
uploading_relation: Realtioun $1 eroplueden
uploading_way: Wee $1 eroplueden
warning: Warnung
way: Wee
"yes": Jo

File diff suppressed because one or more lines are too long

View file

@ -2,6 +2,7 @@
# Exported from translatewiki.net
# Export driver: syck
# Author: BraulioBezerra
# Author: Giro720
# Author: Luckas Blade
# Author: Nighto
# Author: Rodrigo Avila
@ -197,7 +198,7 @@ pt-BR:
prompt_manyways: Esta área contém muitos detalhes e demorará muito para carregar. Você prefere aproximar?
prompt_microblog: Enviando para $1 ($2 restantes)
prompt_revertversion: "Reverter para versão anterior:"
prompt_savechanges: Salvar mudanças
prompt_savechanges: Salvar alterações
prompt_taggedpoints: Alguns pontos tem etiquetas ou pertencem a uma relação. Quer realmente apagá-los?
prompt_track: Converta a sua trilha GPS para caminhos (trancados) a serem editados.
prompt_unlock: Clique para desbloquear

View file

@ -0,0 +1,155 @@
# Messages for Rusyn (Русиньскый)
# Exported from translatewiki.net
# Export driver: syck
# Author: Gazeb
rue:
a_poi: $1 обєкту (POI)
a_way: $1 лінію
action_changeway: зміны в лінії
action_createpoi: створїня обєкту (POI)
action_insertnode: придаваня узла до лінії
action_mergeways: злучіня двох ліній
action_movepoi: пересуваня обєкту (POI)
action_moveway: пересуваня лінії
action_pointtags: наставлїня таґів на точку
action_reverseway: зміна напрямкы лінії
action_revertway: навернутя лінії
action_waytags: наставлїня таґів на лінію
advanced: Росшырене
advanced_close: Заперти саду змін
advanced_history: Історія лінії
advanced_inspector: Іншпектор
advanced_maximise: Максімалізовати окно
advanced_minimise: Мінімалізовати окно
advanced_parallel: Паралелна лінія
advanced_undelete: Обновити
advice_deletingpoi: Вымазаня обєкту (POI) (Z про зрушіня)
advice_deletingway: Вымазаня лінії (Z про зрушіня)
advice_revertingway: Навернутя до послїднёй уложеной лінії (Z про назад)
advice_toolong: Дуже довге про одомкнутя - просиме роздїльте до куртшых ліній
advice_uploadsuccess: Вшыткы дата успішно награты на сервер
cancel: Зрушыти
closechangeset: Заперти саду змін
conflict_poichanged: Потім, як сьте зачали едітованя, хтось змінив точку $1$2.
conflict_relchanged: Потім, як сьте зачали едітованя, хтось змінив звязок $1$2.
conflict_visitway: Стисните 'ОК', про вказаня лінії.
conflict_waychanged: Потім, як сьте зачали едітованя, хтось змінив лінію $1$2.
createrelation: Створити новый звязок
custom: "Шпеціалный:"
delete: Вымазати
editinglive: Едітованя нажыво
error_microblog_long: "Посыланя до $1 неможне:\nHTTP код: $2\nХыбове повідомлїня: $3\n$1 жыба: $4"
error_nopoi: Обєкт (POI) ся не нашов (може сьте посунули мапу?) — не дасть ся вернути назад.
error_nosharedpoint: Лінії $1 і $2 в сучасности не мають сполочну точку, также ся не можу вернути назад.
heading_drawing: Креслїня
heading_introduction: Вступ
heading_troubleshooting: Рїшіня проблему
help: Поміч
hint_drawmode: придайте точку кликнутём\nдвойклик/Enter\nукончіть лінію
hint_latlon: "шыр $1\nдов $2"
hint_overpoint: над точков ($1)\nкликнутём лінію напоїте
hint_pointselected: точка выбрана\n(Shift-ЛК на точці\nзачне нову лінію)
hint_saving: уложіня дат
inspector: Іншпектор
inspector_duplicate: Дуплікат
inspector_in_ways: В лініях
inspector_latlon: "Шыр $1\nДов $2"
inspector_locked: Замкнуто
inspector_node_count: ($1 раз)
inspector_unsaved: Неуложене
inspector_uploading: (награваня)
inspector_way_connects_to_principal: Споює з $1 $2 і $3 іншыма $4
inspector_way_nodes: $1 узлы
loading: Награваня...
login_pwd: "Гесло:"
login_retry: Ваше мено хоснователя не было розознане, Спробуйте іщі раз.
login_title: Не годен войти
login_uid: "Мено хоснователя:"
mail: Е.пошта
more: Іщі
"no": Нїт
nobackground: Без позадя
offset_broadcanal: Набережна шырокого каналу
offset_choose: Выбер офсету (м)
offset_motorway: Автомаґістрала (D3)
offset_narrowcanal: Набережна узкого каналу
ok: Най буде
openchangeset: Отворям саду змін
option_layer_cycle_map: OSM — цікло-мапа
option_layer_maplint: OSM — Maplint (хыбы)
option_layer_nearmap: "Австралія: NearMap"
option_layer_ooc_25k: "В.БРІТАНІЯ істор.: 1:25k"
option_layer_ooc_7th: "В.БРІТАНІЯ істор.: 1:7000"
option_layer_ooc_npe: "В.БРІТАНІЯ істор.: NPE"
option_layer_os_streetview: "В.БРІТАНІЯ: OS StreetView"
option_layer_streets_haiti: "Гаїті: назвы уліць"
option_layer_surrey_air_survey: "UK: Surrey Air Survey"
option_layer_tip: Выберте позадя
option_photo: "Фото KML:"
option_thinareas: Тонкы лінії про поліґоны
option_thinlines: Тонкы лінії у вшыткых мірках мап
option_tiger: Вказати незміненый TIGER
option_warnings: Вказати плаваючі варованя
point: Точка
preset_icon_airport: Летїско
preset_icon_bar: Бар
preset_icon_bus_stop: Автобусова заставка
preset_icon_cafe: Кафе
preset_icon_cinema: Кіно
preset_icon_disaster: Будова на Гаїті
preset_icon_fast_food: Швыдка страва
preset_icon_ferry_terminal: Паром
preset_icon_fire_station: Пожарна станіця
preset_icon_hospital: Шпыталь
preset_icon_hotel: Готел
preset_icon_museum: Музей
preset_icon_parking: Паркованя
preset_icon_pharmacy: Лїкарня
preset_icon_police: Поліція
preset_icon_post_box: Поштова схранка
preset_icon_pub: Корчма
preset_icon_recycling: Кош на смітя
preset_icon_restaurant: Рештаврація
preset_icon_school: Школа
preset_icon_station: Желїзнічна станіця
preset_icon_supermarket: Супермаркет
preset_icon_taxi: Таксі
preset_icon_telephone: Телефон
preset_icon_theatre: Театр
preset_tip: Выберте з меню шаблонів теаів, пописанім в $1
prompt_addtorelation: Придати $1 до звязку
prompt_changesetcomment: "Опиште вашы зміны:"
prompt_closechangeset: Заперти саду змін $1
prompt_createparallel: Створїня паралелной лінії
prompt_editlive: Едітованя нажыво
prompt_helpavailable: Новый хоснователь? Поміч найдете вправо долов.
prompt_launch: Отворити екстерну URL
prompt_manyways: Тота область є дуже подробна і буде довго єй награвати. Преферуєте приближыти єй?
prompt_revertversion: "Вернути ся ку скоре уложеній верзії:"
prompt_savechanges: Уложыти зміны
prompt_taggedpoints: Дакоры точкы на тій лінії мають таґы. Справды змазати?
prompt_welcome: Вітайте на OpenStreetMap!
retry: Повтор
revert: Вернути назад
save: Уложыти
tags_descriptions: Опис '$1'
tags_findatag: Найти таґ
tags_findtag: Найти таґ
tags_matching: Популарны таґы згодны з "$1"
tip_anticlockwise: Проти дразї годіновой ручкы (кликнутём зміните напрямку)
tip_clockwise: По дразї годіновой ручкы (кликнутём зміните напрямку)
tip_direction: Напрямок лінії — змінити на протилежный
tip_options: Можности (выберте собі мапу про позадя)
tip_photo: Награти фото
tip_repeattag: Наставити таґы передтым выбраной лінії(R)
tip_tidy: Вырівнати точкы у лінії (Т)
tip_undo: "Назад: $1 (Z)"
uploading: Награваня...
uploading_deleting_pois: Змазаня (POI)
uploading_deleting_ways: Змазаня ліній
uploading_poi: Награваня (POI) $1
uploading_poi_name: Награваня (POI) $1, $2
uploading_way_name: Награваня лінії $1, $2
warning: Позір!
way: Лінія
"yes": Гей

View file

@ -113,7 +113,6 @@ ActionController::Routing::Routes.draw do |map|
map.connect '/index.html', :controller => 'site', :action => 'index'
map.connect '/edit.html', :controller => 'site', :action => 'edit'
map.connect '/export.html', :controller => 'site', :action => 'export'
map.connect '/search.html', :controller => 'way_tag', :action => 'search'
map.connect '/login.html', :controller => 'user', :action => 'login'
map.connect '/logout.html', :controller => 'user', :action => 'logout'
map.connect '/create-account.html', :controller => 'user', :action => 'new'

View file

@ -55,6 +55,7 @@ de:
man_made: DE:Key:man made
maxheight: DE:Key:maxheight
maxspeed: DE:Key:maxspeed
maxweight: DE:Key:maxweight
military: DE:Key:military
mtb:scale: DE:Key:mtb:scale
name: DE:Key:name
@ -71,6 +72,7 @@ de:
railway: DE:Key:railway
route: DE:Key:route
sac_scale: DE:Key:sac scale
seamark: DE:Key:seamark
service: DE:Key:service
shop: DE:Key:shop
smoking: DE:Key:smoking
@ -92,15 +94,19 @@ de:
amenity=baby_hatch: DE:Tag:amenity=baby hatch
amenity=bank: DE:Tag:amenity=bank
amenity=bench: DE:Tag:amenity=bench
amenity=bicycle_rental: DE:Tag:amenity=bicycle rental
amenity=biergarten: DE:Tag:amenity=biergarten
amenity=bus_station: DE:Tag:amenity=bus station
amenity=clock: DE:Tag:amenity=clock
amenity=compressed_air: DE:Tag:amenity=compressed air
amenity=drinking_water: DE:Tag:amenity=drinking water
amenity=emergency_phone: DE:Tag:amenity=emergency phone
amenity=fuel: DE:Tag:amenity=fuel
amenity=grit_bin: DE:Tag:amenity=grit bin
amenity=hospital: DE:Tag:amenity=hospital
amenity=hunting_stand: DE:Tag:amenity=hunting stand
amenity=nightclub: DE:Tag:amenity=nightclub
amenity=nursing_home: DE:Tag:amenity=nursing home
amenity=parking: DE:Tag:amenity=parking
amenity=pharmacy: DE:Tag:amenity=pharmacy
amenity=place_of_worship: DE:Tag:amenity=place of worship
@ -108,6 +114,7 @@ de:
amenity=pub: DE:Tag:amenity=pub
amenity=recycling: DE:Tag:amenity=recycling
amenity=register_office: DE:Tag:amenity=register office
amenity=restaurant: DE:Tag:amenity=restaurant
amenity=school: DE:Tag:amenity=school
amenity=telephone: DE:Tag:amenity=telephone
amenity=toilets: DE:Tag:amenity=toilets
@ -117,6 +124,7 @@ de:
barrier=lift_gate: DE:Tag:barrier=lift gate
boundary=water_protection_area: DE:Tag:boundary=water protection area
club-mate=yes: DE:Tag:club-mate=yes
emergency=fire_hydrant: DE:Tag:emergency=fire hydrant
highway=bus_stop: DE:Tag:highway=bus stop
highway=crossing: DE:Tag:highway=crossing
highway=cycleway: DE:Tag:highway=cycleway
@ -148,14 +156,17 @@ de:
historic=monastery: DE:Tag:historic=monastery
junction=roundabout: DE:Tag:junction=roundabout
landuse=allotments: DE:Tag:landuse=allotments
landuse=farm: DE:Tag:landuse=farm
landuse=cemetery: DE:Tag:landuse=cemetery
landuse=farmland: DE:Tag:landuse=farmland
landuse=farmyard: DE:Tag:landuse=farmyard
landuse=forest: DE:Tag:landuse=forest
landuse=meadow: DE:Tag:landuse=meadow
landuse=orchard: DE:Tag:landuse=orchard
landuse=quarry: DE:Tag:landuse=quarry
landuse=residential: DE:Tag:landuse=residential
landuse=village_green: DE:Tag:landuse=village green
leisure=dog_park: DE:Tag:leisure=dog park
leisure=garden: DE:Tag:leisure=garden
leisure=playground: DE:Tag:leisure=playground
leisure=slipway: DE:Tag:leisure=slipway
man_made=crane: DE:Tag:man made=crane
@ -164,6 +175,7 @@ de:
man_made=pipeline: DE:Tag:man made=pipeline
man_made=survey_point: DE:Tag:man made=survey point
man_made=wastewater_plant: DE:Tag:man made=wastewater plant
microbrewery=yes: DE:Tag:microbrewery=yes
military=bunker: DE:Tag:military=bunker
natural=stone: DE:Tag:natural=stone
natural=tree: DE:Tag:natural=tree
@ -181,6 +193,7 @@ de:
power=tower: DE:Tag:power=tower
railway=crossing: DE:Tag:railway=crossing
railway=halt: DE:Tag:railway=halt
railway=monorail: DE:Tag:railway=monorail
railway=platform: DE:Tag:railway=platform
railway=station: DE:Tag:railway=station
railway=tram: DE:Tag:railway=tram
@ -220,6 +233,7 @@ en:
atv: Key:atv
barrier: Key:barrier
basin: Key:basin
beacon: Key:beacon
bicycle: Key:bicycle
boat: Key:boat
border_type: Key:border type
@ -227,8 +241,10 @@ en:
bridge: Key:bridge
building: Key:building
bunker_type: Key:bunker type
buoy: Key:buoy
capacity: Key:capacity
cep: Key:cep
clothes: Key:clothes
collection_times: Key:collection times
comment: Key:comment
construction: Key:construction
@ -245,6 +261,7 @@ en:
designation: Key:designation
destination: Key:destination
direction: Key:direction
disabled: Key:disabled
dispensing: Key:dispensing
disused: Key:disused
drink: Key:drink
@ -260,6 +277,7 @@ en:
fenced: Key:fenced
fixme: Key:fixme
flood_prone: Key:flood prone
fog_signal: Key:fog signal
foot: Key:foot
ford: Key:ford
fuel:discount: Key:fuel:discount
@ -276,18 +294,21 @@ en:
internet_access: Key:internet access
is_in: Key:is in
junction: Key:junction
landmark: Key:landmark
landuse: Key:landuse
lanes: Key:lanes
layer: Key:layer
lcn_ref: Key:lcn ref
leisure: Key:leisure
length: Key:length
light: Key:light
lit: Key:lit
lit:perceived: Key:lit:perceived
lock: Key:lock
man_made: Key:man made
managed: Key:managed
manhole: Key:manhole
maxage: Key:maxage
maxairdraft: Key:maxairdraft
maxaxleload: Key:maxaxleload
maxdraught: Key:maxdraught
@ -301,6 +322,7 @@ en:
maxweight: Key:maxweight
maxwidth: Key:maxwidth
military: Key:military
minage: Key:minage
minspeed: Key:minspeed
monitoring:glonass: Key:monitoring:glonass
monitoring:gps: Key:monitoring:gps
@ -351,6 +373,7 @@ en:
route: Key:route
sac_scale: Key:sac scale
sagns_id: Key:sagns id
seabed_surface: Key:seabed surface
seamark: Key:seamark
seasonal:snowfall:regaintime: Key:seasonal:snowfall:regaintime
service: Key:service
@ -361,12 +384,15 @@ en:
snowplowing:category: Key:snowplowing:category
source: Key:source
sport: Key:sport
stars: Key:stars
start_date: Key:start date
step_count: Key:step count
stop: Key:stop
sub_sea: Key:sub sea
sulky: Key:sulky
surface: Key:surface
tactile_paving: Key:tactile paving
timezone: Key:timezone
toll: Key:toll
tourism: Key:tourism
tracktype: Key:tracktype
@ -409,6 +435,7 @@ en:
aeroway=taxiway: Tag:aeroway=taxiway
aeroway=terminal: Tag:aeroway=terminal
aeroway=windsock: Tag:aeroway=windsock
amenity=architect_office: Tag:amenity=architect office
amenity=arts_centre: Tag:amenity=arts centre
amenity=atm: Tag:amenity=atm
amenity=audiologist: Tag:amenity=audiologist
@ -420,12 +447,14 @@ en:
amenity=bicycle_parking: Tag:amenity=bicycle parking
amenity=bicycle_rental: Tag:amenity=bicycle rental
amenity=biergarten: Tag:amenity=biergarten
amenity=boat_storage: Tag:amenity=boat storage
amenity=brothel: Tag:amenity=brothel
amenity=bureau_de_change: Tag:amenity=bureau de change
amenity=bus_station: Tag:amenity=bus station
amenity=cafe: Tag:amenity=cafe
amenity=car_rental: Tag:amenity=car rental
amenity=car_sharing: Tag:amenity=car sharing
amenity=casino: Tag:amenity=casino
amenity=cinema: Tag:amenity=cinema
amenity=clock: Tag:amenity=clock
amenity=coast_guard: Tag:amenity=coast guard
@ -438,11 +467,10 @@ en:
amenity=doctors: Tag:amenity=doctors
amenity=drinking_water: Tag:amenity=drinking water
amenity=embassy: Tag:amenity=embassy
amenity=emergency_phone: Tag:amenity=emergency phone
amenity=fast_food: Tag:amenity=fast food
amenity=ferry_terminal: Tag:amenity=ferry terminal
amenity=fire_hydrant: Tag:amenity=fire hydrant
amenity=fire_station: Tag:amenity=fire station
amenity=food_court: Tag:amenity=food court
amenity=fountain: Tag:amenity=fountain
amenity=fuel: Tag:amenity=fuel
amenity=grave_yard: Tag:amenity=grave yard
@ -482,6 +510,7 @@ en:
amenity=veterinary: Tag:amenity=veterinary
amenity=waste_basket: Tag:amenity=waste basket
amenity=waste_disposal: Tag:amenity=waste disposal
amenity=waste_transfer_station: Tag:amenity=waste transfer station
amenity=watering_place: Tag:amenity=watering place
atm=no: Tag:atm=no
atm=yes: Tag:atm=yes
@ -502,6 +531,7 @@ en:
barrier=sally_port: Tag:barrier=sally port
barrier=stile: Tag:barrier=stile
barrier=toll_booth: Tag:barrier=toll booth
barrier=turnstile: Tag:barrier=turnstile
barrier=wall: Tag:barrier=wall
boundary=administrative: Tag:boundary=administrative
boundary=civil: Tag:boundary=civil
@ -515,9 +545,18 @@ en:
building=parliament: Tag:building=parliament
bunker_type=munitions: Tag:bunker type=munitions
bunker_type=pillbox: Tag:bunker type=pillbox
clothes=sports: Tag:clothes=sports
club-mate=yes: Tag:club-mate=yes
cycleway=bike_box: Tag:cycleway=bike box
denomination=mormon: Tag:denomination=mormon
emergency=ambulance_station: Tag:emergency=ambulance station
emergency=fire_extinguisher: Tag:emergency=fire extinguisher
emergency=fire_flapper: Tag:emergency=fire flapper
emergency=fire_hose: Tag:emergency=fire hose
emergency=fire_hydrant: Tag:emergency=fire hydrant
emergency=phone: Tag:emergency=phone
emergency=ses_station: Tag:emergency=ses station
emergency=siren: Tag:emergency=siren
geological=palaeontological_site: Tag:geological=palaeontological site
highway=bridleway: Tag:highway=bridleway
highway=bus_guideway: Tag:highway=bus guideway
@ -539,14 +578,12 @@ en:
highway=pedestrian: Tag:highway=pedestrian
highway=platform: Tag:highway=platform
highway=primary: Tag:highway=primary
highway=primary_link: Tag:highway=primary link
highway=proposed: Tag:highway=proposed
highway=raceway: Tag:highway=raceway
highway=residential: Tag:highway=residential
highway=rest_area: Tag:highway=rest area
highway=road: Tag:highway=road
highway=secondary: Tag:highway=secondary
highway=secondary_link: Tag:highway=secondary link
highway=service: Tag:highway=service
highway=services: Tag:highway=services
highway=speed_camera: Tag:highway=speed camera
@ -558,7 +595,6 @@ en:
highway=traffic_signals: Tag:highway=traffic signals
highway=trail: Tag:highway=trail
highway=trunk: Tag:highway=trunk
highway=trunk_link: Tag:highway=trunk link
highway=turning_circle: Tag:highway=turning circle
highway=unclassified: Tag:highway=unclassified
historic=archaeological_site: Tag:historic=archaeological site
@ -583,6 +619,7 @@ en:
landuse=commercial: Tag:landuse=commercial
landuse=construction: Tag:landuse=construction
landuse=farm: Tag:landuse=farm
landuse=farmland: Tag:landuse=farmland
landuse=farmyard: Tag:landuse=farmyard
landuse=forest: Tag:landuse=forest
landuse=garages: Tag:landuse=garages
@ -606,7 +643,6 @@ en:
landuse=street: Tag:landuse=street
landuse=village_green: Tag:landuse=village green
landuse=vineyard: Tag:landuse=vineyard
landuse=wood: Tag:landuse=wood
leisure=beach_resort: Tag:leisure=beach resort
leisure=common: Tag:leisure=common
leisure=dance: Tag:leisure=dance
@ -619,20 +655,27 @@ en:
leisure=marina: Tag:leisure=marina
leisure=miniature_golf: Tag:leisure=miniature golf
leisure=nature_reserve: Tag:leisure=nature reserve
leisure=paddling_pool: Tag:leisure=paddling pool
leisure=park: Tag:leisure=park
leisure=picnic_table: Tag:leisure=picnic table
leisure=pitch: Tag:leisure=pitch
leisure=playground: Tag:leisure=playground
leisure=ski_playground: Tag:leisure=ski playground
leisure=slipway: Tag:leisure=slipway
leisure=sports_centre: Tag:leisure=sports centre
leisure=track: Tag:leisure=track
leisure=video_arcade: Tag:leisure=video arcade
leisure=water_park: Tag:leisure=water park
man_made=adit: Tag:man made=adit
man_made=archimedes_screw: Tag:man made=archimedes screw
man_made=beacon: Tag:man made=beacon
man_made=chimney: Tag:man made=chimney
man_made=compass_rose: Tag:man made=compass rose
man_made=crane: Tag:man made=crane
man_made=cutline: Tag:man made=cutline
man_made=dyke: Tag:man made=dyke
man_made=flagpole: Tag:man made=flagpole
man_made=fish_passage: Tag:man made=fish passage
man_made=flare: Tag:man made=flare
man_made=ground_station: Tag:man made=ground station
man_made=groyne: Tag:man made=groyne
man_made=jetty: Tag:man made=jetty
@ -643,6 +686,7 @@ en:
man_made=pipeline: Tag:man made=pipeline
man_made=pumping_rig: Tag:man made=pumping rig
man_made=reservoir_covered: Tag:man made=reservoir covered
man_made=storage_tank: Tag:man made=storage tank
man_made=surveillance: Tag:man made=surveillance
man_made=survey_point: Tag:man made=survey point
man_made=tower: Tag:man made=tower
@ -651,8 +695,12 @@ en:
man_made=water_well: Tag:man made=water well
man_made=water_works: Tag:man made=water works
man_made=watermill: Tag:man made=watermill
man_made=well: Tag:man made=well
man_made=wildlife_crossing: Tag:man made=wildlife crossing
man_made=windmill: Tag:man made=windmill
man_made=windpump: Tag:man made=windpump
man_made=works: Tag:man made=works
microbrewery=yes: Tag:microbrewery=yes
military=airfield: Tag:military=airfield
military=bunker: Tag:military=bunker
military=naval_base: Tag:military=naval base
@ -661,13 +709,15 @@ en:
natural=cave_entrance: Tag:natural=cave entrance
natural=cliff: Tag:natural=cliff
natural=coastline: Tag:natural=coastline
natural=dune: Tag:natural=dune
natural=fell: Tag:natural=fell
natural=glacier: Tag:natural=glacier
natural=heath: Tag:natural=heath
natural=lake: Tag:natural=lake
natural=land: Tag:natural=land
natural=meadow: Tag:natural=meadow
natural=peak: Tag:natural=peak
natural=rock: Tag:natural=rock
natural=scree: Tag:natural=scree
natural=scrub: Tag:natural=scrub
natural=spring: Tag:natural=spring
natural=stone: Tag:natural=stone
@ -687,6 +737,8 @@ en:
office=newspaper: Tag:office=newspaper
office=ngo: Tag:office=ngo
office=quango: Tag:office=quango
office=research: Tag:office=research
office=telecommunication: Tag:office=telecommunication
office=travel_agent: Tag:office=travel agent
pipeline=marker: Tag:pipeline=marker
pipeline=valve: Tag:pipeline=valve
@ -751,8 +803,10 @@ en:
service=yard: Tag:service=yard
shop=SpotColor: Tag:shop=SpotColor
shop=alcohol: Tag:shop=alcohol
shop=art: Tag:shop=art
shop=bakery: Tag:shop=bakery
shop=beauty: Tag:shop=beauty
shop=bed: Tag:shop=bed
shop=beverages: Tag:shop=beverages
shop=bicycle: Tag:shop=bicycle
shop=books: Tag:shop=books
@ -764,18 +818,26 @@ en:
shop=charity: Tag:shop=charity
shop=chemist: Tag:shop=chemist
shop=clothes: Tag:shop=clothes
shop=communication: Tag:shop=communication
shop=computer: Tag:shop=computer
shop=confectionery: Tag:shop=confectionery
shop=convenience: Tag:shop=convenience
shop=copyshop: Tag:shop=copyshop
shop=curtain: Tag:shop=curtain
shop=deli: Tag:shop=deli
shop=department_store: Tag:shop=department store
shop=dive: Tag:shop=dive
shop=doityourself: Tag:shop=doityourself
shop=dry_cleaning: Tag:shop=dry cleaning
shop=electronics: Tag:shop=electronics
shop=fabrics: Tag:shop=fabrics
shop=erotic: Tag:shop=erotic
shop=fabric: Tag:shop=fabric
shop=farm: Tag:shop=farm
shop=florist: Tag:shop=florist
shop=food: Tag:shop=food
shop=frame: Tag:shop=frame
shop=funeral_directors: Tag:shop=funeral directors
shop=furnace: Tag:shop=furnace
shop=furniture: Tag:shop=furniture
shop=garden_centre: Tag:shop=garden centre
shop=general: Tag:shop=general
@ -783,8 +845,10 @@ en:
shop=glaziery: Tag:shop=glaziery
shop=greengrocer: Tag:shop=greengrocer
shop=hairdresser: Tag:shop=hairdresser
shop=hardware: Tag:shop=hardware
shop=hearing_aids: Tag:shop=hearing aids
shop=hifi: Tag:shop=hifi
shop=houseware: Tag:shop=houseware
shop=ice_cream: Tag:shop=ice cream
shop=jewelry: Tag:shop=jewelry
shop=kiosk: Tag:shop=kiosk
@ -792,14 +856,18 @@ en:
shop=locksmith: Tag:shop=locksmith
shop=mall: Tag:shop=mall
shop=massage: Tag:shop=massage
shop=mobile_phone: Tag:shop=mobile phone
shop=money_lender: Tag:shop=money lender
shop=motorcycle: Tag:shop=motorcycle
shop=motorcycle_repair: Tag:shop=motorcycle repair
shop=musical_instrument: Tag:shop=musical instrument
shop=newsagent: Tag:shop=newsagent
shop=optician: Tag:shop=optician
shop=organic: Tag:shop=organic
shop=outdoor: Tag:shop=outdoor
shop=paint: Tag:shop=paint
shop=pawnbroker: Tag:shop=pawnbroker
shop=pet: Tag:shop=pet
shop=seafood: Tag:shop=seafood
shop=second_hand: Tag:shop=second hand
shop=shoes: Tag:shop=shoes
@ -807,8 +875,10 @@ en:
shop=stationery: Tag:shop=stationery
shop=supermarket: Tag:shop=supermarket
shop=systembolaget: Tag:shop=systembolaget
shop=tattoo: Tag:shop=tattoo
shop=toys: Tag:shop=toys
shop=travel_agency: Tag:shop=travel agency
shop=trade: Tag:shop=trade
shop=vacuum_cleaner: Tag:shop=vacuum cleaner
shop=variety_store: Tag:shop=variety store
shop=video: Tag:shop=video
source:ele=barometric: Tag:source:ele=barometric
@ -818,16 +888,61 @@ en:
1:25000 map (2007)
source=Isle_of_Man_Government_aerial_imagery_(2001): Tag:source=Isle of Man Government
aerial imagery (2001)
sport=10pin: Tag:sport=10pin
sport=9pin: Tag:sport=9pin
sport=american_football: Tag:sport=american football
sport=archery: Tag:sport=archery
sport=athletics: Tag:sport=athletics
sport=australian_football: Tag:sport=australian football
sport=badminton: Tag:sport=badminton
sport=baseball: Tag:sport=baseball
sport=basketball: Tag:sport=basketball
sport=beachvolleyball: Tag:sport=beachvolleyball
sport=boules: Tag:sport=boules
sport=bowls: Tag:sport=bowls
sport=canadian_football: Tag:sport=canadian football
sport=canoe: Tag:sport=canoe
sport=chess: Tag:sport=chess
sport=climbing: Tag:sport=climbing
sport=cricket: Tag:sport=cricket
sport=cricket_nets: Tag:sport=cricket nets
sport=croquet: Tag:sport=croquet
sport=cycling: Tag:sport=cycling
sport=diving: Tag:sport=diving
sport=dog_racing: Tag:sport=dog racing
sport=equestrian: Tag:sport=equestrian
sport=gaelic_football: Tag:sport=gaelic football
sport=gaelic_games: Tag:sport=gaelic games
sport=golf: Tag:sport=golf
sport=gymnastics: Tag:sport=gymnastics
sport=hockey: Tag:sport=hockey
sport=horse_racing: Tag:sport=horse racing
sport=horseshoes: Tag:sport=horseshoes
sport=ice_stock: Tag:sport=ice stock
sport=korfball: Tag:sport=korfball
sport=motor: Tag:sport=motor
sport=multi: Tag:sport=multi
sport=orienteering: Tag:sport=orienteering
sport=paddle_tennis: Tag:sport=paddle tennis
sport=paragliding: Tag:sport=paragliding
sport=pelota: Tag:sport=pelota
sport=racquet: Tag:sport=racquet
sport=rowing: Tag:sport=rowing
sport=rugby_league: Tag:sport=rugby league
sport=rugby_union: Tag:sport=rugby union
sport=shooting: Tag:sport=shooting
sport=skateboard: Tag:sport=skateboard
sport=skating: Tag:sport=skating
sport=skiing: Tag:sport=skiing
sport=soccer: Tag:sport=soccer
sport=surfing: Tag:sport=surfing
sport=swimming: Tag:sport=swimming
sport=table_tennis: Tag:sport=table tennis
sport=team_handball: Tag:sport=team handball
sport=tennis: Tag:sport=tennis
sport=toboggan: Tag:sport=toboggan
sport=volleyball: Tag:sport=volleyball
sport=water_ski: Tag:sport=water ski
sub_sea=reef: Tag:sub sea=reef
tourism=alpine_hut: Tag:tourism=alpine hut
tourism=aquarium: Tag:tourism=aquarium
@ -846,6 +961,7 @@ en:
tourism=theme_park: Tag:tourism=theme park
tourism=viewpoint: Tag:tourism=viewpoint
tourism=zoo: Tag:tourism=zoo
tunnel=culvert: Tag:tunnel=culvert
type=site: Tag:type=site
vending=bicycle_tube: Tag:vending=bicycle tube
waterway=boatyard: Tag:waterway=boatyard
@ -857,6 +973,7 @@ en:
waterway=lock_gate: Tag:waterway=lock gate
waterway=river: Tag:waterway=river
waterway=riverbank: Tag:waterway=riverbank
waterway=seaway: Tag:waterway=seaway
waterway=stream: Tag:waterway=stream
waterway=turning_point: Tag:waterway=turning point
waterway=water_point: Tag:waterway=water point
@ -868,6 +985,7 @@ es:
amenity=bar: ES:Tag:amenity=bar
amenity=recycling: ES:Tag:amenity=recycling
highway=bus_stop: ES:Tag:highway=bus stop
railway=level_crossing: ES:Tag:railway=level crossing
et:
key:
highway: Et:Key:highway
@ -890,6 +1008,7 @@ fi:
natural: Fi:Key:natural
note: Fi:Key:note
operator: Fi:Key:operator
parking:lane:both: Fi:Key:parking:lane:both
shop: Fi:Key:shop
surface: Fi:Key:surface
tracktype: Fi:Key:tracktype
@ -964,37 +1083,54 @@ fr:
highway: FR:Key:highway
landuse: FR:Key:landuse
lanes: FR:Key:lanes
leisure: FR:Key:leisure
man_made: FR:Key:man made
maxweight: FR:Key:maxweight
name: FR:Key:name
natural: FR:Key:natural
noname: FR:Key:noname
opening_hours: FR:Key:opening hours
operator: FR:Key:operator
parking: FR:Key:parking
place: FR:Key:place
power: FR:Key:power
sac_scale: FR:Key:sac scale
shop: FR:Key:shop
smoothness: FR:Key:smoothness
sport: FR:Key:sport
surface: FR:Key:surface
tracktype: FR:Key:tracktype
waterway: FR:Key:waterway
tag:
aeroway=runway: FR:Tag:aeroway=runway
amenity=bicycle_parking: FR:Tag:amenity=bicycle parking
amenity=bicycle_rental: FR:Tag:amenity=bicycle rental
amenity=community_centre: FR:Tag:amenity=community centre
amenity=fire_station: FR:Tag:amenity=fire station
amenity=library: FR:Tag:amenity=library
amenity=pharmacy: FR:Tag:amenity=pharmacy
amenity=recycling: FR:Tag:amenity=recycling
amenity=telephone: FR:Tag:amenity=telephone
amenity=townhall: FR:Tag:amenity=townhall
barrier=bollard: FR:Tag:barrier=bollard
barrier=gate: FR:Tag:barrier=gate
cycleway=bike_box: FR:Tag:cycleway=bike box
highway=bus_guideway: FR:Tag:highway=bus guideway
highway=bus_stop: FR:Tag:highway=bus stop
highway=crossing: FR:Tag:highway=crossing
highway=cycleway: FR:Tag:highway=cycleway
highway=give_way: FR:Tag:highway=give way
highway=motorway: FR:Tag:highway=motorway
highway=motorway_link: FR:Tag:highway=motorway link
highway=track: FR:Tag:highway=track
landuse=farmyard: FR:Tag:landuse=farmyard
landuse=forest: FR:Tag:landuse=forest
leisure=playground: FR:Tag:leisure=playground
man_made=cutline: FR:Tag:man made=cutline
man_made=surveillance: FR:Tag:man made=surveillance
man_made=water_works: FR:Tag:man made=water works
natural=tree: FR:Tag:natural=tree
natural=water: FR:Tag:natural=water
place=city: FR:Tag:place=city
place=hamlet: FR:Tag:place=hamlet
place=locality: FR:Tag:place=locality
@ -1007,12 +1143,15 @@ fr:
railway=subway_entrance: FR:Tag:railway=subway entrance
shop=bakery: FR:Tag:shop=bakery
shop=supermarket: FR:Tag:shop=supermarket
waterway=river: FR:Tag:waterway=river
waterway=riverbank: FR:Tag:waterway=riverbank
waterway=stream: FR:Tag:waterway=stream
waterway=weir: FR:Tag:waterway=weir
hr:
key:
tracktype: Hr:Key:tracktype
tag:
amenity=atm: Hr:Tag:amenity=atm
hu:
key:
aeroway: HU:Key:aeroway
@ -1037,11 +1176,14 @@ it:
geological: IT:Key:geological
highway: IT:Key:highway
historic: IT:Key:historic
incline: IT:Key:incline
junction: IT:Key:junction
landuse: IT:Key:landuse
leisure: IT:Key:leisure
lock: IT:Key:lock
man_made: IT:Key:man made
maxheight: IT:Key:maxheight
maxwidth: IT:Key:maxwidth
military: IT:Key:military
mooring: IT:Key:mooring
name: IT:Key:name
@ -1068,12 +1210,15 @@ it:
type: IT:Key:type
waterway: IT:Key:waterway
wheelchair: IT:Key:wheelchair
width: IT:Key:width
tag:
amenity=bicycle_rental: IT:Tag:amenity=bicycle rental
amenity=college: IT:Tag:amenity=college
amenity=fountain: IT:Tag:amenity=fountain
amenity=fuel: IT:Tag:amenity=fuel
amenity=hospital: IT:Tag:amenity=hospital
amenity=kindergarten: IT:Tag:amenity=kindergarten
amenity=parking: IT:Tag:amenity=parking
amenity=place_of_worship: IT:Tag:amenity=place of worship
amenity=police: IT:Tag:amenity=police
amenity=post_office: IT:Tag:amenity=post office
@ -1087,6 +1232,7 @@ it:
highway=mini_roundabout: IT:Tag:highway=mini roundabout
highway=motorway: IT:Tag:highway=motorway
highway=motorway_link: IT:Tag:highway=motorway link
highway=pedestrian: IT:Tag:highway=pedestrian
highway=primary: IT:Tag:highway=primary
highway=primary_link: IT:Tag:highway=primary link
highway=trunk: IT:Tag:highway=trunk
@ -1096,9 +1242,14 @@ it:
landuse=construction: IT:Tag:landuse=construction
leisure=beach_resort: IT:Tag:leisure=beach resort
leisure=dog_park: IT:Tag:leisure=dog park
leisure=marina: IT:Tag:leisure=marina
railway=level_crossing: IT:Tag:railway=level crossing
shop=butcher: IT:Tag:shop=butcher
shop=car: IT:Tag:shop=car
shop=clothes: IT:Tag:shop=clothes
shop=florist: IT:Tag:shop=florist
shop=newsagent: IT:Tag:shop=newsagent
tourism=artwork: IT:Tag:tourism=artwork
ja:
key:
abutters: JA:Key:abutters
@ -1122,6 +1273,7 @@ ja:
information: JA:Key:information
internet_access: JA:Key:internet access
landuse: JA:Key:landuse
lanes: JA:Key:lanes
leisure: JA:Key:leisure
man_made: JA:Key:man made
military: JA:Key:military
@ -1150,6 +1302,7 @@ ja:
amenity=baby_hatch: JA:Tag:amenity=baby hatch
amenity=bus_station: JA:Tag:amenity=bus station
amenity=cafe: JA:Tag:amenity=cafe
amenity=crematorium: JA:Tag:amenity=crematorium
amenity=drinking_water: JA:Tag:amenity=drinking water
amenity=fast_food: JA:Tag:amenity=fast food
amenity=fire_station: JA:Tag:amenity=fire station
@ -1184,10 +1337,13 @@ ja:
railway=station: JA:Tag:railway=station
shop=doityourself: JA:Tag:shop=doityourself
shop=garden_centre: JA:Tag:shop=garden centre
shop=gift: JA:Tag:shop=gift
shop=motorcycle: JA:Tag:shop=motorcycle
shop=outdoor: JA:Tag:shop=outdoor
tourism=hostel: JA:Tag:tourism=hostel
tourism=hotel: JA:Tag:tourism=hotel
tourism=information: JA:Tag:tourism=information
tourism=viewpoint: JA:Tag:tourism=viewpoint
waterway=riverbank: JA:Tag:waterway=riverbank
waterway=water_point: JA:Tag:waterway=water point
nl:
@ -1200,13 +1356,18 @@ nl:
zoo=petting_zoo: NL:Tag:zoo=petting zoo
no:
key:
amenity: No:Key:amenity
boundary: No:Key:boundary
fenced: No:Key:fenced
maxheight:legal: No:Key:maxheight:legal
maxheight:marine: No:Key:maxheight:marine
maxheight:physical: No:Key:maxheight:physical
tag:
amenity=bank: No:Tag:amenity=bank
amenity=marketplace: No:Tag:amenity=marketplace
amenity=pharmacy: No:Tag:amenity=pharmacy
amenity=place_of_worship: No:Tag:amenity=place of worship
boundary=maritime: No:Tag:boundary=maritime
pl:
key:
height: Pl:Key:height
@ -1316,10 +1477,12 @@ ru:
aeroway: RU:Key:aeroway
amenity: RU:Key:amenity
area: RU:Key:area
barrier: RU:Key:barrier
bicycle: RU:Key:bicycle
boat: RU:Key:boat
border_type: RU:Key:border type
boundary: RU:Key:boundary
bridge: RU:Key:bridge
building: RU:Key:building
bunker_type: RU:Key:bunker type
capacity: RU:Key:capacity
@ -1372,6 +1535,7 @@ ru:
place: RU:Key:place
population: RU:Key:population
power: RU:Key:power
power_source: RU:Key:power source
railway: RU:Key:railway
ref: RU:Key:ref
religion: RU:Key:religion
@ -1426,7 +1590,9 @@ ru:
amenity=waste_basket: RU:Tag:amenity=waste basket
amenity=waste_disposal: RU:Tag:amenity=waste disposal
atm=yes: RU:Tag:atm=yes
barrier=fence: RU:Tag:barrier=fence
barrier=lift_gate: RU:Tag:barrier=lift gate
barrier=toll_booth: RU:Tag:barrier=toll booth
building=entrance: RU:Tag:building=entrance
highway=bridleway: RU:Tag:highway=bridleway
highway=bus_stop: RU:Tag:highway=bus stop
@ -1473,6 +1639,7 @@ ru:
landuse=industrial: RU:Tag:landuse=industrial
landuse=meadow: RU:Tag:landuse=meadow
landuse=military: RU:Tag:landuse=military
landuse=peat_cutting: RU:Tag:landuse=peat cutting
landuse=railway: RU:Tag:landuse=railway
landuse=reservoir: RU:Tag:landuse=reservoir
landuse=residential: RU:Tag:landuse=residential
@ -1482,6 +1649,7 @@ ru:
man_made=cutline: RU:Tag:man made=cutline
man_made=lighthouse: RU:Tag:man made=lighthouse
man_made=pier: RU:Tag:man made=pier
natural=beach: RU:Tag:natural=beach
natural=fell: RU:Tag:natural=fell
natural=spring: RU:Tag:natural=spring
natural=tree: RU:Tag:natural=tree
@ -1493,7 +1661,9 @@ ru:
place=island: RU:Tag:place=island
place=town: RU:Tag:place=town
place=village: RU:Tag:place=village
power=generator: RU:Tag:power=generator
power=line: RU:Tag:power=line
power=station: RU:Tag:power=station
power=sub_station: RU:Tag:power=sub station
power=tower: RU:Tag:power=tower
railway=crossing: RU:Tag:railway=crossing
@ -1527,6 +1697,8 @@ ru:
waterway=stream: RU:Tag:waterway=stream
waterway=weir: RU:Tag:waterway=weir
sv:
key:
access: Sv:Key:access
tag:
amenity=place_of_worship: Sv:Tag:amenity=place of worship
tr:
@ -1553,7 +1725,5 @@ uk:
highway=tertiary: Uk:Tag:highway=tertiary
highway=trunk: Uk:Tag:highway=trunk
highway=trunk_link: Uk:Tag:highway=trunk link
zh-hans:
key:
place: Zh-hans:Key:place
highway=unclassified: Uk:Tag:highway=unclassified

View file

@ -0,0 +1,11 @@
class AddCallbackToOauthTokens < ActiveRecord::Migration
def self.up
add_column :oauth_tokens, :callback_url, :string
add_column :oauth_tokens, :verifier, :string, :limit => 20
end
def self.down
remove_column :oauth_tokens, :callback_url
remove_column :oauth_tokens, :verifier
end
end

File diff suppressed because one or more lines are too long

Binary file not shown.

View file

@ -1,5 +0,0 @@
doc
pkg
*.log
.DS_Store
.svn

View file

@ -1,61 +0,0 @@
2/11/2009
- Fixed escaping error and file path error in the generator simultaneously reported and fixed by Ivan Valdes and Mike Demers thanks
2/9/2009
- Fixed compatibility issue with OAuth Gem 3.1 (wr0ngway and aeden)
- Added Test:Unit tests to generator (Ed Hickey)
- added missing oauth_clients/edit.html.erb view template (Ed Hickey)
- added missing :oauth_clients resource route in USAGE (Ed Hickey)
- Don't throw NPE it token is not in db (Haruska)
- Cleaned up whitespace (bricolage, Nicholas Nam)
- Fixed bug in default verify_oauth_signature (igrigorik)
- Doc fixes (skippy)
6/23/2008
- Split OAuth controller into two parts: OAuth and OAuth clients. [jcrosby]
revision 31
- patch that fixes a problem in oauth_required from Hannes Tyden and Sean Treadway from SoundCloud. Thanks.
revision 30
- updated to use oauth gem 0.2.1
revision 23
- removed all core libraries from plugin. They are now in the oauth gem.
# oauth-plugin-pre-gem Branch created
revision 18
- added a generator for creation oauth_providers
revision 12
- the bug with post and put has now been fixed.
- better documentation
revision 9
- added a test helper. Include OAuth::TestHelper in your tests or specs to mock incoming requests
revision: 8
- moved tests into oauth folder and renamed them to make them work with autotest by default
- Refactored the request methods to make them more flexible and ready for integrating with ActiveResource
- There are a few tests that fail. All of them to do with put and post requests with payload data. I decided to commit anyway, to get the new api out.
revision: 7
- Done a lot of work on the Server side of things. The Server class has changed a lot and is likely to be incompatible with previous versions
revision: 6
- Throws InsecureSignatureMethod exception if attempting to use straight sha1 or md5.
- Disables plaintext signature over http (throws an InsecureSignatureMethod)
- Better testing of signature methods - the prior tests were seriously flawed.
revision: 5
- Removed support for sha1 and md5
- Implemented draft 6 support of OAuth removing secrets from base string

View file

@ -1,20 +0,0 @@
Copyright (c) 2007 [name of plugin creator]
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View file

@ -1,110 +0,0 @@
= OAuth Plugin
This is the beginning of a plugin for implementing OAuth Providers in Rails applications.
See the OAuth specs at:
http://oauth.net/core/1.0/
and the OAuth site at:
http://oauth.net
== Requirements
You need to install the oauth gem (0.2.1) which is the core OAuth ruby library. It will NOT work on any previous version of the gem.
sudo gem install oauth
The Generator currently creates code (in particular views) that only work in Rails 2.
It should not be difficult to manually modify the code to work on Rails 1.2.x
I think the only real issue is that the views have .html.erb extensions. So these could theoretically just be renamed to .rhtml.
Please let me know if this works and I will see if I can make the generator conditionally create .rhtml for pre 2.0 versions of RAILS.
== OAuth Provider generator
While it isn't very flexible at the moment there is an oauth_provider generator which you can use like this:
./script/generate oauth_provider
This generates OAuth and OAuth client controllers as well as the required models.
It requires an authentication framework such as acts_as_authenticated, restful_authentication or restful_open_id_authentication. It also requires Rails 2.0.
=== Routes
You need to add the following to your routes (config/routes.rb)
map.resources :oauth_clients
map.authorize '/oauth/authorize',:controller=>'oauth',:action=>'authorize'
map.request_token '/oauth/request_token',:controller=>'oauth',:action=>'request_token'
map.access_token '/oauth/access_token',:controller=>'oauth',:action=>'access_token'
map.test_request '/oauth/test_request',:controller=>'oauth',:action=>'test_request'
=== User Model
Add the following lines to your user model:
has_many :client_applications
has_many :tokens, :class_name=>"OauthToken",:order=>"authorized_at desc",:include=>[:client_application]
=== Migrate database
The database is defined in:
db/migrate/XXX_create_oauth_tables.rb
Run them as any other normal migration in rails with:
rake db:migrate
=== RSpec
The generator installs a collection of RSpec (http://rspec.info) specs instead of normal unit_tests. If you don't use RSpec (and really why aren't you?) feel free to remove the spec folder.
If you would like to contribute regular unit tests I will accept them with a smile.
== Protecting your actions
I recommend that you think about what your users would want to provide access to and limit oauth for those only. For example in a CRUD controller you may think about if you want to let consumer applications do the create, update or delete actions. For your application this might make sense, but for others maybe not.
If you want to give oauth access to everything a registered user can do, just replace the filter you have in your controllers with:
before_filter :login_or_oauth_required
If you want to restrict consumers to the index and show methods of your controller do the following:
before_filter :login_required,:except=>[:show,:index]
before_filter :login_or_oauth_required,:only=>[:show,:index]
If you have an action you only want used via oauth:
before_filter :oauth_required
All of these places the tokens user in current_user as you would expect. It also exposes the following methods:
* current_token - for accessing the token used to authorize the current request
* current_client_application - for accessing information about which consumer is currently accessing your request
You could add application specific information to the OauthToken and ClientApplication model for such things as object level access control, billing, expiry etc. Be creative and you can create some really cool applications here.
== More
The Google Code project is http://code.google.com/p/oauth-plugin/
The Mailing List for all things OAuth in Ruby is:
http://groups.google.com/group/oauth-ruby
The Mailing list for everything else OAuth is:
http://groups.google.com/group/oauth
The OAuth Ruby Gem home page is http://oauth.rubyforge.org
Please help documentation, patches and testing.
Copyright (c) 2007-2008 Pelle Braendgaard, released under the MIT license

View file

@ -1,22 +0,0 @@
require 'rake'
require 'rake/testtask'
require 'rake/rdoctask'
desc 'Default: run unit tests.'
task :default => :test
desc 'Test the oauth plugin.'
Rake::TestTask.new(:test) do |t|
t.libs << 'lib'
t.pattern = 'test/**/*_test.rb'
t.verbose = true
end
desc 'Generate documentation for the oauth plugin.'
Rake::RDocTask.new(:rdoc) do |rdoc|
rdoc.rdoc_dir = 'rdoc'
rdoc.title = 'Oauth'
rdoc.options << '--line-numbers' << '--inline-source'
rdoc.rdoc_files.include('README')
rdoc.rdoc_files.include('lib/**/*.rb')
end

View file

@ -1,24 +0,0 @@
./script/generate oauth_provider
This creates an OAuth Provider controller as well as the requisite models.
It requires an authentication framework such as acts_as_authenticated, restful_authentication or restful_open_id_authentication.
If you generated the migration file (true by default), make sure you run
rake db:migrate
You need to add the following routes to your config/routes.rb file:
map.resources :oauth_clients
map.oauth '/oauth',:controller=>'oauth',:action=>'index'
map.authorize '/oauth/authorize',:controller=>'oauth',:action=>'authorize'
map.request_token '/oauth/request_token',:controller=>'oauth',:action=>'request_token'
map.access_token '/oauth/access_token',:controller=>'oauth',:action=>'access_token'
map.test_request '/oauth/test_request',:controller=>'oauth',:action=>'test_request'
include the following in your user.rb
has_many :client_applications
has_many :tokens, :class_name=>"OauthToken",:order=>"authorized_at desc",:include=>[:client_application]

View file

@ -1,116 +0,0 @@
class OauthProviderGenerator < Rails::Generator::Base
default_options :skip_migration => false
attr_reader :class_path,
:controller_name,
:controller_class_path,
:controller_file_path,
:controller_class_name,
:controller_singular_name,
:controller_plural_name
alias_method :controller_file_name, :controller_singular_name
def initialize(runtime_args, runtime_options = {})
super
@controller_name = args.shift || 'oauth'
@controller_singular_name = 'oauth'
@controller_plural_name = 'oauth'
@controller_file_name = 'oauth'
@controller_class_name="Oauth"
@class_path=''
@controller_class_path=''
end
def manifest
record do |m|
# Check for class naming collisions.
# Check for class naming collisions.
m.class_collisions controller_class_path, "#{controller_class_name}Controller", # Oauth Controller
"#{controller_class_name}Helper",
"#{controller_class_name}ClientsController",
"#{controller_class_name}ClientsHelper"
m.class_collisions class_path, "ClientApplication","OauthNonce","RequestToken","AccessToken","OauthToken"
# Controller, helper, views, and test directories.
m.directory File.join('app/models', class_path)
m.directory File.join('app/controllers', controller_class_path)
m.directory File.join('app/helpers', controller_class_path)
m.directory File.join('app/views', controller_class_path, controller_file_name)
m.directory File.join('app/views', controller_class_path, 'oauth_clients')
m.template 'client_application.rb',File.join('app/models',"client_application.rb")
m.template 'oauth_token.rb', File.join('app/models',"oauth_token.rb")
m.template 'request_token.rb', File.join('app/models',"request_token.rb")
m.template 'access_token.rb', File.join('app/models',"access_token.rb")
m.template 'oauth_nonce.rb', File.join('app/models',"oauth_nonce.rb")
m.template 'controller.rb',File.join('app/controllers',controller_class_path,"#{controller_file_name}_controller.rb")
m.template 'helper.rb',File.join('app/helpers',controller_class_path,"#{controller_file_name}_helper.rb")
m.template 'clients_controller.rb',File.join('app/controllers',controller_class_path,"#{controller_file_name}_clients_controller.rb")
m.template 'clients_helper.rb',File.join('app/helpers',controller_class_path,"#{controller_file_name}_clients_helper.rb")
if !options[:test_unit]
m.directory File.join('spec')
m.directory File.join('spec/models')
m.directory File.join('spec/fixtures', class_path)
m.directory File.join('spec/controllers', controller_class_path)
m.template 'client_application_spec.rb',File.join('spec/models',"client_application_spec.rb")
m.template 'oauth_token_spec.rb', File.join('spec/models',"oauth_token_spec.rb")
m.template 'oauth_nonce_spec.rb', File.join('spec/models',"oauth_nonce_spec.rb")
m.template 'client_applications.yml',File.join('spec/fixtures',"client_applications.yml")
m.template 'oauth_tokens.yml', File.join('spec/fixtures',"oauth_tokens.yml")
m.template 'oauth_nonces.yml', File.join('spec/fixtures',"oauth_nonces.yml")
m.template 'controller_spec_helper.rb', File.join('spec/controllers', controller_class_path,"#{controller_file_name}_controller_spec_helper.rb")
m.template 'controller_spec.rb',File.join('spec/controllers',controller_class_path,"#{controller_file_name}_controller_spec.rb")
m.template 'clients_controller_spec.rb',File.join('spec/controllers',controller_class_path,"#{controller_file_name}_clients_controller_spec.rb")
else
m.directory File.join('test')
m.directory File.join('test/unit')
m.directory File.join('test/fixtures', class_path)
m.directory File.join('test/functional', controller_class_path)
m.template 'client_application_test.rb',File.join('test/unit',"client_application_test.rb")
m.template 'oauth_token_test.rb', File.join('test/unit',"oauth_token_test.rb")
m.template 'oauth_nonce_test.rb', File.join('test/unit',"oauth_nonce_test.rb")
m.template 'client_applications.yml',File.join('test/fixtures',"client_applications.yml")
m.template 'oauth_tokens.yml', File.join('test/fixtures',"oauth_tokens.yml")
m.template 'oauth_nonces.yml', File.join('test/fixtures',"oauth_nonces.yml")
m.template 'controller_test_helper.rb', File.join('test', controller_class_path,"#{controller_file_name}_controller_test_helper.rb")
m.template 'controller_test.rb',File.join('test/functional',controller_class_path,"#{controller_file_name}_controller_test.rb")
m.template 'clients_controller_test.rb',File.join('test/functional',controller_class_path,"#{controller_file_name}_clients_controller_test.rb")
end
m.template '_form.html.erb', File.join('app/views', controller_class_path, 'oauth_clients', "_form.html.erb")
m.template 'new.html.erb', File.join('app/views', controller_class_path, 'oauth_clients', "new.html.erb")
m.template 'index.html.erb', File.join('app/views', controller_class_path, 'oauth_clients', "index.html.erb")
m.template 'show.html.erb', File.join('app/views', controller_class_path, 'oauth_clients', "show.html.erb")
m.template 'edit.html.erb', File.join('app/views', controller_class_path, 'oauth_clients', "edit.html.erb")
m.template 'authorize.html.erb', File.join('app/views', controller_class_path, controller_file_name, "authorize.html.erb")
m.template 'authorize_success.html.erb', File.join('app/views', controller_class_path, controller_file_name, "authorize_success.html.erb")
m.template 'authorize_failure.html.erb', File.join('app/views', controller_class_path, controller_file_name, "authorize_failure.html.erb")
unless options[:skip_migration]
m.migration_template 'migration.rb', 'db/migrate', :assigns => {
:migration_name => "CreateOauthTables"
}, :migration_file_name => "create_oauth_tables"
end
end
end
protected
def banner
"Usage: #{$0} #{spec.name}"
end
def add_options!(opt)
opt.separator ''
opt.separator 'Options:'
opt.on("--skip-migration",
"Don't generate a migration file") { |v| options[:skip_migration] = v }
opt.on("--test-unit",
"Generate the Test::Unit compatible tests instead of RSpec") { |v| options[:test_unit] = v }
end
end

View file

@ -1,16 +0,0 @@
<div class="field">
<label for="client_application_name">Name*</label><br/>
<%%= f.text_field :name %>
</div>
<div class="field">
<label for="client_application_url">Main Application URL*</label><br/>
<%%= f.text_field :url %>
</div>
<div class="field">
<label for="client_application_callback_url">Callback URL*</label><br/>
<%%= f.text_field :callback_url %>
</div>
<div class="field">
<label for="client_application_support_url">Support URL</label><br/>
<%%= f.text_field :support_url %>
</div>

View file

@ -1,10 +0,0 @@
class AccessToken<OauthToken
validates_presence_of :user
before_create :set_authorized_at
protected
def set_authorized_at
self.authorized_at = Time.now
end
end

View file

@ -1,14 +0,0 @@
<h1>Authorize access to your account</h1>
<p>Would you like to authorize <%%= link_to @token.client_application.name,@token.client_application.url %> (<%%= link_to @token.client_application.url,@token.client_application.url %>) to access your account?</p>
<%% form_tag authorize_url do %>
<%%= hidden_field_tag "oauth_token", @token.token %>
<%%- if params[:oauth_callback] -%>
<%%= hidden_field_tag "oauth_callback", params[:oauth_callback] %>
<%%- end -%>
<p>
<%%= check_box_tag 'authorize' %> authorize access
</p>
<p>
<%%= submit_tag %>
</p>
<%% end %>

View file

@ -1 +0,0 @@
<h1>You have disallowed this request</h1>

View file

@ -1 +0,0 @@
<h1>You have allowed this request</h1>

View file

@ -1,54 +0,0 @@
require 'oauth'
class ClientApplication < ActiveRecord::Base
belongs_to :user
has_many :tokens, :class_name => "OauthToken"
validates_presence_of :name, :url, :key, :secret
validates_uniqueness_of :key
before_validation_on_create :generate_keys
def self.find_token(token_key)
token = OauthToken.find_by_token(token_key, :include => :client_application)
if token && token.authorized?
logger.info "Loaded #{token.token} which was authorized by (user_id=#{token.user_id}) on the #{token.authorized_at}"
token
else
nil
end
end
def self.verify_request(request, options = {}, &block)
begin
signature = OAuth::Signature.build(request, options, &block)
logger.info "Signature Base String: #{signature.signature_base_string}"
logger.info "Consumer: #{signature.send :consumer_key}"
logger.info "Token: #{signature.send :token}"
return false unless OauthNonce.remember(signature.request.nonce, signature.request.timestamp)
value = signature.verify
logger.info "Signature verification returned: #{value.to_s}"
value
rescue OAuth::Signature::UnknownSignatureMethod => e
logger.info "ERROR"+e.to_s
false
end
end
def oauth_server
@oauth_server ||= OAuth::Server.new("http://your.site")
end
def credentials
@oauth_client ||= OAuth::Consumer.new(key, secret)
end
def create_request_token
RequestToken.create :client_application => self
end
protected
def generate_keys
@oauth_client = oauth_server.generate_consumer_credentials
self.key = @oauth_client.key
self.secret = @oauth_client.secret
end
end

View file

@ -1,60 +0,0 @@
require File.dirname(__FILE__) + '/../spec_helper'
module OAuthSpecHelpers
def create_consumer
@consumer = OAuth::Consumer.new(@application.key,@application.secret,
{
:site => @application.oauth_server.base_url
})
end
def create_test_request
end
def create_oauth_request
@token = AccessToken.create :client_application => @application, :user => users(:quentin)
@request = @consumer.create_signed_request(:get, "/hello", @token)
end
def create_request_token_request
@request = @consumer.create_signed_request(:get, @application.oauth_server.request_token_path, @token)
end
def create_access_token_request
@token = RequestToken.create :client_application => @application
@request = @consumer.create_signed_request(:get, @application.oauth_server.request_token_path, @token)
end
end
describe ClientApplication do #, :shared => true do
include OAuthSpecHelpers
fixtures :users, :client_applications, :oauth_tokens
before(:each) do
@application = ClientApplication.create :name => "Agree2", :url => "http://agree2.com", :user => users(:quentin)
create_consumer
end
it "should be valid" do
@application.should be_valid
end
it "should not have errors" do
@application.errors.full_messages.should == []
end
it "should have key and secret" do
@application.key.should_not be_nil
@application.secret.should_not be_nil
end
it "should have credentials" do
@application.credentials.should_not be_nil
@application.credentials.key.should == @application.key
@application.credentials.secret.should == @application.secret
end
end

View file

@ -1,42 +0,0 @@
require File.dirname(__FILE__) + '/../test_helper'
module OAuthHelpers
def create_consumer
@consumer=OAuth::Consumer.new(@application.key,@application.secret,
{
:site=>@application.oauth_server.base_url
})
end
end
class ClientApplicationTest < ActiveSupport::TestCase
include OAuthHelpers
fixtures :users,:client_applications,:oauth_tokens
def setup
@application = ClientApplication.create :name=>"Agree2",:url=>"http://agree2.com",:user=>users(:quentin)
create_consumer
end
def test_should_be_valid
assert @application.valid?
end
def test_should_not_have_errors
assert_equal [], @application.errors.full_messages
end
def test_should_have_key_and_secret
assert_not_nil @application.key
assert_not_nil @application.secret
end
def test_should_have_credentials
assert_not_nil @application.credentials
assert_equal @application.key, @application.credentials.key
assert_equal @application.secret, @application.credentials.secret
end
end

View file

@ -1,23 +0,0 @@
# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
one:
id: 1
name: MyString
url: MyString
support_url: MyString
callback_url: MyString
key: one_key
secret: MyString
user_id: 1
created_at: 2007-11-17 16:56:51
updated_at: 2007-11-17 16:56:51
two:
id: 2
name: MyString
url: MyString
support_url: MyString
callback_url: MyString
key: two_key
secret: MyString
user_id: 1
created_at: 2007-11-17 16:56:51
updated_at: 2007-11-17 16:56:51

View file

@ -1,47 +0,0 @@
class OauthClientsController < ApplicationController
before_filter :login_required
def index
@client_applications = current_user.client_applications
@tokens = current_user.tokens.find :all, :conditions => 'oauth_tokens.invalidated_at is null and oauth_tokens.authorized_at is not null'
end
def new
@client_application = ClientApplication.new
end
def create
@client_application = current_user.client_applications.build(params[:client_application])
if @client_application.save
flash[:notice] = "Registered the information successfully"
redirect_to :action => "show", :id => @client_application.id
else
render :action => "new"
end
end
def show
@client_application = current_user.client_applications.find(params[:id])
end
def edit
@client_application = current_user.client_applications.find(params[:id])
end
def update
@client_application = current_user.client_applications.find(params[:id])
if @client_application.update_attributes(params[:client_application])
flash[:notice] = "Updated the client information successfully"
redirect_to :action => "show", :id => @client_application.id
else
render :action => "edit"
end
end
def destroy
@client_application = current_user.client_applications.find(params[:id])
@client_application.destroy
flash[:notice] = "Destroyed the client application registration"
redirect_to :action => "index"
end
end

View file

@ -1,239 +0,0 @@
require File.dirname(__FILE__) + '/../spec_helper'
require File.dirname(__FILE__) + '/oauth_controller_spec_helper'
require 'oauth/client/action_controller_request'
describe OauthClientsController, "index" do
include OAuthControllerSpecHelper
before(:each) do
login_as_application_owner
end
def do_get
get :index
end
it "should be successful" do
do_get
response.should be_success
end
it "should query current_users client applications" do
@user.should_receive(:client_applications).and_return(@client_applications)
do_get
end
it "should assign client_applications" do
do_get
assigns[:client_applications].should equal(@client_applications)
end
it "should render index template" do
do_get
response.should render_template('index')
end
end
describe OauthClientsController, "show" do
include OAuthControllerSpecHelper
before(:each) do
login_as_application_owner
end
def do_get
get :show, :id => '3'
end
it "should be successful" do
do_get
response.should be_success
end
it "should query current_users client applications" do
@user.should_receive(:client_applications).and_return(@client_applications)
@client_applications.should_receive(:find).with('3').and_return(@client_application)
do_get
end
it "should assign client_applications" do
do_get
assigns[:client_application].should equal(@client_application)
end
it "should render show template" do
do_get
response.should render_template('show')
end
end
describe OauthClientsController, "new" do
include OAuthControllerSpecHelper
before(:each) do
login_as_application_owner
ClientApplication.stub!(:new).and_return(@client_application)
end
def do_get
get :new
end
it "should be successful" do
do_get
response.should be_success
end
it "should assign client_applications" do
do_get
assigns[:client_application].should equal(@client_application)
end
it "should render show template" do
do_get
response.should render_template('new')
end
end
describe OauthClientsController, "edit" do
include OAuthControllerSpecHelper
before(:each) do
login_as_application_owner
end
def do_get
get :edit, :id => '3'
end
it "should be successful" do
do_get
response.should be_success
end
it "should query current_users client applications" do
@user.should_receive(:client_applications).and_return(@client_applications)
@client_applications.should_receive(:find).with('3').and_return(@client_application)
do_get
end
it "should assign client_applications" do
do_get
assigns[:client_application].should equal(@client_application)
end
it "should render edit template" do
do_get
response.should render_template('edit')
end
end
describe OauthClientsController, "create" do
include OAuthControllerSpecHelper
before(:each) do
login_as_application_owner
@client_applications.stub!(:build).and_return(@client_application)
@client_application.stub!(:save).and_return(true)
end
def do_valid_post
@client_application.should_receive(:save).and_return(true)
post :create, 'client_application'=>{'name' => 'my site'}
end
def do_invalid_post
@client_application.should_receive(:save).and_return(false)
post :create, :client_application=>{:name => 'my site'}
end
it "should query current_users client applications" do
@client_applications.should_receive(:build).and_return(@client_application)
do_valid_post
end
it "should redirect to new client_application" do
do_valid_post
response.should be_redirect
response.should redirect_to(:action => "show", :id => @client_application.id)
end
it "should assign client_applications" do
do_invalid_post
assigns[:client_application].should equal(@client_application)
end
it "should render show template" do
do_invalid_post
response.should render_template('new')
end
end
describe OauthClientsController, "destroy" do
include OAuthControllerSpecHelper
before(:each) do
login_as_application_owner
@client_application.stub!(:destroy)
end
def do_delete
delete :destroy, :id => '3'
end
it "should query current_users client applications" do
@user.should_receive(:client_applications).and_return(@client_applications)
@client_applications.should_receive(:find).with('3').and_return(@client_application)
do_delete
end
it "should destroy client applications" do
@client_application.should_receive(:destroy)
do_delete
end
it "should redirect to list" do
do_delete
response.should be_redirect
response.should redirect_to(:action => 'index')
end
end
describe OauthClientsController, "update" do
include OAuthControllerSpecHelper
before(:each) do
login_as_application_owner
end
def do_valid_update
@client_application.should_receive(:update_attributes).and_return(true)
put :update, :id => '1', 'client_application'=>{'name' => 'my site'}
end
def do_invalid_update
@client_application.should_receive(:update_attributes).and_return(false)
put :update, :id => '1', 'client_application'=>{'name' => 'my site'}
end
it "should query current_users client applications" do
@user.should_receive(:client_applications).and_return(@client_applications)
@client_applications.should_receive(:find).with('1').and_return(@client_application)
do_valid_update
end
it "should redirect to new client_application" do
do_valid_update
response.should be_redirect
response.should redirect_to(:action => "show", :id => @client_application.id)
end
it "should assign client_applications" do
do_invalid_update
assigns[:client_application].should equal(@client_application)
end
it "should render show template" do
do_invalid_update
response.should render_template('edit')
end
end

View file

@ -1,280 +0,0 @@
require File.dirname(__FILE__) + '/../test_helper'
require File.dirname(__FILE__) + '/../oauth_controller_test_helper'
require 'oauth/client/action_controller_request'
class OauthClientsController; def rescue_action(e) raise e end; end
class OauthClientsControllerIndexTest < ActionController::TestCase
include OAuthControllerTestHelper
tests OauthClientsController
def setup
@controller = OauthClientsController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
login_as_application_owner
end
def do_get
get :index
end
def test_should_be_successful
do_get
assert @response.success?
end
def test_should_query_current_users_client_applications
@user.expects(:client_applications).returns(@client_applications)
do_get
end
def test_should_assign_client_applications
do_get
assert_equal @client_applications, assigns(:client_applications)
end
def test_should_render_index_template
do_get
assert_template 'index'
end
end
class OauthClientsControllerShowTest < ActionController::TestCase
include OAuthControllerTestHelper
tests OauthClientsController
def setup
@controller = OauthClientsController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
login_as_application_owner
end
def do_get
get :show, :id=>'3'
end
def test_should_be_successful
do_get
assert @response.success?
end
def test_should_query_current_users_client_applications
@user.expects(:client_applications).returns(@client_applications)
@client_applications.expects(:find).with('3').returns(@client_application)
do_get
end
def test_should_assign_client_applications
do_get
assert_equal @client_application, assigns(:client_application)
end
def test_should_render_show_template
do_get
assert_template 'show'
end
end
class OauthClientsControllerNewTest < ActionController::TestCase
include OAuthControllerTestHelper
tests OauthClientsController
def setup
@controller = OauthClientsController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
login_as_application_owner
ClientApplication.stubs(:new).returns(@client_application)
end
def do_get
get :new
end
def test_should_be_successful
do_get
assert @response.success?
end
def test_should_assign_client_applications
do_get
assert_equal @client_application, assigns(:client_application)
end
def test_should_render_show_template
do_get
assert_template 'new'
end
end
class OauthClientsControllerEditTest < ActionController::TestCase
include OAuthControllerTestHelper
tests OauthClientsController
def setup
@controller = OauthClientsController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
login_as_application_owner
end
def do_get
get :edit, :id=>'3'
end
def test_should_be_successful
do_get
assert @response.success?
end
def test_should_query_current_users_client_applications
@user.expects(:client_applications).returns(@client_applications)
@client_applications.expects(:find).with('3').returns(@client_application)
do_get
end
def test_should_assign_client_applications
do_get
assert_equal @client_application, assigns(:client_application)
end
def test_should_render_edit_template
do_get
assert_template 'edit'
end
end
class OauthClientsControllerCreateTest < ActionController::TestCase
include OAuthControllerTestHelper
tests OauthClientsController
def setup
@controller = OauthClientsController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
login_as_application_owner
@client_applications.stubs(:build).returns(@client_application)
@client_application.stubs(:save).returns(true)
end
def do_valid_post
@client_application.expects(:save).returns(true)
post :create,'client_application'=>{'name'=>'my site'}
end
def do_invalid_post
@client_application.expects(:save).returns(false)
post :create,:client_application=>{:name=>'my site'}
end
def test_should_query_current_users_client_applications
@client_applications.expects(:build).returns(@client_application)
do_valid_post
end
def test_should_redirect_to_new_client_application
do_valid_post
assert_response :redirect
assert_redirected_to(:action => "show", :id => @client_application.id)
end
def test_should_assign_client_applications
do_invalid_post
assert_equal @client_application, assigns(:client_application)
end
def test_should_render_show_template
do_invalid_post
assert_template('new')
end
end
class OauthClientsControllerDestroyTest < ActionController::TestCase
include OAuthControllerTestHelper
tests OauthClientsController
def setup
@controller = OauthClientsController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
login_as_application_owner
@client_application.stubs(:destroy)
end
def do_delete
delete :destroy,:id=>'3'
end
def test_should_query_current_users_client_applications
@user.expects(:client_applications).returns(@client_applications)
@client_applications.expects(:find).with('3').returns(@client_application)
do_delete
end
def test_should_destroy_client_applications
@client_application.expects(:destroy)
do_delete
end
def test_should_redirect_to_list
do_delete
assert_response :redirect
assert_redirected_to :action => 'index'
end
end
class OauthClientsControllerUpdateTest < ActionController::TestCase
include OAuthControllerTestHelper
tests OauthClientsController
def setup
@controller = OauthClientsController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
login_as_application_owner
end
def do_valid_update
@client_application.expects(:update_attributes).returns(true)
put :update, :id => '1', 'client_application' => {'name'=>'my site'}
end
def do_invalid_update
@client_application.expects(:update_attributes).returns(false)
put :update, :id=>'1', 'client_application' => {'name'=>'my site'}
end
def test_should_query_current_users_client_applications
@user.expects(:client_applications).returns(@client_applications)
@client_applications.expects(:find).with('1').returns(@client_application)
do_valid_update
end
def test_should_redirect_to_new_client_application
do_valid_update
assert_response :redirect
assert_redirected_to :action => "show", :id => @client_application.id
end
def test_should_assign_client_applications
do_invalid_update
assert_equal @client_application, assigns(:client_application)
end
def test_should_render_show_template
do_invalid_update
assert_template('edit')
end
end

View file

@ -1,2 +0,0 @@
module OauthClientsHelper
end

View file

@ -1,62 +0,0 @@
class OauthController < ApplicationController
before_filter :login_required, :except => [:request_token, :access_token, :test_request]
before_filter :login_or_oauth_required, :only => [:test_request]
before_filter :verify_oauth_consumer_signature, :only => [:request_token]
before_filter :verify_oauth_request_token, :only => [:access_token]
# Uncomment the following if you are using restful_open_id_authentication
# skip_before_filter :verify_authenticity_token
def request_token
@token = current_client_application.create_request_token
if @token
render :text => @token.to_query
else
render :nothing => true, :status => 401
end
end
def access_token
@token = current_token && current_token.exchange!
if @token
render :text => @token.to_query
else
render :nothing => true, :status => 401
end
end
def test_request
render :text => params.collect{|k,v|"#{k}=#{v}"}.join("&")
end
def authorize
@token = RequestToken.find_by_token params[:oauth_token]
unless @token.invalidated?
if request.post?
if params[:authorize] == '1'
@token.authorize!(current_user)
redirect_url = params[:oauth_callback] || @token.client_application.callback_url
if redirect_url
redirect_to "#{redirect_url}?oauth_token=#{@token.token}"
else
render :action => "authorize_success"
end
elsif params[:authorize] == "0"
@token.invalidate!
render :action => "authorize_failure"
end
end
else
render :action => "authorize_failure"
end
end
def revoke
@token = current_user.tokens.find_by_token params[:token]
if @token
@token.invalidate!
flash[:notice] = "You've revoked the token for #{@token.client_application.name}"
end
redirect_to oauth_clients_url
end
end

View file

@ -1,296 +0,0 @@
require File.dirname(__FILE__) + '/../spec_helper'
require File.dirname(__FILE__) + '/oauth_controller_spec_helper'
require 'oauth/client/action_controller_request'
describe OauthController, "getting a request token" do
include OAuthControllerSpecHelper
before(:each) do
setup_oauth
sign_request_with_oauth
@client_application.stub!(:create_request_token).and_return(@request_token)
end
def do_get
get :request_token
end
it "should be successful" do
do_get
response.should be_success
end
it "should query for client_application" do
ClientApplication.should_receive(:find_by_key).with('key').and_return(@client_application)
do_get
end
it "should request token from client_application" do
@client_application.should_receive(:create_request_token).and_return(@request_token)
do_get
end
it "should return token string" do
do_get
response.body.should == @request_token_string
end
end
describe OauthController, "token authorization" do
include OAuthControllerSpecHelper
before(:each) do
login
setup_oauth
RequestToken.stub!(:find_by_token).and_return(@request_token)
end
def do_get
get :authorize, :oauth_token => @request_token.token
end
def do_post
@request_token.should_receive(:authorize!).with(@user)
post :authorize, :oauth_token => @request_token.token, :authorize => "1"
end
def do_post_without_user_authorization
@request_token.should_receive(:invalidate!)
post :authorize, :oauth_token => @request_token.token, :authorize => "0"
end
def do_post_with_callback
@request_token.should_receive(:authorize!).with(@user)
post :authorize, :oauth_token => @request_token.token, :oauth_callback => "http://application/alternative", :authorize => "1"
end
def do_post_with_no_application_callback
@request_token.should_receive(:authorize!).with(@user)
@client_application.stub!(:callback_url).and_return(nil)
post :authorize, :oauth_token => @request_token.token, :authorize => "1"
end
it "should be successful" do
do_get
response.should be_success
end
it "should query for client_application" do
RequestToken.should_receive(:find_by_token).and_return(@request_token)
do_get
end
it "should assign token" do
do_get
assigns[:token].should equal(@request_token)
end
it "should render authorize template" do
do_get
response.should render_template('authorize')
end
it "should redirect to default callback" do
do_post
response.should be_redirect
response.should redirect_to("http://application/callback?oauth_token=#{@request_token.token}")
end
it "should redirect to callback in query" do
do_post_with_callback
response.should be_redirect
response.should redirect_to("http://application/alternative?oauth_token=#{@request_token.token}")
end
it "should be successful on authorize without any application callback" do
do_post_with_no_application_callback
response.should be_success
end
it "should be successful on authorize without any application callback" do
do_post_with_no_application_callback
response.should render_template('authorize_success')
end
it "should render failure screen on user invalidation" do
do_post_without_user_authorization
response.should render_template('authorize_failure')
end
it "should render failure screen if token is invalidated" do
@request_token.should_receive(:invalidated?).and_return(true)
do_get
response.should render_template('authorize_failure')
end
end
describe OauthController, "getting an access token" do
include OAuthControllerSpecHelper
before(:each) do
setup_oauth
sign_request_with_oauth @request_token
@request_token.stub!(:exchange!).and_return(@access_token)
end
def do_get
get :access_token
end
it "should be successful" do
do_get
response.should be_success
end
it "should query for client_application" do
ClientApplication.should_receive(:find_token).with(@request_token.token).and_return(@request_token)
do_get
end
it "should request token from client_application" do
@request_token.should_receive(:exchange!).and_return(@access_token)
do_get
end
it "should return token string" do
do_get
response.body.should == @access_token_string
end
end
class OauthorizedController<ApplicationController
before_filter :login_or_oauth_required, :only => :both
before_filter :login_required, :only => :interactive
before_filter :oauth_required, :only => :token_only
def interactive
end
def token_only
end
def both
end
end
describe OauthorizedController, " access control" do
include OAuthControllerSpecHelper
before(:each) do
end
it "should have access_token set up correctly" do
setup_to_authorize_request
@access_token.is_a?(AccessToken).should == true
@access_token.should be_authorized
@access_token.should_not be_invalidated
@access_token.user.should == @user
@access_token.client_application.should == @client_application
end
it "should return false for oauth? by default" do
controller.send(:oauth?).should == false
end
it "should return nil for current_token by default" do
controller.send(:current_token).should be_nil
end
it "should allow oauth when using login_or_oauth_required" do
setup_to_authorize_request
sign_request_with_oauth(@access_token)
ClientApplication.should_receive(:find_token).with(@access_token.token).and_return(@access_token)
get :both
controller.send(:current_token).should == @access_token
controller.send(:current_token).is_a?(AccessToken).should == true
controller.send(:current_user).should == @user
controller.send(:current_client_application).should == @client_application
response.code.should == '200'
response.should be_success
end
it "should allow interactive when using login_or_oauth_required" do
login
get :both
response.should be_success
controller.send(:current_user).should == @user
controller.send(:current_token).should be_nil
end
it "should allow oauth when using oauth_required" do
setup_to_authorize_request
sign_request_with_oauth(@access_token)
ClientApplication.should_receive(:find_token).with(@access_token.token).and_return(@access_token)
get :token_only
controller.send(:current_token).should == @access_token
controller.send(:current_client_application).should == @client_application
controller.send(:current_user).should == @user
response.code.should == '200'
response.should be_success
end
it "should disallow oauth using RequestToken when using oauth_required" do
setup_to_authorize_request
ClientApplication.should_receive(:find_token).with(@request_token.token).and_return(@request_token)
sign_request_with_oauth(@request_token)
get :token_only
response.code.should == '401'
end
it "should disallow interactive when using oauth_required" do
login
get :token_only
response.code.should == '401'
controller.send(:current_user).should == @user
controller.send(:current_token).should be_nil
end
it "should disallow oauth when using login_required" do
setup_to_authorize_request
sign_request_with_oauth(@access_token)
get :interactive
response.code.should == "302"
controller.send(:current_user).should be_nil
controller.send(:current_token).should be_nil
end
it "should allow interactive when using login_required" do
login
get :interactive
response.should be_success
controller.send(:current_user).should == @user
controller.send(:current_token).should be_nil
end
end
describe OauthController, "revoke" do
include OAuthControllerSpecHelper
before(:each) do
setup_oauth_for_user
@request_token.stub!(:invalidate!)
end
def do_post
post :revoke, :token => "TOKEN STRING"
end
it "should redirect to index" do
do_post
response.should be_redirect
response.should redirect_to('http://test.host/oauth_clients')
end
it "should query current_users tokens" do
@tokens.should_receive(:find_by_token).and_return(@request_token)
do_post
end
it "should call invalidate on token" do
@request_token.should_receive(:invalidate!)
do_post
end
end

View file

@ -1,74 +0,0 @@
module OAuthControllerSpecHelper
def login
controller.stub!(:local_request?).and_return(true)
@user = mock_model(User)
controller.stub!(:current_user).and_return(@user)
@tokens = []
@tokens.stub!(:find).and_return(@tokens)
@user.stub!(:tokens).and_return(@tokens)
User.stub!(:find_by_id).and_return(@user)
end
def login_as_application_owner
login
@client_application = mock_model(ClientApplication)
@client_applications = [@client_application]
@user.stub!(:client_applications).and_return(@client_applications)
@client_applications.stub!(:find).and_return(@client_application)
end
def setup_oauth
controller.stub!(:local_request?).and_return(true)
@user||=mock_model(User)
User.stub!(:find_by_id).and_return(@user)
@server = OAuth::Server.new "http://test.host"
@consumer = OAuth::Consumer.new('key', 'secret',{:site => "http://test.host"})
@client_application = mock_model(ClientApplication)
controller.stub!(:current_client_application).and_return(@client_application)
ClientApplication.stub!(:find_by_key).and_return(@client_application)
@client_application.stub!(:key).and_return(@consumer.key)
@client_application.stub!(:secret).and_return(@consumer.secret)
@client_application.stub!(:name).and_return("Client Application name")
@client_application.stub!(:callback_url).and_return("http://application/callback")
@request_token = mock_model(RequestToken, :token => 'request_token', :client_application => @client_application, :secret => "request_secret", :user => @user)
@request_token.stub!(:invalidated?).and_return(false)
ClientApplication.stub!(:find_token).and_return(@request_token)
@request_token_string = "oauth_token = request_token&oauth_token_secret = request_secret"
@request_token.stub!(:to_query).and_return(@request_token_string)
@access_token = mock_model(AccessToken, :token => 'access_token', :client_application => @client_application, :secret => "access_secret", :user => @user)
@access_token.stub!(:invalidated?).and_return(false)
@access_token.stub!(:authorized?).and_return(true)
@access_token_string = "oauth_token = access_token&oauth_token_secret = access_secret"
@access_token.stub!(:to_query).and_return(@access_token_string)
@client_application.stub!(:authorize_request?).and_return(true)
# @client_application.stub!(:sign_request_with_oauth_token).and_return(@request_token)
@client_application.stub!(:exchange_for_access_token).and_return(@access_token)
end
def setup_oauth_for_user
login
setup_oauth
@tokens = [@request_token]
@tokens.stub!(:find).and_return(@tokens)
@tokens.stub!(:find_by_token).and_return(@request_token)
@user.stub!(:tokens).and_return(@tokens)
end
def sign_request_with_oauth(token = nil)
ActionController::TestRequest.use_oauth = true
@request.configure_oauth(@consumer,token)
end
def setup_to_authorize_request
setup_oauth
OauthToken.stub!(:find_by_token).with( @access_token.token).and_return(@access_token)
@access_token.stub!(:is_a?).and_return(true)
end
end

View file

@ -1,310 +0,0 @@
require File.dirname(__FILE__) + '/../test_helper'
require File.dirname(__FILE__) + '/../oauth_controller_test_helper'
require 'oauth/client/action_controller_request'
class OauthController; def rescue_action(e) raise e end; end
class OauthControllerRequestTokenTest < ActionController::TestCase
include OAuthControllerTestHelper
tests OauthController
def setup
@controller = OauthController.new
setup_oauth
sign_request_with_oauth
@client_application.stubs(:create_request_token).returns(@request_token)
end
def do_get
get :request_token
end
def test_should_be_successful
do_get
assert @response.success?
end
def test_should_query_for_client_application
ClientApplication.expects(:find_by_key).with('key').returns(@client_application)
do_get
end
def test_should_request_token_from_client_application
@client_application.expects(:create_request_token).returns(@request_token)
do_get
end
def test_should_return_token_string
do_get
assert_equal @request_token_string, @response.body
end
end
class OauthControllerTokenAuthorizationTest < ActionController::TestCase
include OAuthControllerTestHelper
tests OauthController
def setup
@controller = OauthController.new
login
setup_oauth
RequestToken.stubs(:find_by_token).returns(@request_token)
end
def do_get
get :authorize, :oauth_token => @request_token.token
end
def do_post
@request_token.expects(:authorize!).with(@user)
post :authorize,:oauth_token=>@request_token.token,:authorize=>"1"
end
def do_post_without_user_authorization
@request_token.expects(:invalidate!)
post :authorize,:oauth_token=>@request_token.token,:authorize=>"0"
end
def do_post_with_callback
@request_token.expects(:authorize!).with(@user)
post :authorize,:oauth_token=>@request_token.token,:oauth_callback=>"http://application/alternative",:authorize=>"1"
end
def do_post_with_no_application_callback
@request_token.expects(:authorize!).with(@user)
@client_application.stubs(:callback_url).returns(nil)
post :authorize, :oauth_token => @request_token.token, :authorize=>"1"
end
def test_should_be_successful
do_get
assert @response.success?
end
def test_should_query_for_client_application
RequestToken.expects(:find_by_token).returns(@request_token)
do_get
end
def test_should_assign_token
do_get
assert_equal @request_token, assigns(:token)
end
def test_should_render_authorize_template
do_get
assert_template('authorize')
end
def test_should_redirect_to_default_callback
do_post
assert_response :redirect
assert_redirected_to("http://application/callback?oauth_token=#{@request_token.token}")
end
def test_should_redirect_to_callback_in_query
do_post_with_callback
assert_response :redirect
assert_redirected_to("http://application/alternative?oauth_token=#{@request_token.token}")
end
def test_should_be_successful_on_authorize_without_any_application_callback
do_post_with_no_application_callback
assert @response.success?
assert_template('authorize_success')
end
def test_should_render_failure_screen_on_user_invalidation
do_post_without_user_authorization
assert_template('authorize_failure')
end
def test_should_render_failure_screen_if_token_is_invalidated
@request_token.expects(:invalidated?).returns(true)
do_get
assert_template('authorize_failure')
end
end
class OauthControllerGetAccessTokenTest < ActionController::TestCase
include OAuthControllerTestHelper
tests OauthController
def setup
@controller = OauthController.new
setup_oauth
sign_request_with_oauth @request_token
@request_token.stubs(:exchange!).returns(@access_token)
end
def do_get
get :access_token
end
def test_should_be_successful
do_get
assert @response.success?
end
def test_should_query_for_client_application
ClientApplication.expects(:find_token).with(@request_token.token).returns(@request_token)
do_get
end
def test_should_request_token_from_client_application
@request_token.expects(:exchange!).returns(@access_token)
do_get
end
def test_should__return_token_string
do_get
assert_equal @access_token_string, @response.body
end
end
class OauthorizedController < ApplicationController
before_filter :login_or_oauth_required,:only=>:both
before_filter :login_required,:only=>:interactive
before_filter :oauth_required,:only=>:token_only
def interactive
render :text => "interactive"
end
def token_only
render :text => "token"
end
def both
render :text => "both"
end
end
class OauthControllerAccessControlTest < ActionController::TestCase
include OAuthControllerTestHelper
tests OauthorizedController
def setup
@controller = OauthorizedController.new
end
def test_should__have_access_token_set_up_correctly
setup_to_authorize_request
assert @access_token.is_a?(AccessToken)
assert @access_token.authorized?
assert !@access_token.invalidated?
assert_equal @user, @access_token.user
assert_equal @client_application, @access_token.client_application
end
def test_should_return_false_for_oauth_by_default
assert_equal false, @controller.send(:oauth?)
end
def test_should_return_nil_for_current_token_by_default
assert_nil @controller.send(:current_token)
end
def test_should_allow_oauth_when_using_login_or_oauth_required
setup_to_authorize_request
sign_request_with_oauth(@access_token)
ClientApplication.expects(:find_token).with(@access_token.token).returns(@access_token)
get :both
assert_equal @access_token, @controller.send(:current_token)
assert @controller.send(:current_token).is_a?(AccessToken)
assert_equal @user, @controller.send(:current_user)
assert_equal @client_application, @controller.send(:current_client_application)
assert_equal '200', @response.code
assert @response.success?
end
def test_should_allow_interactive_when_using_login_or_oauth_required
login
get :both
assert @response.success?
assert_equal @user, @controller.send(:current_user)
assert_nil @controller.send(:current_token)
end
def test_should_allow_oauth_when_using_oauth_required
setup_to_authorize_request
sign_request_with_oauth(@access_token)
ClientApplication.expects(:find_token).with(@access_token.token).returns(@access_token)
get :token_only
assert_equal @access_token, @controller.send(:current_token)
assert_equal @client_application, @controller.send(:current_client_application)
assert_equal @user, @controller.send(:current_user)
assert_equal '200', @response.code
assert @response.success?
end
def test_should_disallow_oauth_using_request_token_when_using_oauth_required
setup_to_authorize_request
ClientApplication.expects(:find_token).with(@request_token.token).returns(@request_token)
sign_request_with_oauth(@request_token)
get :token_only
assert_equal '401', @response.code
end
def test_should_disallow_interactive_when_using_oauth_required
login
get :token_only
assert_equal '401', @response.code
assert_equal @user, @controller.send(:current_user)
assert_nil @controller.send(:current_token)
end
def test_should_disallow_oauth_when_using_login_required
setup_to_authorize_request
sign_request_with_oauth(@access_token)
get :interactive
assert_equal "302",@response.code
assert_nil @controller.send(:current_user)
assert_nil @controller.send(:current_token)
end
def test_should_allow_interactive_when_using_login_required
login
get :interactive
assert @response.success?
assert_equal @user, @controller.send(:current_user)
assert_nil @controller.send(:current_token)
end
end
class OauthControllerRevokeTest < ActionController::TestCase
include OAuthControllerTestHelper
tests OauthController
def setup
@controller = OauthController.new
setup_oauth_for_user
@request_token.stubs(:invalidate!)
end
def do_post
post :revoke, :token => "TOKEN STRING"
end
def test_should_redirect_to_index
do_post
assert_response :redirect
assert_redirected_to('http://test.host/oauth_clients')
end
def test_should_query_current_users_tokens
@tokens.expects(:find_by_token).returns(@request_token)
do_post
end
def test_should_call_invalidate_on_token
@request_token.expects(:invalidate!)
do_post
end
end

View file

@ -1,115 +0,0 @@
require "mocha"
module OAuthControllerTestHelper
# Some custom stuff since we're using Mocha
def mock_model(model_class, options_and_stubs = {})
id = rand(10000)
options_and_stubs.reverse_merge! :id => id,
:to_param => id.to_s,
:new_record? => false,
:errors => stub("errors", :count => 0)
m = stub("#{model_class.name}_#{options_and_stubs[:id]}", options_and_stubs)
m.instance_eval <<-CODE
def is_a?(other)
#{model_class}.ancestors.include?(other)
end
def kind_of?(other)
#{model_class}.ancestors.include?(other)
end
def instance_of?(other)
other == #{model_class}
end
def class
#{model_class}
end
CODE
yield m if block_given?
m
end
def mock_full_client_application
mock_model(ClientApplication,
:name => "App1",
:url => "http://app.com",
:callback_url => "http://app.com/callback",
:support_url => "http://app.com/support",
:key => "asd23423yy",
:secret => "secret",
:oauth_server => OAuth::Server.new("http://kowabunga.com")
)
end
def login
@controller.stubs(:local_request?).returns(true)
@user = mock_model(User, :login => "ron")
@controller.stubs(:current_user).returns(@user)
@tokens=[]
@tokens.stubs(:find).returns(@tokens)
@user.stubs(:tokens).returns(@tokens)
User.stubs(:find_by_id).returns(@user)
end
def login_as_application_owner
login
@client_application = mock_full_client_application
@client_applications = [@client_application]
@user.stubs(:client_applications).returns(@client_applications)
@client_applications.stubs(:find).returns(@client_application)
end
def setup_oauth
@controller.stubs(:local_request?).returns(true)
@user||=mock_model(User)
User.stubs(:find_by_id).returns(@user)
@server=OAuth::Server.new "http://test.host"
@consumer=OAuth::Consumer.new('key','secret',{:site=>"http://test.host"})
@client_application = mock_full_client_application
@controller.stubs(:current_client_application).returns(@client_application)
ClientApplication.stubs(:find_by_key).returns(@client_application)
@client_application.stubs(:key).returns(@consumer.key)
@client_application.stubs(:secret).returns(@consumer.secret)
@client_application.stubs(:name).returns("Client Application name")
@client_application.stubs(:callback_url).returns("http://application/callback")
@request_token=mock_model(RequestToken,:token=>'request_token',:client_application=>@client_application,:secret=>"request_secret",:user=>@user)
@request_token.stubs(:invalidated?).returns(false)
ClientApplication.stubs(:find_token).returns(@request_token)
@request_token_string="oauth_token=request_token&oauth_token_secret=request_secret"
@request_token.stubs(:to_query).returns(@request_token_string)
@access_token=mock_model(AccessToken,:token=>'access_token',:client_application=>@client_application,:secret=>"access_secret",:user=>@user)
@access_token.stubs(:invalidated?).returns(false)
@access_token.stubs(:authorized?).returns(true)
@access_token_string="oauth_token=access_token&oauth_token_secret=access_secret"
@access_token.stubs(:to_query).returns(@access_token_string)
@client_application.stubs(:authorize_request?).returns(true)
# @client_application.stubs(:sign_request_with_oauth_token).returns(@request_token)
@client_application.stubs(:exchange_for_access_token).returns(@access_token)
end
def setup_oauth_for_user
login
setup_oauth
@tokens=[@request_token]
@tokens.stubs(:find).returns(@tokens)
@tokens.stubs(:find_by_token).returns(@request_token)
@user.stubs(:tokens).returns(@tokens)
end
def sign_request_with_oauth(token=nil)
ActionController::TestRequest.use_oauth=true
@request.configure_oauth(@consumer, token)
end
def setup_to_authorize_request
setup_oauth
OauthToken.stubs(:find_by_token).with( @access_token.token).returns(@access_token)
@access_token.stubs(:is_a?).returns(true)
end
end

View file

@ -1,5 +0,0 @@
<h1>Edit your application</h1>
<%% form_for :client_application do |f| %>
<%%= render :partial => "form", :locals => { :f => f } %>
<%%= submit_tag "Edit" %>
<%% end %>

View file

@ -1,2 +0,0 @@
module OauthHelper
end

View file

@ -1,40 +0,0 @@
<div class="flash"><%%= flash[:notice] %></div>
<h1>OAuth Client Applications</h1>
<%% unless @tokens.empty? %>
<p>The following tokens have been issued to applications in your name</p>
<table>
<tr><th>Application</th><th>Issued</th><th>&nbsp;</th></tr>
<%% @tokens.each do |token|%>
<%% content_tag_for :tr, token do %>
<td><%%= link_to token.client_application.name, token.client_application.url %></td>
<td><%%= token.authorized_at %></td>
<td>
<%% form_tag :controller => 'oauth', :action => 'revoke' do %>
<%%= hidden_field_tag 'token', token.token %>
<%%= submit_tag "Revoke!" %>
<%% end %>
</td>
<%% end %>
<%% end %>
</table>
<%% end %>
<h3>Application Developers</h3>
<%% if @client_applications.empty? %>
<p>
Do you have an application you would like to register for use with us using the <a href="http://oauth.net">OAuth</a> standard?
</p>
<p>
You must register your web application before it can make OAuth requests to this service
</p>
<%% else %>
<p>
You have the following client applications registered:
</p>
<%% @client_applications.each do |client|%>
<%% div_for client do %>
<%%= link_to client.name, :action => :show, :id => client.id %>
<%% end %>
<%% end %>
<%% end %>
<h3><%%= link_to "Register your application", :action => :new %></h3>

View file

@ -1,44 +0,0 @@
class CreateOauthTables < ActiveRecord::Migration
def self.up
create_table :client_applications do |t|
t.string :name
t.string :url
t.string :support_url
t.string :callback_url
t.string :key, :limit => 50
t.string :secret, :limit => 50
t.integer :user_id
t.timestamps
end
add_index :client_applications, :key, :unique
create_table :oauth_tokens do |t|
t.integer :user_id
t.string :type, :limit => 20
t.integer :client_application_id
t.string :token, :limit => 50
t.string :secret, :limit => 50
t.timestamp :authorized_at, :invalidated_at
t.timestamps
end
add_index :oauth_tokens, :token, :unique
create_table :oauth_nonces do |t|
t.string :nonce
t.integer :timestamp
t.timestamps
end
add_index :oauth_nonces,[:nonce, :timestamp], :unique
end
def self.down
drop_table :client_applications
drop_table :oauth_tokens
drop_table :oauth_nonces
end
end

View file

@ -1,5 +0,0 @@
<h1>Register a new application</h1>
<%% form_for :client_application, :url => { :action => :create } do |f| %>
<%%= render :partial => "form", :locals => { :f => f } %>
<%%= submit_tag "Register" %>
<%% end %>

Some files were not shown because too many files have changed in this diff Show more