fu: Close-up of Fu, bringing a scoop of water to her mouth (Default)
fu ([personal profile] fu) wrote in [site community profile] changelog2010-04-13 02:10 pm

[dw-free] S2 Entry code cleanup

[commit: http://hg.dwscoalition.org/dw-free/rev/d178217cf6d6]

http://bugs.dwscoalition.org/show_bug.cgi?id=2479

Code cleanup: refactor the code that handles the escaping of HTML when
viewing an entry with ?nohtml=1

Patch by [personal profile] kareila.

Files modified:
  • cgi-bin/LJ/CleanHTML.pm
  • cgi-bin/LJ/S2.pm
  • cgi-bin/LJ/S2/EntryPage.pm
  • htdocs/talkread.bml
--------------------------------------------------------------------------------
diff -r 648857570a1f -r d178217cf6d6 cgi-bin/LJ/CleanHTML.pm
--- a/cgi-bin/LJ/CleanHTML.pm	Tue Apr 13 06:28:29 2010 -0700
+++ b/cgi-bin/LJ/CleanHTML.pm	Tue Apr 13 07:15:22 2010 -0700
@@ -1440,4 +1440,13 @@ sub break_word {
     return $word;
 }
 
+sub quote_html {
+    my ( $string, $bool ) = @_;
+    return $string unless $bool;
+
+    # quote all non-LJ tags
+    $string =~ s{<(?!/?lj)(.*?)>} {&lt;$1&gt;}gi;
+    return $string;
+}
+
 1;
diff -r 648857570a1f -r d178217cf6d6 cgi-bin/LJ/S2.pm
--- a/cgi-bin/LJ/S2.pm	Tue Apr 13 06:28:29 2010 -0700
+++ b/cgi-bin/LJ/S2.pm	Tue Apr 13 07:15:22 2010 -0700
@@ -1907,12 +1907,8 @@ sub Entry_from_entryobj
     my $style_args = LJ::viewing_style_args( %$get, %opt_stylemine );
     
     #load and prepare subject and text of entry
-    my $subject = $entry_obj->subject_html;
-    my $text = $entry_obj->event_raw;
-    if ( $get->{nohtml} ) {
-        $subject =~ s{<(?!/?lj)(.*?)>} {&lt;$1&gt;}gi;
-        $text    =~ s{<(?!/?lj)(.*?)>} {&lt;$1&gt;}gi;
-    }
+    my $subject = LJ::CleanHTML::quote_html( $entry_obj->subject_html, $get->{nohtml} );
+    my $text = LJ::CleanHTML::quote_html( $entry_obj->event_raw, $get->{nohtml} );
     LJ::item_toutf8( $journal, \$subject, \$text, $entry_obj->props ) if $LJ::UNICODE && $entry_obj->props->{unknown8bit};
 
     my $suspend_msg = $entry_obj && $entry_obj->should_show_suspend_msg_to( $remote ) ? 1 : 0;
diff -r 648857570a1f -r d178217cf6d6 cgi-bin/LJ/S2/EntryPage.pm
--- a/cgi-bin/LJ/S2/EntryPage.pm	Tue Apr 13 06:28:29 2010 -0700
+++ b/cgi-bin/LJ/S2/EntryPage.pm	Tue Apr 13 07:15:22 2010 -0700
@@ -141,11 +141,7 @@ sub EntryPage
             my $pu = $com->{'posterid'} ? $user{$com->{'posterid'}} : undef;
 
             my $dtalkid = $com->{'talkid'} * 256 + $entry->anum;
-            my $text = $com->{'body'};
-            if ($get->{'nohtml'}) {
-                # quote all non-LJ tags
-                $text =~ s{<(?!/?lj)(.*?)>} {&lt;$1&gt;}gi;
-            }
+            my $text = LJ::CleanHTML::quote_html( $com->{body}, $get->{nohtml} );
 
             LJ::CleanHTML::clean_comment(\$text, { 'preformatted' => $com->{'props'}->{'opt_preformatted'},
                                                    'anon_comment' => !$pu || ( $pu->is_identity && !$u->trusts_or_has_member( $pu ) ),
@@ -491,13 +487,8 @@ sub EntryPage_entry
         @taglist = sort { $a->{name} cmp $b->{name} } @taglist;
     }
 
-    my $subject = $entry->subject_html;
-    my $event = $entry->event_html;
-    if ($get->{'nohtml'}) {
-        # quote all non-LJ tags
-        $subject =~ s{<(?!/?lj)(.*?)>} {&lt;$1&gt;}gi;
-        $event   =~ s{<(?!/?lj)(.*?)>} {&lt;$1&gt;}gi;
-    }
+    my $subject = LJ::CleanHTML::quote_html( $entry->subject_html, $get->{nohtml} );
+    my $event = LJ::CleanHTML::quote_html( $entry->event_html, $get->{nohtml} );
 
     if ($opts->{enable_tags_compatibility} && @taglist) {
         $event .= LJ::S2::get_tags_text($opts->{ctx}, \@taglist);
diff -r 648857570a1f -r d178217cf6d6 htdocs/talkread.bml
--- a/htdocs/talkread.bml	Tue Apr 13 06:28:29 2010 -0700
+++ b/htdocs/talkread.bml	Tue Apr 13 07:15:22 2010 -0700
@@ -384,21 +384,14 @@ body<=
 
     ###
     if ($item->{'subject'}) {
-        my $subject = $item->{'subject'};
-        if ($GET{'nohtml'}) {
-            # quote all non-LJ tags
-            $subject =~ s{<(?!/?lj)(.*?)>} {&lt;$1&gt;}gi;
-        }
+        my $subject = LJ::CleanHTML::quote_html( $item->{subject}, $GET{nohtml} );
         LJ::CleanHTML::clean_subject(\$subject);
         BML::ebml(\$subject);
         $ret .= "<div id='entrysubj'>$subject</div><br />\n";
     }
 
 
-     if ($GET{'nohtml'}) {
-         # quote all non-LJ tags
-         $event =~ s{<(?!/?lj)(.*?)>} {&lt;$1&gt;}gi;
-     }
+    $event = LJ::CleanHTML::quote_html( $event, $GET{nohtml} );
     $ret .= $event;
     $ret .= "</div>";
 
@@ -692,11 +685,7 @@ body<=
                                                                  'anon_comment' => !$pu || ( $pu->is_identity && !$u->trusts_or_has_member( $pu ) ),
                                                              });
                 BML::ebml(\$post->{'body'});
-                my $event = $post->{'body'};
-                if ($GET{'nohtml'}) {
-                    # quote all non-LJ tags
-                    $event =~ s{<(?!/?lj)(.*?)>} {&lt;$1&gt;}gi;
-                }
+                my $event = LJ::CleanHTML::quote_html( $post->{body}, $GET{nohtml} );
                 my $edit_html = $edittime ? "<br /><br /><span class='edittime'><em>" . BML::ml('.edittime', { editreason => $editreason, edittime => $edittime }) . "</em></span>" : "";
                 $ret .= "$event$edit_html";
 
--------------------------------------------------------------------------------

Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org