Example #1
0
class IContentHighlight(IPortletDataProvider):
    """A portlet for displaying a selected content item on the front page.
    """

    portletTitle = schema.TextLine(title=_(u"Portlet title"))

    item = schema.Choice(
        title=_(u"Item"),
        description=
        _(u"You can select the item to be highlighted by searching on its title."
          ),
        source=DocumentSourceBinder(),
        required=True)
Example #2
0
class Assignment(base.Assignment):

    implements(IEventHighlight)

    def __init__(self, portletTitle=""):
        self.portletTitle = portletTitle

    title = _("Event Highlight")
Example #3
0
class Assignment(formlibbase.Assignment):

    implements(IContentHighlight)

    def __init__(self, portletTitle="", item=None):
        self.portletTitle = portletTitle
        self.item = item

    title = _("Content Highlight")
Example #4
0
def loginUser(context, userid, password):
    """Called from activate_action."""
    membership = getToolByName(context, 'portal_membership')
    utils = getToolByName(context, 'plone_utils')
    member = membership.getMemberById(userid)
    if member is not None:
        newSecurityManager(None, member.getUser())
        context.REQUEST.set('__ac_password', password)
        context.logged_in()
        utils.addPortalMessage(_(u'Welcome! You are now logged in.'))
Example #5
0
def setup_quickupload(site):
    portal = getToolByName(site, 'portal_url').getPortalObject()
    # Assign quickupload portlet to root.
    portlet = queryUtility(IPortletType,
         name='collective.quickupload.QuickUploadPortlet')
    mapping = portal.restrictedTraverse('++contextportlets++plone.leftcolumn')
    addview = mapping.restrictedTraverse('+/' + portlet.addview)
    quick_title = _(u'Quick upload')
    addview.createAndAdd(data={'header':
        translate(quick_title, target_language=site.Language())})

    # Assign quickupload to personal folders.
    from intranett.policy.config import PERSONAL_FOLDER_ID
    personal = portal[PERSONAL_FOLDER_ID]
    mapping = personal.restrictedTraverse('++contextportlets++plone.leftcolumn')
    addview = mapping.restrictedTraverse('+/' + portlet.addview)
    quick_title = _(u'Quick upload')
    addview.createAndAdd(data={'header':
        translate(quick_title, target_language=site.Language())})
Example #6
0
def loginUser(context, userid, password):
    """Called from activate_action."""
    membership = getToolByName(context, 'portal_membership')
    utils = getToolByName(context, 'plone_utils')
    member = membership.getMemberById(userid)
    if member is not None:
        newSecurityManager(None, member.getUser())
        context.REQUEST.set('__ac_password', password)
        context.logged_in()
        utils.addPortalMessage(_(u'Welcome! You are now logged in.'))
Example #7
0
def setup_quickupload(site):
    portal = getToolByName(site, 'portal_url').getPortalObject()
    # Assign quickupload portlet to root.
    portlet = queryUtility(IPortletType,
                           name='collective.quickupload.QuickUploadPortlet')
    mapping = portal.restrictedTraverse('++contextportlets++plone.leftcolumn')
    addview = mapping.restrictedTraverse('+/' + portlet.addview)
    quick_title = _(u'Quick upload')
    addview.createAndAdd(
        data={
            'header': translate(quick_title, target_language=site.Language())
        })

    # Assign quickupload to personal folders.
    from intranett.policy.config import PERSONAL_FOLDER_ID
    personal = portal[PERSONAL_FOLDER_ID]
    mapping = personal.restrictedTraverse(
        '++contextportlets++plone.leftcolumn')
    addview = mapping.restrictedTraverse('+/' + portlet.addview)
    quick_title = _(u'Quick upload')
    addview.createAndAdd(
        data={
            'header': translate(quick_title, target_language=site.Language())
        })
Example #8
0
class Renderer(base.Renderer):

    render = ViewPageTemplateFile('myprojectrooms.pt')
    portletTitle = _("My project rooms")
    available = True

    def update(self):
        catalog = getToolByName(self.context, 'portal_catalog')
        user_id = getSecurityManager().getUser().getId()
        query = dict(portal_type="ProjectRoom",
                     participants=(user_id, ),
                     sort_on='sortable_title')
        self.projectrooms = ({
            'title': x.Title,
            'url': x.getURL()
        } for x in catalog(query))
