points = Tracepoint.find_by_area(min_lat, min_lon, max_lat, max_lon, :offset => offset, :limit => TRACEPOINTS_PER_PAGE, :order => "timestamp DESC" )
doc = XML::Document.new
- doc.encoding = 'UTF-8'
+ doc.encoding = XML::Encoding::UTF_8
root = XML::Node.new 'gpx'
root['version'] = '1.0'
root['creator'] = 'OpenStreetMap.org'
if results_count == 1
position = results.collect { |s| s[:results] }.compact.flatten[0]
- page.call "setPosition", position[:lat], position[:lon], position[:zoom]
+ page.call "setPosition", position[:lat].to_f, position[:lon].to_f, position[:zoom].to_i
else
page.call "openSidebar"
end
def save
@title = 'create account'
- @user = User.new(params[:user])
- @user.visible = true
- @user.data_public = true
- @user.description = "" if @user.description.nil?
- @user.creation_ip = request.remote_ip
-
- if @user.save
- flash[:notice] = "User was successfully created. Check your email for a confirmation note, and you\'ll be mapping in no time :-)<br>Please note that you won't be able to login until you've received and confirmed your email address."
- Notifier.deliver_signup_confirm(@user, @user.tokens.create)
- redirect_to :action => 'login'
- else
+ if Acl.find_by_address(request.remote_ip, :conditions => {:k => "no_account_creation"})
render :action => 'new'
+ else
+ @user = User.new(params[:user])
+
+ @user.visible = true
+ @user.data_public = true
+ @user.description = "" if @user.description.nil?
+ @user.creation_ip = request.remote_ip
+
+ if @user.save
+ flash[:notice] = "User was successfully created. Check your email for a confirmation note, and you\'ll be mapping in no time :-)<br>Please note that you won't be able to login until you've received and confirmed your email address."
+ Notifier.deliver_signup_confirm(@user, @user.tokens.create)
+ redirect_to :action => 'login'
+ else
+ render :action => 'new'
+ end
end
end
# update the entire set of preferences
def update
- p = XML::Parser.new
- p.string = request.raw_post
+ p = XML::Parser.string(request.raw_post)
doc = p.parse
prefs = []
def self.from_xml(xml, create=false)
begin
- p = XML::Parser.new
- p.string = xml
+ p = XML::Parser.string(xml)
doc = p.parse
cs = Changeset.new
# Read in xml as text and return it's Node object representation
def self.from_xml(xml, create=false)
begin
- p = XML::Parser.new
- p.string = xml
+ p = XML::Parser.string(xml)
doc = p.parse
doc.find('//osm/node').each do |pt|
def self.from_xml(xml, create=false)
begin
- p = XML::Parser.new
- p.string = xml
+ p = XML::Parser.string(xml)
doc = p.parse
doc.find('//osm/relation').each do |pt|
def self.from_xml(xml, create=false)
begin
- p = XML::Parser.new
- p.string = xml
+ p = XML::Parser.string(xml)
doc = p.parse
doc.find('//osm/way').each do |pt|
</tr>
<% unless way_details.containing_relation_members.empty? %>
- <tr>
+ <tr valign="top">
<th>Part of:</th>
<td>
<table padding="0">
<% if @entries.empty? %>
- <p>No diary entries</p>
-
+ <p>No diary entries</p>
<% else %>
+ <p>Recent diary entries:</p>
+
+ <hr />
+
+ <%= render :partial => 'diary_entry', :collection => @entries %>
- <p>Recent diary entries:</p>
- <hr />
- <%= render :partial => 'diary_entry', :collection => @entries %>
-
- <%= link_to "Older Entries", { :page => @entry_pages.current.next } if @entry_pages.current.next %>
- <% if @entry_pages.current.next and @entry_pages.current.previous %>
- |
- <% end %>
- <%= link_to "Newer Entries", { :page => @entry_pages.current.previous } if @entry_pages.current.previous %>
-
- <br />
-
+ <%= link_to "Older Entries", { :page => @entry_pages.current.next } if @entry_pages.current.next %>
+ <% if @entry_pages.current.next and @entry_pages.current.previous %>|<% end %>
+ <%= link_to "Newer Entries", { :page => @entry_pages.current.previous } if @entry_pages.current.previous %>
+
+ <br />
<% end %>
<%= rss_link_to :action => 'rss' %>
-<%= auto_discovery_link_tag :atom, :action => 'rss' %>
-
-<br />
-<br />
\ No newline at end of file
+<% content_for :head do %>
+<%= auto_discovery_link_tag :atom, :action => 'rss' %>
+<% end %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<%= javascript_include_tag 'prototype' %>
<%= javascript_include_tag 'site' %>
<%= stylesheet_link_tag 'print', :media => "print" %>
<%= tag("link", { :rel => "search", :type => "application/opensearchdescription+xml", :title => "OpenStreetMap Search", :href => "/opensearch/osm.xml" }) %>
<%= tag("meta", { :name => "description", :content => "OpenStreetMap is the free wiki world map." }) %>
+ <%= yield :head %>
<title>OpenStreetMap<%= ' | '+ h(@title) if @title %></title>
</head>
<body>
<% unless @user %>
<div id="intro">
- OpenStreetMap is a free editable map of the whole world. It is made by people like you.
- <p/>
- OpenStreetMap allows you to view, edit and use geographical data in a collaborative way from anywhere on Earth.
- <p/>
- OpenStreetMap's hosting is kindly supported by the <a href="http://www.vr.ucl.ac.uk">UCL VR Centre</a> and <a href="http://www.bytemark.co.uk">bytemark</a>.
+ <p>
+ OpenStreetMap is a free editable map of the whole world. It
+ is made by people like you.
+ </p>
+ <p>
+ OpenStreetMap allows you to view, edit and use geographical
+ data in a collaborative way from anywhere on Earth.
+ </p>
+ <p>
+ OpenStreetMap's hosting is kindly supported by the
+ <a href="http://www.vr.ucl.ac.uk">UCL VR Centre</a> and
+ <a href="http://www.bytemark.co.uk">bytemark</a>.
+ </p>
</div>
<% end %>
</div>
<% end %>
+ <% if false %>
+ <div id="donate">
+ Support OpenStreetMap by
+ <a href="http://donate.openstreetmap.org/">donating</a>
+ to the Hardware Upgrade Fund.
+ </div>
+ <% end %>
+
<div id="left_menu" class="left_menu">
<a href="http://wiki.openstreetmap.org">Help & Wiki</a><br />
<a href="http://www.opengeodata.org/">News blog</a><br />
</div>
<%= yield :optionals %>
- <div id="cclogo">
- <center>
- <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
- <input type="hidden" name="cmd" value="_s-xclick" />
- <input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but21.gif" style="border: none;" name="submit" alt="Make payments with PayPal - it's fast, free and secure!" />
- <img alt="" border="0" src="https://www.paypal.com/en_GB/i/scr/pixel.gif" width="1" height="1" />
- <input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----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-----END PKCS7-----" />
- </form>
-
- <%= link_to (image_tag "cc_button.png", :alt => "CC by-sa 2.0", :border => "0"), "http://creativecommons.org/licenses/by-sa/2.0/" %>
-
- </center>
- </div>
+ <center>
+ <div class="button" style="width: 115px">
+ <a href="http://donate.openstreetmap.org/"><img src="/images/donate.png" border="0" alt="Make a Donation" /></a>
+ </div>
+ <div id="cclogo" class="button" style="width: 88px">
+ <%= link_to image_tag("cc_button.png", :alt => "CC by-sa 2.0", :border => "0"), "http://creativecommons.org/licenses/by-sa/2.0/" %>
+ </div>
+ </center>
</div>
</body>
</html>
-<p>Hi,</p>
+<p>Hi there!</p>
<p>Someone (hopefully you) would like to create an account over at
<%= SERVER_URL %>.</p>
-<p>If this is you, please click the link below to confirm that account.</p>
+<p>If this is you, welcome! Please click the link below to confirm that account and read on for more information about OpenStreetMap</p>
<p><a href="<%= @url %>"><%= @url %></a></p>
+<p>You can watch an introductory video to OpenStreetMap <a href="http://showmedo.com/videos/video?name=1800000&fromSeriesID=180">video here</a>. There are more <a href="http://showmedo.com/videos/series?name=mS2P1ZqS6">videos here</a>.
+
+Get reading about OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide">on the wiki</p> or <a href="http://www.opengeodata.org/">the opengeodata blog</a> which has <a href="http://www.opengeodata.org/?cat=13">podcasts to listen to</a> also!
+
<p>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>.</p>
<p>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/index.php/Category:Users_in_London">[[Category:Users_in_London]]</a>.</p>
-Hi,
+Hi there!
Someone (hopefully you) would like to create an account over at
<%= SERVER_URL %>
-If this is you, please click the link below to confirm that account.
+If this is you, welcome! Please click the link below to confirm that
+account and read on for more information about OpenStreetMap.
<%= @url %>
+You can watch an introductory video to OpenStreetMap here:
+
+ http://showmedo.com/videos/video?name=1800000&fromSeriesID=180
+
+There are more videos here:
+
+ http://showmedo.com/videos/series?name=mS2P1ZqS6
+
+Get reading about OpenStreetMap on the wiki:
+
+ http://wiki.openstreetmap.org/wiki/Beginners%27_Guide
+
+OpenGeoData.org is OpenStreetMap's blog, and it has podcasts too:
+
+ http://www.opengeodata.org/
+
You may also want to sign up to the OpenStreetMap wiki at:
-http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Main_Page
+ http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Main_Page
It is recommended that you create a user wiki page, which includes
category tags noting where you are, such as [[Category:Users_in_London]].
else if (zoomlevel<13) { var imgname = 'keymapnik'+zoomlevel+'.png'; }
else { var imgname = 'keymapnik13.png'; }
- updateSidebar("Map key", "<p><img src='images/"+imgname+"' /></p>");
+ updateSidebar("Map key", "<p><img src='images/"+imgname+"' /><\/p>");
openSidebar({ width: "210px" });
}
<script type="text/javascript">
<!--
function startSearch() {
- updateSidebar("Search Results", "<p class='search_results_entry'>Searching...</p>");
+ updateSidebar("Search Results", "<p class='search_results_entry'>Searching...<\/p>");
$("search_field").style.display = "none";
$("search_active").style.display = "inline";
<span class="oboxheader">Search</span>
<span class="whereami"><a href="javascript:describeLocation()">Where am I?</a></span>
<div class="search_form">
- <span id="search_field">
+ <div id="search_field">
<% form_remote_tag(:loading => "startSearch()",
:complete => "endSearch()",
:url => { :controller => :geocoder, :action => :search }) do %>
<%= text_field_tag :query, h(params[:query]) %>
<%= submit_tag "Go" %>
<% end %>
- </span>
+ </div>
<p id="search_active">Searching...</p>
</div>
<p class="search_help">
</div>
<div id="attribution">
-<table width="100%">
-<tr>
-<td align="left">http://creativecommons.org/licenses/by-sa/2.0/</td>
-<td align="right">http://openstreetmap.org/</td>
-</tr>
-<tr>
-<td colspan="2" align="center">
-Licensed under the Creative Commons Attribution-Share Alike 2.0 license
-by the OpenStreetMap project and its contributors.
-</td>
-</table>
+ <table width="100%">
+ <tr>
+ <td align="left">http://creativecommons.org/licenses/by-sa/2.0/</td>
+ <td align="right">http://openstreetmap.org/</td>
+ </tr>
+ <tr>
+ <td colspan="2" align="center">Licensed under the Creative Commons Attribution-Share Alike 2.0 license by the OpenStreetMap project and its contributors.</td>
+ </tr>
+ </table>
</div>
<% if params['mlon'] and params['mlat'] %>
<h1><%= h(@title) %></h1>
+<% content_for :head do %>
<%= auto_discovery_link_tag :atom, :action => 'georss', :display_name => @display_name, :tag => @tag %>
+<% end %>
<p>
<%= rss_link_to :action => 'georss', :display_name => @display_name, :tag => @tag %>
-<h1>Login:</h1><br />
-Please login or <%= link_to 'create an account', :controller => 'user', :action => 'new' %>.<br />
+<h1>Login</h1>
+
+<p>Please login or <%= link_to 'create an account', :controller => 'user', :action => 'new' %>.</p>
<% form_tag :action => 'login' do %>
<%= hidden_field_tag('referer', h(params[:referer])) %>
-<br/>
<table>
- <tr><td class="fieldName">Email Address or username:</td><td><%= text_field('user', 'email',{:size => 50, :maxlength => 255}) %></td></tr>
+ <tr><td class="fieldName">Email Address or Username:</td><td><%= text_field('user', 'email',{:size => 50, :maxlength => 255}) %></td></tr>
<tr><td class="fieldName">Password:</td><td><%= password_field('user', 'password',{:size => 28, :maxlength => 255}) %> <span class="minorNote">(<%= link_to 'Lost your password?', :controller => 'user', :action => 'lost_password' %>)</span></td></tr>
<tr><td colspan=2> <!--vertical spacer--></td></tr>
<tr><td></td><td align="right"><%= submit_tag 'Login' %></td></tr>
</table>
-
-<br />
<% end %>
-<h1>Create a user account</h1><br>
-Fill in the form and we'll send you a quick email to activate your account.
-<br><br>
+<h1>Create a User Account</h1>
-By creating an account, you agree that all work uploaded to openstreetmap.org and all data created by use of any tools which connect to openstreetmap.org is to be (non-exclusively) licensed under <a href="http://creativecommons.org/licenses/by-sa/2.0/">this Creative Commons license (by-sa)</a>.<br><br>
+<% if Acl.find_by_address(request.remote_ip, :conditions => {:k => "no_account_creation"}) %>
+
+<p>Unfortunately we are not currently able to create an account for
+ you automatically.
+</p>
+
+<p>Please contact the <a href="mailto:webmaster@openstreetmap.org">webmaster</a>
+ to arrange for an account to be created - we will try and deal with
+ the request as quickly as possible.
+</p>
+
+<% else %>
+
+<p>Fill in the form and we'll send you a quick email to activate your
+ account.
+</p>
+
+<p>By creating an account, you agree that all work uploaded to
+ openstreetmap.org and all data created by use of any tools which
+ connect to openstreetmap.org is to be (non-exclusively) licensed under
+ <a href="http://creativecommons.org/licenses/by-sa/2.0/">this Creative
+ Commons license (by-sa)</a>.
+</p>
<%= error_messages_for 'user' %>
<tr><td colspan=2> <!--vertical spacer--></td></tr>
<tr><td></td><td align=right><input type="submit" value="Signup"></td></tr>
</table>
-<br>
-<br>
-<!--
-See also <a href="http://wiki.openstreetmap.org/index.php/Creating_an_Account" title="wiki help information about this screen">'Creating an Account' help</a>
--->
+<% end %>
+
<% end %>
# config.gem "hpricot", :version => '0.6', :source => "http://code.whytheluckystiff.net"
# config.gem "aws-s3", :lib => "aws/s3"
config.gem 'composite_primary_keys', :version => '1.1.0'
- config.gem 'libxml-ruby', :version => '0.9.4', :lib => 'libxml'
+ config.gem 'libxml-ruby', :version => '>= 1.0.0', :lib => 'libxml'
config.gem 'rmagick', :lib => 'RMagick'
config.gem 'mysql'
# This is required otherwise libxml writes out memory errors to
-# the standard output and exits uncleanly
-# Changed method due to deprecation of the old register_error_handler
-# http://libxml.rubyforge.org/rdoc/classes/LibXML/XML/Parser.html#M000076
-# So set_handler is used instead
-# http://libxml.rubyforge.org/rdoc/classes/LibXML/XML/Error.html#M000334
+# the standard output and exits uncleanly
LibXML::XML::Error.set_handler do |message|
raise message
end
have_nodes = select_value("SELECT count(*) FROM current_nodes").to_i != 0
if have_nodes
- prefix = File.join Dir.tmpdir, "019_populate_node_tags_and_remove.#{$$}."
+ prefix = File.join Dir.tmpdir, "020_populate_node_tags_and_remove.#{$$}."
- cmd = "db/migrate/019_populate_node_tags_and_remove_helper"
+ cmd = "db/migrate/020_populate_node_tags_and_remove_helper"
src = "#{cmd}.c"
if not File.exists? cmd or File.mtime(cmd) < File.mtime(src) then
system 'cc -O3 -Wall `mysql_config --cflags --libs` ' +
# in OsmChange format. All diffs must be limited to a single changeset
# given in +changeset+.
def initialize(data, changeset)
- @reader = XML::Reader.new data
+ @reader = XML::Reader.string(data)
@changeset = changeset
end
# Reads the next element from the XML document. Checks the return value
# and throws an exception if an error occurred.
def read_or_die
- # NOTE: XML::Reader#read returns 0 for EOF and -1 for error.
- # we allow an EOF because we are expecting this to always happen
- # at the end of a document.
- if @reader.read < 0
- raise APIBadUserInput.new("Unexpected end of XML document.")
+ # NOTE: XML::Reader#read returns false for EOF and raises an
+ # exception if an error occurs.
+ begin
+ @reader.read
+ rescue LibXML::XML::Error => ex
+ raise OSM::APIBadXMLError.new("changeset", xml, ex.message)
end
end
class GeoRSS
def initialize(feed_title='OpenStreetMap GPS Traces', feed_description='OpenStreetMap GPS Traces', feed_url='http://www.openstreetmap.org/traces/')
@doc = XML::Document.new
- @doc.encoding = 'UTF-8'
+ @doc.encoding = XML::Encoding::UTF_8
rss = XML::Node.new 'rss'
@doc.root = rss
class API
def get_xml_doc
doc = XML::Document.new
- doc.encoding = 'UTF-8'
+ doc.encoding = XML::Encoding::UTF_8
root = XML::Node.new 'osm'
root['version'] = API_VERSION
root['generator'] = GENERATOR
User-agent: *
Disallow: /api/
+Disallow: /browse/
Disallow: /trace/
Disallow: /edit
-Disallow: /login
\ No newline at end of file
+Disallow: /login
}
#intro {
- width: 150px;
+ width: 170px;
margin: 10px;
- padding: 10px;
border: 1px solid #ccc;
font-size: 11px;
}
+#intro p { margin: 10px; }
+
#alert {
width: 150px;
margin: 10px;
font-size: 14px;
}
+#donate {
+ width: 150px;
+ margin: 10px;
+ padding: 10px;
+ border: 1px solid #ccc;
+ background: #ea0;
+ line-height: 1.2em;
+ text-align: left;
+ font-size: 12px;
+}
+
.left_menu {
width: 150px;
min-width: 150px;
top: 4px;
}
-#cclogo {
- width: 150px;
- min-width: 150px;
- margin: 10px;
- padding: 10px;
- left: 0px;
- line-height: 1.2em;
- text-align: left;
- font-size: 14px;
- font-weight: bold;
- background: #fff;
+.button {
+ margin-top: 10px;
+ margin-bottom: 10px;
}
#controls img
##
# parse some xml
def xml_parse(xml)
- parser = XML::Parser.new
- parser.string = xml
+ parser = XML::Parser.string(xml)
parser.parse
end
end
##
# parse some xml
def xml_parse(xml)
- parser = XML::Parser.new
- parser.string = xml
+ parser = XML::Parser.string(xml)
parser.parse
end
end