Пример #1
0
class IRangeSchema(ISchema):
    """ Schema
    """
    index = schema.Choice(
        title=_(u'Catalog index'),
        description=_(u'Catalog index to use for search'),
        vocabulary=u"eea.faceted.vocabularies.RangeCatalogIndexes",
    )

    labelStart = schema.TextLine(
        title=_(u"Label (start range)"),
        description=_(u"Text to be displayed as start range input label"),
        required=False)
    labelStart._type = (str, six.text_type)

    labelEnd = schema.TextLine(
        title=_(u"Label (end range)"),
        description=_(u"Text to be displayed as end range input label"),
        required=False)
    labelEnd._type = (str, six.text_type)

    placeholderStart = schema.TextLine(
        title=_(u"Placeholder (start range)"),
        description=_(
            u"Text to be displayed as start range input placeholder"),
        required=False)
    placeholderStart._type = (str, six.text_type)

    placeholderEnd = schema.TextLine(
        title=_(u"Placeholder (end range)"),
        description=_(u"Text to be displayed as end range input placeholder"),
        required=False)
    placeholderEnd._type = (str, six.text_type)
Пример #2
0
class SettingsMenu(BrowserSubMenuItem):
    """ Faceted settings menu
    """
    title = _(u'Faceted settings')
    description = _(u'Faceted global settings')

    submenuId = 'faceted_settings_actions'
    order = 5
    extra = {'id': 'faceted_settings'}

    @property
    def action(self):
        """ Submenu action
        """
        return self.context.absolute_url()

    def available(self):
        """ Is this menu available?
        """
        return (IFacetedNavigable.providedBy(self.context)
                and checkPermission('eea.faceted.configure', self.context))

    def selected(self):
        """ Is this item selected?
        """
        return False
Пример #3
0
class IAutocompleteSchema(ISchema):
    """ Schema
    """
    index = schema.Choice(
        title=_(u'Catalog index'),
        description=_(u'Catalog index to use for search'),
        vocabulary=u"eea.faceted.vocabularies.TextCatalogIndexes",
    )

    autocomplete_view = schema.Choice(
        title=_(u"Autocomplete"),
        description=_(u'Select the source of the autocomplete suggestions'),
        vocabulary=u'eea.faceted.vocabularies.AutocompleteViews',
    )

    onlyallelements = schema.Bool(
        title=_(u'Search in all elements only'),
        description=_(u'If this checkbox is checked, hides the choice to '
                      u'filter in all items or in current items only'),
        required=False
    )

    multivalued = schema.Bool(
        title=_(u'Can select several elements'),
        description=_(u"Can select multiple values"),
        required=False
    )

    hidebutton = schema.Bool(
        title=_(u"Hide search button"),
        description=_("Do not display the search button"),
        required=False
    )
Пример #4
0
class IPortletSchema(ISchema):
    """ Schema
    """
    macro = schema.TextLine(
        title=_(u'Portlet macro'),
        description=_(u'Path to portlet macro'),
    )
    macro._type = (unicode, str)
Пример #5
0
class IRangeSchema(ISchema):
    """ Schema
    """
    index = schema.Choice(
        title=_(u'Catalog index'),
        description=_(u'Catalog index to use for search'),
        vocabulary=u"eea.faceted.vocabularies.RangeCatalogIndexes",
    )
Пример #6
0
class IDebugSchema(ISchema):
    """ Schema
    """
    user = schema.Choice(
        title=_(u'Visible to'),
        description=_(u'Widget will be visible only for selected user'),
        vocabulary=u'eea.faceted.vocabularies.CurrentUser',
    )
Пример #7
0
class IIntRangeSchema(ISchema):
    """ Schema
    """
    index = schema.Choice(
        title=_(u'Catalog index'),
        description=_(u'Catalog index to use for search'),
        vocabulary=u'eea.faceted.vocabularies.TextCatalogIndexes',
        required=True)
Пример #8
0
 def toggle_right_column(self, **kwargs):
     """ Show / hide plone portlets left column
     """
     if IHidePloneRightColumn.providedBy(self.context):
         noLongerProvides(self.context, IHidePloneRightColumn)
         return self._redirect(_('Portlets right column is visible now'))
     else:
         alsoProvides(self.context, IHidePloneRightColumn)
         return self._redirect(_('Portlets right column is hidden now'))
Пример #9
0
class ISortingSchema(ISchema):
    """ Schema
    """
    vocabulary = schema.Choice(
        title=_(u'Filter from vocabulary'),
        description=_(u'Vocabulary to use to filter sorting criteria. '
                      u'Leave empty for default sorting criteria.'),
        vocabulary=u'eea.faceted.vocabularies.PortalVocabularies',
        required=False)
Пример #10
0
 def toggle_smart_facets(self, **kwargs):
     """ Enable/Disable 'smart facets hiding'
     """
     if IDisableSmartFacets.providedBy(self.context):
         noLongerProvides(self.context, IDisableSmartFacets)
         return self._redirect(_('Smart facets hiding is now enabled'))
     else:
         alsoProvides(self.context, IDisableSmartFacets)
         return self._redirect(_('Smart facets hiding is now disabled'))
Пример #11
0
 def toggle_right_column(self, **kwargs):
     """ Show / hide plone portlets left column
     """
     if IHidePloneRightColumn.providedBy(self.context):
         noLongerProvides(self.context, IHidePloneRightColumn)
         return self._redirect(_('Portlets right column is visible now'))
     else:
         alsoProvides(self.context, IHidePloneRightColumn)
         return self._redirect(_('Portlets right column is hidden now'))
