--- discussionplugin-r9693.orig/0.11/tracdiscussion/api.py 2010-11-19 11:56:18.000000000 -0500 +++ discussionplugin-r9693/0.11/tracdiscussion/api.py 2010-12-16 12:18:26.000000000 -0500 @@ -713,9 +713,7 @@ 'subject' : context.req.args.get('subject'), 'description' : context.req.args.get('description'), 'moderators' : context.req.args.get('moderators'), - 'subscribers' : [subscriber.strip() for subscriber in - context.req.args.get('subscribers').replace(':', - ' ').split()], + 'subscribers' : context.req.args.get('subscribers'), 'forum_group' : int(context.req.args.get('group') or 0), 'time': to_timestamp(datetime.now(utc))} @@ -723,7 +721,20 @@ if not forum['moderators']: forum['moderators'] = [] if not isinstance(forum['moderators'], list): - forum['moderators'] = [forum['moderators']] + forum['moderators'] = [moderator.strip() for moderator in + forum['moderators'].replace(',', + ' ').split()] + # Fix subscribers attribute to be a list. + if not forum['subscribers']: + forum['subscribers'] = [] + if not isinstance(forum['subscribers'], list): + forum['subscribers'] = [subscribers.strip() for subscribers in + forum['subscribers'].replace(',', + ' ').split()] + forum['subscribers'] = forum['subscribers'] + \ + [subscriber.strip() for subscriber in + context.req.args.get('subscribers2').replace(',', + ' ').split()] # Perform new forum add. self.add_forum(context, forum) @@ -748,16 +759,27 @@ 'subject' : context.req.args.get('subject'), 'description' : context.req.args.get('description'), 'moderators' : context.req.args.get('moderators'), - 'subscribers' : [subscriber.strip() for subscriber in - context.req.args.get('subscribers').replace(':', - ' ').split()], + 'subscribers' : context.req.args.get('subscribers'), 'forum_group' : int(context.req.args.get('group') or 0)} # Fix moderators attribute to be a list. if not forum['moderators']: forum['moderators'] = [] if not isinstance(forum['moderators'], list): - forum['moderators'] = [forum['moderators']] + forum['moderators'] = [moderator.strip() for moderator in + forum['moderators'].replace(',', + ' ').split()] + # Fix subscribers attribute to be a list. + if not forum['subscribers']: + forum['subscribers'] = [] + if not isinstance(forum['subscribers'], list): + forum['subscribers'] = [subscribers.strip() for subscribers in + forum['subscribers'].replace(',', + ' ').split()] + forum['subscribers'] = forum['subscribers'] + \ + [subscriber.strip() for subscriber in + context.req.args.get('subscribers2').replace(',', + ' ').split()] # Perform forum edit. self.edit_forum(context, context.forum['id'], forum) @@ -818,8 +840,17 @@ raise PermissionError('Forum moderate') # Prepare edited attributes of the forum. - forum = {'subscribers' : [subscriber.strip() for subscriber in - context.req.args.get('subscribers').replace(',', ' ').split()]} + forum = {'subscribers' : context.req.args.get('subscribers')} + if not forum['subscribers']: + forum['subscribers'] = [] + if not isinstance(forum['subscribers'], list): + forum['subscribers'] = [subscribers.strip() for subscribers in + forum['subscribers'].replace(',', + ' ').split()] + forum['subscribers'] = forum['subscribers'] + \ + [subscriber.strip() for subscriber in + context.req.args.get('subscribers2').replace(',', + ' ').split()] # Edit topic. self.edit_forum(context, context.forum['id'], forum) @@ -907,6 +938,7 @@ context.data['display'] = display context.data['topics'] = topics context.data['paginator'] = paginator + context.data['users'] = self.get_users(context) elif action == 'topic-rss': context.req.perm.assert_permission('DISCUSSION_VIEW') @@ -919,6 +951,9 @@ elif action == 'topic-add': context.req.perm.assert_permission('DISCUSSION_APPEND') + # Display Add Forum form. + context.data['users'] = self.get_users(context) + elif action == 'topic-quote': context.req.perm.assert_permission('DISCUSSION_APPEND') @@ -936,14 +971,24 @@ 'subject' : context.req.args.get('subject'), 'time': to_timestamp(datetime.now(utc)), 'author' : context.req.args.get('author'), - 'subscribers' : [subscriber.strip() for subscriber in - context.req.args.get('subscribers').replace(':', - ' ').split()], + 'subscribers' : context.req.args.get('subscribers'), 'body' : context.req.args.get('body')} + # Fix subscribers attribute to be a list. + if not topic['subscribers']: + topic['subscribers'] = [] + if not isinstance(topic['subscribers'], list): + topic['subscribers'] = [subscribers.strip() for subscribers in + topic['subscribers'].replace(',', + ' ').split()] + topic['subscribers'] = topic['subscribers'] + \ + [subscriber.strip() for subscriber in + context.req.args.get('subscribers2').replace(',', + ' ').split()] + # Add user e-mail if subscription checked. - if context.req.args.get('subscribe') and context.authemail and \ - not (context.authemail in topic['subscribers']): + if len(topic['subscribers']) and context.authemail and \ + not (context.authemail in topic['subscribers']): topic['subscribers'].append(context.authemail) # Filter topic. @@ -1062,9 +1107,18 @@ if not context.moderator: raise PermissionError('Forum moderate') - # Prepare edited attributes of the forum. - topic = {'subscribers' : [subscriber.strip() for subscriber in - context.req.args.get('subscribers').replace(',', ' ').split()]} + # Prepare edited attributes of the topic. + topic = {'subscribers' : context.req.args.get('subscribers')} + if not topic['subscribers']: + topic['subscribers'] = [] + if not isinstance(topic['subscribers'], list): + topic['subscribers'] = [subscribers.strip() for subscribers in + topic['subscribers'].replace(',', + ' ').split()] + topic['subscribers'] = topic['subscribers'] + \ + [subscriber.strip() for subscriber in + context.req.args.get('subscribers2').replace(',', + ' ').split()] # Edit topic. self.edit_topic(context, context.topic['id'], topic) @@ -1143,6 +1197,8 @@ context.req.perm.assert_permission('DISCUSSION_VIEW') self._prepare_message_list(context, context.topic) + context.data['users'] = self.get_users(context) + elif action == 'wiki-message-list': if context.topic: self._prepare_message_list(context, context.topic) @@ -1359,7 +1415,14 @@ # Unpack list of subscribers. if topic: - topic['subscribers'] = topic['subscribers'].split() + topic['subscribers'] = [subscribers.strip() for subscribers in + topic['subscribers'].split()] + topic['subscribers2'] = [] + for subscriber in topic['subscribers']: + if subscriber not in self.get_users(context): + topic['subscribers2'].append(subscriber) + topic['subscribers2'] = ", ".join(topic['subscribers2']) + return topic @@ -1370,7 +1433,13 @@ # Unpack list of subscribers. if topic: - topic['subscribers'] = topic['subscribers'].split() + topic['subscribers'] = [subscribers.strip() for subscribers in + topic['subscribers'].split()] + topic['subscribers2'] = [] + for subscriber in topic['subscribers']: + if subscriber not in self.get_users(context): + topic['subscribers2'].append(subscriber) + topic['subscribers2'] = ", ".join(topic['subscribers2']) return topic @@ -1381,7 +1450,13 @@ # Unpack list of subscribers. if topic: - topic['subscribers'] = topic['subscribers'].split() + topic['subscribers'] = [subscribers.strip() for subscribers in + topic['subscribers'].split()] + topic['subscribers2'] = [] + for subscriber in topic['subscribers']: + if subscriber not in self.get_users(context): + topic['subscribers2'].append(subscriber) + topic['subscribers2'] = ", ".join(topic['subscribers2']) return topic @@ -1395,7 +1470,13 @@ if forum: forum['moderators'] = [moderator.strip() for moderator in forum['moderators'].split()] - forum['subscribers'] = forum['subscribers'].split() + forum['subscribers'] = [subscribers.strip() for subscribers in + forum['subscribers'].split()] + forum['subscribers2'] = [] + for subscriber in forum['subscribers']: + if subscriber not in self.get_users(context): + forum['subscribers2'].append(subscriber) + forum['subscribers2'] = ", ".join(forum['subscribers2']) return forum @@ -1409,7 +1490,13 @@ if forum: forum['moderators'] = [moderator.strip() for moderator in forum['moderators'].split()] - forum['subscribers'] = forum['subscribers'].split() + forum['subscribers'] = [subscribers.strip() for subscribers in + forum['subscribers'].split()] + forum['subscribers2'] = [] + for subscriber in forum['subscribers']: + if subscriber not in self.get_users(context): + forum['subscribers2'].append(subscriber) + forum['subscribers2'] = ", ".join(forum['subscribers2']) return forum @@ -1585,6 +1672,13 @@ forums = [] for row in context.cursor: row = dict(zip(columns, row)) + # Convert FP result of SUM() above into integer. + if row['replies']: + row['replies'] = int(row['replies']) + if row['moderators']: + row['moderators'] = row['moderators'].replace(' ',', ') + if row['subscribers']: + row['subscribers'] = row['subscribers'].replace(' ',', ') forums.append(row) # Compute count of new replies and topics. --- discussionplugin-r9693.orig/0.11/tracdiscussion/notification.py 2010-12-06 17:46:24.000000000 -0500 +++ discussionplugin-r9693/0.11/tracdiscussion/notification.py 2010-12-13 13:21:32.000000000 -0500 @@ -99,7 +99,7 @@ self.template_name = 'forum-invite-body.txt' # Send e-mail to all subscribers. - self.cc_recipients = recipients + self.config.get('discussion', + self.cc_recipients = recipients + self.config.getlist('discussion', 'smtp_always_cc') # Render subject template and send notification. --- discussionplugin-r9693.orig/0.11/tracdiscussion/templates/admin-forum-list.html 2010-09-09 14:18:50.000000000 -0400 +++ discussionplugin-r9693/0.11/tracdiscussion/templates/admin-forum-list.html 2010-12-15 14:09:17.000000000 -0500 @@ -38,7 +38,15 @@

