Software Freedom Law Center

Changeset 69

Show
Ignore:
Timestamp:
07/28/06 12:51:10 (2 years ago)
Author:
orion
Message:

urgent multi-draft fixes from amalfi

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/doc-markup-samples/gplv3-draft-1.html

    r54 r69  
    3838<ul id="portal-personaltools"><li>&nbsp;</li></ul> 
    3939<div id="maintext"> 
     40<div class="selfdoc"><p>Click on highlighted phrases to see the comments that have been made about them.<br/> 
     41Phrases that are subject to more comments are highlighted more intensely: 
     42<tt><span style="font-size: large; font-weight: bold"><span class="a1">f</span><span class="a2">e</span><span class="a3">w</span><span class="a4">&nbsp;</span><span class="a5">c</span><span class="a6">o</span><span class="a7">m</span><span class="a8">m</span><span class="a9">e</span><span class="a10">n</span><span class="a11">t</span><span class="a12">s</span><span class="a13">&nbsp;man</span><span class="a14">y</span><span class="a15">&nbsp;</span><span class="a16">c</span><span class="a17">o</span><span class="a18">m</span><span class="a19">m</span><span class="a20">e</span><span class="a21">n</span><span class="a22">t</span><span class="a23">s</span><span class="a24">&nbsp;</span></span></tt></p> 
     43 
     44  <p><a href="#" onmousedown="javascript:XpathSel()">select some text and then type "c" to submit comments.</a><br/> 
     45<a href="http://gplv3.fsf.org/wiki/index.php/Comment_system">more documentation</a></p> 
     46 
     47</div> 
    4048  <div id="title"><p id="title.0"><span class="h1" id="title.0.0">GNU GENERAL PUBLIC LICENSE</span></p> 
    4149<p id="title.1"><span id="title.1.0">Discussion Draft 1 of Version 3, 16 Jan 2006</span></p> 
     
    4351<p id="copyright.0"><span id="copyright.0.0">Copyright (C) 2006 Free Software Foundation, Inc.<br/>51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.<br/>Everyone is permitted to copy and distribute verbatim copies 
    4452 of this license document, but changing it is not allowed.</span></p></div> 
    45 <p>Click on highlighted phrases to see the comments that have been made about them.<br/> 
    46 Phrases that are subject to more comments are highlighted more intensely: 
    47 <tt><span style="font-size: large; font-weight: bold"><span class="a1">f</span><span class="a2">e</span><span class="a3">w</span><span class="a4">&nbsp;</span><span class="a5">c</span><span class="a6">o</span><span class="a7">m</span><span class="a8">m</span><span class="a9">e</span><span class="a10">n</span><span class="a11">t</span><span class="a12">s</span><span class="a13">&nbsp;man</span><span class="a14">y</span><span class="a15">&nbsp;</span><span class="a16">c</span><span class="a17">o</span><span class="a18">m</span><span class="a19">m</span><span class="a20">e</span><span class="a21">n</span><span class="a22">t</span><span class="a23">s</span><span class="a24">&nbsp;</span></span></tt></p> 
    48  
    49   <p><a href="#" onmousedown="javascript:XpathSel()">select some text and then type "c" to submit comments.</a></p> 
    5053<div id="gpl3.preamble"><p class="sectTitle" id="gpl3.preamble.0"><span id="gpl3.preamble.0.0">Preamble</span></p> 
    5154<p class="sectTitle sub" id="gpl3.preamble.0.0.0"><span id="gpl3.preamble.0.0.0.0"></span></p> 
     
    485488          Please report problems with this commenting system to <a href="mailto:stet@gplv3.fsf.org">stet@gplv3.fsf.org</a>. 
    486489<br/> 
    487 <a href="http://gplv3.fsf.org/comments/source/stet-latest.tar.bz2">get the source code</a><br/> 
    488490          Copyright &copy; 2006 
    489491          Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 
  • trunk/rtNoAuth/changeshown-complete.html

    r68 r69  
    4545% if (!$ARGS{'came_from'}) { 
    4646% $qs = $ENV{'HTTP_REFERER'}; 
    47 % $qs =~ s/(.*)\?.*/$1/; 
    48 % $qs =~ s/.*\/(.*)/$1/; 
    4947% } else { 
    5048% $qs = $ARGS{'came_from'}; 
    5149% } 
     50% $qs =~ s/(.*)\?.*/$1/; 
     51% $qs =~ s/.*\/(.*)/$1/; 
    5252% $qs =~ s/(.html|.xml)$//; 
     53% $came_from = $qs; 
    5354<h3 class="searchheader">Search for comments on <% $qs %></h3> 
    5455<input type=hidden name="came_from" value="<% $came_from %>"> 
     
    205206 
    206207<tr><td class=label align="right"> 
    207 Section id 
     208Section 
    208209</td> 
    209210<td> 
    210211<SELECT NAME ="&#39;CF.NoteStartNodeId&#39;Op"> 
    211212<OPTION VALUE="LIKE" 
    212 >contains</OPTION> 
     213>is</OPTION> 
    213214<OPTION VALUE="NOT LIKE" 
    214215>doesn&#39;t contain</OPTION> 
    215 <OPTION VALUE="=" 
     216<!-- <OPTION VALUE="=" 
    216217>is</OPTION> 
    217218<OPTION VALUE="!=" 
     
    220221>less than</OPTION> 
    221222<OPTION VALUE="&gt;" 
    222 >greater than</OPTION> 
     223>greater than</OPTION> --> 
    223224</SELECT> 
    224225</td> 
    225226<td> 
    226 <input name="ValueOf&#39;CF.NoteStartNodeId&#39;" size="20"> 
    227 </td></tr> 
     227<!-- <input name="ValueOf&#39;CF.NoteStartNodeId&#39;" size="20"> --> 
     228<select name="ValueOf&#39;CF.NoteStartNodeId&#39;" id="simplepicker"> 
     229<option selected value="">-</option> 
     230<option value="gpl3.preamble">Preamble</option> 
     231<option value="gpl3.definitions">0. Definitions</option> 
     232<option value="gpl3.sourcecode">1. Source Code</option> 
     233<option value="basicperms">2. Basic Permissions</option> 
     234<option value="gpl3.drm">3. Digital Restrictions Management</option> 
     235<option value="verbatimcopying">4. Verbatim Copying</option> 
     236<option value="distribmod">5. Distributing Modified Source Versions</option> 
     237<option value="nonsource">6. Non-Source Distribution</option> 
     238<option value="licensecompat">7. License Compatibility</option> 
     239<option value="termination">8. Termination</option> 
     240<option value="notacontract">9. Not A Contract</option> 
     241<option value="autolicense">10. Automatic Licensing of Downstream Users</option> 
     242<option value="licensingpatents">11. Licensing of Patents</option> 
     243<option value="gpl3.libertyordeath">12. Liberty or Death for the Program</option> 
     244<option value="geolimits">[13. Geographical Limitations]</option> 
     245<option value="revisedversions">14. Revised Versions of this License</option> 
     246<option value="requestingexceptions">15. Requesting Exceptions</option> 
     247<option value="nowarranty0">16. NO WARRANTY</option> 
     248<option value="nowarranty1">17. NO WARRANTY (cont.)</option> 
     249<option value="nottested">18. [not tested for safety-critical]</option> 
     250<option value="howtoapply">How to Apply These Terms to Your New Programs</option> 
     251</select> <a href="javascript:sectId('suggest')">autocomplete</a></td></tr> 
    228252 
    229253<tr><td class=label align="right"> 
  • trunk/rtNoAuth/changeshown.html

    r44 r69  
    4545% if (!$ARGS{'came_from'}) { 
    4646% $qs = $ENV{'HTTP_REFERER'}; 
    47 % $qs =~ s/(.*)\?.*/$1/; 
    48 % $qs =~ s/.*\/(.*)/$1/; 
    4947% } else { 
    5048% $qs = $ARGS{'came_from'}; 
    5149% } 
     50% $qs =~ s/(.*)\?.*/$1/; 
     51% $qs =~ s/.*\/(.*)/$1/; 
    5252% $qs =~ s/(.html|.xml)$//; 
     53%# $came_from = $qs; 
    5354<h3 class="searchheader">Search for comments on <% $qs %></h3> 
    5455<input type=hidden name="came_from" value="<% $came_from %>"> 
     
    205206 
    206207<tr><td class=label align="right"> 
    207 Section id 
     208Section 
    208209</td> 
    209210<td> 
    210211<SELECT NAME ="&#39;CF.NoteStartNodeId&#39;Op"> 
    211212<OPTION VALUE="LIKE" 
    212 >contains</OPTION> 
     213>is</OPTION> 
    213214<OPTION VALUE="NOT LIKE" 
    214215>doesn&#39;t contain</OPTION> 
    215 <OPTION VALUE="=" 
     216<!-- <OPTION VALUE="=" 
    216217>is</OPTION> 
    217218<OPTION VALUE="!=" 
     
    220221>less than</OPTION> 
    221222<OPTION VALUE="&gt;" 
    222 >greater than</OPTION> 
     223>greater than</OPTION> --> 
    223224</SELECT> 
    224225</td> 
    225226<td> 
    226 <input name="ValueOf&#39;CF.NoteStartNodeId&#39;" size="20"> 
    227 </td></tr> 
     227<!-- <input name="ValueOf&#39;CF.NoteStartNodeId&#39;" size="20"> --> 
     228<select name="ValueOf&#39;CF.NoteStartNodeId&#39;"> 
     229<option selected value="">-</option> 
     230<option value="gpl3.preamble">Preamble</option> 
     231<option value="gpl3.definitions">0. Definitions</option> 
     232<option value="gpl3.sourcecode">1. Source Code</option> 
     233<option value="basicperms">2. Basic Permissions</option> 
     234<option value="gpl3.drm">3. Digital Restrictions Management</option> 
     235<option value="verbatimcopying">4. Verbatim Copying</option> 
     236<option value="distribmod">5. Distributing Modified Source Versions</option> 
     237<option value="nonsource">6. Non-Source Distribution</option> 
     238<option value="licensecompat">7. License Compatibility</option> 
     239<option value="termination">8. Termination</option> 
     240<option value="notacontract">9. Not A Contract</option> 
     241<option value="autolicense">10. Automatic Licensing of Downstream Users</option> 
     242<option value="licensingpatents">11. Licensing of Patents</option> 
     243<option value="gpl3.libertyordeath">12. Liberty or Death for the Program</option> 
     244<option value="geolimits">[13. Geographical Limitations]</option> 
     245<option value="revisedversions">14. Revised Versions of this License</option> 
     246<option value="requestingexceptions">15. Requesting Exceptions</option> 
     247<option value="nowarranty0">16. NO WARRANTY</option> 
     248<option value="nowarranty1">17. NO WARRANTY (cont.)</option> 
     249<option value="nottested">18. [not tested for safety-critical]</option> 
     250<option value="howtoapply">How to Apply These Terms to Your New Programs</option> 
     251</select></td></tr> 
    228252 
    229253<tr><td class=label align="right"> 
     
    9961020# {{{ Show the results, if we were asked. 
    9971021if ( $ARGS{"DoSearch"} ) { 
    998 my $redirurl = "/comments/$came_from?Query=$Query&Order=$Order&OrderBy=$OrderBy&Rows=$RowsPerPage"; 
     1022my $redirurl = "$came_from?Query=$Query&Order=$Order&OrderBy=$OrderBy&Rows=$RowsPerPage"; 
    9991023   $m->redirect($redirurl); 
    10001024    $m->abort(); 
     
    10291053$RowsPerPage => 30 
    10301054$HideResults => 0 
    1031 $came_from => 'http://gplv3.fsf.org/comments/gplv3-draft-1
     1055$came_from => '/comments/rt/readsay.html
    10321056$Delete => 1 
    10331057$NewQuery => 1 
  • trunk/rtNoAuth/formxml2.html

    r63 r69  
    2525<response> 
    2626<sdp> 
    27 % if ($matched > 1) { 
    28     <nf>too many results</nf> 
    29 % } elsif ($dompath) { 
     27% if ($dompath) { 
    3028    <dp><% $dompath %></dp> 
    3129    <sl><% $selection %></sl> 
     
    3331    <fn>gplv3-draft-1</fn> 
    3432% } else { 
    35     <nf>not found: <% $selection %></nf> 
     33    <nf>not found</nf> 
    3634% } 
    3735</sdp> 
    3836</response> 
    3937<%INIT> 
    40 use XML::DOM
    41 use XML::DOM
     38use XML::Twig
     39require "/var/www/stet/stetsubs.pl"
    4240 
    43 my $parser = new XML::DOM::Parser; 
    44 my $doc = $parser->parsefile ("/var/www/stet/gplv3-draft-1.xml"); 
     41use Data::Dumper; 
    4542 
    46 my $nodes = $doc->getElementsByTagName("sent"); 
    47 my $n = $nodes->getLength; 
     43my $mastertext = '/var/www/stet/gplv3-draft-1.xml'; 
     44open(XML,$mastertext); 
     45# my $wholefile; 
     46our ($dompath, $startid, $matched, $notesubj, $ticket_body, $form, $wholefile); # = 0; 
     47while (<XML>) { 
     48    $wholefile .= $_; 
     49
    4850 
    49 $selection =~ s/\x00$//; 
    50 #print STDERR "selection is "; 
    51 #foreach my $char (split(//,$selection)) { 
    52 #    printf STDERR ( "%02X ", ord($char) ); 
    53 #} 
    54 #print STDERR "\n"; 
    55 #$selection = "software are designed"; 
    56 our ($dompath, $startid, $matched, $notesubj, $ticket_body, $form, $wholefile) = 0; 
    57 for (my $i = 0; $i < $n; $i++) 
    58 
    59     my $node = $nodes->item($i); 
    60     my $sent = $node->toString; 
    61     $sent =~ s/\s+/ /g; 
    62     $selection =~ s/\s+/ /g; 
    63     if ($sent =~ m/.*$selection.*/) { 
    64 #       print STDERR "MATCHED $sent\n"; 
    65         $matched++; 
    66         $startid = $node->getAttribute('id'); 
    67         $dompath = $node->getParentNode->getParentNode->getParentNode->getNodeName; 
    68         $dompath .= "/".$node->getParentNode->getParentNode->getNodeName; 
    69         $dompath .= "[id=".$node->getParentNode->getParentNode->getAttributeNode('id')->getValue."]/"; 
    70         $dompath .= $node->getParentNode->getNodeName; 
    71         $dompath .= "[id=".$node->getParentNode->getAttributeNode('id')->getValue."]/"; 
    72         $dompath .= $node->getNodeName."[id=".$node->getAttributeNode('id')->getValue."]";  
    73          
     51our $selection = $ARGS{'selection'}; 
     52$wholefile =~ s/\s+/ /g; 
     53my @matchcount = $wholefile =~ m/$selection/g; 
     54unless ($#matchcount > 1) { 
     55    my $twig= new XML::Twig(TwigHandlers => { 'sent' => \&sentence, 'title', \&title }, 
     56                            TwigRoots    => {body => 1}); 
     57    $twig->parsefile($mastertext);    # parsing also looks for matches 
     58
     59else {  $matched = 100; } 
     60if ($matched < 1) { 
     61    &noMatch; 
     62
     63elsif ($matched == 1) { 
     64#    print "notesubj is: $notesubj\ntkt_body is:\n$ticket_body\n\n"; 
     65    &oneMatch; 
     66
     67elsif ($matched > 1) { 
     68    &manyMatches;  
     69
     70 
     71sub sentence { 
     72 
     73    if ($selection) { 
     74        my ($twig, $sent) = @_; 
     75        my $sent_txt = $sent->text; 
     76        our $msg; 
     77        $sent_txt =~ s/\s+/ /g; 
     78#     $sent_txt =~ s/\(/\\(/g; 
     79#     $sent_txt =~ s/\)/\\)/g; 
     80#       print "s: $sent_txt\n"; 
     81#       print "sent_txt is ".$sent_txt."\n"; 
     82        print STDERR "$sent_txt =~ $selection\n"; 
     83        if ($sent_txt =~ /$selection/s) { 
     84print STDERR "got a match\n"; 
     85            $startid = $sent->att('id'); 
     86            $dompath = $sent->parent->parent->parent->name."/".$sent->parent->parent->name."[id=".$sent->parent->parent->id."]/".$sent->parent->name."[id=".$sent->parent->id."]/".$sent->name."[id=".$sent->id."]";  
     87            print STDERR "dompath is $dompath\n"; 
     88            $matched++; 
     89            $form = &offerTicket; 
     90#           my $CurrentUser = getEmailUser($msg->header->{'from'}); 
     91        }  
    7492    } 
    7593} 
    7694 
    77 #print $startid."\n".$dompath."\n"; 
    78  # Avoid memory leaks - cleanup circular references for garbage collection 
    79  $doc->dispose; 
     95sub title { 
     96    if ($selection) { 
     97        my ($twig, $title) = @_; 
     98        my $title_txt = $title->text; 
     99        $title_txt =~ s/\n/ /g; 
     100        print STDERR "$title_txt =~ $selection\n"; 
     101        if ($title_txt =~ /$selection/s) { 
     102print STDERR "got a match\n"; 
     103            our $startid = $title->parent->att('id'); 
     104            our $dompath = $title->parent->parent->name."[id=".$title->parent->parent->id."]/".$title->parent->name."[id=".$title->parent->id."]/".$title->name."[id=".$title->id."]"; 
     105            print "matched \"$selection\" in $startid\n (context: $dompath)\n"; 
     106            $matched++; 
     107            our $form = &offerTicket; 
     108#           my $CurrentUser = getEmailUser($msg->header->{'from'}); 
     109        }  
     110    } 
     111
     112 
     113sub offerTicket { 
     114    $form = <<"EOT"; 
     115EOT 
     116    return $form; 
     117
     118sub noMatch { 
     119#print "no match: $selection\n"; 
     120#    print "sending to $addr"; 
     121#    sendMail("/var/www/stet/email-reply-template-notfound.txt",$addr); 
     122
     123 
     124sub oneMatch { 
     125#    print "matched: $selection\n"; 
     126#    print "sending to $addr";     
     127#    sendMail("/var/www/stet/email-reply-template-created.txt",$addr); 
     128
     129 
     130sub manyMatches { 
     131#    print "sending to $addr"; 
     132#    sendMail("/var/www/stet/email-reply-template-toomany.txt",$addr); 
     133
     134 
     135  print STDERR <<"EOT"; 
     136     <dp>$dompath</dp> 
     137     <sl>$selection</sl> 
     138    <si>$startid</si> 
     139     <fn>gplv3-draft-1</fn> 
     140EOT 
    80141 
    81142$r->content_type('text/xml'); 
  • trunk/rtNoAuth/getannotations-devel.html

    r65 r69  
    3535% if ($item) { 
    3636<anf> 
    37 <n><% $item->Transactions->First->Content %></n> 
     37<n><% ptag($item->Transactions->First->Content) %></n> 
    3838%# <e><% $item->FirstCustomFieldValue('NoteEndNodeId') %></e> 
    3939%# <s><% cleanNoteSel(\$item) %></s> 
     
    8383$r->content_type('text/xml'); 
    8484 
    85  
     85sub ptag { 
     86    my $cont = shift; 
     87    if ($cont =~ s/(\S)\n\n(\S)/$1<\/p><p>\n$2/gs) { 
     88        $cont = "<p style=\"display: inline\">$cont</p>"; 
     89    }                    
     90    return $cont; 
     91
    8692</%INIT> 
    8793<%ARGS> 
  • trunk/rtNoAuth/getannotations.html

    r51 r69  
    3535% if ($item) { 
    3636<anf> 
    37 <n><% $item->Transactions->First->Content %></n> 
     37<n><% ptag($item->Transactions->First->Content) %></n> 
    3838%# <e><% $item->FirstCustomFieldValue('NoteEndNodeId') %></e> 
    3939%# <s><% cleanNoteSel(\$item) %></s> 
     
    8383$r->content_type('text/xml'); 
    8484 
    85  
     85sub ptag { 
     86    my $cont = shift; 
     87    if ($cont =~ s/(\S)\n\n(\S)/$1<\/p><p>\n$2/gs) { 
     88        $cont = "<p style=\"display: inline\">$cont</p>"; 
     89    }                    
     90    return $cont; 
     91
    8692</%INIT> 
    8793<%ARGS> 
  • trunk/rtNoAuth/readsay-ancestry.html

    r64 r69  
    2222%# along with this software.  If not, see <http://www.gnu.org/licenses/>. 
    2323%#   
    24 % 
    2524% sub displayTicket($$$); 
    2625% 
     
    3029<title>read GPLv3 comments: <% humanQuery($ARGS{'Query'}) || $ARGS{'id'} %></title> 
    3130<link rel="stylesheet" type="text/css" href="/comments/stet.css" /> 
     31<script type="text/javascript" src="/comments/prototype.js"></script> 
     32<script type="text/javascript"> 
     33function hideall(class) { 
     34var sc = document.getElementsByClassName(class); 
     35sc.length.times(function(n) { 
     36Element.hide(sc[n]); 
     37}); 
     38 
     39} 
     40function showall(class) { 
     41var sc = document.getElementsByClassName(class); 
     42sc.length.times(function(n) { 
     43Element.show(sc[n]); 
     44}); 
     45} 
     46function togExp(el) { 
     47if (el.innerHTML.indexOf('collapse') != -1) { 
     48el.innerHTML = "expand children"; 
     49el.setAttribute('onclick',"showall('child'); togExp(this); return false;"); 
     50} 
     51else { 
     52el.innerHTML = "collapse children"; 
     53el.setAttribute('onclick',"hideall('child'); togExp(this); return false;"); 
     54} 
     55} 
     56</script> 
    3257</head> 
    3358<body> 
     
    3964%   if ($Tickets->CountAll() > $Rows) { 
    4065%       if ($StartAt > 1 ) { 
    41       <a href="/comments/rt/readsay.html?Query=<% $ARGS{'Query'} |n %>&amp;Rows=<%$Rows%>&amp;StartAt=<% (($StartAt - $Rows) < 0) ? 1 : ($StartAt - $Rows) |n%>">prev <% $Rows %></a> 
     66      <a href="/comments/rt/summarydecision.html?filename=<% $filename %>&Query=<% $ARGS{'Query'} |n %>&amp;Rows=<%$Rows%>&amp;StartAt=<% (($StartAt - $Rows) < 0) ? 1 : ($StartAt - $Rows) |n%>">prev <% $Rows %></a> 
    4267%       } 
    4368%   if (($Tickets->CountAll() > $Rows) && ($Tickets->CountAll() < $StartAt + $Rows)) { 
     
    4570%   } 
    4671%   if ($Tickets->CountAll() > $StartAt + $Rows) { 
    47          <a href="/comments/rt/readsay.html?Query=<% $ARGS{'Query'} |n %>&amp;Rows=<%$Rows%>&amp;StartAt=<% $StartAt + $Rows %>">next <% $Rows %></a> 
     72         <a href="/comments/rt/summarydecision.html?filename=<% $filename %>&Query=<% $ARGS{'Query'} |n %>&amp;Rows=<%$Rows%>&amp;StartAt=<% $StartAt + $Rows %>">next <% $Rows %></a> 
    4873%   } 
    4974%} 
    5075) 
    51 <a href="/comments/rt/changeshown.html?came_from=rt/readsay.html">search</a>  
     76<a href="/comments/rt/changeshown.html?came_from=rt/summarydecision.html&filename=<% $filename %>">search</a>  
    5277<%perl>  
    5378    $Tickets->GotoFirstItem; 
     
    5984</%perl> 
    6085% } elsif ($Ticket) { 
    61 Showing comment <a href="/comments/rt/readsay.html?id=<% $ARGS{'id'} %>"><% $ARGS{'id'} %></a> <a class="rsslink" href="<% $rsslink %>">[rss]</a> <a href="/comments/<% stripCrap($Ticket->FirstCustomFieldValue('NoteUrl')) %>?id=<% $ARGS{'id'} %>#<% $Ticket->FirstCustomFieldValue('NoteStartNodeId') %>">[see on license]</a> <a href="/comments/rt/changeshown.html?came_from=<% stripCrap($Ticket->FirstCustomFieldValue('NoteUrl')) %>">search</a> 
     86Showing comment <a href="/comments/rt/summarydecision.html?filename=<% $filename %>&id=<% $ARGS{'id'} %>"><% $ARGS{'id'} %></a> <a class="rsslink" href="<% $rsslink %>">[rss]</a> <a href="/comments/<% stripCrap($Ticket->FirstCustomFieldValue('NoteUrl')) %>?id=<% $ARGS{'id'} %>#<% $ARGS{'id'} %>">[see on license]</a> <a href="/comments/rt/changeshown.html?came_from=<% stripCrap($Ticket->FirstCustomFieldValue('NoteUrl')) %>">search</a> 
    6287% } 
    6388% if ($name) { 
    6489</span><span id="login" class="login">you are <% $name %>: <a href="http://gplv3.fsf.org/logout">logout</a></span></div> 
    6590% } else { 
    66 </span><span id="login" class="login">you could <a href="http://gplv3.fsf.org/login_form?came_from=/comments/rt/readsay.html?<% $Tickets ? 'Query='.$ARGS{'Query'} : 'id='.$ARGS{'id'} %>">login</a></span></div> 
     91</span><span id="login" class="login">you could <a href="http://gplv3.fsf.org/login_form?came_from=/comments/rt/summarydecision.html?filename=<% $filename %>&<% $Tickets ? 'Query='.$ARGS{'Query'} : 'id='.$ARGS{'id'} %>&filename=<% $filename %>">login</a></span></div> 
    6792% } 
    6893<& header.html, name => $name &> 
     
    90115% if (!$deletelink) { 
    91116%  if ($resp == 1) { 
    92     <form action="readsay.html" method="POST" name="TicketUpdate" enctype="multipart/form-data"> 
     117    <form action="summarydecision.html" method="POST" name="TicketUpdate" enctype="multipart/form-data"> 
     118<input type="hidden" name="filename" value="<% $filename %>"> 
    93119       <input type="hidden" name="id" value="<% $item->id %>"> 
    94120%  } 
     
    96122 
    97123% if ($item->QueueObj->CurrentUserHasRight('SeeQueue')) { 
    98  <div class="onecomment<% ($item->QueueObj->Name =~ /Drafter/) && " Drafter" %>"> 
    99   <h4><% ($item->QueueObj->Name =~ /Drafter/) && " Drafter's " %><% thingType(\$item) %> <a href="readsay.html?id=<% $item->id %>"><% $item->id %>: <% $item->Subject %></a> 
     124 <div class="onecomment<% ($item->QueueObj->Name =~ /Drafter/) && " Drafter" %><% $deletelink && " child\" id=\"child".$item->id |n %>"> 
     125  <h4><% ($item->QueueObj->Name =~ /Drafter/) && " Drafter's " %><% thingType(\$item) %> <a href="summarydecision.html?filename=<% $filename %>&id=<% $item->id %>"><% $item->id %>: <% $item->Subject %></a> 
     126%  if ($item->Queue == $fsfqueue) { 
     127<div class="admin">This issue has been escalated to the Drafters <!-- by fixme --> </div> 
     128%  } 
    100129%      if (($HasIssueRights) && ($showactions) && ($deletelink)) { 
    101130            <span class="TktInput">[dissociate: <INPUT TYPE=CHECKBOX NAME="<% $deletelink %>" value="1">]</span> 
     
    103132</h4> 
    104133% if (!$deletelink) { 
    105 %   while (my $link = $item->MemberOf->Next) { 
    106     <span class="formHelpIsh">This <% thingType(\$item) %> is part of the discussion  on:<br/> #<& Elements/ShowLink, URI => $link->TargetURI, StetId => $link->id  &></span><span class="TktInput"> 
    107 
    108 %      if ($HasIssueRights == 1) { 
    109            <span class="TktInput">[dissociate from parent: <INPUT TYPE=CHECKBOX NAME="DeleteLink--<% $link->Type %>-<% $link->Target %>" value="1">]</span> 
    110 %      } 
    111        <br/> 
    112 % } 
     134%#   while (my $link = $item->DependsOn->Next) { 
     135%#    <span class="formHelpIsh">This <% thingType(\$item) %> is part of the discussion  on:<br/> #<& Elements/ShowLink, URI => $link->TargetURI, StetId => $link->id  &></span><span class="TktInput"> 
     136%#   while (my $link = $item->DependsOn->Next) { 
     137    <span class="formHelpIsh">This <% thingType(\$item) %> is part of the discussion  on:<br/> <% listAncestry(\$item,0) |n%></span><span class="TktInput"> 
     138
     139%#     if ($HasIssueRights == 1) { 
     140%#         <span class="TktInput">[dissociate from parent: <INPUT TYPE=CHECKBOX NAME="DeleteLink--<% $link->Type %>-<% $link->Target %>" value="1">]</span> 
     141% #     } 
     142%#       <br/> 
     143%# } 
    113144 
    114145%   } 
    115146<br/> 
    116147  <span class="formHelpIsh">Regarding the text:</span> <span class="ontextText"><q><% $scrubber->scrub($item->FirstCustomFieldValue('NoteSelection')) %></q></span><br/> 
    117     <span class="formHelpIsh">In section: <span class="nodeLink"><a href="/comments/rt/readsay.html?Query=%20'CF.NoteStartNodeId'%20LIKE%20'<% $scrubber->scrub($item->FirstCustomFieldValue('NoteStartNodeId')) %>'%20AND%20'CF.NoteUrl'%20LIKE%20'<%stripCrap($item->FirstCustomFieldValue('NoteUrl'))%>'%20"><% $scrubber->scrub($item->FirstCustomFieldValue('NoteStartNodeId')) %></a></span></span><br/> 
     148    <span class="formHelpIsh">In section: <span class="nodeLink"><a href="/comments/rt/summarydecision.html?filename=<% $filename %>&Query=%20'CF.NoteStartNodeId'%20LIKE%20'<% $scrubber->scrub($item->FirstCustomFieldValue('NoteStartNodeId')) %>'%20AND%20'CF.NoteUrl'%20LIKE%20'<%stripCrap($item->FirstCustomFieldValue('NoteUrl'))%>'%20"><% $scrubber->scrub($item->FirstCustomFieldValue('NoteStartNodeId')) %></a></span></span><br/> 
    118149%#    In section: <span class="nodeLink"><a href="/comments/<%stripCrap($item->FirstCustomFieldValue('NoteUrl'))%>?Query=%20'CF.NoteStartNodeId'%20LIKE%20'<% $scrubber->scrub($item->FirstCustomFieldValue('NoteStartNodeId')) %>'%20AND%20'CF.NoteUrl'%20LIKE%20'<%stripCrap($item->FirstCustomFieldValue('NoteUrl'))%>'%20"><% $scrubber->scrub($item->FirstCustomFieldValue('NoteStartNodeId')) %></a></span><br/> 
    119150  <span class="formHelpIsh">Submitted by: <% userlink(\$item, \$item) |n%> <span class="date">on <% doDate(\$item) %></span></span><br/> 
     151<% listAgree(\$item) %> 
    120152%# my ($agrees,$agr_count) = showAgree(\$item); 
    121153%# print STDERR "agree is $agree\n"; 
     
    125157<br/> 
    126158<% getThread(\$item) |n %> 
    127  
    128 %   if ($item->Members->GotoFirstItem) { 
     159<br/><strong><a href="#" onclick="hideall('child'); togExp(this); return false;">collapse children</a></strong><br>  
     160 
     161%   if ($item->DependedOnBy->GotoFirstItem) { 
    129162        <em>this <% thingType(\$item) %> does not have any children </em><br/> 
    130163%   } 
    131164<br/> 
    132 %   while (my $link = $item->Members->Next) { 
    133     <span class="TktLabel">Child comment of <% $item->id %>:</span
     165%   while (my $link = $item->DependedOnBy->Next) { 
     166    <span class="TktLabel">Child comment of <% $item->id %>: <a href="#" onclick="javascript:Element.toggle(document.getElementById('child<% $link->BaseURI->Object->id %>'));return false;"><% $link->BaseURI->Object->id %>: <% $link->BaseURI->Object->Subject %> &plusmn;</a></span><br/
    134167%    my $child = RT::Ticket->new($CurrentUser); 
    135168%    $child->Load($link->BaseURI->Object->id); 
     
    141174<br/> 
    142175  <span class="TktLabel">Children:</span><br/> 
    143         <span class="TktInput indent">add new: <INPUT NAME="MemberOf-<% $item->id %>"> <span class="inputcaption">[comment id numbers, space separated]</span></span> 
     176        <span class="TktInput indent">add new: <INPUT NAME="DependsOn-<% $item->id %>"> <span class="inputcaption">[comment id numbers, space separated]</span></span> 
    144177%  } 
    145178% if (($showactions) & (!$deletelink)){ 
     
    147180%  if ($HasIssueRights) { 
    148181    <span class="TktLabel">Parents:</span><br/> 
    149        <span class="TktInput indent">add new: <INPUT NAME="<% $item->id %>-MemberOf"> <span class="inputcaption">[comment id numbers, space separated]</span></span> 
     182       <span class="TktInput indent">add new: <INPUT NAME="<% $item->id %>-DependsOn"> <span class="inputcaption">[comment id numbers, space separated]</span></span> 
    150183%  } 
    151184    <br/> 
     
    198231      </select><br/></span> 
    199232% 
    200 %  if (($HasIssueRights) && ($item->Queue != $issuequeue)) { 
    201        <input type="checkbox" value="1" name="MakeIssue"/><span class="TktLabel"> Upgrade this to an Issue</span><br/> 
    202 %  } 
    203 %  if (($HasIssueRights) && ($item->Queue == $issuequeue)) { 
    204     <input type="checkbox" value="1" name="NonIssue"/><span class="TktLabel"> Downgrade this Issue to a Comment</span><br/> 
     233%  if (($HasIssueRights) && ($item->Queue != ($issuequeue || $fsfqueue ))) { 
     234       <input type="checkbox" value="1" name="MakeIssue"/><span class="TktLabel"> Upgrade this Comment to an Issue</span><br/> 
     235 
     236%  } 
     237%  if (($HasIssueRights) && ($item->Queue == ($issuequeue || $fsfqueue))) { 
     238<div class="admin box"> 
     239       <input type="radio" value="Escalated" name="ChangeQueue"/><span class="TktLabel"> Escalate this for FSF review (intentionally hard to undo)</span><br/> 
     240    <input type="radio" value="Inbox" name="ChangeQueue"/><span class="TktLabel"> Downgrade this Issue to a Comment</span></div> 
    205241%  } 
    206242% if ($item->OwnerObj->Name =~ "Nobody") { 
     
    246282require "/var/www/stet/stetsubs.pl"; 
    247283our $issuequeue = 5;  
     284our $fsfqueue = 6; 
    248285my $rc = 0; 
    249286our ($name, $resp, $CurrentUser, $HasIssueRights); 
     
    276313        $Ticket->SetQueue($issuequeue); 
    277314    } 
    278     if ($ARGS{'NonIssue'}) { 
    279         $Ticket->SetQueue('Inbox'); 
     315    if ($ARGS{'ChangeQueue'}) { 
     316        $Ticket->SetQueue($ARGS{'ChangeQueue'}); 
    280317    } 
    281318 
     
    306343if ($item->Queue == 5) { 
    307344    return "Issue"; 
     345} 
     346elsif ($item->Queue == 6) { 
     347    return "Escalated Issue"; 
    308348} 
    309349else { 
     
    347387#                        } 
    348388                 
    349                 $allcomments .= "<span class=\"formHelpIsh\">Comment noted by ". userlink(\$item,\$message) ." <span class=\"date\">on ".doDate(\$message).":</span></span></span>\n";                 
     389                $allcomments .= "<span class=\"formHelpIsh\">noted by ". userlink(\$item,\$message) ." <span class=\"date\">on ".doDate(\$message).":</span></span></span>\n";                 
    350390                $allcomments .= "<blockquote><h4>$subj</h4>\n".$cont."</blockquote>\n"; 
    351391 
     
    381421} 
    382422 
    383 sub getTZ($) { 
     423sub getTZ($) {  # RT doesn't store dates with timezones.   
     424# this implementation is somehow wrong, though... 
    384425my $date = shift; 
    385426$date =~ s/\d\d\d\d-(\d\d)-\d\d.*/$1/; 
     
    393434 
    394435return $eastern; 
     436} 
     437 
     438sub listAgree($) { 
     439    my $item = shift; 
     440    my $agr_vals; 
     441    my $showagree = '';  
     442    $agr_vals = $$item->CustomFieldValues(7); 
     443    while (my $value = $agr_vals->Next) { 
     444        $showagree .= $value->Content.", "; 
     445    } 
     446    $showagree =~ s/\n,/,/g; 
     447    $showagree =~ s/, $//g; 
     448    return $agr_vals->Count. " agree: ".$showagree; 
     449} 
     450 
     451sub listAncestry($$) { 
     452my $itemref = shift; 
     453my $item = $$itemref; 
     454my $depth = shift; 
     455    my $returnlist = ''; 
     456    while (my $parent = $item->DependsOn->Next) { 
     457        if ($parent->TargetURI->IsLocal) { 
     458            my $ptkt = RT::Ticket->new($CurrentUser); 
     459            $ptkt->Load($parent->TargetObj->id); 
     460            $depth++; 
     461            my $fn = stripCrap($item->FirstCustomFieldValue('NoteUrl')); 
     462            $returnlist = ("&nbsp;" x $depth ). thingType(\$ptkt). "#<a href=\"/comments/rt/summarydecision.html?filename=<% $fn %>&id=".$ptkt->id."\">".$ptkt->id."  ".$ptkt->Subject."</a><br/>\n"; 
     463 
     464            $returnlist = listAncestry(\$ptkt,$depth) . $returnlist; 
     465        } 
     466        $depth--; 
     467    } 
     468 
     469return $returnlist; 
    395470} 
    396471 
     
    401476$Order => 'DESC' 
    402477$Query => "'CF.NoteUrl' LIKE 'gplv3-draft-1'" 
     478$filename => 'gplv3-draft-1' 
    403479$Take => undef 
    404480$Steal => undef 
  • trunk/rtNoAuth/readsay-devel.html

    r38 r69  
    2222%# along with this software.  If not, see <http://www.gnu.org/licenses/>. 
    2323% 
    24 % 
    2524% sub displayTicket($$$); 
    2625% 
     
    3029<title>read GPLv3 comments: <% humanQuery($ARGS{'Query'}) || $ARGS{'id'} %></title> 
    3130<link rel="stylesheet" type="text/css" href="/comments/stet.css" /> 
     31<script type="text/javascript" src="/comments/prototype.js"></script> 
     32<script type="text/javascript"> 
     33function hideall(class) { 
     34var sc = document.getElementsByClassName(class); 
     35sc.length.times(function(n) { 
     36Element.hide(sc[n]); 
     37}); 
     38 
     39} 
     40function showall(class) { 
     41var sc = document.getElementsByClassName(class); 
     42sc.length.times(function(n) { 
     43Element.show(sc[n]); 
     44}); 
     45} 
     46function togExp(el) { 
     47if (el.innerHTML.indexOf('collapse') != -1) { 
     48el.innerHTML = "expand children"; 
     49el.setAttribute('onclick',"showall('child'); togExp(this); return false;"); 
     50} 
     51else { 
     52el.innerHTML = "collapse children"; 
     53el.setAttribute('onclick',"hideall('child'); togExp(this); return false;"); 
     54} 
     55} 
     56</script> 
    3257</head> 
    3358<body> 
     
    5984</%perl> 
    6085% } elsif ($Ticket) { 
    61 Showing comment <a href="/comments/rt/readsay.html?id=<% $ARGS{'id'} %>"><% $ARGS{'id'} %></a> <a class="rsslink" href="<% $rsslink %>">[rss]</a> <a href="/comments/<% stripCrap($Ticket->FirstCustomFieldValue('NoteUrl')) %>?id=<% $ARGS{'id'} %>#<% $Ticket->FirstCustomFieldValue('NoteStartNodeId') %>">[see on license]</a> <a href="/comments/rt/changeshown.html?came_from=<% stripCrap($Ticket->FirstCustomFieldValue('NoteUrl')) %>">search</a> 
     86Showing comment <a href="/comments/rt/readsay.html?id=<% $ARGS{'id'} %>"><% $ARGS{'id'} %></a> <a class="rsslink" href="<% $rsslink %>">[rss]</a> <a href="/comments/<% stripCrap($Ticket->FirstCustomFieldValue('NoteUrl')) %>?id=<% $ARGS{'id'} %>#<% $ARGS{'id'} %>">[see on license]</a> <a href="/comments/rt/changeshown.html?came_from=<% stripCrap($Ticket->FirstCustomFieldValue('NoteUrl')) %>">search</a> 
    6287% } 
    6388% if ($name) { 
     
    6691</span><span id="login" class="login">you could <a href="http://gplv3.fsf.org/login_form?came_from=/comments/rt/readsay.html?<% $Tickets ? 'Query='.$ARGS{'Query'} : 'id='.$ARGS{'id'} %>">login</a></span></div> 
    6792% } 
    68 <& header-devel.html, name => $name &> 
     93<& header.html, name => $name &> 
    6994<div id="readsaymain"> 
    7095<span id="listactions"> 
     
    88113% my $showactions = shift; 
    89114% my $deletelink = shift; 
     115% if (!$deletelink) { 
     116%  if ($resp == 1) { 
     117    <form action="readsay-devel.html" method="POST" name="TicketUpdate" enctype="multipart/form-data"> 
     118       <input type="hidden" name="id" value="<% $item->id %>"> 
     119%  } 
     120% } 
     121 
    90122% if ($item->QueueObj->CurrentUserHasRight('SeeQueue')) { 
    91  <div class="onecomment"> 
    92   <h4><% thingType(\$item) %> <a href="readsay.html?id=<% $item->id %>"><% $item->id %>: <% $item->Subject %></a> 
     123 <div class="onecomment<% ($item->QueueObj->Name =~ /Drafter/) && " Drafter" %><% $deletelink && " child\" id=\"child".$item->id |n %>"> 
     124  <h4><% ($item->QueueObj->Name =~ /Drafter/) && " Drafter's " %><% thingType(\$item) %> <a href="readsay.html?id=<% $item->id %>"><% $item->id %>: <% $item->Subject %></a> 
     125%  if ($item->Queue == $fsfqueue) { 
     126<div class="admin">This issue has been escalated to the Drafters <!-- by fixme --> </div> 
     127%  } 
    93128%      if (($HasIssueRights) && ($showactions) && ($deletelink)) { 
    94129            <span class="TktInput">[dissociate: <INPUT TYPE=CHECKBOX NAME="<% $deletelink %>" value="1">]</span> 
     
    111146%#    In section: <span class="nodeLink"><a href="/comments/<%stripCrap($item->FirstCustomFieldValue('NoteUrl'))%>?Query=%20'CF.NoteStartNodeId'%20LIKE%20'<% $scrubber->scrub($item->FirstCustomFieldValue('NoteStartNodeId')) %>'%20AND%20'CF.NoteUrl'%20LIKE%20'<%stripCrap($item->FirstCustomFieldValue('NoteUrl'))%>'%20"><% $scrubber->scrub($item->FirstCustomFieldValue('NoteStartNodeId')) %></a></span><br/> 
    112147  <span class="formHelpIsh">Submitted by: <% userlink(\$item, \$item) |n%> <span class="date">on <% doDate(\$item) %></span></span><br/> 
     148<% listAgree(\$item) %> 
    113149%# my ($agrees,$agr_count) = showAgree(\$item); 
    114150%# print STDERR "agree is $agree\n"; 
     
    118154<br/> 
    119155<% getThread(\$item) |n %> 
     156<br/><strong><a href="#" onclick="hideall('child'); togExp(this); return false;">collapse children</a></strong><br>  
    120157 
    121158%   if ($item->Members->GotoFirstItem) { 
     
    124161<br/> 
    125162%   while (my $link = $item->Members->Next) { 
    126     <span class="TktLabel">Child comment of <% $item->id %>:</span
     163    <span class="TktLabel">Child comment of <% $item->id %>: <a href="#" onclick="javascript:Element.toggle(document.getElementById('child<% $link->BaseURI->Object->id %>'));return false;"><% $link->BaseURI->Object->id %>: <% $link->BaseURI->Object->Subject %> &plusmn;</a></span><br/
    127164%    my $child = RT::Ticket->new($CurrentUser); 
    128165%    $child->Load($link->BaseURI->Object->id); 
    129 % my $deletelink = "DeleteLink-". $link->Base ."-". $link->Type
     166% my $deletelink = "DeleteLink-". $link->Base ."-". $link->Type."-"
    130167<% displayTicket(\$child,$showactions,$deletelink) %> 
    131168%   } 
    132  
     169<br/> 
    133170%  if (($HasIssueRights) && ($showactions) && (!$deletelink)) { 
    134171<br/> 
     
    137174%  } 
    138175% if (($showactions) & (!$deletelink)){ 
    139 %  if ($resp == 1) { 
    140     <form action="readsay.html" method="POST" name="TicketUpdate" enctype="multipart/form-data"> 
    141        <input type="hidden" name="id" value="<% $item->id %>"> 
    142 %  } 
    143  
     176<br/> 
    144177%  if ($HasIssueRights) { 
    145     <span class="TktLabel">Parents:</span> 
     178    <span class="TktLabel">Parents:</span><br/> 
    146179       <span class="TktInput indent">add new: <INPUT NAME="<% $item->id %>-MemberOf"> <span class="inputcaption">[comment id numbers, space separated]</span></span> 
    147180%  } 
     
    155188        <A HREF="<% $link->Target %>"><% $link->Target %></A> 
    156189%       if ($HasIssueRights) { 
    157             <span class="TktInput">[delete: <INPUT TYPE=CHECKBOX NAME="DeleteLink-<% $link->Base %>-<% $link->Type %>" value="1">]</span> 
     190            <span class="TktInput">[delete: <INPUT TYPE=CHECKBOX NAME="DeleteLink--<% $link->Base %>-<% $link->Type %>" value="1">]</span> 
    158191%           } 
    159192 <br/> 
     
    195228      </select><br/></span> 
    196229% 
    197 %  if (($HasIssueRights) && ($item->Queue != $issuequeue)) { 
    198        <input type="checkbox" value="1" name="MakeIssue"/><span class="TktLabel"> Upgrade this to an Issue</span><br/> 
    199 %  } 
    200 %  if (($HasIssueRights) && ($item->Queue == $issuequeue)) { 
    201     <input type="checkbox" value="1" name="NonIssue"/><span class="TktLabel"> Downgrade this Issue to a Comment</span><br/> 
     230%  if (($HasIssueRights) && ($item->Queue != ($issuequeue || $fsfqueue ))) { 
     231       <input type="checkbox" value="1" name="MakeIssue"/><span class="TktLabel"> Upgrade this Comment to an Issue</span><br/> 
     232 
     233%  } 
     234%  if (($HasIssueRights) && ($item->Queue == ($issuequeue || $fsfqueue))) { 
     235<div class="admin box"> 
     236       <input type="radio" value="Escalated" name="ChangeQueue"/><span class="TktLabel"> Escalate this for FSF review (intentionally hard to undo)</span><br/> 
     237    <input type="radio" value="Inbox" name="ChangeQueue"/><span class="TktLabel"> Downgrade this Issue to a Comment</span></div> 
    202238%  } 
    203239% if ($item->OwnerObj->Name =~ "Nobody") { 
     
    243279require "/var/www/stet/stetsubs.pl"; 
    244280our $issuequeue = 5;  
     281our $fsfqueue = 6; 
    245282my $rc = 0; 
    246283our ($name, $resp, $CurrentUser, $HasIssueRights); 
     
    273310        $Ticket->SetQueue($issuequeue); 
    274311    } 
    275     if ($ARGS{'NonIssue'}) { 
    276         $Ticket->SetQueue('Inbox'); 
     312    if ($ARGS{'ChangeQueue'}) { 
     313        $Ticket->SetQueue($ARGS{'ChangeQueue'}); 
    277314    } 
    278315 
     
    302339    my $item = $$itemref; 
    303340if ($item->Queue == 5) { 
    304     return "issue"; 
     341    return "Issue"; 
     342
     343elsif ($item->Queue == 6) { 
     344    return "Escalated Issue"; 
    305345} 
    306346else { 
    307     return "comment"; 
     347    return "Comment"; 
    308348} 
    309349} 
     
    344384#                        } 
    345385                 
    346                 $allcomments .= "<span class=\"formHelpIsh\">Comment noted by ". userlink(\$item,\$message) ." <span class=\"date\">on ".doDate(\$message).":</span></span></span>\n";                 
     386                $allcomments .= "<span class=\"formHelpIsh\">noted by ". userlink(\$item,\$message) ." <span class=\"date\">on ".doDate(\$message).":</span></span></span>\n";                 
    347387                $allcomments .= "<blockquote><h4>$subj</h4>\n".$cont."</blockquote>\n"; 
    348388 
     
    351391        } 
    352392            else { 
    353                 unless (($Transaction->CreatorObj->Name =~ "RT_System") || ($Transaction->BriefDescription =~ "NoteText|NoteSelection|NodeId")) { 
     393                unless (($Transaction->CreatorObj->Name =~ "RT_System") || ($Transaction->BriefDescription =~ "NoteText|NoteSelection|NodeId|Agreeer")) { 
    354394                
    355395                    $allcomments .= "<div class=\"formHelpIsh\">".$Transaction->BriefDescription." by ".userlink(\$item,\$Transaction)." <span class=\"date\">on ".doDate(\$Transaction)."</span></div>\n"; 
     
    368408    my $msgref = shift; 
    369409    my $message = $$msgref; 
    370     return "<span class=\"userlink\"><a href=\"/comments/".$item->FirstCustomFieldValue('NoteUrl')."?Query=%20Requestor.Name%20LIKE%20'".$message->CreatorObj->Name."'%20AND