def handleAdd(self, action): data, errors = self.extractData() if errors: return self.hlite.addGroup(data) self.context.plone_utils.addPortalMessage(_('Group successfully added.')) self.request.RESPONSE.redirect(self.context.absolute_url())
def handleApply(self, action): data, errors = self.extractData() if errors: self.status = self.formErrorsMessage return if data['selected_group']: self.group_obj = self.hlite[data['selected_group']] content = self.getContent() del data['selected_group'] changes = form.applyChanges(self, content, data) if self.group_obj.id not in self.highlights: self.highlights[self.group_obj.id] = content interface.alsoProvides(self.context, IHighlighted) if changes: content.author = getActiveUser() self.context.reindexObject(idxs=['object_provides', 'hlite_groups']) self.status = self.successMessage self.refreshActions = True self.updateWidgets() else: self.status = self.noChangesMessage else: self.status = _(u'Please select a group.')
def handleDelete(self, action): data, errors = self.extractData() if data['selected_group']: self.group_obj = self.hlite[data['selected_group']] self.group_obj.removeItem(obj=self.context) self.updateWidgets() self.status = self.successMessage self.refreshActions = True else: self.status = _(u'Please select a group.')
class GroupMembersEditForm(crud.EditForm): label = _(u"Highlighted items") class GroupMembersForm(crud.CrudForm): """View list of items assigned to a group and allows for deletion""" addform_factory = crud.NullForm editform_factory = GroupMembersEditForm view_schema = IGroupMember def get_items(self): group = self.context.id return [(hl.UID, GroupMember(hl, group)) for hl in self.context.getContentItems()] def remove(self, (id, item)): self.context.removeItem(id) def link(self, item, field): if field == 'title': return item.url + '/@@highlight?group=%s' % self.context.id GroupMembers = layout.wrap_form( GroupMembersForm, index=ViewPageTemplateFile('templates/form_layout.pt'), label=_(u"Group members"), back_link=back_to_highlightsmanager)
def handleSelect(self, action): data, errors = self.extractData() self.group = data['group'] self.status = _(u'Group selected') self.updateWidgets()
def handle_delete(self, action): self.status = _(u"Please select items to remove.") selected = self.selected_items() if selected: self.status = _(u"Successfully removed categories.") self.highlights_manager.deleteGroups([id for id, gr_o in selected])
def back_to_highlightsmanager(self): root = getSite() return dict(label=_(u"Up to Highlights Manager Configuration"), url=root.absolute_url() + '/highlights_manager')
def back_to_controlpanel(self): root = getSite() return dict(label=_(u"Up to Site Setup"), url=root.absolute_url() + '/plone_control_panel')
if selected: self.status = _(u"Successfully removed categories.") self.highlights_manager.deleteGroups([id for id, gr_o in selected]) class GroupOverviewForm(crud.CrudForm): """View list of groups and allow for deletion and addition.""" addform_factory = crud.NullForm editform_factory = EditForm view_schema = IGroupOverview def __init__(self, *args, **kwargs): super(GroupOverviewForm, self).__init__(*args, **kwargs) self.highlights_manager = getToolByName(self.context, 'highlights_manager') def get_items(self): return [(group_id, GroupOverview(group)) for group_id, group in self.highlights_manager.getAllGroups()] def remove(self, (id, item)): self.highlights_manager.deleteGroups([id]) def link(self, item, field): if field == 'title': return '%s/edit' % item.group.absolute_url() GroupsOverview = layout.wrap_form( GroupOverviewForm, index=ViewPageTemplateFile('templates/controlpanel.pt'), label = _(u"Highlights Manager: Groups Overview"), back_link=back_to_controlpanel)
from zope import interface, component from zope.annotation.interfaces import IAnnotations from plone.indexer.decorator import indexer from collective.highlights.manager.interfaces import IHighlightable from collective.highlights.manager.interfaces import IHighlightDataStorage from collective.highlights.manager.interfaces import IHighlighted from collective.highlights.manager.storage import HighlightData from collective.highlights.manager.storage import HighlightDataStorage from collective.highlights.manager.config import HLITE_ANNO_KEY from collective.highlights.manager import MessageFactory as _ HighlightDataFactory = component.factory.Factory(HighlightData, _('Default HighlightData Factory')) @component.adapter(IHighlightable) @interface.implementer(IHighlightDataStorage) def getHighlightDataStorage(context): annotations = IAnnotations(context) mapping = annotations.get(HLITE_ANNO_KEY, None) if mapping is None: mapping = annotations[HLITE_ANNO_KEY] = HighlightDataStorage() return mapping @indexer(IHighlighted) def hlite_groups(object): return IHighlightDataStorage(object).keys()