Пример #12
0
class IBooleanSchema(ISchema):
    """ Schema
    """
    index = schema.Choice(
        title=_(u'Catalog index'),
        description=_(u'Catalog index to use for search'),
        vocabulary=u"eea.faceted.vocabularies.SimpleFieldCatalogIndexes",
        required=True
    )
Пример #13
0
 def toggle_smart_facets(self, **kwargs):
     """ Enable/Disable 'smart facets hiding'
     """
     if IDisableSmartFacets.providedBy(self.context):
         noLongerProvides(self.context, IDisableSmartFacets)
         return self._redirect(_('Smart facets hiding is now enabled'))
     else:
         alsoProvides(self.context, IDisableSmartFacets)
         return self._redirect(_('Smart facets hiding is now disabled'))
Пример #14
0
class ICriteriaSchema(ISchema):
    """ Schema
    """
    hidecriteriaenabled = schema.Bool(
        title=_(u'Enable hide/show criteria'),
        description=_(u"Uncheck this box if you don't want hide/show "
                      u"criteria feature enabled on this widget"),
        required=False,
        default=True)
Пример #15
0
class IResultsFilterSchema(ISchema):
    """ Schema
    """
    default = schema.TextLine(
        title=_(u'Results Filter'),
        description=_(u'Default tal expression for query value'),
        required=False,
        default=u'python:hasattr(brain, u"Title")',
    )
    default._type = (six.text_type, str)
Пример #16
0
 def toggle_inherit_config(self, **kwargs):
     """ Enable/Disable 'inheriting configuration'
     """
     if IDontInheritConfiguration.providedBy(self.context):
         noLongerProvides(self.context, IDontInheritConfiguration)
         return self._redirect(
             _('Inheriting configuration if is now enabled'))
     else:
         alsoProvides(self.context, IDontInheritConfiguration)
         return self._redirect(
             _('Inheriting configuration is now disabled'))
Пример #17
0
 def toggle_inherit_config(self, **kwargs):
     """ Enable/Disable 'inheriting configuration'
     """
     if IDontInheritConfiguration.providedBy(self.context):
         noLongerProvides(self.context, IDontInheritConfiguration)
         return self._redirect(
             _('Inheriting configuration if is now enabled'))
     else:
         alsoProvides(self.context, IDontInheritConfiguration)
         return self._redirect(
             _('Inheriting configuration is now disabled'))
Пример #18
0
class IAlphabeticSchema(ISchema):
    """ Schema for Alphabetic Faceted Widget
    """
    default = schema.TextLine(title=_(u"Default value"),
                              description=_(u"Default letter to be selected"),
                              required=False)
    default._type = (unicode, str)

    index = schema.Choice(
        title=_(u"Catalog index"),
        description=_(u"Catalog index to use for search"),
        vocabulary=u'eea.faceted.vocabularies.AlphabeticCatalogIndexes')
Пример #19
0
class IETagSchema(ISchema):
    """ Schema
    """
    hidden = schema.Bool(
        title=_(u'Enabled (hidden)'),
        description=_(u"Hide this widget in order for e-tag to be used"),
        required=False,
        default=True)

    default = schema.TextLine(title=_(u"Default value"),
                              description=_(u"Default e-tag"),
                              required=False,
                              default=u"1.0")
    default._type = (unicode, str)
Пример #20
0
class IPathSchema(ISchema):
    """ Schema
    """
    index = schema.Choice(
        title=_(u'Catalog index'),
        description=_(u'Catalog index to use for search'),
        vocabulary=u"eea.faceted.vocabularies.PathCatalogIndexes",
        required=True,
        default=u'path',
    )

    root = schema.TextLine(
        title=_(u'Root folder'),
        description=_(u'Navigation js-tree starting point '
                      u'(relative to plone site. ex: SITE/data-and-maps)'),
        required=False)
    root._type = (six.text_type, str)

    depth = schema.TextLine(
        title=_(u'Search Depth'),
        description=_(u'Depth to search the path. 0=this level, '
                      u'-1=all subfolders recursive, and any other positive '
                      u'integer count the subfolder-levels to search.'),
        required=False)
    depth._type = (six.text_type, str)

    theme = schema.Choice(title=_(u'Navigation tree theme'),
                          description=_(u'Theme to be used with this widget'),
                          vocabulary=u'eea.faceted.vocabularies.JsTreeThemes',
                          default=u'apple',
                          required=False)
Пример #21
0
class IPathSelectSchema(ISchema):

    index = schema.Choice(
        title=_(u"Catalog index"),
        description=_(u'Catalog index to be used'),
        vocabulary=u"eea.faceted.vocabularies.CatalogIndexes",
        #required=True,
    )

    root = schema.TextLine(
        title=_(u'Root folder'),
        description=_(u'Navigation js-tree starting point '
                      u'(relative to plone site. ex: SITE/data-and-maps)'),
        required=False
    )
    root._type = (unicode, str)    

    vocabulary = schema.Choice(
        title=_(u"Vocabulary"),
        description=_(u'Vocabulary to use to render widget items'),
        vocabulary=u'eea.faceted.vocabularies.PortalVocabularies',
        required=False
    )

    sortreversed = schema.Bool(
        title=_(u"Reverse options"),
        description=_(u"Sort options reversed"),
        required=False
    )
