]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 153583 - Links to obsoleted attachment should use line-through style
authorcaillon%returnzero.com <>
Sun, 27 Jul 2003 08:16:40 +0000 (08:16 +0000)
committercaillon%returnzero.com <>
Sun, 27 Jul 2003 08:16:40 +0000 (08:16 +0000)
r=kiko@async.com.br
a=justdave@netscape.com

css/edit_bug.css
globals.pl
template/en/default/attachment/list.html.tmpl

index 64fa4cd71d0b7505fe15e790afdcb3d59a9f4381..d5576f39130d0f3718cd84b37c152aabcd810ecf 100644 (file)
@@ -2,4 +2,6 @@
 .bz_private { color: darkred ; background : #f3eeee ; }
 .bz_disabled { color: #a0a0a0 ; }
 
+.bz_obsolete { text-decoration: line-through underline; }
+
 table#flags th, table#flags td { vertical-align: baseline; text-align: left; }
index 73445f98ae53030810603cf6d855a164efa4475c..134bddb287cb1c474b983322e5c8ca5ef5726d28 100644 (file)
@@ -905,10 +905,12 @@ sub quoteUrls {
 
     # attachment links - handle both cases separatly for simplicity
     $text =~ s~((?:^Created\ an\ |\b)attachment\s*\(id=(\d+)\))
-              ~<a href=\"attachment.cgi?id=$2&amp;action=view\">$1</a>~igx;
+              ~GetAttachmentLink($2, $1)
+              ~egmx;
 
     $text =~ s~\b(attachment\s*\#?\s*(\d+))
-              ~<a href=\"attachment.cgi?id=$2&amp;action=view\">$1</a>~igx;
+              ~GetAttachmentLink($2, $1)
+              ~egmx;
 
     # This handles bug a, comment b type stuff. Because we're using /g
     # we have to do this in one pattern, and so this is semi-messy.
@@ -937,6 +939,60 @@ sub quoteUrls {
     return $text;
 }
 
+# GetAttachmentLink creates a link to an attachment,
+# including its title.
+
+sub GetAttachmentLink {
+    my ($attachid, $link_text) = @_;
+    detaint_natural($attachid) ||
+        die "GetAttachmentLink() called with non-integer attachment number";
+
+    # If we've run GetAttachmentLink() for this attachment before,
+    # %::attachlink will contain an anonymous array ref of relevant
+    # values.  If not, we need to get the information from the database.
+    if (! defined $::attachlink{$attachid}) {
+        # Make sure any unfetched data from a currently running query
+        # is saved off rather than overwritten
+        PushGlobalSQLState();
+
+        SendSQL("SELECT bug_id, isobsolete, description 
+                 FROM attachments WHERE attach_id = $attachid");
+
+        if (MoreSQLData()) {
+            my ($bugid, $isobsolete, $desc) = FetchSQLData();
+            my $title = "";
+            my $className = "";
+            if (CanSeeBug($bugid, $::userid)) {
+                $title = $desc;
+            }
+            if ($isobsolete) {
+                $className = "bz_obsolete";
+            }
+            $::attachlink{$attachid} = [value_quote($title), $className];
+        }
+        else {
+            # Even if there's nothing in the database, we want to save a blank
+            # anonymous array in the %::attachlink hash so the query doesn't get
+            # run again next time we're called for this attachment number.
+            $::attachlink{$attachid} = [];
+        }
+        # All done with this sidetrip
+        PopGlobalSQLState();
+    }
+
+    # Now that we know we've got all the information we're gonna get, let's
+    # return the link (which is the whole reason we were called :)
+    my ($title, $className) = @{$::attachlink{$attachid}};
+    # $title will be undefined if the bug didn't exist in the database.
+    if (defined $title) {
+        my $linkval = "attachment.cgi?id=$attachid&amp;action=view";
+        return qq{<a href="$linkval" class="$className" title="$title">$link_text</a>};
+    }
+    else {
+        return qq{$link_text};
+    }
+}
+
 # GetBugLink creates a link to a bug, including its title.
 # It takes either two or three parameters:
 #  - The bug number
index 10112ae2fd38b3234dbf76b800477c7d09da6f86..fc58529237f9388f2b3641bfe8184f851526b312 100644 (file)
         [% IF !attachment.isprivate || canseeprivate %]
     <tr [% "class=\"bz_private\"" IF attachment.isprivate %]>
       <td valign="top">
-        [% IF attachment.isobsolete %]
-          <strike><a href="attachment.cgi?id=[% attachment.attachid %]&amp;action=view">[% attachment.description FILTER html %]</a></strike>
-        [% ELSE %]
-          <a href="attachment.cgi?id=[% attachment.attachid %]&amp;action=view">[% attachment.description FILTER html %]</a> 
-        [% END %]
+        <a href="attachment.cgi?id=[% attachment.attachid %]&amp;action=view" [% "class=\"bz_obsolete\"" IF attachment.isobsolete %]>[% attachment.description FILTER html %]</a>
       </td>
 
       <td valign="top">