Changeset 383
- Timestamp:
- 07/07/06 09:45:01
- Files:
-
- qPloneGoogleMaps/trunk/__init__.py (modified) (1 diff)
- qPloneGoogleMaps/trunk/config.py (modified) (1 diff)
- qPloneGoogleMaps/trunk/configure.zcml (modified) (2 diffs)
- qPloneGoogleMaps/trunk/content/Map.py (modified) (1 diff)
- qPloneGoogleMaps/trunk/content/Marker.py (modified) (2 diffs)
- qPloneGoogleMaps/trunk/content/Overlay.py (modified) (1 diff)
- qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/map_view.pt (modified) (2 diffs)
- qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/maps_markers.py (modified) (6 diffs)
- qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/maps_view.pt (modified) (1 diff)
- qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/marker_view.pt (modified) (2 diffs)
- qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/portlet_maps.pt (modified) (2 diffs)
- qPloneGoogleMaps/trunk/utils.py (added)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
qPloneGoogleMaps/trunk/__init__.py
r382 r383 10 10 11 11 allow_module('Products.qPloneGoogleMaps.config') 12 allow_module('Products.qPloneGoogleMaps.utils') 12 13 13 14 registerDirectory(SKINS_DIR, GLOBALS) qPloneGoogleMaps/trunk/config.py
r382 r383 11 11 #MAP_API_KEY = 'ABQIAAAAPKXXAksH6LF9wD3-iB3Z9hTb-vLQlFZmc2N8bgWI8YDPp5FEVBSikjDVULf3tCyc8gRIqTf-_TRyPw' 12 12 13 #MAP_API_KEY = 'ABQIAAAAPKXXAksH6LF9wD3-iB3Z9hR-_Derz1M-sZYUdeXG3J1uZOMrKxT98efydo7fhYu6kuaFv5ESjlw4mw'14 MAP_API_KEY=ABQIAAAAYYyEmQ6EGtXuqElDoueMKBQD6ra-3WW7G3Dx0BPiIwGBloz-IhRd7rSu5fzEEX_rrGcbuQTBDjeYjw13 MAP_API_KEY = 'ABQIAAAAPKXXAksH6LF9wD3-iB3Z9hR-_Derz1M-sZYUdeXG3J1uZOMrKxT98efydo7fhYu6kuaFv5ESjlw4mw' 14 #MAP_API_KEY=ABQIAAAAYYyEmQ6EGtXuqElDoueMKBQD6ra-3WW7G3Dx0BPiIwGBloz-IhRd7rSu5fzEEX_rrGcbuQTBDjeYjw 15 15 16 16 setDefaultRoles(DEFAULT_ADD_CONTENT_PERMISSION, ('Manager', 'Owner',)) qPloneGoogleMaps/trunk/configure.zcml
r382 r383 6 6 7 7 <adapter 8 for="Products.ATContentTypes.interface. document.IATFolder"8 for="Products.ATContentTypes.interface.IATFolder" 9 9 provides=".interfaces.markers.IMarkersListing" 10 10 factory=".adapters.markers.MarkersListing" … … 12 12 13 13 <adapter 14 for="Products.ATContentTypes.interface. document.IATTopic"14 for="Products.ATContentTypes.interface.IATTopic" 15 15 provides=".interfaces.markers.IMarkersListing" 16 16 factory=".adapters.markers.MarkersListing" qPloneGoogleMaps/trunk/content/Map.py
r382 r383 151 151 security.declareProtected(View, 'geoLocation') 152 152 def geoLocation(self): 153 return (s tr(self.getLatitude()), str(self.getLongitude()))153 return (self.getLatitude(), self.getLongitude()) 154 154 155 155 security.declareProtected(View, 'getOverlayMarkers') qPloneGoogleMaps/trunk/content/Marker.py
r382 r383 51 51 ), 52 52 53 StringField('color', 54 vocabulary=('default', 'red', 'green', 'blue'), 55 default='default', 56 widget=SelectionWidget( 57 label='Marker Color', 58 label_msgid='label_marker_color', 59 description_msgid='help_marker_color', 60 i18n_domain='googlemaps', 61 ) 62 ), 63 53 64 ), 54 65 ) … … 81 92 security.declareProtected(View, 'geoLocation') 82 93 def geoLocation(self): 83 return (s tr(self.getLatitude()), str(self.getLongitude()))94 return (self.getLatitude(), self.getLongitude()) 84 95 85 96 registerType(Marker, PROJECTNAME) qPloneGoogleMaps/trunk/content/Overlay.py
r382 r383 32 32 widget=SelectionWidget( 33 33 label='Markers Color', 34 label_msgid='label_marker _color',35 description_msgid='help_marker _color',34 label_msgid='label_markers_color', 35 description_msgid='help_markers_color', 36 36 i18n_domain='googlemaps', 37 37 ) qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/map_view.pt
r382 r383 9 9 tal:attributes="src string:http://maps.google.com/maps?file=api&v=2&key=${key}"> 10 10 </script> 11 <span tal:replace="structure python:here.maps_markers(longlat=here.getOverlayMarkers(), node='map', controls=here.getMapControl(), loc=here.geoLocation(), typeControls=here.getTypeControl(), overviewControls=here.getOverviewControl(), events=True, maptype=here.getMapType(), color=False, zoom=here.getZoom() )" />11 <span tal:replace="structure python:here.maps_markers(longlat=here.getOverlayMarkers(), node='map', controls=here.getMapControl(), loc=here.geoLocation(), typeControls=here.getTypeControl(), overviewControls=here.getOverviewControl(), events=True, maptype=here.getMapType(), color=False, zoom=here.getZoom(), mapevents=True)" /> 12 12 </metal:block> 13 13 </head> … … 31 31 Description 32 32 </p> 33 33 <!-- <p tal:content="python:here.maps_markers(longlat=here.getOverlayMarkers(), node='map', controls=here.getMapControl(), loc=here.geoLocation(), typeControls=here.getTypeControl(), overviewControls=here.getOverviewControl(), events=True, maptype=here.getMapType(), color=False, zoom=here.getZoom())"></p> --> 34 34 <!-- gmarker 35 35 <ul> qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/maps_markers.py
r382 r383 5 5 ##bind script=script 6 6 ##bind subpath=traverse_subpath 7 ##parameters= longlat=[], node, controls='nothing', maptype='G_NORMAL_MAP', overviewControls=None, typeControls=None, events=False, color='default', zoom=6, loc=(37.4419, -122.1419), marker=False 7 ##parameters= longlat=[], node, controls='nothing', maptype='G_NORMAL_MAP', overviewControls=None, typeControls=None, events=False, color='default', zoom=6, loc=(37.4419, -122.1419), marker=False, mapevents=None 8 8 ##title= 9 9 ## 10 10 11 from Products.qPloneGoogleMaps.utils import processDesc 12 13 lon = [] 14 lat = [] 11 15 sPortal = context.portal_url() 12 16 sControls = "" 13 sEvents = "" 17 sMarkerEvents = "" 18 sMapEvents = "" 14 19 sDefaults = "" 15 20 sMarkers = "" 16 21 sInfoWindow = """ 17 22 "<div><h2><a href='"+url+"'>"+title+"</a></h2><p>"+content+"</p></div>" 23 """ 24 sMarkerForm = """ 25 "<input name='markertitle' type='text' value='' /><br /><input name='ok' type='button' value='OK' /><input name='cancel' type='button' value='CANCEL' />" 18 26 """ 19 27 … … 23 31 lat = [float(e.geoLocation[0]) for el in longlat for e in el.values()[0]] 24 32 lon = [float(e.geoLocation[1]) for el in longlat for e in el.values()[0]] 25 sMarkers = "\n".join([" addMarker(%f, %f, '%s', '%s', '%s', '%s');" % (float(e.geoLocation[0]), float(e.geoLocation[1]), e.Title, e.getURL(), e.Description, el.keys()[0]) for el in longlat for e in el.values()[0]])33 sMarkers = "\n".join(["""addMarker(%f, %f, "%s", "%s", "%s", "%s");""" % (float(e.geoLocation[0]), float(e.geoLocation[1]), e.Title, e.getURL(), processDesc(e.Description), el.keys()[0]) for el in longlat for e in el.values()[0]]) 26 34 elif longlat: 27 35 lat = [float(el.geoLocation[0]) for el in longlat] 28 36 lon = [float(el.geoLocation[1]) for el in longlat] 29 sMarkers = "\n".join([" addMarker(%f, %f, '%s', '%s', '%s', '%s');" % (float(el.geoLocation[0]), float(el.geoLocation[1]), el.Title, el.getURL(), el.Description, color) for el in longlat])37 sMarkers = "\n".join(["""addMarker(%f, %f, "%s", "%s", "%s", "%s");""" % (float(el.geoLocation[0]), float(el.geoLocation[1]), el.Title, el.getURL(), processDesc(el.Description), color) for el in longlat]) 30 38 31 39 if controls == 'large': sControls += "map.addControl(new GLargeMapControl());" … … 34 42 if overviewControls: sControls += "map.addControl(new GOverviewMapControl());\n" 35 43 44 if mapevents: 45 sMapEvents = """ 46 var listener = function(marker, point) { 47 if (!marker){ 48 var m = new GMarker(point); 49 map.addOverlay(m); 50 m.openInfoWindowHtml(%s); 51 var ok_buttons = document.getElementsByName('ok'); 52 var c_buttons = document.getElementsByName('cancel'); 53 for (var i=0; i < ok_buttons.length; i++) { 54 ok_buttons[i].addEventListener('click', function(){map.closeInfoWindow()}, false); 55 c_buttons[i].addEventListener('click', function(){map.closeInfoWindow();map.removeOverlay(m);}, false); 56 GEvent.addEvent(m, 'infowindowclose', function(){map.removeOverlay(m);}, false); 57 }; 58 //map.removeOverlay(m); 59 infowindow = map.getInfoWindow(); 60 infowindow.reset(point); 61 //window.alert(infowindow instanceof null); 62 //GEvent.addListener(infowindow, 'closeclick', function(){map.removeOverlay(m)}); 63 } 64 }; 65 GEvent.addListener(map, 'click', listener);""" % sMarkerForm 36 66 if events: 37 s Events = """38 var f = function(){marker.openInfoWindowHtml(%s );};67 sMarkerEvents = """ 68 var f = function(){marker.openInfoWindowHtml(%s, opt);}; 39 69 GEvent.addListener(marker, 'click', f);\n""" % sInfoWindow 40 if not marker and lon glat:70 if not marker and lon and lat: 41 71 sDefaults = """ 42 72 map.setCenter(new GLatLng(%f, %f), map.getBoundsZoomLevel(new GLatLngBounds(new GLatLng(%f, %f), new GLatLng(%f, %f)))); … … 53 83 %(controls)s 54 84 map.setCenter(new GLatLng(%(lt)f, %(ln)f), %(zoom)s) 85 var opt = map.getInfoWindow(); 86 opt.maxWidth = 400; 55 87 56 88 var icon = new GIcon(); … … 66 98 var marker = new GMarker(point, icon) 67 99 map.addOverlay(marker); 68 %(event s)s100 %(event)s 69 101 } 102 %(mapevents)s 70 103 %(markers)s 71 104 %(defaults)s … … 76 109 </script> 77 110 """ % { 78 'url' : sPortal, 79 'node' : node, 80 'markers' : sMarkers, 81 'defaults' : sDefaults, 82 'controls' : sControls, 83 'events' : sEvents, 84 'zoom' : zoom, 85 'lt' : float(loc[0]), 86 'ln' : float(loc[1]), 87 'maptype' : maptype} 111 'url' : sPortal, 112 'node' : node, 113 'markers' : sMarkers, 114 'defaults' : sDefaults, 115 'controls' : sControls, 116 'event' : sMarkerEvents, 117 'mapevents' : sMapEvents, 118 'zoom' : zoom, 119 'lt' : float(loc[0]), 120 'ln' : float(loc[1]), 121 'maptype' : maptype} qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/maps_view.pt
r382 r383 9 9 tal:attributes="src string:http://maps.google.com/maps?file=api&v=2&key=${key}"> 10 10 </script> 11 <span tal:replace="structure python:here.maps_markers(here.portal_catalog(path='/'.join(here.getPhysicalPath())), node='map', events=True, controls='large', typeControls=True, overviewControls=True)" /> 11 <span tal:define="brain python:here.portal_catalog(path='/'.join(here.getPhysicalPath())); 12 longlat python:test(len(brain)==1 and brain[0].geoLocation, brain, [])" 13 tal:replace="structure python:here.maps_markers(longlat, node='map', events=True, controls='large', typeControls=True, overviewControls=True)" /> 12 14 </metal:block> 13 15 </head> qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/marker_view.pt
r382 r383 9 9 tal:attributes="src string:http://maps.google.com/maps?file=api&v=2&key=${key}"> 10 10 </script> 11 <span tal:replace="structure python:here.maps_markers(here.portal_catalog(path='/'.join(here.getPhysicalPath())), node='map', events=True, loc=here.geoLocation(), controls='large', typeControls=True, overviewControls=True, zoom=6,marker=True)" />11 <span tal:replace="structure python:here.maps_markers(here.portal_catalog(path='/'.join(here.getPhysicalPath())), node='map', events=True, loc=here.geoLocation(), controls='large', typeControls=True, overviewControls=True, marker=True)" /> 12 12 13 13 </metal:block> … … 22 22 Document actions (print, sendto etc) 23 23 </div> 24 <p tal:content="python:here.portal_catalog(path='/'.join(here.getPhysicalPath()))[0].getId"></p> 25 <p tal:content="python:'/'.join(here.getPhysicalPath())"></p> 24 26 25 <h1 tal:content="here/pretty_title_or_id" class="documentFirstHeading"> 27 26 Title or id qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/portlet_maps.pt
r382 r383 4 4 <body> 5 5 <div metal:define-macro="portlet" 6 tal:define="loc python:here.getProperty('geoLocation', None);" 7 tal:condition="python:loc"> 6 tal:define="brain python:here.portal_catalog(path='/'.join(here.getPhysicalPath())); 7 longlat python:test(len(brain)==1 and brain[0].geoLocation, brain, [])" 8 tal:condition="longlat"> 8 9 9 10 <script type="text/javascript" src="" … … 11 12 tal:attributes="src string:http://maps.google.com/maps?file=api&v=2&key=${key}"> 12 13 </script> 13 <span tal:replace="structure python:here.maps_markers(here.portal_catalog(path='/'.join(here.getPhysicalPath())), node='portlet_map')" /> 14 <span tal:replace="structure python:here.maps_markers(longlat, node='portlet_map', controls='small')" /> 15 14 16 <dl class="portlet" id="portlet-maps"> 15 17 <dt class="portletHeader">
