radiant-event_map-extension 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md CHANGED
@@ -47,17 +47,17 @@ Create a layout that includes a `map_canvas` div and these page parts:
47
47
 
48
48
  Here's a starting point:
49
49
 
50
- <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
51
- <head>
52
- <title><r:title /></title>
53
- <r:content part="map_js" />
54
- </head>
55
- <body>
56
- <h1 id="pagetitle"><r:title /></h1>
57
- <r:content part="faceting" />
58
- <div id="map_canvas" style="width: 600px; height 400px;"></div>
59
- </body>
60
- </html>
50
+ <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
51
+ <head>
52
+ <title><r:title /></title>
53
+ <r:content part="map_js" />
54
+ </head>
55
+ <body>
56
+ <h1 id="pagetitle"><r:title /></h1>
57
+ <r:content part="faceting" />
58
+ <div id="map_canvas" style="width: 600px; height 400px;"></div>
59
+ </body>
60
+ </html>
61
61
 
62
62
  Make sure that `Radiant::Config['event_map.layout']` matches exactly the _name_ of this layout.
63
63
 
@@ -67,6 +67,16 @@ The map javascript is generated by the EventVenuesController using `app/views/ev
67
67
 
68
68
  If you're not using jQuery you should find it straightforward to call `build_map_and_markers(div element)` from another script, and in that case you don't have to use our naming scheme either.
69
69
 
70
+ ### Displaying a map on a normal radiant page
71
+
72
+ <r:events:googlemap calendar="slug" />
73
+
74
+ If you omit the calendar attribute then all future events will be displayed.
75
+
76
+ The map will be presented in a `div#map_canvas` to which your stylesheet will need to give dimensions (and any text styles you want to apply the location bubbles).
77
+
78
+ At the moment you don't get any other control of displayed events, but soon the radius tag will support all the usual period specifications.
79
+
70
80
  ### JSON interface
71
81
 
72
82
  If you don't want to use the included scripts, you can skip that whole mechanism and work with the event data instead. EventVenuesController provides a simple JSON interface. Usually it's at /map and looks for addresses like this:
@@ -78,12 +88,6 @@ If you don't want to use the included scripts, you can skip that whole mechanism
78
88
 
79
89
  If you're using `taggable_events` then we also inherit the tag-faceting interface here.
80
90
 
81
- The data returned looks like this:
82
-
83
- {
84
-
85
- }
86
-
87
91
  ## Bugs and features
88
92
 
