コード例 #1
0
class ControlPanelView(BrowserView):
    __call__ = pagetemplatefile.ViewPageTemplateFile('controlpanel.pt')
    contents = pagetemplatefile.ViewPageTemplateFile('controlpanel-links.pt')

    label = _(u"Singing & Dancing configuration")

    def back_link(self):
        root = getSite()

        return dict(label=_(u"Up to Site Setup"),
                    url=root.absolute_url() + '/plone_control_panel')
コード例 #2
0
class PressRoomView(BrowserView):
    implements(IPressRoomView)
    template = pagetemplatefile.ViewPageTemplateFile('templates/pressroom.pt')

    def __call__(self):
        #self.request.set('disable_border', True)
        return self.template()

    def __init__(self, context, request):
        self.context = context
        self.request = request
        self.result = []

    def _render_cachekey(method, self):
        return ('MemoNews')

    @ram.cache(_render_cachekey)
    @deprecation.deprecate("getFeed() is deprecated, use getRSSFeed instead.")
    def getFeed(self):
        context = Acquisition.aq_inner(self.context)
        sin = getToolByName(context, 'sin_tool')
        map = "MemoNews"
        rows = sin.sin(map, max_size=2)
        return rows

    def getRSSFeed(self, count=1000000):
        pp = getToolByName(self.context, 'portal_properties')
        op = getattr(pp, 'osha_properties', None)
        oshaview = getMultiAdapter((self.context, self.request),
                                   name='oshaview')
        url = op and op.getProperty('osha_in_the_media_feed', '') or ''
        ass = RSSAssignment(portlet_title="", count=count, url=url)
        renderer = RSSRenderer(self.context, self.request, self, None, ass)
        renderer.update()
        for item in renderer.items:
            item['summary'] = oshaview.cropHtmlText(item['summary'], 500)
        return renderer

    @ram.cache(_render_cachekey)
    def getPresscontacts(self):
        context = Acquisition.aq_inner(self.context)
        canonical = context.getCanonical()
        contactInfo = list()
        folder = getattr(canonical, 'press-contacts')
        international = getattr(folder, 'international-press', None)
        if international:
            contactInfo.append(international)
        spanish = getattr(folder, 'spanish-press', None)
        if spanish:
            contactInfo.append(spanish)
        brussels = getattr(folder, 'brussels-liaison', None)
        if brussels:
            contactInfo.append(brussels)

        return contactInfo
コード例 #3
0
class PublicationEditForm(formbase.EditForm):
    """Form for editing publication fields.
    """

    template = pagetemplatefile.ViewPageTemplateFile(
        'templates/publication-edit.pt')
    form_fields = form.FormFields(interfaces.IPublication)
    #form_fields['chapters'].customq_widget = CollectionInputWidget

    label = u'Edit Publication Data'
    priority_fields = ['title']

    def update(self):
        """ update the form """
        self.adapters = {}
        form_fields = self.form_fields
        # here we can fiddle...
        self.form_fields = form_fields
        super(PublicationEditForm, self).update()

    def setUpWidgets(self, ignore_request=False):
        """ setup edit widgets """
        self.widgets = form.setUpEditWidgets(self.form_fields,
                                             self.prefix,
                                             self.context,
                                             self.request,
                                             adapters=self.adapters,
                                             ignore_request=ignore_request)

    @form.action(_("Apply"), condition=form.haveInputWidgets)
    def handle_edit_action(self, action, data):
        """ handle edit """
        changed = applyChanges(self.context, self.form_fields, data,
                               self.adapters)
        if changed:
            attrs = Attributes(interfaces.IPublication, *changed)
            event.notify(ObjectModifiedEvent(self.context, attrs))
            # TODO: Needs locale support. See also Five.form.EditView.
            self.status = _("Successfully updated")
        else:
            self.status = _('No changes')
        statusmessages_ifaces.IStatusMessage(self.request).addStatusMessage(
            self.status, 'info')
        redirect = self.request.response.redirect
        return redirect(self.context.absolute_url() + '/view')
コード例 #4
0
ファイル: __init__.py プロジェクト: c0ns0le/zenoss-4
 def __call__(self):
     t = pagetemplatefile.ViewPageTemplateFile('error_message.pt')
     return t(self)
コード例 #5
0
_patches.apply_patches()


@namedtemplate.implementation(interfaces.IAction)
def render_submit_button(self):
    """A custom version of the submit button that uses plone's context class"""
    if not self.available():
        return ''
    label = self.label
    if isinstance(label, i18n.Message):
        label = i18n.translate(self.label, context=self.form.request)
    return ('<input type="submit" id="%s" name="%s" value="%s"'
            ' class="context" />' % (self.__name__, self.__name__, label))


__all__ = ('named_template_adapter', 'default_named_template')

_template = pagetemplatefile.ViewPageTemplateFile('pageform.pt')
default_named_template_adapter = named_template_adapter(_template)

