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

[dw-free] interest search needs warning/explanation if interest is too long

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

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

Have a warning when searching for an interest that's too long.

Patch by [personal profile] yvi.

Files modified:
  • htdocs/interests.bml
  • htdocs/interests.bml.text
--------------------------------------------------------------------------------
diff -r 0277a739daa7 -r 0de105ba5389 htdocs/interests.bml
--- a/htdocs/interests.bml	Tue Jul 06 19:00:40 2010 +0800
+++ b/htdocs/interests.bml	Tue Jul 06 20:19:14 2010 +0800
@@ -392,6 +392,16 @@ body<=
 
         my $ret = '';
 
+        # determine whether the interest is too long: if the interest already exists, a long interest will result in $e_int and the return value of LJ::get_interest not matching
+        # if it didn't already exist, we fall back on just checking the length of $e_int
+        my $exists = $interest;
+        if ( ( $exists && $e_int ne $interest ) || length( $e_int ) > LJ::CMAX_SITEKEYWORD ) {
+
+            # if the searched-for interest is too long, we use the short version from here on
+            $interest = $exists ? $interest : substr ( $e_int, 0, LJ::CMAX_SITEKEYWORD );
+            $ret .= "<?p " . BML::ml( '.error.longinterest', { sitename => $LJ::SITENAMESHORT, old_int => $e_int, new_int => $interest, maxlen => LJ::CMAX_SITEKEYWORD } ) . " p?>";
+        }
+
         $ret .= "<table>";
         $ret .= "<tr valign='middle'><td class='findandmodify'>$ML{'.interested.in'}</td>";
         $ret .= "<td class='findandmodify'><form method='get' action='interests'>";
@@ -407,11 +417,11 @@ body<=
         $ret .= "</table>";
 
         # no results
-        unless ( $interest ) {
+        unless ( $exists ) {
             $ret .= "<?h1 $ML{'.nocomms.header'} h1?><?p ";
-            $ret .= BML::ml( '.nocomms.text', { 'int' => $e_int, 'aopts' => qq(href="$LJ::SITEROOT/community/create") } );
+            $ret .= BML::ml( '.nocomms.text', { 'int' => $interest, 'aopts' => qq(href="$LJ::SITEROOT/community/create") } );
             $ret .= " p?><?h1 $ML{'.nousers.header'} h1?><?p ";
-            $ret .= BML::ml( '.nousers.text', { 'int' => $e_int, 'aopts_manage' => "href='$LJ::SITEROOT/manage/profile/'", 'aopts_int' => "href='$LJ::SITEROOT/interests'" } );
+            $ret .= BML::ml( '.nousers.text', { 'int' => $interest, 'aopts_manage' => "href='$LJ::SITEROOT/manage/profile/'", 'aopts_int' => "href='$LJ::SITEROOT/interests'" } );
             $ret .= " p?>";
             return $ret;
         } 
diff -r 0277a739daa7 -r 0de105ba5389 htdocs/interests.bml.text
--- a/htdocs/interests.bml.text	Tue Jul 06 19:00:40 2010 +0800
+++ b/htdocs/interests.bml.text	Tue Jul 06 20:19:14 2010 +0800
@@ -51,6 +51,8 @@ When you're done, click "Save Changes".
 .error.findsim_do.intnotfound=Interest wasn't found.
 
 .error.ignored=Sorry, we're unable to help you find users matching the interests you've provided.
+
+.error.longinterest=As [[sitename]] does not support interests longer than [[maxlen]] characters, your search for <b>[[old_int]]</b> was converted into a search for <b>[[new_int]]</b> instead.
 
 .error.nodata=Sorry, interest data currently unavailable.
 
--------------------------------------------------------------------------------