Changeset 1308 in products


Ignore:
Timestamp:
Sep 11, 2009 5:23:26 PM (11 years ago)
Author:
liebster
Message:

resolved metatags duplication

Location:
quintagroup.seoptimizer/trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • quintagroup.seoptimizer/trunk/docs/HISTORY.txt

    r1276 r1308  
    11Changelog 
    22========= 
     3 
     42.0.10 (unreleased) 
     5------------------ 
     6 
     7- Resolved metatags duplication 
     8  [liebster] 
     9 
    310 
    4112.0.9 (2009-09-10) 
     
    714- Fixed bugs in metatags viewlet 
    815  [liebster] 
     16 
    917 
    10182.0.8 (2009-07-28) 
  • quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/__init__.py

    r392 r1308  
    11from AccessControl import allow_module 
     2from util import SortedDict 
     3from Acquisition import aq_inner 
     4from DateTime import DateTime 
     5 
     6from Products.CMFCore.utils import getToolByName 
    27 
    38allow_module('quintagroup.seoptimizer.util') 
    49qSEO_globals = globals() 
     10 
     11 
     12try: 
     13    from Products.CMFPlone.PloneTool import PloneTool, METADATA_DCNAME 
     14    _present = hasattr(PloneTool, "listMetaTags") 
     15except ImportError: 
     16    _present = False 
     17 
     18 
     19 
     20if _present: 
     21    old_lmt = PloneTool.listMetaTags 
     22 
     23    def listMetaTags(self, context): 
     24        """Lists meta tags helper. 
     25 
     26        Creates a mapping of meta tags -> values for the listMetaTags script. 
     27        """ 
     28        result = {} 
     29        site_props = getToolByName(self, 'portal_properties').site_properties 
     30        use_all = site_props.getProperty('exposeDCMetaTags', None) 
     31 
     32        if not use_all: 
     33            metadata_names = {'Description': METADATA_DCNAME['Description']} 
     34        else: 
     35            metadata_names = METADATA_DCNAME 
     36 
     37        for accessor, key in metadata_names.items(): 
     38            method = getattr(aq_inner(context).aq_explicit, accessor, None) 
     39            if not callable(method): 
     40                continue 
     41 
     42            # Catch AttributeErrors raised by some AT applications 
     43            try: 
     44                value = method() 
     45            except AttributeError: 
     46                value = None 
     47 
     48            if not value: 
     49                # No data 
     50                continue 
     51            if accessor == 'Publisher' and value == 'No publisher': 
     52                # No publisher is hardcoded (TODO: still?) 
     53                continue 
     54            if isinstance(value, (list, tuple)): 
     55                # convert a list to a string 
     56                value = ', '.join(value) 
     57 
     58#          Exclusion meta tag description and keywords 
     59#            # Special cases 
     60#            if accessor == 'Description': 
     61#                result['description'] = value 
     62#            elif accessor == 'Subject': 
     63#                result['keywords'] = value 
     64 
     65            if use_all: 
     66                result[key] = value 
     67 
     68        if use_all: 
     69            created = context.CreationDate() 
     70 
     71            try: 
     72                effective = context.EffectiveDate() 
     73                if effective == 'None': 
     74                    effective = None 
     75                if effective: 
     76                    effective = DateTime(effective) 
     77            except AttributeError: 
     78                effective = None 
     79 
     80            try: 
     81                expires = context.ExpirationDate() 
     82                if expires == 'None': 
     83                    expires = None 
     84                if expires: 
     85                    expires = DateTime(expires) 
     86            except AttributeError: 
     87                expires = None 
     88 
     89            # Filter out DWIMish artifacts on effective / expiration dates 
     90            if effective is not None and \ 
     91               effective > FLOOR_DATE and \ 
     92               effective != created: 
     93                eff_str = effective.Date() 
     94            else: 
     95                eff_str = '' 
     96 
     97            if expires is not None and expires < CEILING_DATE: 
     98                exp_str = expires.Date() 
     99            else: 
     100                exp_str = '' 
     101 
     102            if exp_str or exp_str: 
     103                result['DC.date.valid_range'] = '%s - %s' % (eff_str, exp_str) 
     104 
     105        return result 
     106 
     107    PloneTool.listMetaTags = listMetaTags 
  • quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/configure.zcml

    r1269 r1308  
    1212        /> 
    1313        
    14     <browser:viewlet 
     14    <!--browser:viewlet 
    1515        name="quintagroup.seoptimizer.http_equiv" 
    1616        manager="plone.app.layout.viewlets.interfaces.IHtmlHead" 
     
    1818        layer=".interfaces.IPloneSEOLayer" 
    1919        permission="zope2.View" 
    20         /> 
     20        /--> 
    2121 
    22     <browser:viewlet 
     22    <!--browser:viewlet 
    2323        name="quintagroup.seoptimizer.base" 
    2424        manager="plone.app.layout.viewlets.interfaces.IHtmlHead" 
     
    2626        layer=".interfaces.IPloneSEOLayer" 
    2727        permission="zope2.View" 
    28         /> 
     28        /--> 
    2929 
    30     <browser:viewlet 
     30    <!--browser:viewlet 
    3131        name="quintagroup.seoptimizer.generator" 
    3232        manager="plone.app.layout.viewlets.interfaces.IHtmlHead" 
     
    3434        layer=".interfaces.IPloneSEOLayer" 
    3535        permission="zope2.View" 
    36         /> 
     36        /--> 
    3737 
    3838    <browser:viewlet 
  • quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/viewlets.py

    r1265 r1308  
    4949                return u"%s\n%s"%(qseo_title, qseo_comments) 
    5050 
    51 class HTTPEquiv(ViewletBase): 
    52      
    53     def charset( self ): 
    54         context = self.context.aq_inner 
    55         site_properties = getToolByName( context, 'portal_properties').site_properties 
    56         return site_properties.getProperty('default_charset', 'utf-8') 
    57      
    58     def render( self ): 
    59         return """<meta http-equiv="Content-Type" content="text/html; charset=%s" />"""%self.charset() 
    60           
    61 class BaseUrlViewlet( ViewletBase ): 
    62     """ 
    63        simpel viewlet for base href rendering 
    64     """ 
    65     def renderBase( self ): 
    66         # returns correct base href 
    67         context = self.context.aq_inner 
    68         isFolder = getattr(context.aq_explicit, 'isPrincipiaFolderish', 0) 
    69         base_url = context.absolute_url() 
    70  
    71         # when accessing via WEBDAV you're not allowed to access aq_explicit 
    72         try: 
    73             return isFolder and '%s/'%base_url or base_url 
    74         except (Unauthorized, 'Unauthorized'): 
    75             pass 
    76  
    77     def render( self ): 
    78         return """<base href="%s" /><!--[if lt IE 7]></base><![endif]-->"""% self.renderBase() 
     51#class HTTPEquiv(ViewletBase): 
     52#     
     53#    def charset( self ): 
     54#        context = self.context.aq_inner 
     55#        site_properties = getToolByName( context, 'portal_properties').site_properties 
     56#        return site_properties.getProperty('default_charset', 'utf-8') 
     57#     
     58#    def render( self ): 
     59#        return """<meta http-equiv="Content-Type" content="text/html; charset=%s" />"""%self.charset() 
     60#          
     61#class BaseUrlViewlet( ViewletBase ): 
     62#    """ 
     63#       simpel viewlet for base href rendering 
     64#    """ 
     65#    def renderBase( self ): 
     66#        # returns correct base href 
     67#        context = self.context.aq_inner 
     68#        isFolder = getattr(context.aq_explicit, 'isPrincipiaFolderish', 0) 
     69#        base_url = context.absolute_url() 
     70# 
     71#        # when accessing via WEBDAV you're not allowed to access aq_explicit 
     72#        try: 
     73#            return isFolder and '%s/'%base_url or base_url 
     74#        except (Unauthorized, 'Unauthorized'): 
     75#            pass 
     76# 
     77#    def render( self ): 
     78#        return """<base href="%s" /><!--[if lt IE 7]></base><![endif]-->"""% self.renderBase() 
    7979 
    8080class MetaTagsViewlet( ViewletBase ): 
     
    9292 
    9393        metaTags = SortedDict() 
    94         metaTags.update(pu.listMetaTags(context)) 
     94        #metaTags.update(pu.listMetaTags(context)) 
    9595        metadataList = [ 
    9696            ('seo_description', 'description'), 
     
    100100 
    101101        if exposeDCMetaTags: 
    102             metadataList.append(('qSEO_Distribution', 'DC.distribution')) 
     102            metadataList.append(('seo_distribution', 'DC.distribution')) 
    103103 
    104104        seo_context = getMultiAdapter((self.context, self.request), name='seo_context') 
  • quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles/default/viewlets.xml

    r958 r1308  
    22<object> 
    33  <order manager="plone.htmlhead" skinname="*"> 
    4     <viewlet name="quintagroup.seoptimizer.http_equiv" /> 
     4    <!--viewlet name="quintagroup.seoptimizer.http_equiv" /--> 
    55    <viewlet name="plone.htmlhead.title" /> 
    6     <viewlet name="quintagroup.seoptimizer.base" /> 
    7     <viewlet name="quintagroup.seoptimizer.generator" /> 
     6    <!--viewlet name="quintagroup.seoptimizer.base" /--> 
     7    <!--viewlet name="quintagroup.seoptimizer.generator" /--> 
    88    <viewlet name="quintagroup.seoptimizer.metatags" /> 
    99    <viewlet name="quintagroup.seoptimizer.canonicalurl" /> 
Note: See TracChangeset for help on using the changeset viewer.