_subpage_template = pagetemplatefile.ViewPageTemplateFile('subpageform.pt')
default_subpage_template = named_template_adapter(_subpage_template)

_template = pagetemplatefile.ViewPageTemplateFile('addingpageform.pt')
adding_named_template_adapter = named_template_adapter(_template)

from zope.i18nmessageid import MessageFactory

PloneMessageFactory = MessageFactory('plone')
コード例 #6
0
class PublicationPageView(object):
    """Page for displaying a publication.
    """
    adapted_interface = interfaces.IPublication
    media_field = 'file'

    estimate_template = pagetemplatefile.ViewPageTemplateFile(
        'templates/estimate_template.pt')

    label = u'View Publication Info'

    @property
    def template(self):
        """ return the template """
        return self.index

    @property
    def have_linguaplone(self):
        return HAVE_LINGUAPLONE

    def available_translations(self, context=None):
        """ list all available translations for this publication """
        context = context or Acquisition.aq_inner(self.context)
        portal_languages = cmfutils.getToolByName(context, 'portal_languages')
        ali = portal_languages.getAvailableLanguageInformation()

        if HAVE_LINGUAPLONE:
            translations = context.getTranslations()
        else:
            translations = {context.Language(): (context, context.Language())}

        if len(translations.keys()) < 1:
            return

        lang_codes = translations.keys()
        lang_codes.sort()

        sm = getSecurityManager()
        R = []
        for lang in lang_codes:
            trans = translations[lang][0]
            if not sm.checkPermission('View', trans):
                continue
            url = trans.absolute_url()

            name = ali.get(lang, {'native': lang})['native']
            R.append((name, url))
        return R

    def chapters(self):
        """ get the chapters """
        additionals = _get_storage_folder(self.context)
        if additionals is None:
            return []
        chapterlinks = additionals.objectValues('ATLink')
        return chapterlinks

    def fetchRelatedPublications(self, limit=3):
        """ Query the catalog for related publications """
        context = Acquisition.aq_inner(self.context)
        subject = context.Subject()

        pc = cmfutils.getToolByName(context, 'portal_catalog')
        if hasattr(pc, 'getZCatalog'):
            pc = pc.getZCatalog()

        portal_languages = cmfutils.getToolByName(context, 'portal_languages')
        preflang = portal_languages.getPreferredLanguage()

        query = {
            'portal_type': 'File',
            'object_provides':
            'slc.publications.interfaces.IPublicationEnhanced',
            'Subject': subject,
            'review_state': 'published',
        }
        # PQ = Eq('portal_type', 'File') & \
        #     In('object_provides', 'slc.publications.interfaces.IPublicationEnhanced') & \
        #     In('Subject', subject) & \
        #     Eq('review_state', 'published')

        if HAVE_LINGUAPLONE:
            # PQ = PQ & In('Language', [preflang, ''])
            query['Language'] = [preflang, '']

        # RES = pc.evalAdvancedQuery(PQ, (('effective','desc'),) )
        query['sort_on'] = 'effective'
        query['sort_order'] = 'descending'
        RES = pc(query)

        PUBS = []
        mypath = "/".join(context.getPhysicalPath())

        for R in RES:
            # dont show myself
            if R.getPath() == mypath:
                continue
            PUBS.append(R)

        if limit > 0 and len(PUBS) > limit:
            PUBS = PUBS[:limit]

        return PUBS

    def update(self):
        pass

    def estimated_download_time(self):
        return self.estimate_template()

    def _format_timestring(self, secs):
        const = {'sec': 1, 'mins': 60 * 60, 'hours': 24 * 60 * 60}
        order = ('hours', 'mins', 'sec')
        smaller = order[-1]

        if type(secs) in [type(0), type(0L)]:
            if secs < const[smaller]:
                return '1 %s' % smaller
            for c in order:
                if secs / const[c] > 0:
                    break
            return '%.1f %s' % (float(secs / float(const[c])), c)

        return "%s secs" % secs
コード例 #7
0
ファイル: browser.py プロジェクト: eea/eea.google
from Acquisition import aq_inner, aq_parent
from Products.Five import BrowserView
from Products.Five.browser import pagetemplatefile
from Products.statusmessages.interfaces import IStatusMessage

from eea.google.analytics.content import Analytics, AnalyticsReport
from eea.google.analytics.interfaces import (IGoogleAnalyticsConnection,
                                             IAnalyticsReport, IXMLParser)

logger = logging.getLogger('eea.google')

#
# Named templates
#
TEMPLATE = pagetemplatefile.ViewPageTemplateFile('editpageform.pt')
edit_named_template_adapter = named_template_adapter(TEMPLATE)


#
# Abstract browser view
#
class AnalyticsView(BrowserView):
    """ Define common methods
    """
    def _redirect(self, msg):
        """ Set status message and redirect back to context
        """
        if self.request:
            url = self.context.absolute_url()
            IStatusMessage(self.request).addStatusMessage(msg, type='info')