[dw-free] Enhancements to "find users with similar interests"
[commit: http://hg.dwscoalition.org/dw-free/rev/a3e03737f6ff]
http://bugs.dwscoalition.org/show_bug.cgi?id=2018
Add the ability to exclude users in your circle from interests results.
Patch by
kareila.
Files modified:
http://bugs.dwscoalition.org/show_bug.cgi?id=2018
Add the ability to exclude users in your circle from interests results.
Patch by
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Files modified:
- cgi-bin/DW/Controller/Search/Interests.pm
- views/interests/findsim.tt
- views/interests/findsim.tt.text
-------------------------------------------------------------------------------- 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 --------------------------------------------------------------------------------