[dw-free] Page does not jump to just-posted comment when collapsed
[commit: http://hg.dwscoalition.org/dw-free/rev/cbf361b1a2b2]
http://bugs.dwscoalition.org/show_bug.cgi?id=912
Standardize comment thread anchors on #ljcmt, for now. Refactors into
functions so that we can easily change it later.
Patch by
kareila.
Files modified:
http://bugs.dwscoalition.org/show_bug.cgi?id=912
Standardize comment thread anchors on #ljcmt, for now. Refactors into
functions so that we can easily change it later.
Patch by
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Files modified:
- cgi-bin/LJ/Comment.pm
- cgi-bin/LJ/Event/JournalNewComment.pm
- cgi-bin/LJ/Portal/Box/RecentComments.pm
- cgi-bin/LJ/S2/EntryPage.pm
- cgi-bin/LJ/S2/ReplyPage.pm
- cgi-bin/talklib.pl
- htdocs/admin/recent_comments.bml
- htdocs/talkpost_do.bml
- htdocs/talkread.bml
- htdocs/talkscreen.bml
- htdocs/tools/recent_comments.bml
-------------------------------------------------------------------------------- diff -r 8d97fd81d6c0 -r cbf361b1a2b2 cgi-bin/LJ/Comment.pm --- a/cgi-bin/LJ/Comment.pm Thu Jul 23 17:02:45 2009 +0000 +++ b/cgi-bin/LJ/Comment.pm Thu Jul 23 17:30:00 2009 +0000 @@ -221,8 +221,9 @@ sub url { my $entry = $self->entry; my $url = $entry->url; - return "$url?thread=$dtalkid#t$dtalkid"; + return "$url?thread=$dtalkid" . LJ::Talk::comment_anchor( $dtalkid ); } +*thread_url = \&url; sub reply_url { my $self = shift; @@ -232,16 +233,6 @@ sub reply_url { my $url = $entry->url; return "$url?replyto=$dtalkid"; -} - -sub thread_url { - my $self = shift; - - my $dtalkid = $self->dtalkid; - my $entry = $self->entry; - my $url = $entry->url; - - return "$url?thread=$dtalkid#t$dtalkid"; } sub parent_url { diff -r 8d97fd81d6c0 -r cbf361b1a2b2 cgi-bin/LJ/Event/JournalNewComment.pm --- a/cgi-bin/LJ/Event/JournalNewComment.pm Thu Jul 23 17:02:45 2009 +0000 +++ b/cgi-bin/LJ/Event/JournalNewComment.pm Thu Jul 23 17:30:00 2009 +0000 @@ -200,11 +200,12 @@ sub content { my $comment_body = $comment->body_html; my $buttons = $comment->manage_buttons; my $dtalkid = $comment->dtalkid; + my $htmlid = LJ::Talk::comment_htmlid( $dtalkid ); $comment_body =~ s/\n/<br \/>/g; my $ret = qq { - <div id="ljcmt$dtalkid" class="JournalNewComment"> + <div id="$htmlid" class="JournalNewComment"> <div class="ManageButtons">$buttons</div> <div class="Body">$comment_body</div> </div> diff -r 8d97fd81d6c0 -r cbf361b1a2b2 cgi-bin/LJ/Portal/Box/RecentComments.pm --- a/cgi-bin/LJ/Portal/Box/RecentComments.pm Thu Jul 23 17:02:45 2009 +0000 +++ b/cgi-bin/LJ/Portal/Box/RecentComments.pm Thu Jul 23 17:30:00 2009 +0000 @@ -129,16 +129,17 @@ sub generate_content { # print out comment w/ links my $posturl = "$root/$lrow->{ditemid}.html"; - my $replyurl = LJ::Talk::talkargs($posturl, "replyto=$talkid"); - my $talkurl = "$root/$lrow->{ditemid}.html?thread=$talkid\#t$talkid"; + my $replyurl = LJ::Talk::talkargs( $posturl, "replyto=$talkid" ); + my $talkurl = LJ::Talk::talkargs( $posturl, "thread=$talkid" ) . LJ::Talk::comment_anchor( $talkid ); my $userlink = LJ::isu($pu) ? LJ::ljuser($pu) : "<i>(Anonymous)</i>"; + my $htmlid = LJ::Talk::comment_htmlid( $talkid ); # clean comment subject/text LJ::CleanHTML::clean_subject_all(\$subject); LJ::CleanHTML::clean_comment(\$body); $content .= qq { - <tr id="ljcmt$talkid"> + <tr id="$htmlid"> <td> <span class="RecentCommentTitle">$userlink </span> diff -r 8d97fd81d6c0 -r cbf361b1a2b2 cgi-bin/LJ/S2/EntryPage.pm --- a/cgi-bin/LJ/S2/EntryPage.pm Thu Jul 23 17:02:45 2009 +0000 +++ b/cgi-bin/LJ/S2/EntryPage.pm Thu Jul 23 17:30:00 2009 +0000 @@ -193,7 +193,7 @@ sub EntryPage if ($com->{'parenttalkid'}) { my $dparent = ($com->{'parenttalkid'} << 8) + $entry->anum; - $par_url = LJ::Talk::talkargs($permalink, "thread=$dparent", $style_arg) . "#t$dparent"; + $par_url = LJ::Talk::talkargs($permalink, "thread=$dparent", $style_arg) . LJ::Talk::comment_anchor( $dparent ); } my $poster; @@ -222,7 +222,7 @@ sub EntryPage 'metadata' => { 'picture_keyword' => $com->{'props'}->{'picture_keyword'}, }, - 'permalink_url' => "$permalink?thread=$dtalkid#t$dtalkid", + 'permalink_url' => "$permalink?thread=$dtalkid" . LJ::Talk::comment_anchor( $dtalkid ), 'reply_url' => $reply_url, 'poster' => $poster, 'replies' => [], @@ -242,8 +242,8 @@ sub EntryPage 'frozen' => $com->{'state'} eq "F" ? 1 : 0, 'deleted' => $com->{'state'} eq "D" ? 1 : 0, 'link_keyseq' => [ 'delete_comment' ], - 'anchor' => "t$dtalkid", - 'dom_id' => "ljcmt$dtalkid", + 'anchor' => LJ::Talk::comment_htmlid( $dtalkid ), + 'dom_id' => LJ::Talk::comment_htmlid( $dtalkid ), 'comment_posted' => $commentposted, 'edited' => $edited ? 1 : 0, 'time_remote' => $datetime_remote, @@ -274,7 +274,7 @@ sub EntryPage push @$link_keyseq, "watching_parent" if LJ::is_enabled('esn'); unshift @$link_keyseq, "edit_comment" if LJ::is_enabled('edit_comments'); - $s2com->{'thread_url'} = LJ::Talk::talkargs($permalink, "thread=$dtalkid", $style_arg) . "#t$dtalkid"; + $s2com->{'thread_url'} = LJ::Talk::talkargs($permalink, "thread=$dtalkid", $style_arg) . LJ::Talk::comment_anchor( $dtalkid ); # add the poster_ip metadata if remote user has # access to see it. diff -r 8d97fd81d6c0 -r cbf361b1a2b2 cgi-bin/LJ/S2/ReplyPage.pm --- a/cgi-bin/LJ/S2/ReplyPage.pm Thu Jul 23 17:02:45 2009 +0000 +++ b/cgi-bin/LJ/S2/ReplyPage.pm Thu Jul 23 17:30:00 2009 +0000 @@ -184,7 +184,7 @@ sub ReplyPage 'poster' => $s2poster, 'journal' => $s2entry->{'journal'}, 'metadata' => {}, - 'permalink_url' => $u->{'_journalbase'} . "/$ditemid.html?view=$dtalkid#t$dtalkid", + 'permalink_url' => $u->{'_journalbase'} . "/$ditemid.html?view=$dtalkid" . LJ::Talk::comment_anchor( $dtalkid ), 'depth' => 1, 'time' => $datetime, 'system_time' => $datetime, diff -r 8d97fd81d6c0 -r cbf361b1a2b2 cgi-bin/talklib.pl --- a/cgi-bin/talklib.pl Thu Jul 23 17:02:45 2009 +0000 +++ b/cgi-bin/talklib.pl Thu Jul 23 17:30:00 2009 +0000 @@ -2110,6 +2110,16 @@ sub get_replycount { return $count; } +sub comment_htmlid { + my $id = shift or return ''; + return "ljcmt$id"; +} + +sub comment_anchor { + my $id = shift or return ''; + return "#ljcmt$id"; +} + package LJ::Talk::Post; use Text::Wrap; diff -r 8d97fd81d6c0 -r cbf361b1a2b2 htdocs/admin/recent_comments.bml --- a/htdocs/admin/recent_comments.bml Thu Jul 23 17:02:45 2009 +0000 +++ b/htdocs/admin/recent_comments.bml Thu Jul 23 17:30:00 2009 +0000 @@ -48,7 +48,7 @@ if ($lrow) { my $talkid = ($r->{'jtalkid'} << 8) + $lrow->{'anum'}; - my $url = "$LJ::SITEROOT/users/$ju->{user}/$lrow->{ditemid}.html?thread=$talkid\#t$talkid"; + my $url = "$LJ::SITEROOT/users/$ju->{user}/$lrow->{ditemid}.html?thread=$talkid" . LJ::Talk::comment_anchor( $talkid ); $ret .= "$hr_ago hr ago in " . LJ::ljuser($ju) . ": <a href='$url'>$url</a><br />\n"; } else { $ret .= "$hr_ago hr ago in " . LJ::ljuser($ju) . ": link unavailable<br />"; diff -r 8d97fd81d6c0 -r cbf361b1a2b2 htdocs/talkpost_do.bml --- a/htdocs/talkpost_do.bml Thu Jul 23 17:02:45 2009 +0000 +++ b/htdocs/talkpost_do.bml Thu Jul 23 17:30:00 2009 +0000 @@ -219,12 +219,8 @@ body<= # Allow style=mine for QR redirects my $stylemine = $POST{'stylemine'} ? 'style=mine' : ''; - my $commentlink; - if ($POST{'viewing_thread'} eq '') { - $commentlink = LJ::Talk::talkargs($talkurl, "view=$dtalkid", $stylemine) . "#t$dtalkid"; - } else { - $commentlink = LJ::Talk::talkargs($talkurl, "thread=$POST{viewing_thread}", $stylemine) . "#t$dtalkid"; - } + my $cthread = $POST{'viewing_thread'} ? "thread=$POST{viewing_thread}" : "view=$dtalkid"; + my $commentlink = LJ::Talk::talkargs( $talkurl, $cthread, $stylemine ) . LJ::Talk::comment_anchor( $dtalkid ); my $ret = ""; $ret .= "<?h1 $ML{'.success.title'} h1?>"; diff -r 8d97fd81d6c0 -r cbf361b1a2b2 htdocs/talkread.bml --- a/htdocs/talkread.bml Thu Jul 23 17:02:45 2009 +0000 +++ b/htdocs/talkread.bml Thu Jul 23 17:30:00 2009 +0000 @@ -508,17 +508,19 @@ body<= $user = $ML{'.anonuser'}; } + my $htmlid = LJ::Talk::comment_htmlid( $dtid ); + if ($post->{'state'} eq "D") { - $ret .= "<p><a name='t$dtid'></a><table class='delcomment'><tr>"; + $ret .= "<p><a name='$htmlid'></a><table class='delcomment'><tr>"; $ret .= "<td><img src='$LJ::IMGPREFIX/dot.gif' height='1' width='" . ($opts->{'depth'} * 25) . "'></td>"; $ret .= "<td>$ML{'.deletedpost'}</td></tr></table>\n"; } elsif ($post->{'state'} eq "S" && !$post->{'_loaded'} && !$post->{'_show'}) { - $ret .= "<p><a name='t$dtid'></a><table class='screenedcomment'><tr>"; + $ret .= "<p><a name='$htmlid'></a><table class='screenedcomment'><tr>"; $ret .= "<td><img src='$LJ::IMGPREFIX/dot.gif' height='1' width='" . ($opts->{'depth'} * 25) . "'></td>"; my $screenedtext = $ML{'.screenedpost'}; $ret .= "<td>$screenedtext</td></tr></table>\n"; } elsif ($pu && $pu->is_suspended && !$viewsome) { - $ret .= "<p><a name='t$dtid'></a><table class='suspendedcomment'><tr>"; + $ret .= "<p><a name='$htmlid'></a><table class='suspendedcomment'><tr>"; $ret .= "<td><img src='$LJ::IMGPREFIX/dot.gif' height='1' width='" . ($opts->{'depth'} * 25) . "'></td>"; $ret .= "<td>$ML{'.replysuspended'}"; if (LJ::Talk::can_delete($remote, $u, $up, $userpost)) { @@ -550,7 +552,7 @@ body<= ($tz_remote ? " (local)" : " UTC"); } - $ret .= "<a name='t$dtid'></a><span id='ljcmt$dtid'><table width='100%' class='talk-comment'><tbody><tr>"; + $ret .= "<a name='$htmlid'></a><span id='$htmlid'><table width='100%' class='talk-comment'><tbody><tr>"; $ret .= "<td rowspan='2'><img src='$LJ::IMGPREFIX/dot.gif' height='1' width='" . ($opts->{'depth'} * 25) . "'></td>"; $ret .= "<td id='cmtbar$dtid' class='cmtbar-$level' style='background-color: $bgcolor' width='100%'>"; @@ -584,7 +586,9 @@ body<= $ret .= BML::ml('.fromip', {'ip'=>$post->{'props'}->{'poster_ip'}}); } - $ret .= " <span class='talkargs'>(<a href='" . LJ::Talk::talkargs($talkurl, "thread=$dtid", $formatlight) . "#t$dtid'>$T{'link'}</a>)</span>"; + $ret .= " <span class='talkargs'>(<a href='"; + $ret .= LJ::Talk::talkargs( $talkurl, "thread=$dtid", $formatlight ); + $ret .= LJ::Talk::comment_anchor( $dtid ) . "'>$T{'link'}</a>)</span>"; if ($comment->remote_can_edit) { $ret .= "<a href='" . LJ::Talk::talkargs($comment->edit_url, $stylemine, $formatlight) . "'>" . LJ::img("editcomment", "", { 'align' => 'absmiddle', 'hspace' => 2, 'vspace' => }) . "</a>"; @@ -709,10 +713,11 @@ body<= my $parentid = $post->{'parenttalkid'} || $post->{'parenttalkid_actual'}; if ($parentid != 0) { my $dpid = $parentid * 256 + $init->{'anum'}; - $ret .= "(<a href='" . LJ::Talk::talkargs($talkurl, "thread=$dpid", $stylemine, $formatlight) . "#t$dpid'>$T{'parent'}</a>)"; + $ret .= "(<a href='" . LJ::Talk::talkargs($talkurl, "thread=$dpid", $stylemine, $formatlight); + $ret .= LJ::Talk::comment_anchor( $dpid ) . "'>$T{'parent'}</a>)"; } if ($post->{'children'} && @{$post->{'children'}}) { - my $url = LJ::Talk::talkargs($talkurl, "thread=$dtid", $stylemine, $formatlight) . "#t$dtid"; + my $url = LJ::Talk::talkargs($talkurl, "thread=$dtid", $stylemine, $formatlight) . LJ::Talk::comment_anchor( $dtid ); $ret .= "(<a href='$url'>$T{'thread'}</a>)"; if ((grep {! $_->{_loaded} and !($_->{state} eq "D")} @{$post->{'children'}}) && $show_thread_expander) { @@ -728,10 +733,10 @@ body<= } else { # link to message - $ret .= "<a name='t$dtid'></a><span id='ljcmt$dtid'><table ><tbody><tr>"; + my $url = LJ::Talk::talkargs( $talkurl, "thread=$dtid", $stylemine, $formatlight ) . LJ::Talk::comment_anchor( $dtid ); + $ret .= "<a name='$htmlid'></a><span id='$htmlid'><table ><tbody><tr>"; $ret .= "<td><img src='$LJ::IMGPREFIX/dot.gif' height='1' width='" . ($opts->{'depth'} * 25) . "'></td>"; - $ret .= "<td><a href='" . LJ::Talk::talkargs($talkurl, "thread=$dtid", $stylemine, $formatlight) . "#t$dtid'>" . LJ::ehtml($post->{'subject'} || $T{'nosubject'}) . "</a> - $user, <i>$datepost</i>"; - my $url = LJ::Talk::talkargs($talkurl, "thread=$dtid", $stylemine, $formatlight) . "#t$dtid"; + $ret .= "<td><a href='$url'>" . LJ::ehtml($post->{'subject'} || $T{'nosubject'}) . "</a> - $user, <i>$datepost</i>"; $ret .= qq[ (<a href='$url' onClick="Expander.make(this,'$url','$dtid',true);return false;">$T{'expand'}</a>)] if $show_thread_expander; # Comment Posted Notice diff -r 8d97fd81d6c0 -r cbf361b1a2b2 htdocs/talkscreen.bml --- a/htdocs/talkscreen.bml Thu Jul 23 17:02:45 2009 +0000 +++ b/htdocs/talkscreen.bml Thu Jul 23 17:30:00 2009 +0000 @@ -107,7 +107,7 @@ _info?><?_code my $ditemid = $qitemid*256 + $anum; my $itemlink = LJ::journal_base($u) . "/$ditemid.html"; - my $commentlink = "$itemlink?view=$dtalkid#t$dtalkid"; + my $commentlink = "$itemlink?view=$dtalkid" . LJ::Talk::comment_anchor( $dtalkid ); if ($mode eq 'screen') { my $can_screen = LJ::Talk::can_screen($remote, $u, $up, $post->{'userpost'}); diff -r 8d97fd81d6c0 -r cbf361b1a2b2 htdocs/tools/recent_comments.bml --- a/htdocs/tools/recent_comments.bml Thu Jul 23 17:02:45 2009 +0000 +++ b/htdocs/tools/recent_comments.bml Thu Jul 23 17:30:00 2009 +0000 @@ -165,21 +165,26 @@ body<= unless ($r->{state} eq "D") { - $ret .= "<a href='/delcomment.bml?${jargent}id=$talkid'>" . LJ::img("btn_del", "", { 'align' => 'absmiddle', 'hspace' => 2, 'vspace' => }) . "</a>"; + $ret .= "<a href='/delcomment.bml?${jargent}id=$talkid'>"; + $ret .= LJ::img("btn_del", "", { 'align' => 'absmiddle', 'hspace' => 2, 'vspace' => }) . "</a>"; if ($r->{'state'} ne 'F') { - $ret .= "<a href='/talkscreen.bml?mode=freeze&${jargent}talkid=$talkid'>" . LJ::img("btn_freeze", "", { align => 'absmiddle', hspace => 2, vspace => }) . "</a>"; + $ret .= "<a href='/talkscreen.bml?mode=freeze&${jargent}talkid=$talkid'>"; + $ret .= LJ::img("btn_freeze", "", { align => 'absmiddle', hspace => 2, vspace => }) . "</a>"; } if ($r->{'state'} eq 'F') { - $ret .= "<a href='/talkscreen.bml?mode=unfreeze&${jargent}talkid=$talkid'>" . LJ::img("btn_unfreeze", "", { align => 'absmiddle', hspace => 2, vspace => }) . "</a>"; + $ret .= "<a href='/talkscreen.bml?mode=unfreeze&${jargent}talkid=$talkid'>"; + $ret .= LJ::img("btn_unfreeze", "", { align => 'absmiddle', hspace => 2, vspace => }) . "</a>"; } if ($r->{'state'} ne 'S') { - $ret .= "<a href='/talkscreen.bml?mode=screen&${jargent}talkid=$talkid'>" . LJ::img("btn_scr", "", { 'align' => 'absmiddle', 'hspace' => 2, 'vspace' => }) . "</a>"; + $ret .= "<a href='/talkscreen.bml?mode=screen&${jargent}talkid=$talkid'>"; + $ret .= LJ::img("btn_scr", "", { 'align' => 'absmiddle', 'hspace' => 2, 'vspace' => }) . "</a>"; } if ($r->{'state'} eq 'S') { - $ret .= "<a href='/talkscreen.bml?mode=unscreen&${jargent}talkid=$talkid'>" . LJ::img("btn_unscr", "", { 'align' => 'absmiddle', 'hspace' => 2, 'vspace' => }) . "</a>"; + $ret .= "<a href='/talkscreen.bml?mode=unscreen&${jargent}talkid=$talkid'>"; + $ret .= LJ::img("btn_unscr", "", { 'align' => 'absmiddle', 'hspace' => 2, 'vspace' => }) . "</a>"; } } @@ -187,7 +192,8 @@ body<= #$ret .= " <nobr><input type='checkbox' name='selected_$r->{jtalkid}' id='s$r->{jtalkid}' />"; #$ret .= " <label for='s$r->{jtalkid}'>$ML{'/talkread.bml.select'}</label></nobr>"; - $ret .= "</td><td id='ljcmt$talkid' style='text-align: left; border-top: 1px solid #999; border-left: 1px solid #999'>"; + $ret .= "</td><td id='" . LJ::Talk::comment_htmlid( $talkid ); + $ret .= "' style='text-align: left; border-top: 1px solid #999; border-left: 1px solid #999'>"; my $subject = $log_text->{"$u->{userid} $r->{nodeid}"}[0]; LJ::CleanHTML::clean_subject(\$subject) if $subject ne ""; --------------------------------------------------------------------------------