Ignore:
Timestamp:
Sep 18, 2009 5:29:41 PM (15 years ago)
Author:
liebster
Message:

Added metatags order feature, which is managed by metatags_order property of of configlet

Location:
quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser
Files:
1 deleted
5 edited

Legend:

Unmodified
Added
Removed
  • quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/configure.zcml

    r1308 r1313  
    88        manager="plone.app.layout.viewlets.interfaces.IHtmlHead" 
    99        class=".viewlets.TitleCommentViewlet" 
    10         layer=".interfaces.IPloneSEOLayer" 
    11         permission="zope2.View" 
    12         /> 
    13         
    14     <!--browser:viewlet 
    15         name="quintagroup.seoptimizer.http_equiv" 
    16         manager="plone.app.layout.viewlets.interfaces.IHtmlHead" 
    17         class=".viewlets.HTTPEquiv" 
    18         layer=".interfaces.IPloneSEOLayer" 
    19         permission="zope2.View" 
    20         /--> 
    21  
    22     <!--browser:viewlet 
    23         name="quintagroup.seoptimizer.base" 
    24         manager="plone.app.layout.viewlets.interfaces.IHtmlHead" 
    25         class=".viewlets.BaseUrlViewlet" 
    26         layer=".interfaces.IPloneSEOLayer" 
    27         permission="zope2.View" 
    28         /--> 
    29  
    30     <!--browser:viewlet 
    31         name="quintagroup.seoptimizer.generator" 
    32         manager="plone.app.layout.viewlets.interfaces.IHtmlHead" 
    33         template="templates/generator.pt" 
    34         layer=".interfaces.IPloneSEOLayer" 
    35         permission="zope2.View" 
    36         /--> 
    37  
    38     <browser:viewlet 
    39         name="quintagroup.seoptimizer.metatags" 
    40         manager="plone.app.layout.viewlets.interfaces.IHtmlHead" 
    41         class=".viewlets.MetaTagsViewlet" 
    4210        layer=".interfaces.IPloneSEOLayer" 
    4311        permission="zope2.View" 
  • quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/keywords.py

    r387 r1313  
    1616    def validateKeywords(self, text): 
    1717        """ see interface """ 
    18  
    1918        # extract keywords from text 
    2019        if not text.strip(): 
  • quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/templates/seo_controlpanel.pt

    r1271 r1313  
    4545                            <textarea cols="60" id="default_custom_metatags" name="default_custom_metatags" rows="15" 
    4646                                      tal:content="python:'\n'.join(view.getDefaultCustomMetatags())"></textarea> 
     47                        </div> 
     48                    </div> 
     49 
     50                    <div class="field"> 
     51                        <label for="metatags_order" i18n:translate="label_metatags_order"> 
     52                            Meta tags order in the page. 
     53                        </label> 
     54                        <div class="formHelp" i18n:translate="help_metatags_order"> 
     55                            Fill in meta tags order (one per line) which will appear on qseo_properties 
     56                            edit tab. Example: "metaname accessor". 
     57                        </div> 
     58                        <div class="widget"> 
     59                            <textarea cols="60" id="metatags_order" name="metatags_order" rows="15" 
     60                                      tal:content="python:'\n'.join(view.getMetaTagsOrder())"></textarea> 
    4761                        </div> 
    4862                    </div> 
  • quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/viewlets.py

    r1308 r1313  
    11from cgi import escape 
    22from zope.component import getMultiAdapter 
    3 from zope.viewlet.interfaces import IViewlet 
    43from Products.CMFPlone.utils import safe_unicode 
    54from plone.app.layout.viewlets.common import ViewletBase 
    65from Products.CMFCore.utils import getToolByName 
    7 from AccessControl import Unauthorized 
    8 from quintagroup.seoptimizer.util import SortedDict 
    9 from quintagroup.seoptimizer.interfaces import IKeywords  
     6 
    107 
    118class TitleCommentViewlet(ViewletBase): 
     
    4946                return u"%s\n%s"%(qseo_title, qseo_comments) 
    5047 
    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() 
    79  
    80 class MetaTagsViewlet( ViewletBase ): 
    81  
    82     def listMetaTags( self ): 
    83         context = self.context.aq_inner 
    84         portal_props = getToolByName(context, 'portal_properties') 
    85         pu = getToolByName(context, 'plone_utils') 
    86         seo_props = getToolByName(portal_props, 'seo_properties', None) 
    87         if seo_props is None: 
    88             return pu.listMetaTags(context) 
    89  
    90         site_props = getToolByName(portal_props, 'site_properties') 
    91         exposeDCMetaTags = site_props.exposeDCMetaTags 
    92  
    93         metaTags = SortedDict() 
    94         #metaTags.update(pu.listMetaTags(context)) 
    95         metadataList = [ 
    96             ('seo_description', 'description'), 
    97             ('seo_keywords',    'keywords'), 
    98             ('seo_robots',      'robots'), 
    99             ('seo_distribution','distribution')] 
    100  
    101         if exposeDCMetaTags: 
    102             metadataList.append(('seo_distribution', 'DC.distribution')) 
    103  
    104         seo_context = getMultiAdapter((self.context, self.request), name='seo_context') 
    105         for accessor, key in metadataList: 
    106             method = getattr(seo_context, accessor, None) 
    107             if not callable(method): 
    108                 # ups 
    109                 continue 
    110             # Catch AttributeErrors raised by some AT applications 
    111             try: 
    112                 value = method() 
    113             except AttributeError: 
    114                 value = None 
    115  
    116             if not value: 
    117                 continue 
    118             if isinstance(value, (tuple, list)): 
    119                 value = ', '.join(value) 
    120  
    121             metaTags[key] = value 
    122  
    123         # add custom meta tags (added from qseo tab by user) for given context and default from configlet 
    124         custom_meta_tags = seo_context.seo_customMetaTags() 
    125         for tag in custom_meta_tags: 
    126             if tag['meta_content']: 
    127                 metaTags[tag['meta_name']] = tag['meta_content'] 
    128  
    129         # Set the additional matching keywords, if any 
    130         adapter = IKeywords(context, None) 
    131         if adapter is not None: 
    132             keywords = adapter.listKeywords() 
    133             if keywords: 
    134                 metaTags['keywords'] = keywords 
    135  
    136         return metaTags 
    137  
    138     def render( self ): 
    139         return '\n'.join([safe_unicode("""<meta name="%s" content="%s" />"""%(name, content)) \ 
    140                                        for name, content in self.listMetaTags().items()]) 
    14148 
    14249class CustomScriptViewlet( ViewletBase ): 
     
    14855        if seo_props is None: 
    14956            return ''  
    150         return seo_props.getProperty('custom_script', '') 
     57        return seo_props.getProperty('custom_script', '') 
    15158 
    15259    def render( self ): 
     
    16269        seo_context = getMultiAdapter((self.context, self.request), name='seo_context') 
    16370        return """<link rel="canonical" href="%s" />""" % seo_context.seo_canonical() 
    164  
  • quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/views.py

    r1309 r1313  
    217217        sp = self.portal_properties.site_properties 
    218218        return sp.getProperty('exposeDCMetaTags') 
    219      
     219 
    220220    def getDefaultCustomMetatags( self ): 
    221221        """ 
     
    223223        seo = self.portal_properties.seo_properties 
    224224        return seo.getProperty('default_custom_metatags') 
     225 
     226    def getMetaTagsOrder( self ): 
     227        """ 
     228        """ 
     229        seo = self.portal_properties.seo_properties 
     230        return seo.getProperty('metatags_order') 
    225231 
    226232    def getAdditionalKeywords( self ): 
     
    250256        additionalKeywords=request.get('additionalKeywords', []) 
    251257        default_custom_metatags=request.get('default_custom_metatags', []) 
     258        metatags_order=request.get('metatags_order', []) 
    252259 
    253260        site_props = getToolByName(self.portal_properties, 'site_properties') 
     
    261268            seo_props.manage_changeProperties(additional_keywords=additionalKeywords) 
    262269            seo_props.manage_changeProperties(default_custom_metatags=default_custom_metatags) 
     270            seo_props.manage_changeProperties(metatags_order=metatags_order) 
    263271 
    264272            for ptype in self.portal_types.objectValues(): 
Note: See TracChangeset for help on using the changeset viewer.