#
# Copyright (c) 2008-2018 Thierry Florac <tflorac AT ulthar.net>
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
__docformat__ = 'restructuredtext'
from pyramid.decorator import reify
from zope.contentprovider.interfaces import IContentProvider
from zope.interface import Interface
from pyams_content.component.theme import ITagsInfo, ITagsManager
from pyams_sequence.reference import get_reference_target
from pyams_skin.layer import IPyAMSLayer, IPyAMSUserLayer
from pyams_template.template import template_config
from pyams_utils.adapter import ContextRequestViewAdapter, adapter_config
from pyams_utils.interfaces.tales import ITALESExtension
from pyams_viewlet.viewlet import ViewContentProvider, contentprovider_config
[docs]@contentprovider_config(name='pyams.tags', layer=IPyAMSUserLayer, view=Interface)
@template_config(template='templates/tags.pt', layer=IPyAMSLayer)
class TagsContentProvider(ViewContentProvider):
"""Tags content provider"""
tags_info = None
[docs] def update(self):
super(TagsContentProvider, self).update()
self.tags_info = ITagsInfo(self.context, None)
[docs] def render(self):
if self.tags_info is None:
return ''
return super(TagsContentProvider, self).render()
[docs] @reify
def search_target(self):
manager = ITagsManager(self.request.root, None)
if (manager is not None) and manager.enable_tags_search and manager.tags_search_target:
return get_reference_target(manager.tags_search_target)
@property
def tags(self):
tags = self.tags_info.tags or ()
yield from sorted(tags, key=lambda x: (x.order or 999, x.alt or x.label))