Пример #22
0
class IResultsPerPageSchema(ISchema):
    """ Schema
    """
    start = schema.Int(
        title=_(u'Start'),
        description=_(u'Results per page starting value'),
        required=False,
        default=0
    )

    end = schema.Int(
        title=_(u'End'),
        description=_(u'Results per page ending value'),
        required=False,
        default=50
    )

    step = schema.Int(
        title=_(u'Step'),
        description=_(u'Results per page step'),
        required=False,
        default=5
    )

    default = schema.Int(
        title=_(u'Default value'),
        description=_(u'Default results per page'),
        required=False,
        default=20
    )
Пример #23
0
class IWidgetDirective(Interface):
    """
    Register a widget
    """
    factory = GlobalObject(
        title=_(u"Factory"),
        description=_(u"Python name of a factory which can create the"
                      u" implementation object.  This must identify an"
                      u" object in a module using the full dotted name."),
        required=True,
    )

    schema = GlobalInterface(title=_(u"Schema interface"),
                             description=_(
                                 u"An interface describing schema to be used"
                                 u" within z3c.form"),
                             required=False)

    accessor = GlobalObject(
        title=_(u"Accessor"),
        description=_(u"Accessor to extract data for faceted widget."),
        required=False)

    criterion = GlobalInterface(title=_(u"Criterion interface"),
                                description=_(u"Criterion interface"),
                                required=False)
Пример #24
0
class ITalSchema(ISchema):
    """ Widget
    """
    index = schema.Choice(
        title=_(u'Catalog index'),
        description=_(u'Catalog index to use for search'),
        vocabulary=u'eea.faceted.vocabularies.SortingCatalogIndexes')

    default = schema.TextLine(
        title=_(u'Tal Expression'),
        description=_(u'Default tal expression for query value'),
        required=False,
        default=u'string:',
    )
    default._type = (six.text_type, str)
Пример #25
0
 def disable(self):
     """ See IFacetedSubtyper
     """
     if not self.can_disable:
         return self._redirect('Faceted search navigation not supported')
     noLongerProvides(self.context, IFacetedSearchMode)
     self._redirect(_('Faceted search disabled'))
Пример #26
0
class SolrSuggest(BrowserView):
    """ Solr Autocomplete view
    """
    label = _("solr")

    def __call__(self):
        result = []
        term = self.request.get('term')
        manager = queryUtility(ISolrConnectionManager)
        if not manager or not term:
            return json.dumps(result)

        connection = manager.getConnection()
        if not connection:
            return json.dumps(result)

        # XXX this should really go into c.solr
        request = six.moves.urllib.parse.urlencode({'q': term}, doseq=True)
        response = connection.doPost(
            connection.solrBase + '/suggest', request, connection.formheaders)
        root = etree.fromstring(response.read())
        suggestion = root.xpath("//arr[@name='suggestion']")
        if suggestion:
            suggestions = suggestion[0].findall('str')
            result = [{'id': s.text, 'text': s.text} for s in suggestions]

        return json.dumps(result)
Пример #27
0
class Widget(AbstractWidget):
    """ Widget
    """
    # Widget properties
    widget_type = 'range'
    widget_label = _('Range')
    view_js = '++resource++eea.facetednavigation.widgets.range.view.js'
    edit_js = '++resource++eea.facetednavigation.widgets.range.edit.js'
    view_css = '++resource++eea.facetednavigation.widgets.range.view.css'
    edit_css = '++resource++eea.facetednavigation.widgets.range.edit.css'
    css_class = 'faceted-range-widget'

    index = ViewPageTemplateFile('widget.pt')
    edit_schema = AbstractWidget.edit_schema.copy() + EditSchema

    @property
    def default(self):
        """ Return default
        """
        default = self.data.get('default', '')
        if not default:
            return ('', '')

        default = default.split('=>')
        if len(default) != 2:
            return ('', '')

        start, end = default
        return (start, end)

    def query(self, form):
        """ Get value from form and return a catalog dict query
        """
        query = {}
        index = self.data.get('index', '')
        index = index.encode('utf-8', 'replace')
        if not index:
            return query

        if self.hidden:
            start, end = self.default
        else:
            value = form.get(self.data.getId(), ())
            if not value or len(value)!=2:
                return query
            start, end = value

        if not (start and end):
            return query

        # let the field be integer if integer:
        catalog = getToolByName(self.context, 'portal_catalog')
        evalues = catalog.uniqueValuesFor(index)
        if True in [isinstance(v, int) for v in evalues]:
            start, end = int(start), int(end)
        query[index] = {
            'query': (start, end),
            'range': 'min:max'
        }
        return query
Пример #28
0
class Widget(CountableWidget):
    """ Widget
    """
    # Widget properties
    widget_type = 'resultsrange'
    widget_label = _('Results range')
    view_js = '++resource++collective.bibliocustomviews.resultsrange.view.js'
    edit_js = '++resource++collective.bibliocustomviews.resultsrange.edit.js'
    view_css = '++resource++collective.bibliocustomviews.resultsrange.view.css'

    index = ViewPageTemplateFile('widget.pt')
    edit_schema = CountableWidget.edit_schema.copy() + EditSchema
    edit_schema['title'].default = 'Results range'
    del edit_schema['sortcountable']

    @property
    def default(self):
        """ Get default values
        """
        value = self.data.get('default', 0) or 0
        if value == ALL_VALUE:
            return ALL_VALUE

        try:
            return int(value)
        except (TypeError, ValueError), err:
            logger.exception(err)
            return ALL_VALUE
