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 01:23 pm

[dw-free] S2 Entry code cleanup

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

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

Code cleanup: refactor the code that generates CommentInfo in S2.

Patch by [personal profile] kareila.

Files modified:
  • cgi-bin/LJ/Entry.pm
  • cgi-bin/LJ/S2.pm
  • cgi-bin/LJ/S2/EntryPage.pm
--------------------------------------------------------------------------------
diff -r 190d8daebf5d -r 648857570a1f cgi-bin/LJ/Entry.pm
--- a/cgi-bin/LJ/Entry.pm	Tue Apr 13 04:31:40 2010 -0700
+++ b/cgi-bin/LJ/Entry.pm	Tue Apr 13 06:28:29 2010 -0700
@@ -507,6 +507,44 @@ sub comment_text {
     }
 
     return $comments;
+}
+
+
+# returns data hashref suitable for use in S2 CommentInfo function
+sub comment_info {
+    my ( $self, %opts )= @_;
+    return unless %opts;
+    return unless exists $opts{u};
+    return unless exists $opts{remote};
+    return unless exists $opts{style_args};
+
+    my $u = $opts{u};
+    my $remote = $opts{remote};
+    my $style_args = $opts{style_args};
+    my $viewall = $opts{viewall};
+
+    my $journal = exists $opts{journal} ? $opts{journal} : $u;
+
+    my $permalink = $self->url;
+    my $comments_enabled = ( $viewall ||
+        ( $journal->{opt_showtalklinks} eq "Y" && !$self->comments_disabled ) ) ? 1 : 0;
+    my $has_screened = ( $self->props->{hasscreened} && $remote && LJ::can_manage( $remote, $journal ) ) ? 1 : 0;
+    my $replycount = $self->reply_count;
+    my $nc = "";
+    $nc .= "nc=$replycount" if $replycount && $remote && $remote->{opt_nctalklinks};
+
+    return {
+        read_url => LJ::Talk::talkargs( $permalink, $nc, $style_args ),
+        post_url => LJ::Talk::talkargs( $permalink, "mode=reply", $style_args ),
+        permalink_url => LJ::Talk::talkargs( $permalink, $style_args ),
+        count => $replycount,
+        maxcomments => ( $replycount >= $u->count_maxcomments ) ? 1 : 0,
+        enabled => $comments_enabled,
+        comments_disabled_maintainer => $self->comments_disabled_maintainer,
+        screened => $has_screened,
+        show_readlink => $comments_enabled && ( $replycount || $has_screened ),
+        show_postlink => $comments_enabled,
+    };
 }
 
 
diff -r 190d8daebf5d -r 648857570a1f cgi-bin/LJ/S2.pm
--- a/cgi-bin/LJ/S2.pm	Tue Apr 13 04:31:40 2010 -0700
+++ b/cgi-bin/LJ/S2.pm	Tue Apr 13 06:28:29 2010 -0700
@@ -1980,30 +1980,10 @@ sub Entry_from_entryobj
         $text .= LJ::S2::get_tags_text($opts->{ctx}, \@taglist);
     }
 
-    # comment information
-    my $permalink = $entry_obj->url;
-    my $replycount = $entry_obj->reply_count;
-    my $nc;
-    $nc = "nc=$replycount" if $replycount && $remote && $remote->prop( 'opt_nctalklinks' );
-    my $linkurl = LJ::Talk::talkargs( $permalink, $style_args );
-    my $readurl = LJ::Talk::talkargs( $permalink, $nc, $style_args );
-    my $posturl = LJ::Talk::talkargs( $permalink, 'mode=reply', $style_args );
-
-    my $comments_enabled = ( ( $journal->{opt_showtalklinks} eq "Y" ) && !$entry_obj->comments_disabled ) ? 1 : 0;
-    my $has_screened = ( $entry_obj->props->{hasscreened} && LJ::can_manage( $remote, $journal ) ) ? 1 : 0;
-
     # building the CommentInfo and Entry objects
