source: products/quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/skins/quintagroup.seoptimizer/qseo_properties_edit.cpy @ 1458

Last change on this file since 1458 was 1458, checked in by mylan, 14 years ago

plone-issue-#3: force change modification date on changing SEO properties for object

  • Property svn:eol-style set to native
File size: 3.3 KB
Line 
1## Controller Python Script "qseo_properties_edit"
2##bind container=container
3##bind context=context
4##bind namespace=
5##bind script=script
6##bind state=state
7##bind subpath=traverse_subpath
8##title=Update SEO Properties
9##parameters=title=None,description=None,canonical=None,keywords=None,html_comment=None,robots=None,distribution=None,title_override=0,description_override=0,canonical_override=0,keywords_override=0,html_comment_override=0,robots_override=0,distribution_override=0,custommetatags=[],custommetatags_override=0
10
11from Products.CMFCore.utils import getToolByName
12SEPERATOR = '|'
13
14def setProperty(context, property, value, type='string'):
15    if context.hasProperty(property):
16        context.manage_changeProperties({property: value})
17    else:
18        context.manage_addProperty(property, value, type)
19
20delete_list = []
21
22# update custom meta tags
23property_prefix = 'qSEO_custom_'
24custom_existing = []
25for property, value in context.propertyItems():
26    if property.find(property_prefix) == 0 and len(property) > len(property_prefix):
27        custom_existing.append(property)
28
29if not custommetatags_override: custommetatags=[]
30
31globalCustomMetaTags = []
32site_properties = getToolByName(context, 'portal_properties')
33if hasattr(site_properties, 'seo_properties'):
34    custom_meta_tags = getattr(site_properties.seo_properties, 'default_custom_metatags', [])
35    for tag in custom_meta_tags:
36        name_value = tag.split(SEPERATOR)
37        if name_value[0]:
38            globalCustomMetaTags.append({'meta_name'    : name_value[0],
39                                         'meta_content' : len(name_value) == 1 and '' or name_value[1]})
40
41custom_updated = []
42for tag in custommetatags:
43    meta_name, meta_content = tag['meta_name'], tag['meta_content']
44    if meta_name:
45        if not [gmt for gmt in globalCustomMetaTags if (gmt['meta_name']==meta_name and gmt['meta_content']==meta_content)]:
46            setProperty(context, '%s%s' % (property_prefix, meta_name), meta_content)
47        custom_updated.append('%s%s' % (property_prefix, meta_name))
48
49#add not updated custom metatags to delete list
50for tag in custom_existing:
51    if tag not in custom_updated:
52        delete_list.append(tag)
53
54setProperty(context, 'qSEO_title', title)
55setProperty(context, 'qSEO_description', description)
56setProperty(context, 'qSEO_keywords', keywords, 'lines')
57setProperty(context, 'qSEO_html_comment', html_comment)
58setProperty(context, 'qSEO_robots', robots)
59setProperty(context, 'qSEO_distribution', distribution)
60setProperty(context, 'qSEO_canonical', canonical)
61
62if not title_override:        delete_list.append('qSEO_title')
63if not description_override:  delete_list.append('qSEO_description')
64if not keywords_override:     delete_list.append('qSEO_keywords')
65if not html_comment_override: delete_list.append('qSEO_html_comment')
66if not robots_override:       delete_list.append('qSEO_robots')
67if not distribution_override: delete_list.append('qSEO_distribution')
68if not canonical_override:    delete_list.append('qSEO_canonical')
69
70if delete_list: context.manage_delProperties(delete_list)
71
72from DateTime import DateTime
73kwargs = {'modification_date' : DateTime()}
74context.plone_utils.contentEdit(context, **kwargs)
75
76msg ='Content SEO properties have been saved.'
77try:
78    context.plone_utils.addPortalMessage(msg)
79    return state
80except AttributeError:
81    return state.set(context=context, portal_status_message=msg)
Note: See TracBrowser for help on using the repository browser.