コード例 #1
0
ファイル: contenthighlight.py プロジェクト: tlyng/intranett
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)
コード例 #2
0
class Assignment(base.Assignment):

    implements(IEventHighlight)

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

    title = _("Event Highlight")
コード例 #3
0
ファイル: contenthighlight.py プロジェクト: tlyng/intranett
class Assignment(formlibbase.Assignment):

    implements(IContentHighlight)

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

    title = _("Content Highlight")
コード例 #4
0
ファイル: activation.py プロジェクト: Blaastolen/intranett
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.'))
コード例 #5
0
ファイル: setuphandlers.py プロジェクト: buchi/intranett
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())})
コード例 #6
0
ファイル: activation.py プロジェクト: tlyng/intranett
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.'))
コード例 #7
0
ファイル: setuphandlers.py プロジェクト: tlyng/intranett
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())
        })
コード例 #8
0
ファイル: myprojectrooms.py プロジェクト: tlyng/intranett
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))
コード例 #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)
コード例 #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
コード例 #11
0
ファイル: setuphandlers.py プロジェクト: tlyng/intranett
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)
コード例 #12
0
ファイル: setuphandlers.py プロジェクト: buchi/intranett
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)
コード例 #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"")
コード例 #14
0
class Assignment(base.Assignment):

    implements(IInvitePortlet)

    title = _("Invite others")
コード例 #15
0
ファイル: projectroom.py プロジェクト: tlyng/intranett
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")
コード例 #16
0
ファイル: newshighlight.py プロジェクト: Blaastolen/intranett
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):
コード例 #17
0
class Assignment(base.Assignment):

    implements(IProjectRoomInfo)
    title = _("Project Info")
コード例 #18
0
ファイル: myprojectrooms.py プロジェクト: tlyng/intranett
class Assignment(base.Assignment):

    implements(IMyProjectRooms)

    title = _("My project rooms")
コード例 #19
0
ファイル: projectroom.py プロジェクト: Blaastolen/intranett
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()