Changeset 1313 in products for quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser
- Timestamp:
- Sep 18, 2009 5:29:41 PM (15 years ago)
- 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 8 8 manager="plone.app.layout.viewlets.interfaces.IHtmlHead" 9 9 class=".viewlets.TitleCommentViewlet" 10 layer=".interfaces.IPloneSEOLayer"11 permission="zope2.View"12 />13 14 <!--browser:viewlet15 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:viewlet23 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:viewlet31 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:viewlet39 name="quintagroup.seoptimizer.metatags"40 manager="plone.app.layout.viewlets.interfaces.IHtmlHead"41 class=".viewlets.MetaTagsViewlet"42 10 layer=".interfaces.IPloneSEOLayer" 43 11 permission="zope2.View" -
quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/keywords.py
r387 r1313 16 16 def validateKeywords(self, text): 17 17 """ see interface """ 18 19 18 # extract keywords from text 20 19 if not text.strip(): -
quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/templates/seo_controlpanel.pt
r1271 r1313 45 45 <textarea cols="60" id="default_custom_metatags" name="default_custom_metatags" rows="15" 46 46 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> 47 61 </div> 48 62 </div> -
quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/viewlets.py
r1308 r1313 1 1 from cgi import escape 2 2 from zope.component import getMultiAdapter 3 from zope.viewlet.interfaces import IViewlet4 3 from Products.CMFPlone.utils import safe_unicode 5 4 from plone.app.layout.viewlets.common import ViewletBase 6 5 from 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 10 7 11 8 class TitleCommentViewlet(ViewletBase): … … 49 46 return u"%s\n%s"%(qseo_title, qseo_comments) 50 47 51 #class HTTPEquiv(ViewletBase):52 #53 # def charset( self ):54 # context = self.context.aq_inner55 # site_properties = getToolByName( context, 'portal_properties').site_properties56 # 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 rendering64 # """65 # def renderBase( self ):66 # # returns correct base href67 # context = self.context.aq_inner68 # 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_explicit72 # try:73 # return isFolder and '%s/'%base_url or base_url74 # except (Unauthorized, 'Unauthorized'):75 # pass76 #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_inner84 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.exposeDCMetaTags92 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 # ups109 continue110 # Catch AttributeErrors raised by some AT applications111 try:112 value = method()113 except AttributeError:114 value = None115 116 if not value:117 continue118 if isinstance(value, (tuple, list)):119 value = ', '.join(value)120 121 metaTags[key] = value122 123 # add custom meta tags (added from qseo tab by user) for given context and default from configlet124 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 any130 adapter = IKeywords(context, None)131 if adapter is not None:132 keywords = adapter.listKeywords()133 if keywords:134 metaTags['keywords'] = keywords135 136 return metaTags137 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()])141 48 142 49 class CustomScriptViewlet( ViewletBase ): … … 148 55 if seo_props is None: 149 56 return '' 150 57 return seo_props.getProperty('custom_script', '') 151 58 152 59 def render( self ): … … 162 69 seo_context = getMultiAdapter((self.context, self.request), name='seo_context') 163 70 return """<link rel="canonical" href="%s" />""" % seo_context.seo_canonical() 164 -
quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/views.py
r1309 r1313 217 217 sp = self.portal_properties.site_properties 218 218 return sp.getProperty('exposeDCMetaTags') 219 219 220 220 def getDefaultCustomMetatags( self ): 221 221 """ … … 223 223 seo = self.portal_properties.seo_properties 224 224 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') 225 231 226 232 def getAdditionalKeywords( self ): … … 250 256 additionalKeywords=request.get('additionalKeywords', []) 251 257 default_custom_metatags=request.get('default_custom_metatags', []) 258 metatags_order=request.get('metatags_order', []) 252 259 253 260 site_props = getToolByName(self.portal_properties, 'site_properties') … … 261 268 seo_props.manage_changeProperties(additional_keywords=additionalKeywords) 262 269 seo_props.manage_changeProperties(default_custom_metatags=default_custom_metatags) 270 seo_props.manage_changeProperties(metatags_order=metatags_order) 263 271 264 272 for ptype in self.portal_types.objectValues():
Note: See TracChangeset
for help on using the changeset viewer.