Пример #29
0
class SolrSuggest(BrowserView):
    """ Solr Autocomplete view
    """

    implements(IAutocompleteSuggest)

    label = _("solr")

    def __call__(self):
        result = []
        term = self.request.get('term')
        if not HAS_SOLR or not term:
            return json.dumps(result)

        # we import c.solr here, because we checked, if it is available earlier
        from collective.solr.interfaces import ISolrConnectionManager
        manager = queryUtility(ISolrConnectionManager)
        connection = manager.getConnection()
        # XXX this should really go into c.solr
        request = urllib.urlencode({'q': term}, doseq=True)
        response = connection.doPost(connection.solrBase + '/suggest', request,
                                     connection.formheaders)
        root = etree.fromstring(response.read())
        suggestion = root.xpath("//arr[@name='suggestion']")
        if len(suggestion):
            suggestions = suggestion[0].findall('str')
            result = [{'id': s.text, 'text': s.text} for s in suggestions]

        return json.dumps(result)
Пример #30
0
class Widget(CountableWidget):
    """ Widget
    """
    # Widget properties
    widget_type = 'radio'
    widget_label = _('Radio')
    view_js = '++resource++eea.facetednavigation.widgets.radio.view.js'
    edit_js = '++resource++eea.facetednavigation.widgets.radio.edit.js'
    view_css = '++resource++eea.facetednavigation.widgets.radio.view.css'
    css_class = 'faceted-radio-widget'

    index = ViewPageTemplateFile('widget.pt')
    edit_schema = CountableWidget.edit_schema.copy() + EditSchema

    def query(self, form):
        """ Get value from form and return a catalog dict query
        """
        query = {}
        index = self.data.get('index', '')
        index = index.encode('utf-8', 'replace')
        if not index:
            return query

        if self.hidden:
            value = self.default
        else:
            value = form.get(self.data.getId(), '')
        if not value:
            return query

        value = atdx_normalize(value)

        query[index] = value
        return query
Пример #31
0
 def disable(self):
     """ See IFacetedSubtyper
     """
     if not self.can_disable:
         return self._redirect('Faceted search navigation not supported')
     noLongerProvides(self.context, IFacetedSearchMode)
     self._redirect(_('Faceted search disabled'))
Пример #32
0
class Widget(CountableWidget):
    """ Widget
    """
    implements(IAlphabeticWidget)

    # Widget properties
    widget_type = 'alphabetic'
    widget_label = _('Alphabetic')
    view_js = '++resource++eea.facetednavigation.widgets.alphabets.view.js'
    edit_js = '++resource++eea.facetednavigation.widgets.alphabets.edit.js'
    view_css = '++resource++eea.facetednavigation.widgets.alphabets.view.css'
    edit_css = '++resource++eea.facetednavigation.widgets.alphabets.edit.css'

    index = ViewPageTemplateFile('widget.pt')
    edit_schema = CountableWidget.edit_schema.copy() + EditSchema

    # Widget custom API
    def getAlphabet(self, lang):
        """ Get language alphabet
        """
        try:
            lang = lang.split('-')[0].lower()
        except Exception, err:
            logger.exception(err)
            lang = 'en'
        return unicode_character_map.get(lang, unicode_character_map.get('en'))
Пример #33
0
class Widget(CountableWidget):
    """ Widget
    """
    # Widget properties
    widget_type = 'select'
    widget_label = _('Select')
    view_js = '++resource++eea.facetednavigation.widgets.select.view.js'
    edit_js = '++resource++eea.facetednavigation.widgets.select.edit.js'
    view_css = '++resource++eea.facetednavigation.widgets.select.view.css'

    index = ViewPageTemplateFile('widget.pt')
    edit_schema = CountableWidget.edit_schema.copy() + EditSchema

    def query(self, form):
        """ Get value from form and return a catalog dict query
        """
        query = {}
        index = self.data.get('index', '')
        index = index.encode('utf-8', 'replace')
        if not index:
            return query

        if self.hidden:
            value = self.default
        else:
            value = form.get(self.data.getId(), '')

        if not value:
            return query

        if not isinstance(value, unicode):
            value = value.decode('utf-8')

        query[index] = value.encode('utf-8')
        return query
Пример #34
0
class Widget(AbstractWidget):
    """ Widget
    """
    # Widget properties
    widget_type = 'portlet'
    widget_label = _('Plone portlet')

    groups = (DefaultSchemata, LayoutSchemata)
    index = ZopeTwoPageTemplateFile('widget.pt', globals())

    @property
    def macro(self):
        """ Get macro
        """
        macro = self.data.get('macro', '')
        if not macro:
            raise ValueError('Empty macro %s' % macro)

        macro_list = macro.replace('here/', '', 1)
        macro_list = macro_list.split('/macros/')
        if len(macro_list) != 2:
            raise ValueError('Invalid macro: %s' % macro)

        path, mode = macro_list
        path = path.split('/')
        try:
            template = self.context.restrictedTraverse(path)
            template = getattr(template, 'index', template)
            if template:
                return template.macros[mode]
        except Exception:
            # This means we didn't have access or it doesn't exist
            raise
        raise ValueError("Invalid macro: %s" % macro)
    def _import_xml(self, **kwargs):
        """ Import
        """
        upload_file = kwargs.get('import_file', None)
        if getattr(upload_file, 'read', None):
            upload_file = upload_file.read()
        xml = upload_file or ''
        if not xml.startswith('<?xml version="1.0"'):
            return _('Please provide a valid xml file')

        environ = SnapshotImportContext(self.context, 'utf-8')
        importer = queryMultiAdapter((self.context, environ), IBody)
        if not importer:
            return 'No adapter found'

        importer.body = xml
        return _(u"Configuration imported")
 def delete(self, **kwargs):
     """ See IFacetedCriteriaHandler
     """
     to_delete = kwargs.get('paths', kwargs.get('ids', ()))
     handler = getMultiAdapter((self.context, self.request),
                               name=u'faceted_update_criterion')
     for cid in to_delete:
         handler.delete(cid)
     return self._redirect(_(u"Filters deleted"), to=self.redirect)
