Exemple #1
0
class Modern(grok.Viewlet):

    grok.view(Painting)
    grok.viewletmanager(Art)

    def render(self):
        return u'<p>Mordern art is recent</p>'
Exemple #2
0
class PackageSettings(silvaforms.SMISubEditForm):
    grok.context(interfaces.ISilvaSoftwarePackage)
    grok.view(Settings)
    grok.order(5)

    label = u"Software package settings"
    fields = silvaforms.Fields(IPackageSettings)
Exemple #3
0
class Gallery(grok.Viewlet):

    grok.view(Painting)
    grok.viewletmanager(Museum)

    def render(self):
        return u'<p>A common gallery with rembrandt</p>'
class GroupSettings(silvaforms.SMISubEditForm):
    grok.context(interfaces.ISilvaSoftwareGroup)
    grok.view(Settings)
    grok.order(5)

    label = u"Software group settings"
    fields = silvaforms.Fields(IGroupSettings)
Exemple #5
0
class Reserve(grok.Viewlet):

    grok.view(Painting)
    grok.viewletmanager(Museum)
    grok.require('zope2.ViewManagementScreens')

    def render(self):
        return u'<p>Non exposed content</p>'
Exemple #6
0
class FileServiceSettings(silvaforms.ZMISubForm):
    grok.context(FilesService)
    grok.view(FileServiceManagementView)
    grok.order(10)

    label = _(u"Select storage")
    fields = silvaforms.Fields(IFilesService)
    actions = silvaforms.Actions(silvaforms.EditAction())
    ignoreContent = False
Exemple #7
0
class ZoomItSnippet(grok.Viewlet):
    grok.viewletmanager(IAboveContent)
    grok.context(IZoomItImage)
    grok.view(IViewView)

    def available(self):
        return True

    def render(self):
        """Returns a simple marker span"""
        return '<span id="zoomit-marker" />'
Exemple #8
0
class GhostAssetEditForm(silvaforms.SMISubForm):
    """ Edit form Ghost Folder
    """
    grok.context(IGhostAsset)
    grok.view(AssetEditTab)
    grok.order(10)

    label = _(u'Edit ghost')
    ignoreContent = False
    dataManager = silvaforms.SilvaDataManager
    dataValidators = [TargetValidator('haunted', IAsset, adding=False)]
    fields = silvaforms.Fields(IGhostAssetSchema).omit('id')
    actions = silvaforms.Actions(silvaforms.CancelEditAction(),
                                 silvaforms.EditAction())
class CSVSourceEditForm(silvaforms.SMISubForm):
    """CSVSource Edit Form.
    """
    grok.view(AssetEditTab)
    grok.order(10)

    label = _('Edit file content')
    ignoreContent = False
    dataManager = silvaforms.SilvaDataManager

    fields = silvaforms.Fields(ICSVSourceFields).omit('id')
    fields['file'].fileSetLabel = _(
        "Click the Upload button to replace the current CSV with a new one.")
    actions = silvaforms.Actions(silvaforms.CancelEditAction(),
                                 silvaforms.EditAction())
class GroupRemoteSettings(silvaforms.SMISubEditForm):
    grok.context(interfaces.ISilvaSoftwareRemoteGroup)
    grok.view(Settings)
    grok.order(4)

    label = u"Software remote group settings"
    actions = silvaforms.Actions(silvaforms.SMISubEditForm.actions)
    fields = silvaforms.Fields(IRemoteGroupFields).omit('id', 'title')

    @silvaforms.action('Synchronize')
    def synchronize(self):
        try:
            self.context.synchronize(self.request)
        except ValueError, error:
            raise silvaforms.ActionError(error.args[0])
        self.send_message('Software synchronized.')
        return silvaforms.SUCCESS
Exemple #11
0
class ImageEditForm(silvaforms.SMISubForm):
    """ Edit image attributes
    """
    grok.context(IImage)
    grok.view(AssetEditTab)
    grok.order(10)

    label = _('Edit')
    ignoreContent = False
    dataManager = silvaforms.SilvaDataManager

    fields = silvaforms.Fields(IImageAddFields).omit('id')
    fields['image'].fileSetLabel = _(
        "Click the Upload button to replace the current image with a new image."
    )
    actions = silvaforms.Actions(silvaforms.CancelEditAction(),
                                 silvaforms.EditAction())