-    my $comments = CommentInfo({
-        read_url => $readurl,
-        post_url => $posturl,
-        permalink_url => $linkurl,
-        count => $replycount,
-        maxcomments => ( $replycount >= $u->count_maxcomments ) ? 1 : 0,
-        enabled => $comments_enabled,
-        screened => $has_screened,
-        show_readlink => $comments_enabled && ( $replycount || $has_screened ),
-        show_postlink => $comments_enabled,
-    });
+    my $comments = CommentInfo( $entry_obj->comment_info(
+        u => $u, remote => $remote, style_args => $style_args, journal => $journal
+    ) );
 
     my $entry = Entry($u, {
         subject => $subject,
@@ -2022,7 +2002,7 @@ sub Entry_from_entryobj
         end_day => 0,   #if true, set later
         userpic => $userpic,
         tags => \@taglist,
-        permalink_url => $permalink,
+        permalink_url => $entry_obj->url,
         moodthemeid => $moodthemeid
         });
 
diff -r 190d8daebf5d -r 648857570a1f cgi-bin/LJ/S2/EntryPage.pm
--- a/cgi-bin/LJ/S2/EntryPage.pm	Tue Apr 13 04:31:40 2010 -0700
+++ b/cgi-bin/LJ/S2/EntryPage.pm	Tue Apr 13 06:28:29 2010 -0700
@@ -467,34 +467,18 @@ sub EntryPage_entry
         return;
     }
 
-    my $replycount = $entry->prop("replycount");
-    my $nc = "";
-    $nc .= "nc=$replycount" if $replycount && $remote && $remote->{'opt_nctalklinks'};
-
-    my $style_arg = LJ::viewing_style_args( %$get );
+    my $style_args = LJ::viewing_style_args( %$get );
     
     # load the userpic; include the keyword selected by the user
     # as a backup for the alttext
     my $pickw = LJ::Entry->userpic_kw_from_props($entry->props);
     my $userpic = Image_userpic($pu, $entry->userpic ? $entry->userpic->picid : 0, $pickw);
 
-    my $permalink = $entry->url;
-    my $linkurl = LJ::Talk::talkargs( $permalink, $style_arg );
-    my $readurl = LJ::Talk::talkargs( $permalink, $nc, $style_arg );
-    my $posturl = LJ::Talk::talkargs( $permalink, "mode=reply", $style_arg );
-
-    my $comments = CommentInfo({
-        'read_url' => $readurl,
-        'post_url' => $posturl,
-        'permalink_url' => $linkurl,
-        'count' => $replycount,
-        'maxcomments' => ( $replycount >= $u->count_maxcomments ) ? 1 : 0,
-        enabled => ( $viewall || ( $u->{opt_showtalklinks} eq "Y" && !$entry->comments_disabled ) ) ? 1 : 0,
-        comments_disabled_maintainer => $entry->comments_disabled_maintainer,
-        'screened' => ($entry->prop("hasscreened") && $remote && LJ::can_manage($remote, $u)) ? 1 : 0,
-    });
-    $comments->{show_postlink} = $comments->{enabled} && $get->{mode} ne 'reply';
-    $comments->{show_readlink} = $comments->{enabled} && ($replycount || $comments->{screened}) && $get->{mode} eq 'reply';
+    my $comments = CommentInfo( $entry->comment_info(
+        u => $u, remote => $remote, style_args => $style_args, viewall => $viewall
+    ) );
+    $comments->{show_postlink} &&= $get->{mode} ne 'reply';
+    $comments->{show_readlink} &&= $get->{mode} eq 'reply';
 
     # load tags
     my @taglist;
@@ -544,7 +528,7 @@ sub EntryPage_entry
         'new_day' => 0,
         'end_day' => 0,
         'userpic' => $userpic,
-        'permalink_url' => $permalink,
+        'permalink_url' => $entry->url,
     });
 
     return ($entry, $s2entry);
--------------------------------------------------------------------------------