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
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")
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