Exemple #12
0
class FileEditForm(silvaforms.SMISubForm):
    """Edit file.
    """
    grok.context(IFile)
    grok.view(AssetEditTab)
    grok.order(10)

    label = _('Edit file content')
    ignoreContent = False
    dataManager = silvaforms.SilvaDataManager

    fields = silvaforms.Fields(IFileAddFields).omit('id')
    fields['title'].required = False
    fields['file'].fileSetLabel = _(
        "Click the Upload button to replace the current file with a new file.")
    actions = silvaforms.Actions(silvaforms.CancelEditAction(),
                                 silvaforms.EditAction())
Exemple #13
0
class CheckedOutViewlet(grok.Viewlet):

    grok.viewletmanager(IAboveContent)
    grok.context(IDocumentSchema)
    grok.view(IViewView)
    grok.require('zope2.View')

    def update(self):
        manager = queryMultiAdapter((self.context, self.request),
                                    ICheckinCheckoutManager)
        if not manager:
            self.available = False
        elif not manager.checked_out():
            self.available = False
        else:
            self.available = True

            info = getUtility(IContactInformation)
            owner_id = manager.checked_out()
            self.checkout_owner = info.render_link(owner_id)
Exemple #14
0
class PloneSiteRootView(grok.View):
    """View for Plone Site Root"""
    grok.context(IPloneSiteRoot)
    grok.layer(ITrustTemplateLayer)
    grok.name('trust-view')
    grok.require('zope2.View')
    grok.template('plone-site-root')
    grok.view(IViewView)

    def update(self):
        plone_portal_state = getMultiAdapter((self.context, self.request),
            name='plone_portal_state')
        membership = getToolByName(self.context, 'portal_membership')
        if membership.isAnonymousUser():
            url = '{}/login_form'.format(plone_portal_state.portal_url())
            self.request.response.redirect(url)
        elif membership.getHomeFolder():
            self.request.response.redirect(membership.getHomeUrl())
        else:
            self.template
Exemple #15
0
class FileServiceConvert(silvaforms.ZMISubForm):
    grok.context(FilesService)
    grok.view(FileServiceManagementView)
    grok.order(20)

    label = _(u"Convert stored files")
    description = _(u"Convert all currently stored file to "
                    u"the current set storage.")

    def available(self):
        if self.context.storage is None:
            return False
        return self.context.storage is not ZODBFile

    @silvaforms.action(_(u'Convert all files'))
    def convert(self):
        parent = self.context.get_publication()
        self.context.convert_storage(parent)
        self.status = _(u'Storage for Silva Files and Images converted. '
                        u'Check the log for more details.')
Exemple #16
0
class ManageQuotaRootForm(silvaforms.ZMISubTableForm):
    grok.context(Application)
    grok.view(ManageSiteForm)

    label = _('Manage sites')
    description = _(
        'Modify the space (in MB) allocated to a complete Silva '
        'site. This setting is not modifiable from within the site.')
    ignoreContent = False
    batchSize = 25
    batchItemFactory = QuotaRootFactory
    tableFields = silvaforms.Fields(IQuotaRootManager)
    tableFields['identifier'].mode = silvaforms.DISPLAY
    tableFields['used'].mode = silvaforms.DISPLAY
    tableActions = silvaforms.TableActions(SetQuotaAction())

    def getItems(self):
        return self.context.objectValues('Silva Root')

    def getItemIdentifier(self, item, position):
        return item.identifier
Exemple #17
0
class CheckedOutViewlet(grok.Viewlet):
    """A viewlet which shows a statusmessage like message:
    `This item is being checked out by User XY` when a document
    is checked out."""

    grok.viewletmanager(IAboveContent)
    grok.context(IDocumentSchema)
    grok.view(IViewView)
    grok.require('zope2.View')

    def update(self):
        manager = queryMultiAdapter((self.context, self.request),
                                    ICheckinCheckoutManager)
        if not manager:
            self.available = False
        elif not manager.get_checked_out_by():
            self.available = False
        else:
            self.available = True

            self.checkout_by_link = Actor.user(
                manager.get_checked_out_by()).get_link()
Exemple #18
0
class FileServiceConvertConfiguration(silvaforms.SMISubForm):
    grok.context(FilesService)
    grok.view(FileServiceConfiguration)
    grok.order(20)

    label = _(u"Convert stored files")
    description = _(u"Convert all currently stored file to "
                    u"the current set storage.")
    actions = silvaforms.Actions(silvaforms.CancelConfigurationAction())

    def available(self):
        if self.context.storage is None:
            return False
        return self.context.storage is not ZODBFile

    @silvaforms.action(_(u'Convert all files'))
    def convert(self):
        parent = self.context.get_publication()
        self.context.convert_storage(parent)
        self.send_message(_(u'Storage for Silva Files and Images converted. '
                            u'Check the log for more details.'),
                          type='feedback')
