def __call__(self): # This is only for a 'recently modified'-user-portlet in dashboard # column 1 now, not at all abstracted dashboard_name = 'plone.dashboard1' column = getUtility(IPortletManager, name=dashboard_name) membership_tool = getToolByName(self.context, 'portal_membership') userid = membership_tool.getAuthenticatedMember().getId() category = column.get(USER_CATEGORY, None) manager = category.get(userid, None) if manager is None: manager = UserPortletAssignmentMapping( manager=dashboard_name, category=USER_CATEGORY, name=userid) category[userid] = manager id_base = 'recentlyModified' id_number = 0 while id_base + str(id_number) in manager.keys(): id_number += 1 portal_state = getMultiAdapter( (self.context, self.context.REQUEST), name=u'plone_portal_state') context_path = '/'.join(self.context.getPhysicalPath()) portal = portal_state.portal() portal_path = '/'.join(portal.getPhysicalPath()) relative_context_path = portal_path if context_path != portal_path: relative_context_path = context_path.replace(portal_path, '') manager[id_base + str(id_number)] = Assignment( count=5, section=relative_context_path) request = getattr(self.context, 'REQUEST', None) if request is not None: title = self.context.Title() or self.context.id if isinstance(title, unicode): # The title is usually encoded in utf8, but in some dexterity # versions it may be unicode in certain circumstances. title = title.encode('utf-8') message = _( u"${title} added to dashboard.", mapping={'title': title.decode('utf8')}) IStatusMessage(request).addStatusMessage(message, type="info") return self.context.REQUEST.RESPONSE.redirect( self.context.absolute_url())
def title(self): return _(u"title_recentlyModifed_portlet", default=u"recently modified Portlet")