diff --git a/bt5/erp5_discussion/SkinTemplateItem/portal_skins/erp5_discussion/DiscussionThread_createNewDiscussionPost.xml b/bt5/erp5_discussion/SkinTemplateItem/portal_skins/erp5_discussion/DiscussionThread_createNewDiscussionPost.xml index ef2329139bb4351460fe74a2fa10031ae73545e2..ad47aeb9ecf8ae0e4db2be058b9a2e0f8d4fdcf3 100644 --- a/bt5/erp5_discussion/SkinTemplateItem/portal_skins/erp5_discussion/DiscussionThread_createNewDiscussionPost.xml +++ b/bt5/erp5_discussion/SkinTemplateItem/portal_skins/erp5_discussion/DiscussionThread_createNewDiscussionPost.xml @@ -56,6 +56,7 @@ <value> <string>"""\n This script allows to create a new Discussion Post in context.\n """\n +from DateTime import DateTime\n \n portal = context.getPortalObject()\n person = portal.ERP5Site_getAuthenticatedMemberPersonValue()\n @@ -73,6 +74,35 @@ discussion_post = context.newContent(\n # depending on security model Post can be submited for review\n portal_status_message = "New post created."\n discussion_post.release()\n +if send_notification_text not in (\'\', None):\n + # we can send notifications\n + email_list = []\n + notification_list = send_notification_text.split(\'\\r\\n\')\n + for notification in notification_list:\n + if \'@\' in notification:\n + # user specified an email\n + email_list.append(notification)\n + else:\n + # we can assume user wanted to specify Person\'s title\n + person_list = portal.portal_catalog(portal_type=\'Person\',\n + title=notification)\n + email_list.extend([x.getDefaultEmailText() for x in person_list])\n + email_from = portal.email_from_address\n + email_subject = "New forum post"\n + email_template = """\n +\n +New forum post has been created at this url:\n +\n +${url}""" \n + email_body = context.Base_translateString(email_template, mapping={\'url\':discussion_post.absolute_url()})\n + for email_to in email_list:\n + mail_headers = """\n +To: %s\n +From: %s\n +Subject: %s\n +Date: %s""" %(email_to, email_from, email_subject, DateTime().rfc822())\n + mail_source =\'%s\\n\\n%s\' %(mail_headers, email_body)\n + context.MailHost.send(mail_source)\n \n return context.Base_redirect(form_id,\n keep_items = dict(portal_status_message=context.Base_translateString(portal_status_message)))\n @@ -86,13 +116,14 @@ return context.Base_redirect(form_id,\n </item> <item> <key> <string>_params</string> </key> - <value> <string>title, text_content, form_id, predecessor=None,**kw</string> </value> + <value> <string>title, text_content, form_id, send_notification_text=None, predecessor=None,**kw</string> </value> </item> <item> <key> <string>_proxy_roles</string> </key> <value> <tuple> <string>Assignor</string> + <string>Manager</string> </tuple> </value> </item> @@ -114,7 +145,7 @@ return context.Base_redirect(form_id,\n <dictionary> <item> <key> <string>co_argcount</string> </key> - <value> <int>4</int> </value> + <value> <int>5</int> </value> </item> <item> <key> <string>co_varnames</string> </key> @@ -123,8 +154,10 @@ return context.Base_redirect(form_id,\n <string>title</string> <string>text_content</string> <string>form_id</string> + <string>send_notification_text</string> <string>predecessor</string> <string>kw</string> + <string>DateTime</string> <string>_getattr_</string> <string>context</string> <string>portal</string> @@ -133,6 +166,22 @@ return context.Base_redirect(form_id,\n <string>language</string> <string>discussion_post</string> <string>portal_status_message</string> + <string>None</string> + <string>email_list</string> + <string>notification_list</string> + <string>_getiter_</string> + <string>notification</string> + <string>person_list</string> + <string>append</string> + <string>$append0</string> + <string>x</string> + <string>email_from</string> + <string>email_subject</string> + <string>email_template</string> + <string>email_body</string> + <string>email_to</string> + <string>mail_headers</string> + <string>mail_source</string> <string>dict</string> </tuple> </value> @@ -147,6 +196,7 @@ return context.Base_redirect(form_id,\n <value> <tuple> <none/> + <none/> </tuple> </value> </item> diff --git a/bt5/erp5_discussion/SkinTemplateItem/portal_skins/erp5_discussion/DiscussionThread_viewCreateNewDiscussionPostDialog.xml b/bt5/erp5_discussion/SkinTemplateItem/portal_skins/erp5_discussion/DiscussionThread_viewCreateNewDiscussionPostDialog.xml index f3b21036c7d4425fb309b97ee89b57988bd748a5..33919d95a5b184ab604c6daf8afefcaa21d51cd5 100644 --- a/bt5/erp5_discussion/SkinTemplateItem/portal_skins/erp5_discussion/DiscussionThread_viewCreateNewDiscussionPostDialog.xml +++ b/bt5/erp5_discussion/SkinTemplateItem/portal_skins/erp5_discussion/DiscussionThread_viewCreateNewDiscussionPostDialog.xml @@ -100,6 +100,7 @@ <value> <list> <string>your_title</string> + <string>your_send_notification_text</string> </list> </value> </item> diff --git a/bt5/erp5_discussion/SkinTemplateItem/portal_skins/erp5_discussion/DiscussionThread_viewCreateNewDiscussionPostDialog/your_send_notification_text.xml b/bt5/erp5_discussion/SkinTemplateItem/portal_skins/erp5_discussion/DiscussionThread_viewCreateNewDiscussionPostDialog/your_send_notification_text.xml new file mode 100644 index 0000000000000000000000000000000000000000..c738b7a34ef00106087ec08c4fe8f82aeb7b9fdf --- /dev/null +++ b/bt5/erp5_discussion/SkinTemplateItem/portal_skins/erp5_discussion/DiscussionThread_viewCreateNewDiscussionPostDialog/your_send_notification_text.xml @@ -0,0 +1,130 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <tuple> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + <tuple/> + </tuple> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list> + <string>description</string> + <string>editable</string> + <string>enabled</string> + <string>title</string> + </list> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>your_send_notification_text</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>display_width</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>description</string> </key> + <value> <string>Use this text area to specify email addresses or persons\' titles which should receive notification about this post\'s creation. Each on a new line. Wildcards like \'%\' are supported.</string> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <int>40</int> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_text_area_field</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewFieldLibrary</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Notification list</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_discussion/bt/revision b/bt5/erp5_discussion/bt/revision index f70d7bba4ae1f07682e0358bd7a2068094fc023b..ac4213d6e97d9cfeb1d7bc8f948c06114a56de18 100644 --- a/bt5/erp5_discussion/bt/revision +++ b/bt5/erp5_discussion/bt/revision @@ -1 +1 @@ -42 \ No newline at end of file +43 \ No newline at end of file