Пример #1
0
 def _get_index_values(self, idx):
     items = list(self.portal_catalog.Indexes[
             idx].uniqueValues())
     selected = self.request.get(idx,None)
     items.sort()
     item_list =  [{u'name': _(u'All'), u'value':u'',
             u'disabled':None,
             u'selected':self._sel(None,selected)}]
     for item in items:
         item_list.append({u'name': item.decode('utf-8'),
                 u'value':item.decode('utf-8'),
                 u'disabled': None,
                 u'selected':self._sel(item,selected)})
     return item_list
Пример #2
0
    pass
from plone.registry.interfaces import IRegistry

from collective.flexitopic.interfaces import IFlexiTopicSettings
from collective.flexitopic import flexitopicMessageFactory as _

try:
    from plone.app.querystring import queryparser
except ImportError:
    pass

logger = logging.getLogger("collective.flexitopic")


# just to cheat i18ndude
title = _("Title")
phone = _("Phone")

RAM_CACHE_SECONDS = 60

DATERANGE_OPERATORS = [
    "plone.app.querystring.operation.date.largerThanRelativeDate",  # within next n days
    "plone.app.querystring.operation.date.beforeToday",
    "plone.app.querystring.operation.date.lessThanRelativeDate",  # within last n days
    "plone.app.querystring.operation.date.largerThan",  # after date
    #'plone.app.querystring.operation.date.today',
    "plone.app.querystring.operation.date.afterToday",
    "plone.app.querystring.operation.date.lessThan",  # before date
    "plone.app.querystring.operation.date.between",  # between date and date
]
 def title(self):
     """This property is used to give the title of the portlet in the
     "manage portlets" screen.
     """
     return _(u"FlexiTopic")
Пример #4
0
    def get_js(self):
        """{display: 'Title', name : 'Title', width : 220, sortable : true, align: 'left'}"""
        def is_sortable(sortname):
            if sortname in IDX_METADATA.keys():
                return True
            elif sortname in self.portal_catalog.Indexes.keys():
                if self.portal_catalog.Indexes[sortname].meta_type in [
                        'FieldIndex', 'DateIndex', 'KeywordIndex']:
                    return True
            return False
        def is_date(sortname):
            if sortname in IDX_METADATA and sortname !='Title':
                return True
            elif sortname in self.portal_catalog.Indexes.keys():
                if self.portal_catalog.Indexes[sortname].meta_type in ['DateIndex']:
                    return True
            return False
        fields = get_topic_table_fields(self.topic, self.portal_catalog)

        width=self.flexitopic_width
        height=self.flexitopic_height
        i_date = 0
        for field in fields:
            if is_date(field['name']):
                i_date += 1
        date_fields_width = DATE_FIELD_WIDTH * i_date
        if len(fields) > i_date:
            field_width=int(
                (width - date_fields_width - 18 -
                    (len(fields) * FG_PADDING_WIDTH))/
                (len(fields)-i_date))
        else:
            field_width = DATE_FIELD_WIDTH
        t = "{display: '%s', name : '%s', width : %i, sortable : %s, align: 'left', hide: false}"
        tl = []
        for field in fields:
            this_field_width = 0
            if is_date(field['name']):
                this_field_width = DATE_FIELD_WIDTH
            else:
                this_field_width = field_width
            if is_sortable(field['name']):
                sortable='true'
            else:
                sortable='false'
            tl.append( t % (self.context.translate(_(field['label'])),
                        field['idx_name'], this_field_width, sortable))
        sort = ''
        if hasattr(self.topic, 'listCriteria'):
            #old style collection
            for criterion in self.topic.listCriteria():
                if criterion.meta_type =='ATSortCriterion':
                    sortname = criterion.getCriteriaItems()[0][1]
                    sortorder = 'asc'
                    if len(criterion.getCriteriaItems())==2:
                        if criterion.getCriteriaItems()[1][1] =='reverse':
                            sortorder = 'desc'
                    sort = "sortname: '%s', sortorder: '%s'," % (
                                sortname, sortorder)
        elif hasattr(self.topic, 'getSort_on'):
            #new style collection
            sortname = self.topic.getSort_on()
            sortorder = 'asc'
            if self.topic.getSort_reversed():
                sortorder = 'desc'
            else:
                sortorder = 'asc'
            sort = "sortname: '%s', sortorder: '%s'," % (
                                sortname, sortorder)
        table_name = self.topic.Title()
        url = self.topic.absolute_url() + '/@@flexijson_view'
        add_form_data_js = self.add_form_data_js % self.topic.absolute_url()
        js = self.js_template % {
                'url': url,
                'col_model': ', '.join(tl),
                'sort': sort,
                'title': table_name,
                'items_ppage': self.items_ppage,
                'add_js': add_form_data_js,
                'width': width,
                'height': height,
            }
        return js