]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 199048: Preference option to reverse sort the comments stack - Patch by Shane...
authorlpsolit%gmail.com <>
Sat, 9 Apr 2005 07:37:50 +0000 (07:37 +0000)
committerlpsolit%gmail.com <>
Sat, 9 Apr 2005 07:37:50 +0000 (07:37 +0000)
Bugzilla/Bug.pm
checksetup.pl
process_bug.cgi
template/en/default/bug/comments.html.tmpl
template/en/default/bug/edit.html.tmpl
template/en/default/global/setting-descs.none.tmpl

index 5017196b3d599fe5c269edb95dcc248705ff4454..8accc452c964cb5f94adc4eb137f1143b64b1cc7 100755 (executable)
@@ -761,7 +761,11 @@ sub ValidateTime {
 }
 
 sub GetComments {
-    my ($id) = (@_);
+    my ($id, $comment_sort_order) = (@_);
+    $comment_sort_order = $comment_sort_order ||
+        Bugzilla->user->settings->{'comment_sort_order'}->{'value'};
+
+    my $sort_order = ($comment_sort_order eq "oldest_to_newest") ? 'asc' : 'desc';
     my $dbh = Bugzilla->dbh;
     my @comments;
     my $sth = $dbh->prepare(
@@ -774,7 +778,7 @@ sub GetComments {
              FROM    longdescs, profiles
             WHERE    profiles.userid = longdescs.who
               AND    longdescs.bug_id = ?
-            ORDER BY longdescs.bug_when");
+            ORDER BY longdescs.bug_when $sort_order");
     $sth->execute($id);
 
     while (my $comment_ref = $sth->fetchrow_hashref()) {
@@ -789,6 +793,10 @@ sub GetComments {
 
         push (@comments, \%comment);
     }
+   
+    if ($comment_sort_order eq "newest_to_oldest_desc_first") {
+        unshift(@comments, pop @comments);
+    }
 
     return \@comments;
 }
index 44930ae732ec6353634d9a1e31be240aac6610af..ce9278f05a1c8d04d025929b0fbaa874f29f47eb 100755 (executable)
@@ -3953,6 +3953,13 @@ if ($dbh->bz_get_field_def('quips', 'approved')->[1] eq 'tinyint(1)') {
                                'tinyint not null default 1');
 }
 
+# 2005-03-10 travis@sedsystems.ca -- Bug 199048
+add_setting ("comment_sort_order", {"oldest_to_newest" => 1,
+                                    "newest_to_oldest" => 2,
+                                    "newest_to_oldest_desc_first" => 3}, 
+             "oldest_to_newest" );
+
+
 } # END LEGACY CHECKS
 
 # If you had to change the --TABLE-- definition in any way, then add your
index e7d2de104a6d3a9886cd38b02c806fb1d1258731..f85fd45d63fa7df18c516896434189de415140aa 100755 (executable)
@@ -1334,7 +1334,10 @@ foreach my $id (@idlist) {
                                                  $cgi->param('delta_ts'));
 
         $vars->{'start_at'} = $cgi->param('longdesclength');
-        $vars->{'comments'} = Bugzilla::Bug::GetComments($id);
+
+        # Always sort midair collision comments oldest to newest,
+        # regardless of the user's personal preference.
+        $vars->{'comments'} = Bugzilla::Bug::GetComments($id, "oldest_to_newest");
 
         $cgi->param('delta_ts', $delta_ts);
         
index 7a9dfb4efe7c9fad507b762ecf8133be5cfeb6d3..58eaa376c26588fa967dfd38df201f15ada499ae 100644 (file)
   #
   # Contributor(s): Gervase Markham <gerv@gerv.net>
   #                 Maxwell Kanat-Alexander <mkanat@kerio.com>
+  #                 Shane H. W. Travis <travis@sedsystems.ca>
   #%]
 
+[% PROCESS bug/time.html.tmpl %]
+
 [% DEFAULT start_at = 0 mode = "show" %]
-[% count = 0 %]
 [% isinsider = Param("insidergroup") && UserInGroup(Param("insidergroup")) %]
+[% sort_order = user.settings.comment_sort_order.value %]
+
+[%# NOTE: (start_at > 0) means we came here from a midair collision,
+  #       in which case we don't care what the user's preference is.
+ %]
+[% IF (start_at > 0) %]
+    [% sort_order = "oldest_to_newest" %]
+[% END %]
+
+
+[%# Set up the variables as needed, depending on the sort order %]
+[% IF sort_order == "oldest_to_newest" %]
+    [% count = 0 %]
+    [% description = 0 %]
+    [% increment = 1 %]
+[% ELSE %]
+    [% increment = -1 %]
+    [% IF sort_order == "newest_to_oldest" %]
+        [% count = comments.size - 1 %]
+        [% description = 0 %]
+    [% ELSIF sort_order == "newest_to_oldest_desc_first" %]
+        [% count = comments.size %]
+        [% description = comments.size %]
+    [% END %]
+[% END %]
+
+
 [% FOREACH comment = comments %]
   [% IF count >= start_at %]
     [% PROCESS a_comment %]
   [% END %]
   
-  [% count = count + 1 %]
+  [% count = count + increment %]
 [% END %]
 
-[% PROCESS bug/time.html.tmpl %]
-
 [%# Note: this template is used in multiple places; if you use this hook,
   # make sure you are aware of this fact.
   #%]  
   [% IF NOT comment.isprivate || isinsider %]
     <div [% "class=\"bz_private\" " IF comment.isprivate %]
          [% "class=\"bz_comment_hilite\" " IF marks.$count %]>
-      [% IF count > 0 %]
+      [% IF count == description %]
+        <table>
+          <tr>
+            <td align="left">
+              <b><a name="c0" href="#c0">Description</a>:</b>&nbsp;&nbsp;<script 
+                type="text/javascript"><!-- 
+                  addReplyLink(0);
+                //--></script>
+            </td>
+            <td align="left" width="30%">
+              Opened: [% bug.creation_ts FILTER time %]
+            </td>
+          </tr>
+        </table>
+      [% ELSE %]
         <br>
         <span class="bz_comment">
           ------- <i>Comment
index 86fb4c6b63b53ab6115cba4ea2b738ca093fe670..d15cf91026d84efe062fe5b33a74369a61bef793 100644 (file)
 [%# *** Additional Comments *** %]
 
 <hr>
-<table>
-  <tr>
-    <td align="left">
-      <b><a name="c0" href="#c0">Description</a>:</b>&nbsp;&nbsp;<script 
-        type="text/javascript"><!-- 
-          addReplyLink(0);
-        //--></script>
-    </td>
-    <td align="right" width="100%">
-      Opened: [% bug.creation_ts FILTER time %]
-    </td>
-  </tr>
-</table>
 
 [% PROCESS bug/comments.html.tmpl
    comments = bug.longdescs
index 9e7ac95966e0ba81a40ae403e89e8a2d3f2f6f68..1a31754a8eb8968be198b58db5d7e37c9fd87bf5 100644 (file)
 [% PROCESS global/variables.none.tmpl %]
 
 [% setting_descs = { 
-                      "display_quips"  => "Show a quip at the top of each bug list",
-                      "off"            => "Off",
-                      "on"             => "On"
+   "comment_sort_order"               => "When viewing $terms.abug, show comments in this order",
+   "display_quips"                    => "Show a quip at the top of each bug list",
+   "newest_to_oldest"                 => "Newest to Oldest",
+   "newest_to_oldest_desc_first"      => "Newest to Oldest, but keep Description at the top",
+   "off"                              => "Off",
+   "oldest_to_newest"                 => "Oldest to Newest",
+   "on"                               => "On"
                    } 
 %]