Changeset 370
- Timestamp:
- 07/05/06 03:53:13
- Files:
-
- qPloneGoogleMaps/trunk/Extensions/Install.py (modified) (3 diffs)
- qPloneGoogleMaps/trunk/content/Map.py (modified) (1 diff)
- qPloneGoogleMaps/trunk/content/Marker.py (modified) (6 diffs)
- qPloneGoogleMaps/trunk/content/Overlay.py (modified) (1 diff)
- qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/gmarker_view.pt (deleted)
- qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/images/red/map_marker.png (modified) (previous)
- qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/map_view.pt (modified) (1 diff)
- qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/maps_markers.py (modified) (5 diffs)
- qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/maps_view.pt (modified) (1 diff)
- qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/marker_view.pt (added)
- qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/overlay_view.pt (modified) (1 diff)
- qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/portlet_maps.pt (modified) (2 diffs)
- qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/topic_maps_view.pt (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
qPloneGoogleMaps/trunk/Extensions/Install.py
r369 r370 9 9 10 10 from Products.qPloneGoogleMaps.config import * 11 12 def addCatalogIndex(self, name, out): 13 """ Add to portal catalog given index """ 14 portal_catalog = getToolByName(self, 'portal_catalog') 15 if name not in portal_catalog.indexes(): 16 portal_catalog.addIndex(name=name, type="FieldIndex") 17 out.write('Added %s index to portal_catalog...\n' % name) 18 19 def removeCatalogIndex(self, name, out): 20 """ Remove from portal catalog given index """ 21 portal_catalog = getToolByName(self, 'portal_catalog') 22 if name in portal_catalog.indexes(): 23 portal_catalog.delIndex(name=name) 24 out.write('Removed %s index from portal_catalog...\n' % name) 25 26 def addCatalogColumn(self, name, out): 27 """ Add to portal catalog given metadata column """ 28 portal_catalog = getToolByName(self, 'portal_catalog') 29 if name not in portal_catalog.schema(): 30 portal_catalog.addColumn(name=name) 31 out.write('Added %s column metadata to portal_catalog...\n' % name) 32 33 34 def removeCatalogColumn(self, name, out): 35 """ Remove from portal catalog given metadata column """ 36 portal_catalog = getToolByName(self, 'portal_catalog') 37 if name in portal_catalog.schema(): 38 portal_catalog.delColumn(name=name) 39 out.write('Removed %s column metadata from portal_catalog...\n' % name) 11 40 12 41 def installContentTypes(self, out): … … 114 143 out = StringIO() 115 144 145 # adding indexes and metadata columns to portal_catalog 146 addCatalogIndex(self, 'geoLocation', out) 147 addCatalogColumn(self, 'geoLocation', out) 148 149 out.write('Update catalog...\n') 150 getToolByName(self, 'portal_catalog').refreshCatalog() 151 116 152 # installin content types 117 153 installContentTypes(self, out) … … 134 170 out = StringIO() 135 171 172 # removing indexes and metadata columns from portal_catalog 173 removeCatalogIndex(self, 'geoLocation', out) 174 removeCatalogColumn(self, 'geoLocation', out) 175 136 176 # remove portlet from right slot 137 177 removePortlet(self, out, 'here/portlet_maps/macros/portlet') qPloneGoogleMaps/trunk/content/Map.py
r369 r370 149 149 return False 150 150 151 security.declareProtected(View, 'geoLocation') 152 def geoLocation(self): 153 return (str(self.getLatitude()), str(self.getLongitude())) 154 151 155 security.declareProtected(View, 'getOverlayMarkers') 152 156 def getOverlayMarkers(self): qPloneGoogleMaps/trunk/content/Marker.py
r369 r370 1 1 from AccessControl import ClassSecurityInfo 2 from Products.CMFCore.permissions import ModifyPortalContent, View 2 3 3 4 try: … … 6 7 from Products.Archetypes.public import * 7 8 8 from Products.ATContentTypes.content.base import ATCTContent9 #from Products.ATContentTypes.content.base import ATCTContent 9 10 from Products.ATContentTypes.content.document import ATDocumentSchema 10 11 from Products.ATContentTypes.content.document import ATDocument 11 from Products.ATContentTypes.content.schemata import ATContentTypeSchema12 #from Products.ATContentTypes.content.schemata import ATContentTypeSchema 12 13 from Products.ATContentTypes.content.schemata import finalizeATCTSchema 13 14 14 from Products.CMFPlone.interfaces.NonStructuralFolder import INonStructuralFolder15 #from Products.CMFPlone.interfaces.NonStructuralFolder import INonStructuralFolder 15 16 16 17 from Products.validation.validators.RangeValidator import RangeValidator … … 26 27 27 28 MarkerSchema = ATDocumentSchema.copy() + Schema(( 28 StringField('address',29 widget=IntegerWidget(30 label='Address',31 label_msgid='label_address',32 description_msgid='help_address',33 i18n_domain='googlemaps',34 size=30,35 )36 ),37 38 StringField('phone',39 widget=IntegerWidget(40 label='Phone',41 label_msgid='label_phone',42 description_msgid='help_phone',43 i18n_domain='googlemaps',44 size=30,45 )46 ),47 48 StringField('url',49 widget=IntegerWidget(50 label='URL',51 label_msgid='label_url',52 description_msgid='help_url',53 i18n_domain='googlemaps',54 size=30,55 )56 ),57 58 StringField('imageurl',59 widget=IntegerWidget(60 label='Image URL',61 label_msgid='label_image_url',62 description_msgid='help_image_url',63 i18n_domain='googlemaps',64 size=30,65 )66 ),67 68 29 FloatField('latitude', 69 30 required=True, … … 96 57 97 58 class Marker(ATDocument): 98 """ Ma rker Class"""59 """ Map Marker """ 99 60 100 61 schema = MarkerSchema … … 104 65 meta_type = 'Marker' 105 66 archetype_name = 'Marker' 106 default_view = ' gmarker_view'107 immediate_view = ' gmarker_view'67 default_view = 'marker_view' 68 immediate_view = 'marker_view' 108 69 suppl_views = () 109 70 typeDescription = 'Marker document' 110 71 typeDescMsgId = 'marker_description_edit' 111 72 112 global_allow = 073 security = ClassSecurityInfo() 113 74 114 75 # Get the standard actions (tabs) … … 118 79 _at_rename_after_creation = True 119 80 81 security.declareProtected(View, 'geoLocation') 82 def geoLocation(self): 83 return (str(self.getLatitude()), str(self.getLongitude())) 84 120 85 registerType(Marker, PROJECTNAME) qPloneGoogleMaps/trunk/content/Overlay.py
r369 r370 70 70 container = self.getSource() 71 71 contentsMethod = container.getFolderContents 72 if container.portal_type =='Topic': contentsMethod = container.queryCatalog73 return [el for el in contentsMethod() if getattr(el,'latitude') and getattr(el,'longitude')]72 if container.portal_type == 'Topic': contentsMethod = container.queryCatalog 73 return [el for el in contentsMethod() if el.geoLocation] 74 74 75 75 registerType(Overlay, PROJECTNAME) qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/map_view.pt
r369 r370 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(), 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())" /> 12 12 </metal:block> 13 13 </head> qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/maps_markers.py
r369 r370 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, l n=-122.1419, lt=37.44197 ##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 8 8 ##title= 9 9 ## … … 21 21 22 22 if (not color) and longlat: 23 lon = [e.longitude for el in longlat for e in el.values()[0]] 24 lat = [e.latitude for el in longlat for e in el.values()[0]] 25 if hasattr(longlat[0].values()[0][0], 'getURL'): 26 sMarkers = "\n".join(["addMarker(%f, %f, '%s', '%s', '%s', '%s');" % (e.latitude, e.longitude, e.Title, e.getURL(), e.Description, el.keys()[0]) for el in longlat for e in el.values()[0]]) 27 else: 28 sMarkers = "\n".join(["addMarker(%f, %f, '%s', '%s', '%s', '%s');" % (e.latitude, e.longitude, e.Title(), e.absolute_url(), e.Description(), el.keys()[0]) for el in longlat for e in el.values()[0]]) 23 lat = [float(e.geoLocation[0]) for el in longlat for e in el.values()[0]] 24 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]]) 29 26 elif longlat: 30 lon = [el.longitude for el in longlat] 31 lat = [el.latitude for el in longlat] 32 if hasattr(longlat[0], 'getURL'): 33 sMarkers = "\n".join(["addMarker(%f, %f, '%s', '%s', '%s', '%s');" % (el.latitude, el.longitude, el.Title, el.getURL(), el.Description, color) for el in longlat]) 34 else: 35 sMarkers = "\n".join(["addMarker(%f, %f, '%s', '%s', '%s', '%s');" % (el.latitude, el.longitude, el.Title(), el.absolute_url(), el.Description(), color) for el in longlat]) 27 lat = [float(el.geoLocation[0]) for el in longlat] 28 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]) 36 30 37 31 if controls == 'large': sControls += "map.addControl(new GLargeMapControl());" … … 44 38 var f = function(){marker.openInfoWindowHtml(%s);}; 45 39 GEvent.addListener(marker, 'click', f);\n""" % sInfoWindow 46 if longlat:40 if not marker and longlat: 47 41 sDefaults = """ 48 42 map.setCenter(new GLatLng(%f, %f), map.getBoundsZoomLevel(new GLatLngBounds(new GLatLng(%f, %f), new GLatLng(%f, %f)))); … … 77 71 %(defaults)s 78 72 } 73 else window.alert("Google maps aren't compatible with current Browser."); 79 74 }, false); 80 75 //]]> … … 88 83 'events' : sEvents, 89 84 'zoom' : zoom, 90 'l n' : float(ln),91 'l t' : float(lt),85 'lt' : float(loc[0]), 86 'ln' : float(loc[1]), 92 87 'maptype' : maptype} qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/maps_view.pt
r369 r370 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,], node='map', events=True, controls='large', typeControls=True, overviewControls=True)" />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)" /> 12 12 </metal:block> 13 13 </head> qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/overlay_view.pt
r369 r370 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.getMarkers(), node='map', events=True, color=here.getMarkersColor(), l n=here.getLongitude(), lt=here.getLatitude(), controls=here.getMapControl(), typeControls=here.getTypeControl(), overviewControls=here.getOverviewControl(), maptype=here.getMapType(), zoom=here.getZoom())" />11 <span tal:replace="structure python:here.maps_markers(here.getMarkers(), node='map', events=True, color=here.getMarkersColor(), loc=here.geoLocation(), controls=here.getMapControl(), typeControls=here.getTypeControl(), overviewControls=here.getOverviewControl(), maptype=here.getMapType(), zoom=here.getZoom())" /> 12 12 </metal:block> 13 13 </head> qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/portlet_maps.pt
r369 r370 4 4 <body> 5 5 <div metal:define-macro="portlet" 6 tal:define="lon python:here.getProperty('longitude', None); 7 lat python:here.getProperty('latitude', None); 8 longlat python:[here,]" 9 tal:condition="python:lon and lat"> 6 tal:define="loc python:here.getProperty('geoLocation', None);" 7 tal:condition="python:loc"> 10 8 11 9 <script type="text/javascript" src="" … … 13 11 tal:attributes="src string:http://maps.google.com/maps?file=api&v=2&key=${key}"> 14 12 </script> 15 <span tal:replace="structure python:here.maps_markers( longlat=longlat, node='portlet_map')" />13 <span tal:replace="structure python:here.maps_markers(here.portal_catalog(path='/'.join(here.getPhysicalPath())), node='portlet_map')" /> 16 14 <dl class="portlet" id="portlet-maps"> 17 15 <dt class="portletHeader"> qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/topic_maps_view.pt
r369 r370 11 11 <span tal:define="contentsMethod python:test(here.portal_type=='Topic', here.queryCatalog, here.getFolderContents); 12 12 content folderContents|python:contentsMethod(); 13 longlat python:[el for el in content if getattr(el,'latitude') and getattr(el,'longitude')]"13 longlat python:[el for el in content if el.geoLocation]" 14 14 tal:replace="structure python:here.maps_markers(longlat, node='map', events=True, controls='large', typeControls=True, overviewControls=True)" /> 15 15 </metal:block>
