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)
class Assignment(base.Assignment): implements(IEventHighlight) def __init__(self, portletTitle=""): self.portletTitle = portletTitle title = _("Event Highlight")
class Assignment(formlibbase.Assignment): implements(IContentHighlight) def __init__(self, portletTitle="", item=None): self.portletTitle = portletTitle self.item = item title = _("Content Highlight")
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.'))
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())})
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()) })
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))
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)
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
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)
class IEventHighlight(IPortletDataProvider): """A portlet for displaying recent news items on the front page. """ portletTitle = schema.TextLine(title=_(u"Portlet title"), description=u"")
class Assignment(base.Assignment): implements(IInvitePortlet) title = _("Invite others")
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")
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):
class Assignment(base.Assignment): implements(IProjectRoomInfo) title = _("Project Info")
class Assignment(base.Assignment): implements(IMyProjectRooms) title = _("My project rooms")
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()