Open Bug 116863 Opened 23 years ago Updated 12 years ago

Add a user pref to paste all comments in each bugmail

Categories

(Bugzilla :: Email Notifications, enhancement)

2.19.2
enhancement
Not set
normal

Tracking

()

People

(Reporter: astar, Unassigned)

References

Details

Attachments

(1 file, 4 obsolete files)

Add to email preferences an option for all comments, including the description. Motivation: In transistioning from an ad hoc email bug system, some users prefer to get their information from the email, including history and original description. The tendency is increased if the bugzilla system is on a non-routable host and some developers are remote. Implementation: I did the non-UI portion by adding an extra flag to the GetLongDescriptonAsText call in processmail. In globals.pl, I tested the flag and modified the behavior transparently. I did not do the UI portion.
Changing default owner of Email Notifications component to JayPee, a.k.a. J. Paul Reed (preed@sigkill.com). Jake will be offline for a few months.
Assignee: jake → preed
Severity: normal → enhancement
It is preferred that the order of display of the comments in the email be in the order: most recent first.
Now that we have user specific preferences, this can be supported on a per-user basis.
Depends on: 98123
Depends on: 199048
Attached patch initial 2.19.2+ patch (obsolete) — Splinter Review
This is my first cut. It depends on bug #199048 to be checked in as I take into account the reverse comment setting as part of collecting all the comments. It's not pretty, but it works. It basically rebuilds the comment stack for any users that don't follow the default setting of no-reverse/single-comment mode.
If you're going to do this, it doesn't seem to me that it would be THAT much extra work to allow the user a gradation between 'just the newest comment' and 'every comment since the dawn of time'. Why not offer a range of choices, something like: In bugmail with comments, I want to receive: - the new comment only - the new comment, and the most recent comment before that - the new comment, and the two most recent coments - the new comment, and the three most recent comments - the new comment, and the five most recent comments - the new comment, and the ten most recent comments - the new comment, and all previous comments Even if you do this, however, my opinion is that only the *extra* comments should be ordered in the setting->comment_sort_order->value order; the new comment itself should ALWAYS be at the top of the email, right under the listing of what else has changed... so it would look like this: ================================== foo@bar.com changed: What |Removed |Added ---------------------------------------------------------------------------- Owner|baz@bar.com |foo@bar.com Status|NEW |ASSIGNED ------- Additional Comments From foo@bar.com 2005-03-16 09:53 PST ------- Baz, I can handle this one; don't worry about it. ------- Previous comments -------- (Here is where you put the number of comments the user has chosen, in the order that the user has chosen.) -- Configure bugmail: https://bugzilla.mozilla.org/userprefs.cgi?tab=email ================================== This adds much more flexibility without changing the face of the mail too much. Albert, are you wanting to take over this, or were you just providing a first- cut patch with how you thought it might be implemented?
Expanding the options and always making the new comment be at the front sounds reasonable. But some other questions: - should we follow the comment_sort_order setting? - should we look at newest_to_oldest_desc_first? If so, would it get placed before or after the new comment? - expanding the options means rebuilding the comment stack for each user that does not use the default standard. I'm going to assume that's ok. It also implies I won't be hashing the various comment stack permutations.
*** Bug 271412 has been marked as a duplicate of this bug. ***
Attached patch updated patch, v2 (obsolete) — Splinter Review
Shane, here's an updated patch. I addressed all the concerns mentioned in comment #5. I agree all new comments should appear at the top, and only sort the older comments based on the comment_sort_order. Some key things: - I only query the mysql database once for the longdescs, and only once to get the default user pref values. - I create a default comment result string based on the default user pref values. - I moved GetLongDescriptionAsText from globals.pl to BugMail.pm - GetLongDescriptionAsText now uses the comment array from GetComments
Attachment #177577 - Attachment is obsolete: true
Attachment #179083 - Flags: review?(shane.h.w.travis)
Blocks: 285368
Note: moving of GetLongDescriptionAsText out of globals.pl is bug 279738
Attached patch v3 patch (obsolete) — Splinter Review
Shucks, the bugzilla tip changed quite a bit since I got this working. Here's an updated patch based on the 3/30 tip.
Attachment #179083 - Attachment is obsolete: true
Attachment #179083 - Flags: review?(shane.h.w.travis)
Blocks: 279738
Albert: I just changed companies/jobs, and have been *very* inactive in Bugzilla for the last two weeks. I'm hoping life settles down again a bit in the near future and I can at least keep an eye on things like this. This isn't getting in to 2.20 (I don't think) so I doubt it's a huge huge rush... but if you want it done faster than I'm getting to it I won't be hurt if you ask someone else.
Assignee: preed → altlst
Attached patch v4 patch (obsolete) — Splinter Review
No problem Shane, hope your new job goes well! Will ask Gerv to take a look, based on the bugzilla reviewer list. The updated patch does a cleaner job fetching the default settings.
Attachment #179116 - Attachment is obsolete: true
Attachment #179606 - Flags: review?(gerv)
Would it be possible to have the pref be an integer, default 1, which is the number of comments to send? I think some people might want quite a few comments, but don't want a 100KB email every time someone comments on an uber-bug. If they really want them all, they can set it to 1000 or something. Gerv
(In reply to comment #13) > Would it be possible to have the pref be an integer, default 1, which is the > number of comments to send? Hi Gerv, The current patch gives you discrete choices, per comment #5 (1, 2, 3, 5, etc.). I wouldn't mind making the param be an integer, but I don't think the schema is setup to support a user definable integer, just a fixed set of choices.
That's a bit of a shame. Who did the current infrastructure? Can it be easily expanded for other preference types? Gerv
(In reply to comment #15) > That's a bit of a shame. Who did the current infrastructure? Can it be easily > expanded for other preference types? Shane wrote it (bug #98123). But I'd like to request this bug be based on the current infrastructure. It should be trivial to upgrade it if/when bugzilla supports other preference types.
Depends on: 286357
Comment on attachment 179606 [details] [diff] [review] v4 patch >+# 2005-03-15 altlst@sonic.net -- Bug 116863 >+add_setting ("email_comments", {"new_comments" => 1, >+ "new_comments_plus_one" => 2, >+ "new_comments_plus_two" => 3, >+ "new_comments_plus_three" => 4, >+ "new_comments_plus_five" => 5, >+ "new_comments_plus_ten" => 6, >+ "all_comments" => 7}, >+ "new_comments" ); I don't think we should have an "all_comments" option. I think this allows people to put too much load on Bugzilla servers and email servers, for very little gain. Very few people are going to read back more than a certain distance, and I think it's reasonable to ask them to load the bug at that point. Sending all comments also encourages bad practice - people read the email to find the state of the bug instead of checking the bug itself, which may have been updated. I suggest we have new, new + two, new + five and new + ten. In fact, this whole feature breaks the DRY principle. I don't like it. :-| >+ "email_comments" => "When receiving a bugzilla email, include this much email", "In email notifications of bug changes, include new comments and" >+ "new_comments" => "Include just the new comments", "nothing else" >+ "new_comments_plus_two" => "Include the new comments plus the two most recent comments", "the next two most recent comments" >+ "new_comments_plus_five" => "Include the new comments plus the five most recent comments", "the next five most recent comments" etc. Do the emails when sent differentiate between new comments and "repeated" comments? If not, they need to. Otherwise it'll annoy users, who will find it hard to work out if they've read a comment before, and so will re-read comments, and slow themselves down. The more I think about this feature, the more I think it's a backwards usability step. Gerv
Attachment #179606 - Flags: review?(gerv) → review-
I can remove the "all_comments" line. Will probably make the a custom feature for my company. > In fact, this whole feature breaks the DRY principle. I don't like it. :-| What does "DRY" mean? > Do the emails when sent differentiate between new comments and "repeated" > comments? If not, they need to. Otherwise it'll annoy users, who will find it > hard to work out if they've read a comment before, and so will re-read > comments, and slow themselves down. What do you mean by "repeated" comments? It's true multiple emails will mean redundant comments. But some people like that. > The more I think about this feature, the more I think it's a backwards > usability step. I'm not a fan of this either, but I do have some folks who really value this.
I am the reporter. I report that in a small shop a reverse sort of the long descriptions worked well. There was no limit clause used. I suspect that in a large shop, if there was a performance hit, then another index could be added to the database to support the reverse sort. As I think about it, I suspect databases are smart enough to read an index backwards. The absence of an integer type seems to be sending people out on byways. We were fine with the equivalent of all_comments as our only choices and I am leary of eliminating that from your options list.
> I suspect that in a large shop, if there was a performance hit, then another > index could be added to the database to support the reverse sort. As I think > about it, I suspect databases are smart enough to read an index backwards. The current patch only does 1 query, and then reverse sorts on the fly. It was my impression that the developers wanted to limit the amount of SQL queries. Granted, I could easily see a GetReverseComments() function so that you have two sets to work from. Would that be better? > We were fine with the equivalent of all_comments as our only choices and I am > leary of eliminating that from your options list. I guess the bugzilla team would have to decide. bugzilla.mozilla.org is quite large and having this additional feature could be problematic. But the user-pref can be figured to be hard coded to just the default "1 comment" behavior. So I don't see any harm supporting "all-comments".
> What does "DRY" mean? Sorry. It means "Don't Repeat Yourself" - i.e. don't keep information in more than one place. > What do you mean by "repeated" comments? It's true multiple emails will mean > redundant comments. But some people like that. I understand that; but I think that there should be a line or break between new comments and comments the user has been sent already. This means they don't have to remember every bug they are CCed on to know how far back to read to make sure they've read all the new stuff, if you see what I mean. You could do this with two queries - one for the new comments, and one for the extra ones. (I don't think we need an extra "GetReverseComments()" function - you are right, reversing in place is fine.) I'm not completely familiar with how the user pref system works. Are you saying it's possible for an admin to disable this pref globally for, say, b.m.o.? Gerv
> I understand that; but I think that there should be a line or break between new > comments and comments the user has been sent already. This means they don't have > to remember every bug they are CCed on to know how far back to read to make sure > they've read all the new stuff, if you see what I mean. Oh, that's easy, I think it already does that... :). Bugzilla currently emails only the new comments. All I'm doing is appending to that list and separating the two sections with a "previous comments below" divider. > I'm not completely familiar with how the user pref system works. Are you saying > it's possible for an admin to disable this pref globally for, say, b.m.o.? Yes.
I won't be available for the next week, so please find another reviewer if you are in a rush. Apologies :-) Gerv
No longer blocks: 279738
Depends on: 279738
Attached patch v5Splinter Review
Updated patch. - updated to 5-03 tip - cleaned up the text strings per comment #17 And regarding the other issues in comment #17 - there are no repeat comments. The patch differentiates between new comments and old comments, with a divider in between, as noted in #22 - the "all comments" still exists. For large sites, this user preference can be disabled and hardcoded to "just new comments" - about the only thing I can see is the ability to disable "all comments", but still allow the other fields. I'm not sure how that can be done with the current API. Perhaps a separate "all comments" flags that if turned off, defaults to "10".
Attachment #179606 - Attachment is obsolete: true
Attachment #182536 - Flags: review?(mkanat)
Status: NEW → ASSIGNED
OS: Linux → All
Hardware: PC → All
Summary: add email preference "All comments" → Add User Setting of how many comments to send in each email
Target Milestone: --- → Bugzilla 2.22
Version: unspecified → 2.19.2
Comment on attachment 182536 [details] [diff] [review] v5 Although it sounded like a good suggestion at the time, I really don't think we have a need for anything other than "the latest comment" or "all comments." I really can't picture a use for the other settings that justifies the complexity. I think having just those two would simplify the code, also. Also, please try to do CVS diffs. It makes life easier when using the advanced features of PatchReader on bugzilla.mozilla.org. >--- Bugzilla/BugMail.pm 2005-03-29 22:04:30.000000000 -0800 >+++ Bugzilla/BugMail.pm 2005-03-29 22:03:26.000000000 -0800 >@@ -318,8 +318,9 @@ > push(@diffparts, $diffpart); > } > >- >- my ($newcomments, $anyprivate) = GetLongDescriptionAsText($id, $start, $end); >+ my $defaults = Bugzilla::User::Setting::get_defaults(); Usually, you should never need to call that function anywhere but in editsettings.cgi and userprefs.cgi. Is there perhaps a way to structure the code so that it's not needed? Anyhow, it seems like you'd always need to get all the comments, in case any user specified "all comments." >+ my $commentRef = Bugzilla::Bug::GetComments($id, "oldest_to_newest", $start, $end); >+ my ($newcomments, $anyprivate) = GetLongDescriptionAsText($id, $commentRef, $defaults); Also -- if a user has his setting *higher* than the default... he won't be able to get the comments, right? >@@ -422,6 +423,14 @@ > # So the user exists, can see the bug, and wants mail in at least > # one role. But do we want to send it to them? > >+ # check to see if specific user requested all comments >+ my $email_comments = $user->settings->{'email_comments'}->{'value'}; >+ my $comment_sort_order = $user->settings->{'comment_sort_order'}->{'value'}; >+ if (($email_comments ne $defaults->{'email_comments'}) || >+ ($comment_sort_order ne $defaults->{'comment_sort_order'})) { >+ ($newcomments, $anyprivate) = GetLongDescriptionAsText($id, $commentRef, $defaults, $comment_sort_order, $email_comments); We need a solution that doesn't involve calling GetLongDescriptionAsText per-user under any circumstances. (It will be too slow, I suspect, and it also just doesn't seem like a good idea.) Also, how can you tell which comments are private? >@@ -609,6 +618,73 @@ > return 1; > } > >+sub GetLongDescriptionAsText ($$$$$) { I actually already filed another bug for moving this function -- bug 279738. Do the moving of the function there, and make it block this bug. We also need to do things like rename the function and remove the SendSQL calls when we move it. > sub GetComments { >- my ($id, $comment_sort_order) = (@_); >+ my ($id, $comment_sort_order, $start, $end) = (@_); > $comment_sort_order = $comment_sort_order || > Bugzilla->user->settings->{'comment_sort_order'}->{'value'}; >+ $start = $start || ""; Don't use an empty string for that, just make it undef if it should not be defined. >@@ -688,7 +689,8 @@ > AS time, longdescs.thetext AS body, longdescs.work_time, > isprivate, already_wrapped, > " . $dbh->sql_date_format('longdescs.bug_when', '%Y%m%d%H%i%s') . " >- AS bug_when >+ AS bug_when, >+ " . ($start eq "" ? "1" : "bug_when > '$start' and bug_when <= '$end'") . " as new" . " PostgreSQL doesn't allow boolean values like that in a SELECT statement. You have to use a CASE WHEN statement. >+ >+ my $count = ($sort_order eq "desc" ? $#comments + 1 : 0); >+ foreach my $comment_ref (@comments) { >+ $comment_ref->{'count'} = $count; >+ $count = $count + ($sort_order eq "desc" ? -1 : 1); >+ } I don't fully understand this code. Could you add a comment, here?
Attachment #182536 - Flags: review?(mkanat) → review-
*** Bug 303530 has been marked as a duplicate of this bug. ***
Please can you make a "vanille" configuration? What is the absolute simplest way of enableing all comment sorted by new -> old in the e-mail. Enabled for all e-mails sent. I'm a beginner in bugzilla. So please. :-)
Please. i'm getteing desperate. I can not apply patch ver5. What i'm i doring wrong?
(In reply to comment #28) > I can not apply patch ver5. What i'm i doing wrong? The patch is only for 2.20rc*. I haven't had time yet to create an updated patch that's suitable for the bugzilla code base. Mainly need to resolve bug 279738. Hope to address this within a month or so. I don't know of a simple hack. One possibility is to modify globals.pl:GetLongDescriptionAsText() and force $start to always be the year 1990. Or something like that.
Albert. Is there a simpel hack that i can hardcode in order to force all e-mail sent to be including all comments. I can use this very much until the final release is ready. I understand that this i not development but more a workaround.
The trunk is now frozen to prepare Bugzilla 2.22. Only bug fixes are accepted, no enhancement bugs. As this bug has a pretty low activity (especially from the assignee), it's retargetted to ---. If you want to work on it and you think you can have it fixed for 2.24, please retarget it accordingly (to 2.24).
Target Milestone: Bugzilla 2.22 → ---
QA Contact: mattyt-bugzilla → default-qa
*** Bug 357872 has been marked as a duplicate of this bug. ***
We've stopped using a long time ago and doesn't look like there's a high demand for this. If somebody wants to take over, feel free.
Assignee: altlist → administration
Status: ASSIGNED → NEW
Reverting the bug summary as the original request is to get all comments, not only the last X ones. And as said in comment 25, getting the last X comments doesn't really make sense. I'm not saying I'm in favor of the original RFE either. Many (most?) bugs have several tens of comments, and emailing them all all the time seems unnecessary to me.
Summary: Add User Setting of how many comments to send in each email → Add a user pref to paste all comments in each bugmail
(In reply to Frédéric Buclin from comment #34) > Reverting the bug summary as the original request is to get all comments, > not only the last X ones. And as said in comment 25, getting the last X > comments doesn't really make sense. I'm not saying I'm in favor of the > original RFE either. Many (most?) bugs have several tens of comments, and > emailing them all all the time seems unnecessary to me. I agreed that this would not be necessary, especially when the commenter can hit the reply link on the relevant/important comments which will include them that way. dkl
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: