Changeset 370

Show
Ignore:
Timestamp:
07/05/06 03:53:13
Author:
piv
Message:

changed to geoLocation, Marker functionality

Files:

Legend:

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

    r369 r370  
    99 
    1010from Products.qPloneGoogleMaps.config import * 
     11 
     12def 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 
     19def 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 
     26def 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 
     34def 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) 
    1140 
    1241def installContentTypes(self, out): 
     
    114143    out = StringIO() 
    115144 
     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 
    116152    # installin content types 
    117153    installContentTypes(self, out) 
     
    134170    out = StringIO() 
    135171 
     172    # removing indexes and metadata columns from portal_catalog 
     173    removeCatalogIndex(self, 'geoLocation', out) 
     174    removeCatalogColumn(self, 'geoLocation', out) 
     175 
    136176    # remove portlet from right slot 
    137177    removePortlet(self, out, 'here/portlet_maps/macros/portlet') 
  • qPloneGoogleMaps/trunk/content/Map.py

    r369 r370  
    149149        return False 
    150150 
     151    security.declareProtected(View, 'geoLocation') 
     152    def geoLocation(self): 
     153        return (str(self.getLatitude()), str(self.getLongitude())) 
     154 
    151155    security.declareProtected(View, 'getOverlayMarkers') 
    152156    def getOverlayMarkers(self): 
  • qPloneGoogleMaps/trunk/content/Marker.py

    r369 r370  
    11from AccessControl import ClassSecurityInfo 
     2from Products.CMFCore.permissions import ModifyPortalContent, View 
    23 
    34try: 
     
    67  from Products.Archetypes.public import * 
    78 
    8 from Products.ATContentTypes.content.base import ATCTContent 
     9#from Products.ATContentTypes.content.base import ATCTContent 
    910from Products.ATContentTypes.content.document import ATDocumentSchema 
    1011from Products.ATContentTypes.content.document import ATDocument 
    11 from Products.ATContentTypes.content.schemata import ATContentTypeSchema 
     12#from Products.ATContentTypes.content.schemata import ATContentTypeSchema 
    1213from Products.ATContentTypes.content.schemata import finalizeATCTSchema 
    1314 
    14 from Products.CMFPlone.interfaces.NonStructuralFolder import INonStructuralFolder 
     15#from Products.CMFPlone.interfaces.NonStructuralFolder import INonStructuralFolder 
    1516 
    1617from Products.validation.validators.RangeValidator import RangeValidator 
     
    2627 
    2728MarkerSchema = 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  
    6829    FloatField('latitude', 
    6930        required=True, 
     
    9657 
    9758class Marker(ATDocument): 
    98     """ Marker Class """ 
     59    """ Map Marker """ 
    9960 
    10061    schema          = MarkerSchema 
     
    10465    meta_type       = 'Marker' 
    10566    archetype_name  = 'Marker' 
    106     default_view    = 'gmarker_view' 
    107     immediate_view  = 'gmarker_view' 
     67    default_view    = 'marker_view' 
     68    immediate_view  = 'marker_view' 
    10869    suppl_views     = () 
    10970    typeDescription = 'Marker document' 
    11071    typeDescMsgId   = 'marker_description_edit' 
    11172 
    112     global_allow    = 0 
     73    security        = ClassSecurityInfo() 
    11374 
    11475    # Get the standard actions (tabs) 
     
    11879    _at_rename_after_creation = True 
    11980 
     81    security.declareProtected(View, 'geoLocation') 
     82    def geoLocation(self): 
     83        return (str(self.getLatitude()), str(self.getLongitude())) 
     84 
    12085registerType(Marker, PROJECTNAME) 
  • qPloneGoogleMaps/trunk/content/Overlay.py

    r369 r370  
    7070        container = self.getSource() 
    7171        contentsMethod = container.getFolderContents 
    72         if container.portal_type=='Topic': contentsMethod = container.queryCatalog 
    73         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
    7474 
    7575registerType(Overlay, PROJECTNAME) 
  • qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/map_view.pt

    r369 r370  
    99            tal:attributes="src string:http://maps.google.com/maps?file=api&v=2&key=${key}"> 
    1010    </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())" /> 
    1212  </metal:block> 
    1313</head> 
  • qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/maps_markers.py

    r369 r370  
    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, ln=-122.1419, lt=37.4419 
     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 
    88##title= 
    99## 
     
    2121 
    2222if (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]]) 
    2926elif 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]) 
    3630 
    3731if controls == 'large': sControls += "map.addControl(new GLargeMapControl());" 
     
    4438      var f = function(){marker.openInfoWindowHtml(%s);}; 
    4539      GEvent.addListener(marker, 'click', f);\n""" % sInfoWindow 
    46 if longlat: 
     40if not marker and longlat: 
    4741    sDefaults = """ 
    4842map.setCenter(new GLatLng(%f, %f), map.getBoundsZoomLevel(new GLatLngBounds(new GLatLng(%f, %f), new GLatLng(%f, %f)))); 
     
    7771    %(defaults)s 
    7872  } 
     73  else window.alert("Google maps aren't compatible with current Browser."); 
    7974}, false); 
    8075//]]> 
     
    8883   'events'   : sEvents, 
    8984   'zoom'     : zoom, 
    90    'ln'       : float(ln), 
    91    'lt'       : float(lt), 
     85   'lt'       : float(loc[0]), 
     86   'ln'       : float(loc[1]), 
    9287   'maptype'  : maptype} 
  • qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/maps_view.pt

    r369 r370  
    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,], 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)" /> 
    1212  </metal:block> 
    1313</head> 
  • qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/overlay_view.pt

    r369 r370  
    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.getMarkers(), node='map', events=True, color=here.getMarkersColor(), ln=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())" /> 
    1212  </metal:block> 
    1313</head> 
  • qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/portlet_maps.pt

    r369 r370  
    44<body> 
    55<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"> 
    108 
    119    <script type="text/javascript" src="" 
     
    1311            tal:attributes="src string:http://maps.google.com/maps?file=api&amp;v=2&amp;key=${key}"> 
    1412    </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')" /> 
    1614<dl class="portlet" id="portlet-maps"> 
    1715    <dt class="portletHeader"> 
  • qPloneGoogleMaps/trunk/skins/qPloneGoogleMaps/topic_maps_view.pt

    r369 r370  
    1111    <span tal:define="contentsMethod python:test(here.portal_type=='Topic', here.queryCatalog, here.getFolderContents); 
    1212                      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]" 
    1414          tal:replace="structure python:here.maps_markers(longlat, node='map', events=True, controls='large', typeControls=True, overviewControls=True)" /> 
    1515  </metal:block>