- + + + + + + + +
+ + + +
+
--- discussionplugin-r9693.orig/0.11/tracdiscussion/templates/discussion-macros.html 2010-09-09 14:18:50.000000000 -0400 +++ discussionplugin-r9693/0.11/tracdiscussion/templates/discussion-macros.html 2010-12-15 16:59:34.000000000 -0500 @@ -92,7 +92,25 @@
- + + + +
+
--- discussionplugin-r9693.orig/0.11/tracdiscussion/templates/forum-add.html 2010-09-09 14:18:50.000000000 -0400 +++ discussionplugin-r9693/0.11/tracdiscussion/templates/forum-add.html 2010-12-14 16:34:49.000000000 -0500 @@ -38,7 +38,10 @@

- + + + @@ -57,7 +60,15 @@

-
+ + + +
+
--- discussionplugin-r9693.orig/0.11/tracdiscussion/templates/forum-invite-body.txt 2010-04-29 13:07:56.000000000 -0400 +++ discussionplugin-r9693/0.11/tracdiscussion/templates/forum-invite-body.txt 2010-12-15 17:35:54.000000000 -0500 @@ -2,7 +2,7 @@ ---------------------------------------------------------------------------- Author: ${format_author(discussion.forum.author)} Created: ${format_datetime(discussion.forum.time)} -Moderators: ${discussion.forum.moderators} +Moderators: ${', '.join(discussion.forum.moderators)} ---------------------------------------------------------------------------- ${discussion.forum.description} --- discussionplugin-r9693.orig/0.11/tracdiscussion/templates/forum-invite-subject.txt 2009-07-28 11:25:26.000000000 -0400 +++ discussionplugin-r9693/0.11/tracdiscussion/templates/forum-invite-subject.txt 2010-12-13 13:21:32.000000000 -0500 @@ -1 +1 @@ -[${discussion.prefix}] Subscription to forum #${discussion.forum.id} - ${discussion.forum.name} - ${discussion.forum.subject} +[${discussion.prefix}] Subscription to Forum #${discussion.forum.id} - ${discussion.forum.name} - ${discussion.forum.subject} --- discussionplugin-r9693.orig/0.11/tracdiscussion/templates/message-notify-body.txt 2010-04-29 13:07:56.000000000 -0400 +++ discussionplugin-r9693/0.11/tracdiscussion/templates/message-notify-body.txt 2010-12-15 17:36:48.000000000 -0500 @@ -2,7 +2,7 @@ ---------------------------------------------------------------------------- Author: ${format_author(discussion.message.author)} Created: ${format_datetime(discussion.message.time)} -Moderators: ${discussion.forum.moderators} +Moderators: ${', '.join(discussion.forum.moderators)} ---------------------------------------------------------------------------- ${discussion.message.body} --- discussionplugin-r9693.orig/0.11/tracdiscussion/templates/topic-add.html 2010-09-09 14:18:50.000000000 -0400 +++ discussionplugin-r9693/0.11/tracdiscussion/templates/topic-add.html 2010-12-14 17:49:55.000000000 -0500 @@ -74,7 +74,15 @@

- ${req.args.subscribers}
+ + + +
+ ${req.args.subscribers}