60
60
import java .io .Writer ;
61
61
import java .net .URI ;
62
62
import java .net .URISyntaxException ;
63
+ import java .net .URLEncoder ;
63
64
import java .text .Collator ;
64
65
import java .util .ArrayList ;
65
66
import java .util .Arrays ;
@@ -147,7 +148,7 @@ private enum HtmlMode { NONE, LINK, ALLOW, PREFER }
147
148
private static final String NEXT_PAGE_NUM = "nextpagenum" ;
148
149
private static final String CURRENT_SORT = "currentsort" ;
149
150
private static final String CURRENT_FOLDER = "folder" ;
150
- private static final String CURRENT_SEARCH = "currentsearch " ;
151
+ private static final String CURRENT_SEARCH = "nf_currentsearch " ;
151
152
private static final String NEW_FOLDER = "newfolder" ;
152
153
private static final String DRAFT_EXISTS = "draftexists" ;
153
154
private static final String DEBUG_STATE = "currentstate" ;
@@ -170,7 +171,7 @@ private enum HtmlMode { NONE, LINK, ALLOW, PREFER }
170
171
private static final String REALLYDELETE = "really_delete" ;
171
172
private static final String MOVE_TO = "moveto" ;
172
173
private static final String SWITCH_TO = "switchto" ;
173
- private static final String SEARCH = "s " ;
174
+ private static final String SEARCH = "nf_s " ;
174
175
// also a GET param
175
176
private static final String SHOW = "show" ;
176
177
private static final String DOWNLOAD = "download" ;
@@ -444,11 +445,12 @@ private static String button2( String name, String label )
444
445
*
445
446
* @param name
446
447
* @param label
448
+ * @param search may be null
447
449
* @return the string
448
450
*/
449
451
private static String sortHeader (String name , String label , String imgPath ,
450
452
String currentName , SortOrder currentOrder , int page ,
451
- String folder )
453
+ String folder , String search )
452
454
{
453
455
StringBuilder buf = new StringBuilder (128 );
454
456
buf .append (label ).append (" " );
@@ -457,15 +459,27 @@ private static String sortHeader(String name, String label, String imgPath,
457
459
buf .append ("<img class=\" sort\" src=\" " ).append (imgPath ).append ("3up.png\" border=\" 0\" alt=\" ^\" >\n " );
458
460
} else {
459
461
buf .append ("<a class=\" sort\" href=\" " ).append (myself ).append ("?page=" ).append (page ).append ("&sort=-" )
460
- .append (name ).append ("&folder=" ).append (folder ).append ("\" >" );
462
+ .append (name ).append ("&folder=" ).append (folder );
463
+ if (search != null ) {
464
+ try {
465
+ buf .append ("&" ).append (SEARCH ).append ('=' ).append (URLEncoder .encode (search , "UTF-8" ));
466
+ } catch (UnsupportedEncodingException uee ) {}
467
+ }
468
+ buf .append ("\" >" );
461
469
buf .append ("<img class=\" sort\" src=\" " ).append (imgPath ).append ("3up.png\" border=\" 0\" alt=\" ^\" >" );
462
470
buf .append ("</a>\n " );
463
471
}
464
472
if (name .equals (currentName ) && currentOrder == SortOrder .DOWN ) {
465
473
buf .append ("<img class=\" sort\" src=\" " ).append (imgPath ).append ("3down.png\" border=\" 0\" alt=\" v\" >" );
466
474
} else {
467
475
buf .append ("<a class=\" sort\" href=\" " ).append (myself ).append ("?page=" ).append (page ).append ("&sort=" )
468
- .append (name ).append ("&folder=" ).append (folder ).append ("\" >" );
476
+ .append (name ).append ("&folder=" ).append (folder );
477
+ if (search != null ) {
478
+ try {
479
+ buf .append ("&" ).append (SEARCH ).append ('=' ).append (URLEncoder .encode (search , "UTF-8" ));
480
+ } catch (UnsupportedEncodingException uee ) {}
481
+ }
482
+ buf .append ("\" >" );
469
483
buf .append ("<img class=\" sort\" src=\" " ).append (imgPath ).append ("3down.png\" border=\" 0\" alt=\" v\" >" );
470
484
buf .append ("</a>" );
471
485
}
@@ -2394,6 +2408,9 @@ private void processRequest( HttpServletRequest httpRequest, HttpServletResponse
2394
2408
// always go to inbox after SEND
2395
2409
if (str != null && !str .equals (DIR_FOLDER ) && !buttonPressed (request , SEND ))
2396
2410
q += '&' + CURRENT_FOLDER + '=' + str ;
2411
+ str = request .getParameter (SEARCH );
2412
+ if (str != null && str .length () > 0 )
2413
+ q += '&' + SEARCH + '=' + URLEncoder .encode (str , "UTF-8" );
2397
2414
sendRedirect (httpRequest , response , q );
2398
2415
return ;
2399
2416
}
@@ -3598,6 +3615,8 @@ private static void showFolder( PrintWriter out, SessionObject sessionObject, Ma
3598
3615
// form 3
3599
3616
out .print (form );
3600
3617
out .print (hidden );
3618
+ if (search != null )
3619
+ out .println ("<input type=\" hidden\" name=\" " + SEARCH + "\" value=\" " + DataHelper .escapeHTML (search ) + "\" >" );
3601
3620
showPageButtons (out , sessionObject .user , folderName , page , folder .getPages (), true );
3602
3621
out .println ("</form>" );
3603
3622
out .println ("</div>" );
@@ -3607,11 +3626,11 @@ private static void showFolder( PrintWriter out, SessionObject sessionObject, Ma
3607
3626
out .print (hidden );
3608
3627
out .println ("<table id=\" mailbox\" cellspacing=\" 0\" cellpadding=\" 5\" >\n " );
3609
3628
out .println ("<tr><td colspan=\" 9\" ><hr></td></tr>\n <tr><th title=\" " + _t ("Mark for deletion" ) + "\" > </th>" +
3610
- thSpacer + "<th>" + sortHeader (SORT_SENDER , showToColumn ? _t ("To" ) : _t ("From" ), sessionObject .imgPath , curSort , curOrder , page , folderName ) + "</th>" +
3611
- thSpacer + "<th>" + sortHeader (SORT_SUBJECT , _t ("Subject" ), sessionObject .imgPath , curSort , curOrder , page , folderName ) + "</th>" +
3612
- thSpacer + "<th>" + sortHeader (SORT_DATE , _t ("Date" ), sessionObject .imgPath , curSort , curOrder , page , folderName ) +
3629
+ thSpacer + "<th>" + sortHeader (SORT_SENDER , showToColumn ? _t ("To" ) : _t ("From" ), sessionObject .imgPath , curSort , curOrder , page , folderName , search ) + "</th>" +
3630
+ thSpacer + "<th>" + sortHeader (SORT_SUBJECT , _t ("Subject" ), sessionObject .imgPath , curSort , curOrder , page , folderName , search ) + "</th>" +
3631
+ thSpacer + "<th>" + sortHeader (SORT_DATE , _t ("Date" ), sessionObject .imgPath , curSort , curOrder , page , folderName , search ) +
3613
3632
"</th>" +
3614
- thSpacer + "<th>" + sortHeader (SORT_SIZE , _t ("Size" ), sessionObject .imgPath , curSort , curOrder , page , folderName ) + "</th></tr>" );
3633
+ thSpacer + "<th>" + sortHeader (SORT_SIZE , _t ("Size" ), sessionObject .imgPath , curSort , curOrder , page , folderName , search ) + "</th></tr>" );
3615
3634
int bg = 0 ;
3616
3635
int i = 0 ;
3617
3636
for (Iterator <String > it = folder .currentPageSelectorIterator (); it != null && it .hasNext (); ) {
@@ -3734,6 +3753,8 @@ else if (isSpamFolder)
3734
3753
// form 5
3735
3754
out .print (form );
3736
3755
out .print (hidden );
3756
+ if (search != null )
3757
+ out .println ("<input type=\" hidden\" name=\" " + SEARCH + "\" value=\" " + DataHelper .escapeHTML (search ) + "\" >" );
3737
3758
showPageButtons (out , sessionObject .user , folderName , page , folder .getPages (), false );
3738
3759
out .println ("</form>" );
3739
3760
out .println ("</div>" );
0 commit comments