Add the ability to exclude users in your circle from interests results.

        Patch by kareila. 

diffs (87 lines):

diff -r b6c639a8bb2d -r a3e03737f6ff cgi-bin/DW/Controller/Search/Interests.pm
--- a/cgi-bin/DW/Controller/Search/Interests.pm Tue Feb 08 20:47:29 2011 +0800
+++ b/cgi-bin/DW/Controller/Search/Interests.pm Tue Feb 08 20:51:49 2011 +0800
@@ -162,24 +162,35 @@ sub interest_handler {
         my @matches = sort { $magic{$b} <=> $magic{$a} } keys %magic;
         @matches = @matches[ 0 .. ( $maxinterests - 1 ) ]
             if scalar( @matches ) > $maxinterests;
-        return error_ml( 'interests.findsim_do.nomatch',
-                         { user => $u->ljuser_display } )
-            unless @matches;
 
         # load user objects
         my $users = LJ::load_userids( @matches );
 
+        my $nocircle = $remote && $args->{nocircle};
         my $count = 1;
         my $data = [];
         foreach my $uid ( @matches ) {
             my $match_u = $users->{$uid};
             next unless $match_u && $match_u->is_visible;
+            if ( $nocircle ) {
+                next if $remote->watches( $match_u );
+                next if $remote->trusts( $match_u );
+            }
             push @$data, { count => $count++,
                            user  => $match_u->ljuser_display,
                            magic => sprintf( "%.3f", $magic{$uid} ) };
         }
+
+        return error_ml( 'interests.findsim_do.nomatch',
+                         { user => $u->ljuser_display } )
+            unless @$data;
+
         $rv->{findsim_u} = $u;
         $rv->{findsim_data} = $data;
+        $rv->{nocircle} = $nocircle;
+        $rv->{circle_link} =
+            LJ::page_change_getargs( nocircle => $nocircle ? '' : 1 );
+
         return DW::Template->render_template( 'interests/findsim.tt', $rv );
     }
 
diff -r b6c639a8bb2d -r a3e03737f6ff views/interests/findsim.tt
--- a/views/interests/findsim.tt        Tue Feb 08 20:47:29 2011 +0800
+++ b/views/interests/findsim.tt        Tue Feb 08 20:51:49 2011 +0800
@@ -22,8 +22,17 @@
 
 [%- sections.title='.title' | ml -%]
 
-<h1>[% '.findsim_do.similar.head' | ml %]</h1>
-<p>[% ".findsim_do.similar.text" | ml(user = findsim_u.ljuser_display) %]</p>
+<h1>[% '.head' | ml %]</h1>
+[%- IF remote -%]
+    <p>
+    [%- IF nocircle -%]
+        [%- '.circle.include' | ml(aopts = circle_link) -%]
+    [%- ELSE -%]
+        [%- '.circle.exclude' | ml(aopts = circle_link) -%]
+    [%- END -%]
+    </p>
+[%- END -%]
+<p>[% '.text' | ml(user = findsim_u.ljuser_display) %]</p>
 <p><table cellpadding='3'><thead><tr valign='bottom'>
     <th>#</th>
     <th width='250'>[% 'username' | ml %]</th>
diff -r b6c639a8bb2d -r a3e03737f6ff views/interests/findsim.tt.text
--- a/views/interests/findsim.tt.text   Tue Feb 08 20:47:29 2011 +0800
+++ b/views/interests/findsim.tt.text   Tue Feb 08 20:51:49 2011 +0800
@@ -1,12 +1,16 @@
 ;; -*- coding: utf-8 -*-
+.circle.exclude=This listing includes accounts you already subscribe to. <a 
href="[[aopts]]">Exclude users in your circle?</a>
+
+.circle.include=This listing does not include accounts in your circle. <a 
href="[[aopts]]">Include them?</a>
+
 .findsim_do.magic=Magic<br />Index
 
 .findsim_do.magic.head=What's this Magic Index all about?
 
 .findsim_do.magic.text=We compute a magic index for each matching account. A 
magic index is a weighting of two factors: the raw number of shared interests 
and extra points for shared uncommon interests.
 
-.findsim_do.similar.head=Similar People
+.head=Similar Accounts
 
-.findsim_do.similar.text=The following people are the most related to [[user]]
+.text=The following accounts have interests closely related to those of 
[[user]]:
 
 .title=Interests
_______________________________________________
dw-changelog mailing list
[email protected]
http://lists.dwscoalition.org/mailman/listinfo/dw-changelog

Reply via email to