Пример #37
0
    def disable(self):
        """ See IFacetedSubtyper
        """
        if not self.can_disable:
            return self._redirect('Faceted navigation not supported')

        notify(FacetedWillBeDisabledEvent(self.context))
        noLongerProvides(self.context, IFacetedNavigable)
        notify(FacetedDisabledEvent(self.context))
        self._redirect(_('Faceted navigation disabled'))
Пример #38
0
    def enable(self):
        """ See IFacetedSubtyper
        """
        if not self.can_enable:
            return self._redirect('Faceted navigation not supported')

        notify(FacetedWillBeEnabledEvent(self.context))
        alsoProvides(self.context, IFacetedNavigable)
        notify(FacetedEnabledEvent(self.context))

        self._redirect(_('Faceted navigation enabled'))
Пример #39
0
    def enable(self):
        """ See IFacetedSubtyper
        """
        if not self.can_enable:
            return self._redirect('Faceted search navigation not supported')

        if not super(FacetedSearchSubtyper, self).is_faceted:
            super(FacetedSearchSubtyper, self).enable()
        if not IFacetedSearchMode.providedBy(self.context):
            alsoProvides(self.context, IFacetedSearchMode)
        self._redirect(_('Faceted search enabled'))
Пример #40
0
    def select_vocabulary(self):
        """ Select vocabulary
        """
        # Past
        res = [
            ('now-past', self.translate(_('Past'))),
        ]
        for key, value in PAST:
            key = 'now-%d' % key
            res.append((key, self.translate(value)))

        # Present
        res.append(('now-0', self.translate(_('Today'))))

        #Future
        for key, value in FUTURE:
            key = 'now_%d' % key
            res.append((key, self.translate(value)))
        res.append(('now_future', self.translate(_('Future'))))
        return res
 def __call__(self, **kwargs):
     """ Export / Import configuration
     """
     if self.request:
         kwargs.update(self.request.form)
     if 'import_button' in kwargs.keys():
         return self.import_xml(**kwargs)
     if 'export_button' in kwargs.keys():
         return self.export_xml(**kwargs)
     self._redirect(_(u"No action provided"),
                    'configure_faceted.html')
Пример #42
0
    def getMenuItems(self, context, request):
        """ Return menu items
        """
        url = context.absolute_url()
        action = url + '/@@faceted_settings/%s'

        left_hidden = IHidePloneLeftColumn.providedBy(context)
        right_hidden = IHidePloneRightColumn.providedBy(context)
        smart_hidden = IDisableSmartFacets.providedBy(context)

        menu = [
            {
                'title': (_('Enable left portlets') if left_hidden
                     else _('Disable left portlets')),
                'description': '',
                'action': action % 'toggle_left_column',
                'selected': not left_hidden,
                'icon': ('++resource++faceted_images/show.png' if left_hidden
                    else '++resource++faceted_images/hide.png'),
                'extra': {
                    'id': 'toggle_left_column',
                    'separator': None,
                    'class': ''
                    },
                'submenu': None,
            },
            {
                'title': (_('Enable right portlets') if right_hidden
                     else _('Disable right portlets')),
                'description': '',
                'action': action % 'toggle_right_column',
                'selected': not right_hidden,
                'icon': ('++resource++faceted_images/show.png' if right_hidden
                    else '++resource++faceted_images/hide.png'),
                'extra': {
                    'id': 'toggle_right_column',
                    'separator': None,
                    'class': ''
                    },
                'submenu': None,
            },
            {
                'title': (_('Enable smart facets hiding') if smart_hidden
                     else _('Disable smart facets hiding')),
                'description': '',
                'action': action % 'toggle_smart_facets',
                'selected': not smart_hidden,
                'icon': ('++resource++faceted_images/show.png' if smart_hidden
                    else '++resource++faceted_images/hide.png'),
                'extra': {
                    'id': 'disable_smart_facets',
                    'separator': None,
                    'class': ''
                    },
                'submenu': None,
            },
        ]

        return menu
Пример #43
0
    def enable(self):
        """ See IFacetedSubtyper
        """
        if not self.can_enable:
            return self._redirect('Faceted navigation not supported')

        notify(FacetedWillBeEnabledEvent(self.context))
        alsoProvides(self.context, IFacetedNavigable)
        if not IDisableSmartFacets.providedBy(self.context):
            alsoProvides(self.context, IDisableSmartFacets)
        if not IHidePloneLeftColumn.providedBy(self.context):
            alsoProvides(self.context, IHidePloneLeftColumn)
        if not IHidePloneRightColumn.providedBy(self.context):
            alsoProvides(self.context, IHidePloneRightColumn)
        notify(FacetedEnabledEvent(self.context))

        self._redirect(_('Faceted navigation enabled'))
Пример #44
0
from Products.Archetypes.public import SelectionWidget
from Products.Archetypes.public import BooleanWidget

