source: products/qPloneDropDownMenu/trunk/utils.py

Last change on this file was 1140, checked in by piv, 16 years ago

fix string encoding issues, update history file, now ready to be released as 0.2.1 version

  • Property svn:eol-style set to native
File size: 2.0 KB
RevLine 
[1140]1# -*- coding: utf-8 -*-
[1]2""" Utility functions """
3
[372]4from zope.component import getMultiAdapter
5
6from OFS.DTMLMethod import addDTMLMethod
7
8from Products.CMFCore.utils import getToolByName
9from Products.CMFPlone.migrations.migration_util import safeEditProperty
10from Products.CMFCore.Expression import Expression, createExprContext
11
12from config import PROPERTY_FIELD, PROPERTY_SHEET
13
[1140]14
15TAB_HTML_SNIPPET = """<li id="portaltab-%(id)s" class="plain">
16  <a href="%(url)s" accesskey="t" title="%(desc)s">%(name)s</a>
17</li>
18"""
19
20
[1]21def addCSS(container, sheetId, title, csshovering):
22    """ Add DTML Method object to portal root """
[372]23    addDTMLMethod(container, sheetId, title, csshovering)
24
25def updateMenu(site):
26    pu = getToolByName(site, 'plone_utils')
27    pa = getToolByName(site, 'portal_actions')
28    portal_props = getToolByName(site, 'portal_properties')
29
30    # collect all portal tabs
[1140]31    context_state = getMultiAdapter((site, site.REQUEST),
32                                    name=u'plone_context_state')
[372]33    actions = context_state.actions()
[1140]34    portal_tabs_view = getMultiAdapter((site, site.REQUEST),
35                                       name='portal_tabs_view')
[372]36    portal_tabs = portal_tabs_view.topLevelTabs(actions=actions)
37
38    # dump to html
[1140]39    value = u""
40    enc = portal_props.site_properties.getProperty('default_charset', 'utf-8')
[372]41    for tab in portal_tabs:
[1140]42        value += TAB_HTML_SNIPPET % {'id': toUnicode(tab['id'], enc),
43                                     'url': toUnicode(tab['url'], enc),
44                                     'desc': toUnicode(tab['description'], enc),
45                                     'name': toUnicode(tab['name'], enc)}
[372]46
47    if not hasattr(portal_props.aq_base, PROPERTY_SHEET):
[1140]48        portal_props.addPropertySheet(PROPERTY_SHEET,
49                                      'DropDown Menu Properties')
[372]50    ap = getattr(portal_props.aq_base, PROPERTY_SHEET)
51    safeEditProperty(ap, PROPERTY_FIELD, value, 'text')
[1140]52
53def toUnicode(value, enc='utf-8'):
54    if isinstance(value, str):
55        return value.decode(enc)
56    else:
57        return value
Note: See TracBrowser for help on using the repository browser.