89
93
  [Github issues](http://github.com/spanner/radiant-event_map-extension/issues) please, or for little things an email or github message is fine.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.0
1
+ 1.2.0
@@ -3,8 +3,8 @@
3
3
 
4
4
  class EventVenuesController < EventsController
5
5
  helper_method :venues, :events_at_venue
6
- radiant_layout { |controller| controller.layout_for :event_map }
7
-
6
+ layout false
7
+
8
8
  def index
9
9
  respond_to do |format|
10
10
  format.html { }
@@ -4,17 +4,14 @@
4
4
  .map_event
5
5
  - unless without_title
6
6
  %h3.event
7
- = link_to event.title, event.url
7
+ - if event.url
8
+ = link_to event.title, event.url
9
+ - else
10
+ = event.title
8
11
 
9
12
  %p.date
10
- %strong
11
- = event.summarize_period
12
- - if event.event_venue
13
- at
14
- = link_to event.event_venue.title, event.event_venue.url
15
- - else
16
- at
17
- = event.location
18
-
19
- %p.description
13
+ = event.summarize_period
14
+ at
15
+ = link_to event.event_venue.title + '.', event.event_venue.url, :class => 'location'
16
+ %br
20
17
  = event.short_description
@@ -11,8 +11,11 @@
11
11
  - remainder = events.slice!(4, 10000)
12
12
  - events.each do |event|
13
13
  %li
14
- %strong
15
- = link_to event.title, event.url
14
+ - if event.url
15
+ = link_to event.title, event.url, :class => 'event'
16
+ - else
17
+ %span.event
18
+ = event.title
16
19
  on
17
20
  = event.date
18
21
  - if remainder && remainder.any?
@@ -10,29 +10,16 @@ if(typeof jQuery == 'function') {
10
10
 
11
11
  function build_map_and_markers(element) {
12
12
  if (element != null) {
13
- var map = new google.maps.Map(element, {mapTypeId: google.maps.MapTypeId.ROADMAP});
13
+ var map = new google.maps.Map(element, {
14
+ mapTypeId: google.maps.MapTypeId.<%= (Radiant::Config['event_map.googlemap.type'] || 'ROADMAP').upcase %>,
15
+ mapTypeControlOptions: {
16
+ style: google.maps.MapTypeControlStyle.<%= (Radiant::Config['event_map.googlemap.controlstyle'] || 'DROPDOWN_MENU').upcase %>
17
+ }
18
+ });
14
19
  var bounds = new google.maps.LatLngBounds();
15
- var one_icon = new google.maps.MarkerImage('/images/event_calendar/one_event.png',
16
- new google.maps.Size(26,45),
17
- new google.maps.Point(0,0),
18
- new google.maps.Point(7, 45));
19
- var several_icon = new google.maps.MarkerImage('/images/event_calendar/several_events.png',
20
- new google.maps.Size(26,45),
21
- new google.maps.Point(0,0),
22
- new google.maps.Point(9, 45));
23
- var one_shadow = new google.maps.MarkerImage('/images/event_calendar/event_shadow.png',
24
- new google.maps.Size(60, 44),
25
- new google.maps.Point(0,0),
26
- new google.maps.Point(8, 45));
27
- var several_shadow = new google.maps.MarkerImage('/images/event_calendar/event_shadow.png',
28
- new google.maps.Size(60, 44),
29
- new google.maps.Point(0,0),
30
- new google.maps.Point(5, 45));
31
20
  <% venues.each do |venue| %>
32
21
  add_marker(map, {
33
22
  title : "<%= escape_javascript(venue.title) %>",
34
- image : <%= events_at_venue(venue).length > 1 ? "several_icon" : "one_icon" %>,
35
- shadow : <%= events_at_venue(venue).length > 1 ? "several_shadow" : "one_shadow" %>,
36
23
  position : new google.maps.LatLng("<%= venue.lat %>","<%= venue.lng %>"),
37
24
  description : "<%= escape_javascript(render :partial => 'venue', :object => venue) %>"
38
25
  });
@@ -2,7 +2,7 @@
2
2
  # require_dependency 'application_controller'
3
3
 
4
4
  class EventMapExtension < Radiant::Extension
5
- version "1.1.0"
5
+ version "1.2.0"
6
6
  description "Small additions to geocode calendar events and display on a map, separated here because only of interest to a few."
7
7
  url "spanner.org"
8
8
 
@@ -14,6 +14,7 @@ class EventMapExtension < Radiant::Extension
14
14
  require 'angle_conversions' # adds String.to_latlng and some degree/radian conversions to Numeric
15
15
  require 'grid_ref' # converts from UK grid references to lat/long
16
16
  EventVenue.send :include, Mappable # adds geolocation on validation
17
+ Page.send :include, EventMapTags # currently only a very basic events:googlemap tag
17
18
  end
18
19
 
19
20
  end
@@ -0,0 +1,26 @@
1
+ module EventMapTags
2
+ include Radiant::Taggable
3
+ include
4
+
5
+ class TagError < StandardError; end
6
+
7
+ desc %{
8
+ Drops onto the page a couple of scripts and a div with the id #map_canvas, which between them will
9
+ present a google map of all your events. To show only one calendar, pass its slug as a calendar attribute:
10
+
11
+ <pre><code><r:events:googlemap calendar="slug" /></code></pre>
12
+
13
+ }
14
+ tag 'events:googlemap' do |tag|
15
+ parameters = {:format => :js}
16
+ if tag.attr['calendar'] && calendar = Calendar.find_by_slug(tag.attr['calendar'])
17
+ parameters[:calendar_id] = calendar.id
18
+ end
19
+ %{
20
+ <div id="map_canvas"></div>
21
+ <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
22
+ <script type="text/javascript" src="#{eventmap_path(parameters)}"></script>
23
+ }
24
+ end
25
+
26
+ end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{radiant-event_map-extension}
8
- s.version = "1.1.0"
8
+ s.version = "1.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["spanner"]
12
- s.date = %q{2010-09-30}
12
+ s.date = %q{2010-10-05}
13
13
  s.description = %q{Further extends the event_calendar extension to allow easy google mapping with automatic geolocation based on event venues}
14
14
  s.email = %q{will@spanner.org}
15
15
  s.extra_rdoc_files = [
@@ -33,10 +33,12 @@ Gem::Specification.new do |s|
33
33
  "features/support/env.rb",
34
34
  "features/support/paths.rb",
35
35
  "lib/angle_conversions.rb",
36
+ "lib/event_map_tags.rb",
36
37
  "lib/grid_ref.rb",
37
38
  "lib/mappable.rb",
38
39
  "lib/tasks/event_map_extension_tasks.rake",
39
40
  "pkg/radiant-event_map-extension-1.0.1.gem",
41
+ "pkg/radiant-event_map-extension-1.1.0.gem",
40
42
  "public/images/event_calendar/event_shadow.png",
41
43
  "public/images/event_calendar/one_event.png",
42
44
  "public/images/event_calendar/several_events.png",
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: radiant-event_map-extension
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 31
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
- - 1
8
+ - 2
9
9
  - 0
10
- version: 1.1.0
10
+ version: 1.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - spanner
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-09-30 00:00:00 +01:00
18
+ date: 2010-10-05 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -88,10 +88,12 @@ files:
88
88
  - features/support/env.rb
89
89
  - features/support/paths.rb
90
90
  - lib/angle_conversions.rb
91
+ - lib/event_map_tags.rb
91
92
  - lib/grid_ref.rb
92
93
  - lib/mappable.rb
93
94
  - lib/tasks/event_map_extension_tasks.rake
94
95
  - pkg/radiant-event_map-extension-1.0.1.gem
96
+ - pkg/radiant-event_map-extension-1.1.0.gem
95
97
  - public/images/event_calendar/event_shadow.png
96
98
  - public/images/event_calendar/one_event.png
97
99
  - public/images/event_calendar/several_events.png