travlrmap 0.0.17 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/config/travlrmap.yaml.dist +5 -0
- data/lib/travlrmap/sinatra_app.rb +35 -0
- data/lib/travlrmap/version.rb +2 -2
- data/lib/travlrmap.rb +1 -0
- data/views/_google_analytics.erb +11 -0
- data/views/_map_js.erb +5 -0
- data/views/about.erb +7 -0
- data/views/geolocate.erb +3 -1
- data/views/layout.erb +10 -4
- metadata +6 -4
data/config/travlrmap.yaml.dist
CHANGED
@@ -18,6 +18,11 @@
|
|
18
18
|
:cluster_image_extension: png
|
19
19
|
:cluster_image_sizes: [25, 27, 31, 37, 43]
|
20
20
|
:show_geocode_link: true
|
21
|
+
:authenticate: false
|
22
|
+
#:admin_user: admin
|
23
|
+
#:admin_salt: d34fda332c9a0f8997d33db8172b67b1a319fd79d108568aa4fbdb2b
|
24
|
+
#:admin_hash: 267d09bb203ec5c9a20eb7dbc1a
|
25
|
+
#:google_analytics_id: UA-99999999-9
|
21
26
|
|
22
27
|
:views:
|
23
28
|
:default:
|
@@ -4,6 +4,7 @@ module Travlrmap
|
|
4
4
|
@config = config
|
5
5
|
@map = @config[:map]
|
6
6
|
@types = @config[:types]
|
7
|
+
@js_map_update = false
|
7
8
|
|
8
9
|
raise "The constant APPROOT should be set in config.ru to the directory your webserver is serving from" unless defined?(APPROOT)
|
9
10
|
raise "The directory %s set in APPROOT does not exist" % APPROOT unless File.directory?(APPROOT)
|
@@ -22,6 +23,31 @@ module Travlrmap
|
|
22
23
|
|
23
24
|
alias_method :h, :escape_html
|
24
25
|
|
26
|
+
def protected!
|
27
|
+
return if authorized?
|
28
|
+
headers['WWW-Authenticate'] = 'Basic realm="Restricted Area"'
|
29
|
+
halt(401, "Not authorized\n")
|
30
|
+
end
|
31
|
+
|
32
|
+
def authorized?
|
33
|
+
return true if !@map[:authenticate]
|
34
|
+
|
35
|
+
halt(500, ":admin_salt: is not set in the config") unless @map[:admin_salt]
|
36
|
+
halt(500, ":admin_salt: should be at least 16 characters") unless @map[:admin_salt].length >= 16
|
37
|
+
halt(500, ":admin_user: is not set in the config") unless @map[:admin_user]
|
38
|
+
halt(500, ":admin_hash: is not set in the config") unless @map[:admin_hash]
|
39
|
+
|
40
|
+
@auth ||= Rack::Auth::Basic::Request.new(request.env)
|
41
|
+
|
42
|
+
if @auth.provided? && @auth.basic? && @auth.credentials
|
43
|
+
provided_hash = Digest::MD5.hexdigest("%s%s" % [@map[:admin_salt], @auth.credentials[1]])
|
44
|
+
|
45
|
+
return (@auth.credentials[0] == @map[:admin_user] && provided_hash == @map[:admin_hash])
|
46
|
+
end
|
47
|
+
|
48
|
+
false
|
49
|
+
end
|
50
|
+
|
25
51
|
def base_url
|
26
52
|
@base_url ||= "#{request.env['rack.url_scheme']}://#{request.env['HTTP_HOST']}"
|
27
53
|
end
|
@@ -49,6 +75,7 @@ module Travlrmap
|
|
49
75
|
@street_view_control = @map[:street_view_control].nil? ? false : @map[:street_view_control]
|
50
76
|
@overview_control = @map[:overview_control].nil? ? false : @map[:overview_control]
|
51
77
|
@pan_control = @map[:pan_control].nil? ? true : @map[:pan_control]
|
78
|
+
@js_map_update = true
|
52
79
|
end
|
53
80
|
|
54
81
|
def to_json
|
@@ -107,7 +134,13 @@ module Travlrmap
|
|
107
134
|
erb :index
|
108
135
|
end
|
109
136
|
|
137
|
+
get '/about' do
|
138
|
+
erb :about
|
139
|
+
end
|
140
|
+
|
110
141
|
get '/geocode' do
|
142
|
+
protected!
|
143
|
+
|
111
144
|
erb :geolocate
|
112
145
|
end
|
113
146
|
|
@@ -122,6 +155,8 @@ module Travlrmap
|
|
122
155
|
end
|
123
156
|
|
124
157
|
post '/points/validate' do
|
158
|
+
protected!
|
159
|
+
|
125
160
|
content_type :"application/json"
|
126
161
|
|
127
162
|
data = JSON.parse(request.body.read)
|
data/lib/travlrmap/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
module
|
2
|
-
VERSION = "0.0
|
1
|
+
module Travlrmap
|
2
|
+
VERSION = "1.0.0"
|
3
3
|
end
|
data/lib/travlrmap.rb
CHANGED
@@ -0,0 +1,11 @@
|
|
1
|
+
<% if @map[:google_analytics_id] %>
|
2
|
+
<script>
|
3
|
+
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
4
|
+
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
5
|
+
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
6
|
+
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
7
|
+
|
8
|
+
ga('create', '<%= @map[:google_analytics_id] %>', 'auto');
|
9
|
+
ga('send', 'pageview');
|
10
|
+
</script>
|
11
|
+
<% end %>
|
data/views/_map_js.erb
CHANGED
data/views/about.erb
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
<div class="jumbotron">
|
2
|
+
<h1>Travlrmap</h1>
|
3
|
+
<p>This site is creating using Travlrmap version <%= Travlrmap::VERSION %>. It's a simple tool designed to be self-hosted or on a PaaS like Heroku. All the configuration and points are maintained in static YAML files.</p>
|
4
|
+
<p>It's a standalone system, has no social features and is more aimed a city level tracker for places you have been rather than a coffee shop level check-in system, though a mobile app is planned to assist in logging visits while on the move.</p>
|
5
|
+
<p>It's written by <a href="https://www.devco.net/">R.I.Pienaar</a>, released under the terms of the Apache 2 licence and can be found at <a href="http://github.com/ripienaar/travlrmap">GitHub</a>.
|
6
|
+
<p><a class="btn btn-primary btn-lg" href="https://ripienaar.github.io/travlrmap/" role="button">Learn more</a></p>
|
7
|
+
</div>
|
data/views/geolocate.erb
CHANGED
data/views/layout.erb
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
<meta charset="utf-8">
|
5
5
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
7
|
-
<meta name="description" content="Travlrmap version <%=
|
7
|
+
<meta name="description" content="Travlrmap version <%= Travlrmap::VERSION %>">
|
8
8
|
<meta name="author" content="R.I.Pienaar <rip@devco.net>">
|
9
9
|
<link rel="icon" href="/favicon.ico">
|
10
10
|
|
@@ -24,6 +24,7 @@
|
|
24
24
|
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
|
25
25
|
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
26
26
|
<![endif]-->
|
27
|
+
<%= erb :"_google_analytics", :layout => false, :locals => {:map => @map} %>
|
27
28
|
</head>
|
28
29
|
|
29
30
|
<body>
|
@@ -45,16 +46,21 @@
|
|
45
46
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Views <span class="caret"></span></a>
|
46
47
|
<ul class="dropdown-menu" role="menu">
|
47
48
|
<% @config[:views].sort_by{|k, v| v[:description]}.each do |k, v| %>
|
48
|
-
|
49
|
+
<% if @js_map_update %>
|
50
|
+
<li><a onclick="javascript:setMapCoordinates(<%= v[:lat] %>, <%= v[:lon] %>, <%= v[:zoom] %>); window.history.replaceState('x', 'Title', '/view/<%= k %>');"><%= v[:description] %></a></li>
|
51
|
+
<% else %>
|
52
|
+
<li><a href="/view/<%= k %>"><%= v[:description] %></a></li>
|
53
|
+
<% end %>
|
49
54
|
<% end %>
|
50
55
|
</ul>
|
51
56
|
</li>
|
52
57
|
</ul>
|
53
|
-
<% if @map[:show_geocode_link] %>
|
54
58
|
<ul class="nav navbar-nav navbar-right">
|
59
|
+
<% if @map[:show_geocode_link] %>
|
55
60
|
<li><a href="/geocode">Geocode</a></li>
|
56
|
-
</ul>
|
57
61
|
<% end %>
|
62
|
+
<li><a href="/about">About</a></li>
|
63
|
+
</ul>
|
58
64
|
</div>
|
59
65
|
</div>
|
60
66
|
</nav>
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: travlrmap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
|
+
- 1
|
7
8
|
- 0
|
8
9
|
- 0
|
9
|
-
|
10
|
-
version: 0.0.17
|
10
|
+
version: 1.0.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- R.I.Pienaar
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2015-01-
|
18
|
+
date: 2015-01-09 00:00:00 +00:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -151,6 +151,8 @@ files:
|
|
151
151
|
- views/layout.erb
|
152
152
|
- views/index.erb
|
153
153
|
- views/_point_comment.erb
|
154
|
+
- views/_google_analytics.erb
|
155
|
+
- views/about.erb
|
154
156
|
- views/_map_js.erb
|
155
157
|
- views/geolocate.erb
|
156
158
|
- public/travlrmap.css
|