Example #9
0
class Renderer(base.Renderer):

    render = ViewPageTemplateFile('invite.pt')
    portletTitle = _("Invite others")

    @property
    def available(self):
        return _checkPermission(ManageUsers, self.context)

    @memoize
    def invites(self):
        mt = getToolByName(self.context, 'portal_membership')
        it = getToolByName(self.context, 'portal_invitations')
        invites = it.getInvitesUser(sent=0, used=0)
        if not invites:
            # Auto-refresh number of allocated invites
            member = mt.getAuthenticatedMember()
            if self.available:
                it.generateInvite(member.getId(), count=10)
                invites = it.getInvitesUser(sent=0, used=0)
        return bool(invites)
Example #10
0
class Renderer(base.Renderer):

    render = ViewPageTemplateFile('projectroominfo.pt')
    portletTitle = _("Project Info")

    @property
    def available(self):
        return (getattr(self.context, 'getProjectRoom', None) is not None
                and 'portal_factory' not in self.request.URL)

    def update(self):
        if not self.available:
            return
        context = self.context
        mtool = getToolByName(context, 'portal_membership')
        gtool = getToolByName(context, 'portal_groups')
        room = self.context.getProjectRoom()
        self.state = room.getProjectRoomState()
        self.title = room.Title()
        self.project_url = room.absolute_url()
        result = []
        for name in room.participants:
            title = name
            url = None
            if name == 'AuthenticatedUsers':
                title = translate(u'Authenticated Users (Virtual Group)',
                                  domain='plone',
                                  context=self.request)
                result.append(dict(name=name, title=title, url=None))
                continue
            member = mtool.getMemberById(name)
            if member is not None:
                title = member.getProperty("fullname") or name
                url = get_user_profile_url(context, name)
            else:
                group = gtool.getGroupById(name)
                if group is not None:
                    title = group.getProperty('title') or name
            result.append(dict(name=name, title=title, url=url))
        self.participants = result
Example #11
0
def setup_personal_folder(site):
    from plone.portlets.interfaces import ILocalPortletAssignmentManager
    from plone.portlets.interfaces import IPortletManager
    from Products.CMFPlone.utils import _createObjectByType
    from intranett.policy.config import PERSONAL_FOLDER_ID
    personal_folder_title = _(u'Personal folders')
    title = translate(personal_folder_title, target_language=site.Language())
    portal = getToolByName(site, 'portal_url').getPortalObject()
    _createObjectByType('Folder', portal, id=PERSONAL_FOLDER_ID, title=title)
    folder = portal[PERSONAL_FOLDER_ID]
    folder.setExcludeFromNav(True)
    folder.processForm()  # Fire events
    workflow = getToolByName(portal, 'portal_workflow')
    workflow.doActionFor(folder, 'publish')
    # Block all portlets
    for manager_name in ('plone.leftcolumn', 'plone.rightcolumn'):
        manager = queryUtility(IPortletManager, name=manager_name)
        if manager is not None:
            assignable = queryMultiAdapter((folder, manager),
                                           ILocalPortletAssignmentManager)
            assignable.setBlacklistStatus('context', True)
            assignable.setBlacklistStatus('group', True)
            assignable.setBlacklistStatus('content_type', True)