Exemple #19
0
class Homepage2Slider(grok.Viewlet):
    grok.context(IHomepage2)
    grok.view(Index)
    grok.viewletmanager(manager.IPortalTop)
    grok.template('homepage2slider')
    grok.layer(IProductSpecific)

    def available(self):
        return True

    def slider_items(self):
        if not self.context.slider_items:
            return []
        return [i.to_object for i in self.context.slider_items]

    def get_image_tag(self, obj):
        scales = obj.restrictedTraverse('@@images')
        image = scales.scale('carousel_image', width=782, height=330)
        placeholder = '<img src="http://placehold.it/782x330"/>'
        if not image:
            return placeholder
        return image.tag()
Exemple #20
0
class FileTextEditForm(silvaforms.SMISubForm):
    """Edit content as a text file.
    """
    grok.context(IFile)
    grok.view(AssetEditTab)
    grok.order(20)

    label = _(u'Edit text content')
    ignoreContent = False
    dataManager = silvaforms.SilvaDataManager

    fields = silvaforms.Fields(IFileTextFields)
    actions = silvaforms.Actions(silvaforms.CancelEditAction(),
                                 silvaforms.EditAction())

    def available(self):
        if self.context.is_text_editable():
            try:
                unicode(self.context.get_text())
                return True
            except (UnicodeDecodeError, TypeError):
                return False
        return False
Exemple #21
0
class QuestionInfo(silvaviews.Viewlet):
    grok.context(IPollQuestion)
    grok.view(Publish)
    grok.viewletmanager(silvaforms.SMIFormPortlets)
    grok.order(40)

    def available(self):
        return self.version is not None

    def update(self):
        self.version = self.context.get_viewable()
        if self.version is not None:
            dates = self.request.locale.dates
            format = dates.getFormatter('dateTime', 'short').format
            convert = lambda d: d is not None and format(d) or None
            self.question_start_datetime = convert(
                self.version.question_start_datetime())
            self.question_end_datetime = convert(
                self.version.question_end_datetime())
            self.result_start_datetime = convert(
                self.version.result_start_datetime())
            self.result_end_datetime = convert(
                self.version.result_end_datetime())
Exemple #22
0
class ImageFormatAndScalingForm(silvaforms.SMISubForm):
    """ form to resize / change format of image.
    """
    grok.context(IImage)
    grok.view(AssetEditTab)
    grok.order(20)

    ignoreContent = False
    dataManager = silvaforms.SilvaDataManager

    label = _('Format and scaling')
    actions = silvaforms.Actions(silvaforms.CancelEditAction())
    fields = silvaforms.Fields(IFormatAndScalingFields)
    fields['web_format'].mode = 'radio'
    fields['web_scale'].defaultValue = '100%'

    @silvaforms.action(
        title=_('Change'),
        description=_('Scale and/or crop the image with the new settings'),
        implements=silvaforms.IDefaultAction)
    def set_properties(self):
        data, errors = self.extractData()
        if errors:
            return silvaforms.FAILURE
        try:
            self.context.set_web_presentation_properties(
                data.getWithDefault('web_format'),
                data.getWithDefault('web_scale'),
                data.getWithDefault('web_crop'))
        except ValueError as e:
            self.send_message(e.args[0], type='error')
            return silvaforms.FAILURE

        notify(ObjectModifiedEvent(self.context))
        self.send_message(_('Scaling and/or format changed.'), type='feedback')
        return silvaforms.SUCCESS
Exemple #23
0
class Classic(grok.Viewlet):

    grok.order(20)
    grok.view(Painting)
    grok.viewletmanager(Art)
Exemple #24
0
class Museum(grok.ViewletManager):

    grok.view(Painting)
Exemple #25
0
class CreateAndDeleteViewlet(grok.Viewlet):
    grok.context(IContainer)
    grok.viewletmanager(IAboveContentTitle)
    grok.view(IViewView)
Exemple #26
0
class Art(grok.ViewletManager):

    grok.view(Painting)

    def render(self):
        return '<p>Art is beautiful</p>'
Exemple #27
0
class Art(grok.ViewletManager):

    grok.view(Painting)
