class IMessage(form.Schema): """ emc project member area message content type """ #标准名称 dexteritytextindexer.searchable('title') title = schema.TextLine(title=_(u"site message title"), required=True) form.widget(text="plone.app.z3cform.wysiwyg.WysiwygFieldWidget") text = schema.Text( title=_(u"message text"), required=True) # form.widget(sendto=AutocompleteMultiFieldWidget) sendto = schema.Tuple( title=_(u"send to"), value_type=schema.TextLine(), required=True, missing_value=(), # important! ) directives.widget( 'sendto', AjaxSelectFieldWidget, vocabulary='plone.principalsource.Users' )
def submit(self, action): from plone import api current = api.user.get_current() data, errors = self.extractData() if errors: self.status = _(u"Please correct errors") return # a simple rule for composing object id inc = str(int(getattr(self.context, 'registrant_increment', '0')) + 1) data['id'] = '%s_%s' % (current.id, inc) self.context.registrant_increment = inc obj = _createObjectByType("emc.memberArea.message", self.context, data['id']) del data['id'] title = data['title'] for k, v in data.items(): setattr(obj, k, v) obj.reindexObject() # notify object created event, #the subscriber of the event will be put message into incoming box of the receivers. notify(MessageCreatedEvent(obj)) # urltool = getToolByName(self.context, 'portal_url') # portal = urltool.getPortalObject() # self.request.response.redirect(portal.absolute_url() + "/login_form") self.request.response.redirect(self.context.absolute_url()) IStatusMessage(self.request).addStatusMessage(_( u'create_message_succesful', default=u"Your message:${title} has been sent.", mapping={u'title': title}), type='info') return
def submit(self, action): from plone import api current = api.user.get_current() data, errors = self.extractData() if errors: self.status = _(u"Please correct errors") return # a simple rule for composing object id inc = str(int(getattr(self.context, 'registrant_increment', '0')) + 1) data['id'] = '%s_%s' % (current.id,inc) self.context.registrant_increment = inc obj = _createObjectByType("emc.memberArea.message",self.context, data['id']) del data['id'] title = data['title'] for k, v in data.items(): setattr(obj, k, v) obj.reindexObject() # notify object created event, #the subscriber of the event will be put message into incoming box of the receivers. notify(MessageCreatedEvent(obj)) # urltool = getToolByName(self.context, 'portal_url') # portal = urltool.getPortalObject() # self.request.response.redirect(portal.absolute_url() + "/login_form") self.request.response.redirect(self.context.absolute_url()) IStatusMessage(self.request).addStatusMessage( _(u'create_message_succesful', default=u"Your message:${title} has been sent.", mapping={u'title': title}), type='info') return
def maxSize(value): if value is not None: if len(value)/1024 > 128: raise schema.ValidationError(_(u"message text must be smaller than 128KB"))
def maxSize(value): if value is not None: if len(value) / 1024 > 128: raise schema.ValidationError( _(u"message text must be smaller than 128KB"))
class RegistrationForm(form.SchemaForm): grok.name('write_message') grok.context(IOutputbox) grok.require("emc.memberArea.send_message") grok.layer(IThemeSpecific) schema = IMessage ignoreContext = True label = _(u"send message to member") def update(self): self.request.set('disable_border', True) return super(RegistrationForm, self).update() def updateWidgets(self): super(RegistrationForm, self).updateWidgets() # self.widgets['privacy'].label = u'' # self.widgets['privacy'].mode = 'display' # self.widgets['privacy'].autoresize = True self.widgets['title'].addClass("form-control") self.widgets['text'].addClass("form-control") self.widgets['sendto'].addClass("form-control") def updateActions(self): super(RegistrationForm, self).updateActions() self.actions['submit'].addClass("btn-primary btn-block btn-lg") self.actions['cancel'].addClass("btn-default btn-block btn-lg") @button.buttonAndHandler(_p(u"submit")) def submit(self, action): from plone import api current = api.user.get_current() data, errors = self.extractData() if errors: self.status = _(u"Please correct errors") return # a simple rule for composing object id inc = str(int(getattr(self.context, 'registrant_increment', '0')) + 1) data['id'] = '%s_%s' % (current.id, inc) self.context.registrant_increment = inc obj = _createObjectByType("emc.memberArea.message", self.context, data['id']) del data['id'] title = data['title'] for k, v in data.items(): setattr(obj, k, v) obj.reindexObject() # notify object created event, #the subscriber of the event will be put message into incoming box of the receivers. notify(MessageCreatedEvent(obj)) # urltool = getToolByName(self.context, 'portal_url') # portal = urltool.getPortalObject() # self.request.response.redirect(portal.absolute_url() + "/login_form") self.request.response.redirect(self.context.absolute_url()) IStatusMessage(self.request).addStatusMessage(_( u'create_message_succesful', default=u"Your message:${title} has been sent.", mapping={u'title': title}), type='info') return @button.buttonAndHandler(_p(u"Cancel")) def cancel(self, action): self.request.response.redirect(self.context.absolute_url()) return