Example #12
0
def setup_personal_folder(site):
    from plone.portlets.interfaces import ILocalPortletAssignmentManager
    from plone.portlets.interfaces import IPortletManager
    from Products.CMFPlone.utils import _createObjectByType
    from intranett.policy.config import PERSONAL_FOLDER_ID
    personal_folder_title = _(u'Personal folders')
    title = translate(personal_folder_title, target_language=site.Language())
    portal = getToolByName(site, 'portal_url').getPortalObject()
    _createObjectByType('Folder', portal, id=PERSONAL_FOLDER_ID,
        title=title)
    folder = portal[PERSONAL_FOLDER_ID]
    folder.setExcludeFromNav(True)
    folder.processForm() # Fire events
    workflow = getToolByName(portal, 'portal_workflow')
    workflow.doActionFor(folder, 'publish')
    # Block all portlets
    for manager_name in ('plone.leftcolumn', 'plone.rightcolumn'):
        manager = queryUtility(IPortletManager, name=manager_name)
        if manager is not None:
            assignable = queryMultiAdapter((folder, manager),
                ILocalPortletAssignmentManager)
            assignable.setBlacklistStatus('context', True)
            assignable.setBlacklistStatus('group', True)
            assignable.setBlacklistStatus('content_type', True)
Example #13
0
class IEventHighlight(IPortletDataProvider):
    """A portlet for displaying recent news items on the front page.
    """

    portletTitle = schema.TextLine(title=_(u"Portlet title"), description=u"")
Example #14
0
class Assignment(base.Assignment):

    implements(IInvitePortlet)

    title = _("Invite others")
Example #15
0
from zope.lifecycleevent.interfaces import IObjectAddedEvent
from zope.lifecycleevent.interfaces import IObjectRemovedEvent
from zope.schema.interfaces import IVocabularyFactory

from intranett.policy import IntranettMessageFactory as _
from intranett.policy.config import PROJECTNAME
from intranett.policy.interfaces import IProjectRoom

ProjectRoomSchema = ATFolder.schema.copy() + atapi.Schema((atapi.LinesField(
    'participants',
    required=False,
    multiValued=True,
    vocabulary='getParticipantsVocabulary',
    storage=atapi.AnnotationStorage(),
    widget=atapi.MultiSelectionWidget(
        label=_(u"Participants"),
        description=_(u"Users who have access to the project room."),
        format='checkbox',
    ),
), ))


class ProjectRoom(ATFolder):
    """A project room for groups of participants"""

    implements(IProjectRoom)
    schema = ProjectRoomSchema
    meta_type = "ProjectRoom"
    security = ClassSecurityInfo()

    participants = atapi.ATFieldProperty("participants")
Example #16
0
from plone.app.portlets.portlets import base
from plone.memoize.instance import memoize
from plone.portlets.interfaces import IPortletDataProvider
from Products.CMFCore.utils import getToolByName
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
from zope import schema
from zope.formlib import form
from zope.interface import implements
from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm

from intranett.policy import IntranettMessageFactory as _

news_vocab = [SimpleTerm(token, token, title)
              for token, title in
              [(u'last', _(u'The most recently published news item')),
               (u'before_last',
                _(u'The second-most recently published news item'))]]


class INewsHighlight(IPortletDataProvider):
    """A portlet for displaying recent news items on the front page.
    """

    portletTitle = schema.TextLine(title=_(u"Portlet title"), description=u"")

    source = schema.Choice(title=_(u"Which item to display"),
        vocabulary=SimpleVocabulary(news_vocab), required=True, default=None)


class Assignment(base.Assignment):
Example #17
0
class Assignment(base.Assignment):

    implements(IProjectRoomInfo)
    title = _("Project Info")
Example #18
0
class Assignment(base.Assignment):

    implements(IMyProjectRooms)

    title = _("My project rooms")
Example #19
0
from zope.schema.interfaces import IVocabularyFactory

from intranett.policy import IntranettMessageFactory as _
from intranett.policy.config import PROJECTNAME
from intranett.policy.interfaces import IProjectRoom

ProjectRoomSchema = ATFolder.schema.copy() + atapi.Schema(
    (
        atapi.LinesField(
            "participants",
            required=False,
            multiValued=True,
            vocabulary="getParticipantsVocabulary",
            storage=atapi.AnnotationStorage(),
            widget=atapi.MultiSelectionWidget(
                label=_(u"Participants"),
                description=_(u"Users who have access to the project room."),
                format="checkbox",
            ),
        ),
    )
)


class ProjectRoom(ATFolder):
    """A project room for groups of participants"""

    implements(IProjectRoom)
    schema = ProjectRoomSchema
    meta_type = "ProjectRoom"
    security = ClassSecurityInfo()