Example #1
0
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'
    )
Example #2
0
    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
Example #3
0
    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
Example #4
0
def maxSize(value):
    if value is not None:
        if len(value)/1024 > 128:
            raise schema.ValidationError(_(u"message text must be smaller than 128KB"))
Example #5
0
def maxSize(value):
    if value is not None:
        if len(value) / 1024 > 128:
            raise schema.ValidationError(
                _(u"message text must be smaller than 128KB"))
Example #6
0
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