from eea.facetednavigation import EEAMessageFactory as _
from eea.facetednavigation.dexterity_support import normalize as atdx_normalize
from eea.facetednavigation.widgets import ViewPageTemplateFile
from eea.facetednavigation.widgets.widget import CountableWidget


EditSchema = Schema((
    StringField('index',
        schemata="default",
        required=True,
        vocabulary_factory='eea.faceted.vocabularies.CatalogIndexes',
        widget=SelectionWidget(
            label=_(u'Catalog index'),
            description=_(u'Catalog index to use for search'),
            i18n_domain="eea"
        )
    ),
    StringField('vocabulary',
        schemata="default",
        vocabulary_factory='eea.faceted.vocabularies.PortalVocabularies',
        widget=SelectionWidget(
            label=_(u'Vocabulary'),
            description=_(u'Vocabulary to use to render widget items'),
            i18n_domain="eea"
        )
    ),
    StringField('catalog',
        schemata="default",
Пример #45
0
from eea.facetednavigation.dexterity_support import normalize as atdx_normalize
from eea.facetednavigation.widgets import ViewPageTemplateFile
from eea.faceted.vocabularies.utils import compare
from eea.facetednavigation.widgets.widget import CountableWidget
from eea.facetednavigation import EEAMessageFactory as _


EditSchema = Schema(
    (
        StringField(
            "index",
            schemata="default",
            required=True,
            vocabulary_factory="eea.faceted.vocabularies.CatalogIndexes",
            widget=SelectionWidget(
                label=_(u"Catalog index"), description=_(u"Catalog index to use for search"), i18n_domain="eea"
            ),
        ),
        StringField(
            "operator",
            schemata="default",
            required=True,
            vocabulary=DisplayList([("or", "OR"), ("and", "AND")]),
            default="or",
            widget=SelectionWidget(
                format="select",
                label=_(u"Default operator"),
                description=_(u"Search with AND/OR between elements"),
                i18n_domain="eea",
            ),
        ),
Пример #46
0
from Products.Archetypes.public import SelectionWidget
from Products.Archetypes.public import BooleanWidget

from zope.app.pagetemplate.viewpagetemplatefile import ViewPageTemplateFile

from eea.facetednavigation.widgets.widget import CountableWidget
from eea.facetednavigation import EEAMessageFactory as _


EditSchema = Schema((
    StringField('index',
        schemata="default",
        required=True,
        vocabulary_factory='eea.faceted.vocabularies.CatalogIndexes',
        widget=SelectionWidget(
            label=_(u'Catalog index'),
            description=_(u'Catalog index to use for search'),
            i18n_domain="eea"
        )
    ),
    StringField('vocabulary',
        schemata="default",
        vocabulary_factory='eea.faceted.vocabularies.PortalVocabularies',
        widget=SelectionWidget(
            label=_(u"Vocabulary"),
            description=_(u'Vocabulary to use to render widget items'),
        )
    ),
    StringField('catalog',
        schemata="default",
        vocabulary_factory='eea.faceted.vocabularies.UseCatalog',
Пример #47
0
from Products.Archetypes.public import Schema
from Products.Archetypes.public import StringField
from Products.Archetypes.public import SelectionWidget
from Products.Archetypes.public import DisplayList

from eea.facetednavigation.widgets.widget import Widget as AbstractWidget
from eea.facetednavigation import EEAMessageFactory as _

EditSchema = Schema((
    StringField('user',
        schemata="default",
        required=True,
        vocabulary=DisplayList(()),
        widget=SelectionWidget(
            format='select',
            label=_(u'Visible to'),
            description=_(u'Widget will be visible only for selected user'),
            i18n_domain="eea"
        )
    ),
))

class Widget(AbstractWidget):
    """ Widget
    """
    widget_type = 'debug'
    widget_label = _('Debugger')
    view_css = '++resource++eea.facetednavigation.widgets.debug.view.css'
    edit_css = '++resource++eea.facetednavigation.widgets.debug.edit.css'
    edit_js = '++resource++eea.facetednavigation.widgets.debug.edit.js'
    view_js = '++resource++eea.facetednavigation.widgets.debug.view.js'
Пример #48
0
        elif '-' in datestr:
            datestr = datetime.strptime(datestr, '%Y-%m-%d')
        elif '/' in datestr:
            datestr = datetime.strptime(datestr, '%Y/%m/%d')
    except Exception, err:
        logger.warn(err)
    return DateTime(datestr)

EditSchema = Schema((
    StringField('index',
        schemata="default",
        required=True,
        vocabulary_factory='eea.faceted.vocabularies.DateRangeCatalogIndexes',
        widget=SelectionWidget(
            format='select',
            label=_(u'Catalog index'),
            description=_(u'Catalog index to use for search'),
            i18n_domain="eea"
        )
    ),
    StringField('default',
        schemata="default",
        widget=StringWidget(
            size=25,
            label=_(u'Default value'),
            description=_(u"Default daterange (e.g. '2009/12/01=>2009/12/31')"),
            i18n_domain="eea"
        )
    ),
    StringField('calYearRange',
        schemata="display",
Пример #49
0
from Products.Archetypes.public import Schema
from Products.Archetypes.public import SelectionWidget
from Products.Archetypes.public import StringField
from Products.Archetypes.public import StringWidget

from eea.facetednavigation.widgets.widget import Widget as AbstractWidget
from eea.facetednavigation import EEAMessageFactory as _


EditSchema = Schema((
    StringField('index',
        schemata="default",
        required=True,
        vocabulary_factory='eea.faceted.vocabularies.TextCatalogIndexes',
        widget=SelectionWidget(
            label=_(u'Catalog index'),
            description=_(u'Catalog index to use for search'),
            i18n_domain="eea"
        )
    ),
    StringField('default',
        schemata="default",
        widget=StringWidget(
            size=25,
            label=_(u'Default value'),
            description=_(u'Default string to search for'),
            i18n_domain="eea"
        )
    ),
))
Пример #50
0
from eea.facetednavigation.widgets import ViewPageTemplateFile
from eea.facetednavigation.widgets.widget import Widget as AbstractWidget
from eea.facetednavigation import EEAMessageFactory as _

logger = logging.getLogger('eea.facetednavigation.widgets.path')

EditSchema = Schema((
    StringField('index',
        schemata="default",
        required=True,
        default='path',
        vocabulary_factory='eea.faceted.vocabularies.PathCatalogIndexes',
        widget=SelectionWidget(
            format='select',
            label=_(u'Catalog index'),
            description=_(u'Catalog index to use for search'),
            i18n_domain="eea"
        )
    ),
    StringField('root',
        schemata="default",
        widget=StringWidget(
            size=25,
            label=_(u'Root folder'),
            description=_(u'Navigation js-tree starting point '
                        u'(relative to plone site. ex: SITE/data-and-maps)'),
            i18n_domain="eea"
        )
    ),
    StringField('default',
Пример #51
0
try:
    from zope.browserpage.viewpagetemplatefile import ViewPageTemplateFile
except:
    from zope.app.pagetemplate.viewpagetemplatefile import ViewPageTemplateFile
from Products.CMFCore.utils import getToolByName
from Products.ATContentTypes.criteria import _criterionRegistry
from eea.facetednavigation.widgets.widget import Widget as AbstractWidget
from eea.facetednavigation import EEAMessageFactory as _


EditSchema = Schema((
    StringField('vocabulary',
        schemata="default",
        vocabulary_factory='eea.faceted.vocabularies.PortalVocabularies',
        widget=SelectionWidget(
            label=_(u'Filter from vocabulary'),
            description=_(u'Vocabulary to use to filter sorting criteria. '
                        u'Leave empty for default sorting criteria.'),
            i18n_domain="eea"
        )
    ),
    StringField('default',
        schemata="default",
        widget=StringWidget(
            size=25,
            label=_(u'Default value'),
            description=_(u"Default sorting index "
                        u"(e.g. 'effective' or 'effective(reverse)')"),
            i18n_domain="eea"
        )
    ),
Пример #52
0
from eea.facetednavigation.widgets.interfaces import IWidget

def compare(a, b):
    """ Compare lower values
    """
    return cmp(a.lower(), b.lower())

logger = logging.getLogger('eea.facetednavigation.widgets.widget')

CommonEditSchema = Schema((
    StringField('title',
        schemata="default",
        required=True,
        widget=StringWidget(
            size=25,
            label=_(u"Friendly name"),
            description=_(u"Title for widget to display in view page"),
        )
    ),
    StringField('position',
        schemata="layout",
        vocabulary_factory="eea.faceted.vocabularies.WidgetPositions",
        widget=SelectionWidget(
            format='select',
            label=_(u'Position'),
            description=_(u"Widget position in page"),
        )
    ),
    StringField('section',
        schemata="layout",
        vocabulary_factory="eea.faceted.vocabularies.WidgetSections",
Пример #53
0
)
from eea.facetednavigation.widgets.alphabetic.interfaces import (
    IAlphabeticWidget,
)
from eea.facetednavigation import EEAMessageFactory as _

logger = logging.getLogger('eea.facetednavigation.widgets.alphabetic')

EditSchema = Schema((
    StringField('index',
        schemata="default",
        required=True,
        vocabulary_factory='eea.faceted.vocabularies.AlphabeticCatalogIndexes',
        widget=SelectionWidget(
            format='select',
            label=_(u"Catalog index"),
            description=_(u"Catalog index to use for search"),
        )
    ),
    StringField('default',
        schemata="default",
        widget=StringWidget(
            size=3,
            maxlength=1,
            label=_(u"Default value"),
            description=_(u"Default letter to be selected"),
        )
    ),
))

class Widget(CountableWidget):
Пример #54
0
""" Criteria widget
"""
from Products.Archetypes.public import Schema
from Products.Archetypes.public import BooleanField, BooleanWidget

from eea.facetednavigation.widgets import ViewPageTemplateFile
from eea.facetednavigation.widgets.widget import Widget as AbstractWidget
from eea.facetednavigation import EEAMessageFactory as _


EditSchema = Schema((
    BooleanField('hidecriteriaenabled',
        schemata="default",
        widget=BooleanWidget(
            label=_(u'Enable hide/show criteria'),
            description=_(u"Uncheck this box if you don't want hide/show "
                         "criteria feature enabled on this widget"),
            i18n_domain="eea"
        )
    ),
))

class Widget(AbstractWidget):
    """ Widget
    """
    # Widget properties
    widget_type = 'criteria'
    widget_label = _('Filters')
    view_js = '++resource++eea.facetednavigation.widgets.criteria.view.js'
    view_css = '++resource++eea.facetednavigation.widgets.criteria.view.css'
    edit_css = '++resource++eea.facetednavigation.widgets.criteria.edit.css'
Пример #55
0
    from zope.app.pagetemplate.engine import TrustedEngine, TrustedZopeContext
    from zope.app.pagetemplate.viewpagetemplatefile import ViewPageTemplateFile
# Package
from eea.facetednavigation.widgets.widget import Widget as AbstractWidget
from eea.facetednavigation import EEAMessageFactory as _


logger = logging.getLogger('eea.facetednavigation.widgets.tal')

EditSchema = Schema((
    StringField('index',
        schemata="default",
        required=True,
        vocabulary_factory='eea.faceted.vocabularies.CatalogIndexes',
        widget=SelectionWidget(
            label=_(u'Catalog index'),
            description=_(u'Catalog index to use for search'),
            i18n_domain="eea"
        )
    ),
    StringField('default',
        schemata="default",
        default='string:',
        widget=StringWidget(
            label=_(u'Tal Expression'),
            description=_(u'Default tal expression for query value'),
            i18n_domain="eea"
        )
    ),
))
Пример #56
0
)
from eea.facetednavigation.widgets.alphabetic.interfaces import (
    IAlphabeticWidget,
)
from eea.facetednavigation import EEAMessageFactory as _

logger = logging.getLogger('eea.facetednavigation.widgets.alphabetic')

EditSchema = Schema((
    StringField('index',
        schemata="default",
        required=True,
        vocabulary_factory='eea.faceted.vocabularies.AlphabeticCatalogIndexes',
        widget=SelectionWidget(
            format='select',
            label=_(u"Catalog index"),
            description=_(u"Catalog index to use for search"),
        )
    ),
    BooleanField('count',
        schemata="countable",
        widget=BooleanWidget(
            label=_(u"Count results"),
            description=_(u'Display number of results per letter'),
        )
    ),
    BooleanField('hidezerocount',
        schemata="countable",
        widget=BooleanWidget(
            label=_(u"Hide items with zero results"),
            description=_(u"This option works only if 'count results' "
Пример #57
0
from eea.facetednavigation.widgets.widget import CountableWidget
from eea.facetednavigation import EEAMessageFactory as _

from plone.app.uuid.utils import uuidToCatalogBrain
from zope.component import queryUtility



EditSchema = Schema((
    StringField('index',
        schemata="default",
        required=True,
        vocabulary_factory='eea.faceted.vocabularies.PathCatalogIndexes',
        widget=SelectionWidget(
            format='select',
            label=_(u'Catalog index'),
            description=_(u'Catalog index to use for search'),
            i18n_domain="eea"
        )
    ),
    StringField('root',
        schemata="default",
        widget=StringWidget(
            size=25,
            label=_(u'Root folder'),
            description=_(u'Full path to default container relative site root'
                          u'Will be used if All is selected.'),
            i18n_domain="eea"
        )
    ),
    StringField('vocabulary',
Пример #58
0
from eea.faceted.vocabularies.autocomplete import IAutocompleteSuggest
from eea.facetednavigation import EEAMessageFactory as _
from eea.facetednavigation.widgets import ViewPageTemplateFile
from eea.facetednavigation.widgets.widget import Widget as AbstractWidget
from eea.facetednavigation.config import HAS_SOLR

from zope.interface import implements

EditSchema = Schema((
    StringField(
        'index',
        schemata="default",
        required=True,
        vocabulary_factory='eea.faceted.vocabularies.TextCatalogIndexes',
        widget=SelectionWidget(
            label=_(u'Catalog index'),
            description=_(u'Catalog index to use for search'),
            i18n_domain="eea"
        )
    ),
    StringField(
        'default',
        schemata="default",
        widget=StringWidget(
            size=25,
            label=_(u'Default value'),
            description=_(u'Default string to search for'),
            i18n_domain="eea"
        )
    ),
    StringField(
Пример #59
0
from eea.facetednavigation.dexterity_support import normalize as atdx_normalize
from eea.facetednavigation.widgets import ViewPageTemplateFile
from eea.faceted.vocabularies.utils import compare
from eea.facetednavigation.widgets.widget import CountableWidget
from eea.facetednavigation import EEAMessageFactory as _
from zope.component import getUtility
from zope.schema.interfaces import IVocabularyFactory


EditSchema = Schema((
    IntegerField(
        'maxitems',
        schemata="display",
        default=0,
        widget=IntegerWidget(
            label=_(u"Maximum items"),
            description=_(u'Number of items visible in widget'),
        )
    ),
    LinesField(
        'default',
        schemata="default",
        widget=LinesWidget(
            label=_(u'Default value'),
            description=_(u'Default items (one per line)'),
            i18n_domain="eea"
        )
    ),
))

Пример #60
0
from eea.facetednavigation.widgets import ViewPageTemplateFile
from eea.facetednavigation.widgets.widget import Widget as AbstractWidget
from eea.facetednavigation import EEAMessageFactory as _
from Products.Archetypes.Field import BooleanField
from Products.Archetypes.Widget import BooleanWidget


EditSchema = Schema(
    (
        StringField(
            "index",
            schemata="default",
            required=True,
            vocabulary_factory="eea.faceted.vocabularies.TextCatalogIndexes",
            widget=SelectionWidget(
                label=_(u"Catalog index"), description=_(u"Catalog index to use for search"), i18n_domain="eea"
            ),
        ),
        StringField(
            "default",
            schemata="default",
            widget=StringWidget(
                size=25, label=_(u"Default value"), description=_(u"Default string to search for"), i18n_domain="eea"
            ),
        ),
        BooleanField(
            "onlyallelements",
            schemata="default",
            widget=BooleanWidget(
                label=_(u"Search in all elements only"),
                description=_(