11 import operator |
11 import operator |
12 |
12 |
13 from cubicweb.interfaces import IEmailable |
13 from cubicweb.interfaces import IEmailable |
14 from cubicweb.selectors import implements, match_user_groups |
14 from cubicweb.selectors import implements, match_user_groups |
15 from cubicweb.view import EntityView |
15 from cubicweb.view import EntityView |
16 from cubicweb.web import stdmsgs |
16 from cubicweb.web import stdmsgs, action, form, formfields as ff |
17 from cubicweb.web.action import Action |
|
18 from cubicweb.web.form import FormViewMixIn |
|
19 from cubicweb.web.formfields import StringField |
|
20 from cubicweb.web.formwidgets import CheckBox, TextInput, AjaxWidget, ImgButton |
17 from cubicweb.web.formwidgets import CheckBox, TextInput, AjaxWidget, ImgButton |
21 from cubicweb.web.views import forms, formrenderers |
18 from cubicweb.web.views import forms, formrenderers |
22 |
19 |
23 |
20 |
24 class SendEmailAction(Action): |
21 class SendEmailAction(action.Action): |
25 __regid__ = 'sendemail' |
22 __regid__ = 'sendemail' |
26 # XXX should check email is set as well |
23 # XXX should check email is set as well |
27 __select__ = implements(IEmailable) & match_user_groups('managers', 'users') |
24 __select__ = (action.Action.__select__ & implements(IEmailable) |
|
25 & match_user_groups('managers', 'users')) |
28 |
26 |
29 title = _('send email') |
27 title = _('send email') |
30 category = 'mainactions' |
28 category = 'mainactions' |
31 |
29 |
32 def url(self): |
30 def url(self): |
38 |
36 |
39 |
37 |
40 class MassMailingForm(forms.FieldsForm): |
38 class MassMailingForm(forms.FieldsForm): |
41 __regid__ = 'massmailing' |
39 __regid__ = 'massmailing' |
42 |
40 |
43 sender = StringField(widget=TextInput({'disabled': 'disabled'}), label=_('From:')) |
41 sender = ff.StringField(widget=TextInput({'disabled': 'disabled'}), |
44 recipient = StringField(widget=CheckBox(), label=_('Recipients:')) |
42 label=_('From:')) |
45 subject = StringField(label=_('Subject:'), max_length=256) |
43 recipient = ff.StringField(widget=CheckBox(), label=_('Recipients:')) |
46 mailbody = StringField(widget=AjaxWidget(wdgtype='TemplateTextField', |
44 subject = ff.StringField(label=_('Subject:'), max_length=256) |
47 inputid='mailbody')) |
45 mailbody = ff.StringField(widget=AjaxWidget(wdgtype='TemplateTextField', |
|
46 inputid='mailbody')) |
48 |
47 |
49 form_buttons = [ImgButton('sendbutton', "javascript: $('#sendmail').submit()", |
48 form_buttons = [ImgButton('sendbutton', "javascript: $('#sendmail').submit()", |
50 _('send email'), 'SEND_EMAIL_ICON'), |
49 _('send email'), 'SEND_EMAIL_ICON'), |
51 ImgButton('cancelbutton', "javascript: history.back()", |
50 ImgButton('cancelbutton', "javascript: history.back()", |
52 stdmsgs.BUTTON_CANCEL, 'CANCEL_EMAIL_ICON')] |
51 stdmsgs.BUTTON_CANCEL, 'CANCEL_EMAIL_ICON')] |
115 w(u'</div>') |
114 w(u'</div>') |
116 |
115 |
117 def render_buttons(self, w, form): |
116 def render_buttons(self, w, form): |
118 pass |
117 pass |
119 |
118 |
120 class MassMailingFormView(FormViewMixIn, EntityView): |
119 class MassMailingFormView(form.FormViewMixIn, EntityView): |
121 __regid__ = 'massmailing' |
120 __regid__ = 'massmailing' |
122 __select__ = implements(IEmailable) & match_user_groups('managers', 'users') |
121 __select__ = implements(IEmailable) & match_user_groups('managers', 'users') |
123 |
122 |
124 def call(self): |
123 def call(self): |
125 req = self._cw |
124 req = self._cw |