Exemple #28
0
class TOCRendering(silvaviews.ContentProvider):
    """Render a toc.
    """
    grok.name('toc')
    grok.context(Interface)
    grok.view(Interface)
    grok.implements(ITOCRenderingOptions)

    def __init__(self, *args):
        super(TOCRendering, self).__init__(*args)
        self.toc_container = None
        self.toc_depth = -1
        self.toc_sort_order = 'silva'
        self.toc_content_types = None
        self.toc_show_description = False
        self.toc_show_icon = False

    def update(self):
        if self.toc_container is None:
            self.toc_container = self.context.get_container()
        assert IContainer.providedBy(self.toc_container)
        if self.toc_content_types is None:
            addables = IAddableContents(self.toc_container)
            self.toc_content_types = addables.get_container_addables(
                IPublishable)

    def list_container_items(self, container, is_displayable):
        """List the given container items that are a candidates to be
        listed in the TOC.
        """
        reverse_sort = self.toc_sort_order.startswith('r')
        items = filter(is_displayable,
                       container.objectValues(self.toc_content_types))
        if self.toc_sort_order in ('alpha', 'reversealpha'):
            items.sort(key=lambda o: o.get_title_or_id(), reverse=reverse_sort)
        elif self.toc_sort_order in ('silva', 'reversesilva'):
            # determine silva sorting.
            # we should only have publishable content
            items.sort(key=IOrderManager(container).get_position,
                       reverse=reverse_sort)
        else:
            # chronologically by modification date
            items.sort(key=lambda o: o.get_modification_datetime(),
                       reverse=reverse_sort)
        return items

    def is_preview_displayable(self, item):
        """Return true if the item is displayable in preview mode.
        """
        return IPublishable.providedBy(item) and not item.is_default()

    def is_public_displayable(self, item):
        """Return true if the item is displayable in public mode.
        """
        return (IPublishable.providedBy(item) and (not item.is_default())
                and item.is_published())

    def list_toc_items(self, container, level, is_displayable):
        """Yield for every element in this toc.  The 'depth' argument
        limits the number of levels, defaults to unlimited.
        """
        filter_content = getUtility(IContentFilteringService).filter(
            self.request)
        can_recurse = self.toc_depth == -1 or level < self.toc_depth

        for item in filter_content(
                self.list_container_items(container, is_displayable)):

            yield (level, item)

            if IContainer.providedBy(item) and can_recurse:
                for data in self.list_toc_items(item, level + 1,
                                                is_displayable):
                    yield data

    def render(self):
        public = not IPreviewLayer.providedBy(self.request)

        # XXX This code should be made readable.
        is_displayable = public and self.is_public_displayable or self.is_preview_displayable
        html = []
        a_templ = '<a href="%s">%s %s</a>'
        img_tag = ''

        depth = -1
        prev_depth = [-1]
        gmv = self.context.service_metadata.getMetadataValue
        item = None
        get_icon_tag = IIconResolver(self.request).get_tag
        for (depth, item) in self.list_toc_items(self.toc_container, 0,
                                                 is_displayable):
            pd = prev_depth[-1]
            if pd < depth:  #down one level
                html.append('<ul class="toc">')
                prev_depth.append(depth)
            elif pd > depth:  #up one level
                for i in range(pd - depth):
                    prev_depth.pop()
                    html.append('</ul></li>')
            elif pd == depth:  #same level
                html.append('</li>')
            html.append('<li>')
            if self.toc_show_icon:
                img_tag = get_icon_tag(item)
            title = (public and item.get_title()
                     or item.get_title_editable()) or item.id
            html.append(
                a_templ %
                (absoluteURL(item, self.request), img_tag, escape(title)))
            if self.toc_show_description:
                v = public and item.get_viewable() or item.get_previewable()
                desc = v and gmv(
                    v, 'silva-extra', 'content_description', acquire=0)
                if desc:
                    html.append('<p>%s</p>' % desc)
        else:
            #do this when the loop is finished, to
            #ensure that the lists are ended properly
            #the last item in the list could part of a nested list (with depth 1,2,3+, etc)
            #so need to loop down the depth and close all open lists
            while depth >= 0:
                html.append('</li></ul>')
                depth -= 1
        return u'\n'.join(html)
Exemple #29
0
class Nothing(grok.ViewletManager):

    grok.view(Painting)
Exemple #30
0
class Modern(grok.Viewlet):

    grok.order(10)
    grok.view(Painting)
    grok.viewletmanager(Art)