Changeset 383

Show
Ignore:
Timestamp:
07/07/06 09:45:01
Author:
piv
Message:

corect displaying infowindow, compatible with geolocation

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • qPloneGoogleMaps/trunk/__init__.py

    r382 r383  
    1010 
    1111allow_module('Products.qPloneGoogleMaps.config') 
     12allow_module('Products.qPloneGoogleMaps.utils') 
    1213 
    1314registerDirectory(SKINS_DIR, GLOBALS) 
  • qPloneGoogleMaps/trunk/config.py

    r382 r383  
    1111#MAP_API_KEY = 'ABQIAAAAPKXXAksH6LF9wD3-iB3Z9hTb-vLQlFZmc2N8bgWI8YDPp5FEVBSikjDVULf3tCyc8gRIqTf-_TRyPw' 
    1212 
    13 #MAP_API_KEY = 'ABQIAAAAPKXXAksH6LF9wD3-iB3Z9hR-_Derz1M-sZYUdeXG3J1uZOMrKxT98efydo7fhYu6kuaFv5ESjlw4mw' 
    14 MAP_API_KEY=ABQIAAAAYYyEmQ6EGtXuqElDoueMKBQD6ra-3WW7G3Dx0BPiIwGBloz-IhRd7rSu5fzEEX_rrGcbuQTBDjeYjw 
     13MAP_API_KEY = 'ABQIAAAAPKXXAksH6LF9wD3-iB3Z9hR-_Derz1M-sZYUdeXG3J1uZOMrKxT98efydo7fhYu6kuaFv5ESjlw4mw' 
     14#MAP_API_KEY=ABQIAAAAYYyEmQ6EGtXuqElDoueMKBQD6ra-3WW7G3Dx0BPiIwGBloz-IhRd7rSu5fzEEX_rrGcbuQTBDjeYjw 
    1515 
    1616setDefaultRoles(DEFAULT_ADD_CONTENT_PERMISSION, ('Manager', 'Owner',)) 
  • qPloneGoogleMaps/trunk/configure.zcml

    r382 r383  
    66   
    77  <adapter 
    8       for="Products.ATContentTypes.interface.document.IATFolder" 
     8      for="Products.ATContentTypes.interface.IATFolder" 
    99      provides=".interfaces.markers.IMarkersListing" 
    1010      factory=".adapters.markers.MarkersListing" 
     
    1212 
    1313  <adapter 
    14       for="Products.ATContentTypes.interface.document.IATTopic" 
     14      for="Products.ATContentTypes.interface.IATTopic" 
    1515      provides=".interfaces.markers.IMarkersListing" 
    1616      factory=".adapters.markers.MarkersListing" 
  • qPloneGoogleMaps/trunk/content/Map.py

    r382 r383  
    151151    security.declareProtected(View, 'geoLocation') 
    152152    def geoLocation(self): 
    153         return (str(self.getLatitude()), str(self.getLongitude())) 
     153        return (self.getLatitude(), self.getLongitude()) 
    154154 
    155155    security.declareProtected(View, 'getOverlayMarkers') 
  • qPloneGoogleMaps/trunk/content/Marker.py

    r382 r383  
    5151    ), 
    5252 
     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 
    5364), 
    5465) 
     
    8192    security.declareProtected(View, 'geoLocation') 
    8293    def geoLocation(self): 
    83         return (str(self.getLatitude()), str(self.getLongitude())) 
     94        return (self.getLatitude(), self.getLongitude()) 
    8495 
    8596registerType(Marker, PROJECTNAME) 
  • qPloneGoogleMaps/trunk/content/Overlay.py

    r382 r383  
    3232        widget=SelectionWidget( 
    3333            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', 
    3636            i18n_domain='googlemaps', 
    3737        ) 
  • qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/map_view.pt

    r382 r383  
    99            tal:attributes="src string:http://maps.google.com/maps?file=api&amp;v=2&amp;key=${key}"> 
    1010    </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)" /> 
    1212  </metal:block> 
    1313</head> 
     
    3131      Description 
    3232    </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> --> 
    3434    <!-- gmarker  
    3535    <ul> 
  • qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/maps_markers.py

    r382 r383  
    55##bind script=script 
    66##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 
    88##title= 
    99## 
    1010 
     11from Products.qPloneGoogleMaps.utils import processDesc 
     12 
     13lon = [] 
     14lat = [] 
    1115sPortal = context.portal_url() 
    1216sControls = "" 
    13 sEvents = "" 
     17sMarkerEvents = "" 
     18sMapEvents = "" 
    1419sDefaults = "" 
    1520sMarkers = "" 
    1621sInfoWindow = """ 
    1722"<div><h2><a href='"+url+"'>"+title+"</a></h2><p>"+content+"</p></div>" 
     23""" 
     24sMarkerForm = """ 
     25"<input name='markertitle' type='text' value='' /><br /><input name='ok' type='button' value='OK' /><input name='cancel' type='button' value='CANCEL' />" 
    1826""" 
    1927 
     
    2331    lat = [float(e.geoLocation[0]) for el in longlat for e in el.values()[0]] 
    2432    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]]) 
    2634elif longlat: 
    2735    lat = [float(el.geoLocation[0]) for el in longlat] 
    2836    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]) 
    3038 
    3139if controls == 'large': sControls += "map.addControl(new GLargeMapControl());" 
     
    3442if overviewControls: sControls += "map.addControl(new GOverviewMapControl());\n" 
    3543 
     44if 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 
    3666if events: 
    37     sEvents = """ 
    38       var f = function(){marker.openInfoWindowHtml(%s);}; 
     67    sMarkerEvents = """ 
     68      var f = function(){marker.openInfoWindowHtml(%s, opt);}; 
    3969      GEvent.addListener(marker, 'click', f);\n""" % sInfoWindow 
    40 if not marker and longlat: 
     70if not marker and lon and lat: 
    4171    sDefaults = """ 
    4272map.setCenter(new GLatLng(%f, %f), map.getBoundsZoomLevel(new GLatLngBounds(new GLatLng(%f, %f), new GLatLng(%f, %f)))); 
     
    5383    %(controls)s 
    5484    map.setCenter(new GLatLng(%(lt)f, %(ln)f), %(zoom)s) 
     85    var opt = map.getInfoWindow(); 
     86    opt.maxWidth = 400; 
    5587 
    5688    var icon = new GIcon(); 
     
    6698      var marker = new GMarker(point, icon) 
    6799      map.addOverlay(marker); 
    68       %(events)s 
     100      %(event)s 
    69101    } 
     102    %(mapevents)s 
    70103    %(markers)s 
    71104    %(defaults)s 
     
    76109</script> 
    77110""" % { 
    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  
    99            tal:attributes="src string:http://maps.google.com/maps?file=api&amp;v=2&amp;key=${key}"> 
    1010    </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)" /> 
    1214  </metal:block> 
    1315</head> 
  • qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/marker_view.pt

    r382 r383  
    99            tal:attributes="src string:http://maps.google.com/maps?file=api&amp;v=2&amp;key=${key}"> 
    1010    </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)" /> 
    1212 
    1313  </metal:block> 
     
    2222      Document actions (print, sendto etc) 
    2323    </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 
    2625    <h1 tal:content="here/pretty_title_or_id" class="documentFirstHeading"> 
    2726      Title or id 
  • qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/portlet_maps.pt

    r382 r383  
    44<body> 
    55<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"> 
    89 
    910    <script type="text/javascript" src="" 
     
    1112            tal:attributes="src string:http://maps.google.com/maps?file=api&amp;v=2&amp;key=${key}"> 
    1213    </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 
    1416<dl class="portlet" id="portlet-maps"> 
    1517    <dt class="portletHeader">