You can subscribe to this list here.
2003 |
Jan
|
Feb
(160) |
Mar
(119) |
Apr
(111) |
May
(118) |
Jun
(101) |
Jul
(304) |
Aug
(113) |
Sep
(140) |
Oct
(137) |
Nov
(87) |
Dec
(122) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(78) |
Feb
(125) |
Mar
(131) |
Apr
(59) |
May
(121) |
Jun
(166) |
Jul
(150) |
Aug
(137) |
Sep
(73) |
Oct
(58) |
Nov
(27) |
Dec
(60) |
2005 |
Jan
(131) |
Feb
(84) |
Mar
(36) |
Apr
(8) |
May
(28) |
Jun
(20) |
Jul
(10) |
Aug
(72) |
Sep
(76) |
Oct
(34) |
Nov
(3) |
Dec
(29) |
2006 |
Jan
(13) |
Feb
(92) |
Mar
(7) |
Apr
(1) |
May
(1) |
Jun
(2) |
Jul
(4) |
Aug
(17) |
Sep
(5) |
Oct
(2) |
Nov
(8) |
Dec
(12) |
2007 |
Jan
(28) |
Feb
(15) |
Mar
|
Apr
|
May
(8) |
Jun
(4) |
Jul
(5) |
Aug
(8) |
Sep
(20) |
Oct
(38) |
Nov
(65) |
Dec
(92) |
2008 |
Jan
(21) |
Feb
(56) |
Mar
(27) |
Apr
(174) |
May
(25) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Joseph C. <tex...@us...> - 2005-08-25 08:41:51
|
Update of /cvsroot/popfile/engine/skins/tinygrey In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15239/skins/tinygrey Modified Files: style.css Log Message: Update for 0.23 Index: style.css =================================================================== RCS file: /cvsroot/popfile/engine/skins/tinygrey/style.css,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** style.css 31 Jul 2004 18:04:43 -0000 1.3 --- style.css 25 Aug 2005 08:41:42 -0000 1.4 *************** *** 1,534 **** ! body { ! background-color: #FFFFFF; ! border: none; ! font-family: sans-serif; ! color: black; ! font-size: 80%; ! } ! ! .shell { ! background-color: #ffffff; [...1140 lines suppressed...] ! ! .configBarBody label.configurationLabel { ! display: block; ! } ! ! /*********************************************************/ ! /* History Column Controls */ ! ! .columnControls { ! white-space:nowrap; ! vertical-align: top; ! width: 10px; ! } ! ! .columnRemove, .columnMove { ! display: block; ! width:100%; ! height: 1em; ! } ! |
From: Joseph C. <tex...@us...> - 2005-08-25 08:39:28
|
Update of /cvsroot/popfile/engine/skins/default In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14616/skins/default Modified Files: configuration-bar.thtml history-search-filter-widget.thtml Log Message: Some minor label changes. Index: configuration-bar.thtml =================================================================== RCS file: /cvsroot/popfile/engine/skins/default/configuration-bar.thtml,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** configuration-bar.thtml 24 Aug 2005 09:17:02 -0000 1.18 --- configuration-bar.thtml 25 Aug 2005 08:39:20 -0000 1.19 *************** *** 94,101 **** <TMPL_VAR NAME="Localize_Configuration_ChangePassword">: </label> ! ! <TMPL_VAR NAME="Localize_Configuration_OldPassword">: <input type="password" name="old_password" size="10"> ! <TMPL_VAR NAME="Localize_Configuration_NewPassword">: <input type="password" name="new_password" size="10"> ! <TMPL_VAR NAME="Localize_Configuration_ConfirmPassword">: <input type="password" name="confirm_password" size="10"> <input type="submit" class="submit" name="change_password" value="<TMPL_VAR NAME="Localize_Apply">" /> --- 94,100 ---- <TMPL_VAR NAME="Localize_Configuration_ChangePassword">: </label> ! <span class="configurationLabel"><TMPL_VAR NAME="Localize_Configuration_OldPassword">:</span> <input type="password" name="old_password" size="10"> ! <span class="configurationLabel"><TMPL_VAR NAME="Localize_Configuration_NewPassword">:</span> <input type="password" name="new_password" size="10"> ! <span class="configurationLabel"><TMPL_VAR NAME="Localize_Configuration_ConfirmPassword">:</span> <input type="password" name="confirm_password" size="10"> <input type="submit" class="submit" name="change_password" value="<TMPL_VAR NAME="Localize_Apply">" /> Index: history-search-filter-widget.thtml =================================================================== RCS file: /cvsroot/popfile/engine/skins/default/history-search-filter-widget.thtml,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** history-search-filter-widget.thtml 21 Aug 2005 22:17:51 -0000 1.13 --- history-search-filter-widget.thtml 25 Aug 2005 08:39:20 -0000 1.14 *************** *** 42,46 **** <input type="hidden" name="negate" value="" /> <input type="checkbox" name="negate" id="negate" class="checkbox" <TMPL_VAR NAME="History_Field_Not"> /> ! <label for="negate" title="<TMPL_VAR NAME="Localize_tip_History_SearchNegate">"> <TMPL_VAR NAME="Localize_History_Negate_Search"> </label> --- 42,46 ---- <input type="hidden" name="negate" value="" /> <input type="checkbox" name="negate" id="negate" class="checkbox" <TMPL_VAR NAME="History_Field_Not"> /> ! <label class="historyLabel" for="negate" title="<TMPL_VAR NAME="Localize_tip_History_SearchNegate">"> <TMPL_VAR NAME="Localize_History_Negate_Search"> </label> |
From: John Graham-C. <jgr...@us...> - 2005-08-24 18:35:27
|
Update of /cvsroot/popfile/engine/tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8371/tests Modified Files: TestConfiguration.tst TestHistory.tst TestXMLRPC.tst Log Message: More v0.23.0 work. In this case around getting more parts of the test suite to work. *** POPFile/Database.pm: Replace INSERT with INSERT OR IGNORE statements. This surpresses the errors we were seeing with duplicate primary keys caused by the insertion of data from the schema file, followed by the insertion of data. The use of IGNORE also means that data inserted by the schema file will override old data. Making this change also causes the following tests to now pass: TestBayesScript, TestInsertScript. *** tests/TestConfiguration.tst Update tests for new global parameter GLOBAL_single_user. Fix a bug that was causing the command-line parser to erroneously complain about an empty -- command-line option. Changed the default options for Getopt::Long so that they are inline with the usage in POPFile/Loader.pm.TestConfiguration test suite now passes. *** POPFile/History.pm, tests/TestHistory.tst Fix minor oddity in History where the query used for searches had a LF in the middle of it (this was harmless but ugly). Update test suite so that start_query now gets a valid session. TestHistory suite now passes. *** Current state of the test suite: TestBayesScript PASS TestBayes PASS TestConfiguration PASS TestHistory PASS TestHTML fail (horribly) TestHTTP PASS TestIMAP PASS TestInsertScript PASS TestLogger PASS TestMailParse fail TestModule PASS TestMQ PASS TestMutex PASS TestPipeScript PASS TestPOP3 fail TestProxy PASS TestWordMangle PASS TestXMLRPC fail TODO Why is there no TestDatabase? TestMailParse is failing on my machine because accented characters are not being recognized as part of the [:alpha:] character class. I have not fully understood why yet. Is any one else seeing this? Try running: print +(sort grep /[[:alpha:]]/, map { chr } 0..255), "\n"; To find out what [:alpha:] maps to. Index: TestConfiguration.tst =================================================================== RCS file: /cvsroot/popfile/engine/tests/TestConfiguration.tst,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** TestConfiguration.tst 4 Jan 2005 22:51:53 -0000 1.20 --- TestConfiguration.tst 24 Aug 2005 18:35:13 -0000 1.21 *************** *** 122,125 **** --- 122,127 ---- test_assert_regexp( $line, 'GLOBAL_msgdir messages/' ); $line = <FILE>; + test_assert_regexp( $line, 'GLOBAL_single_user 1' ); + $line = <FILE>; test_assert_regexp( $line, 'GLOBAL_timeout 60' ); $line = <FILE>; *************** *** 210,214 **** my $line = <OUTPUT>; close OUTPUT; ! test_assert_regexp( $line, 'Unknown option -config_foobar' ); @ARGV = ( '--', '-config_piddir', 'test4/' ); test_assert( $c->parse_command_line() ); --- 212,216 ---- my $line = <OUTPUT>; close OUTPUT; ! test_assert_regexp( $line, 'Unknown option: -config_foobar' ); @ARGV = ( '--', '-config_piddir', 'test4/' ); test_assert( $c->parse_command_line() ); *************** *** 219,225 **** close STDERR; open OUTPUT, "<stdout.tmp"; my $line = <OUTPUT>; close OUTPUT; ! test_assert_regexp( $line, 'Unknown option: doesnotexist' ); @ARGV = ( '--set', 'baz' ); open (STDERR, ">stdout.tmp"); --- 221,228 ---- close STDERR; open OUTPUT, "<stdout.tmp"; + <OUTPUT>; my $line = <OUTPUT>; close OUTPUT; ! test_assert_regexp( $line, 'Unknown option: --doesnotexist' ); @ARGV = ( '--set', 'baz' ); open (STDERR, ">stdout.tmp"); Index: TestHistory.tst =================================================================== RCS file: /cvsroot/popfile/engine/tests/TestHistory.tst,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** TestHistory.tst 11 Jan 2005 07:53:11 -0000 1.14 --- TestHistory.tst 24 Aug 2005 18:35:13 -0000 1.15 *************** *** 52,55 **** --- 52,59 ---- $POPFile->CORE_start(); + my $l = $POPFile->get_module( 'POPFile/Logger' ); + $l->global_config_( 'debug', 1 ); + $l->config_( 'level', 2 ); + # Check the behaviour of reserve_slot. It should return a valid # number and create the associated path (but not the file), check *************** *** 247,251 **** my $session = $b->get_session_key( 'admin', '' ); $h->change_slot_classification( 1, 'spam', $session ); - $b->release_session_key( $session ); my @fields = $h->get_slot_fields( 1 ); --- 251,254 ---- *************** *** 268,272 **** # interface ! my $q = $h->start_query(); test_assert( defined( $q ) ); --- 271,275 ---- # interface ! my $q = $h->start_query( $session ); test_assert( defined( $q ) ); *************** *** 490,494 **** $h->cleanup_history(); ! my $qq = $h->start_query(); $h->set_query( $qq, '', '', '', 0 ); test_assert_equal( $h->get_query_size( $qq ), 0 ); --- 493,497 ---- $h->cleanup_history(); ! my $qq = $h->start_query( $session ); $h->set_query( $qq, '', '', '', 0 ); test_assert_equal( $h->get_query_size( $qq ), 0 ); *************** *** 503,506 **** --- 506,511 ---- test_assert( !( -e 'messages/00/00/00' ) ); + $b->release_session_key( $session ); + $POPFile->CORE_stop(); Index: TestXMLRPC.tst =================================================================== RCS file: /cvsroot/popfile/engine/tests/TestXMLRPC.tst,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** TestXMLRPC.tst 4 Jan 2005 22:52:10 -0000 1.8 --- TestXMLRPC.tst 24 Aug 2005 18:35:13 -0000 1.9 *************** *** 60,64 **** $x->config_( 'port', $xport ); if ($x->start() == 1) { - print "Running\n"; while ( $x->service() && $POPFile->CORE_service( 1 ) ) { select(undef,undef,undef, 0.1); --- 60,63 ---- *************** *** 76,80 **** use XMLRPC::Lite; ! print "Testing\n"; my $session = XMLRPC::Lite --- 75,79 ---- use XMLRPC::Lite; ! print "Testing $xport\n"; my $session = XMLRPC::Lite |
From: John Graham-C. <jgr...@us...> - 2005-08-24 18:35:27
|
Update of /cvsroot/popfile/engine/POPFile In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8371/POPFile Modified Files: Configuration.pm Database.pm History.pm Log Message: More v0.23.0 work. In this case around getting more parts of the test suite to work. *** POPFile/Database.pm: Replace INSERT with INSERT OR IGNORE statements. This surpresses the errors we were seeing with duplicate primary keys caused by the insertion of data from the schema file, followed by the insertion of data. The use of IGNORE also means that data inserted by the schema file will override old data. Making this change also causes the following tests to now pass: TestBayesScript, TestInsertScript. *** tests/TestConfiguration.tst Update tests for new global parameter GLOBAL_single_user. Fix a bug that was causing the command-line parser to erroneously complain about an empty -- command-line option. Changed the default options for Getopt::Long so that they are inline with the usage in POPFile/Loader.pm.TestConfiguration test suite now passes. *** POPFile/History.pm, tests/TestHistory.tst Fix minor oddity in History where the query used for searches had a LF in the middle of it (this was harmless but ugly). Update test suite so that start_query now gets a valid session. TestHistory suite now passes. *** Current state of the test suite: TestBayesScript PASS TestBayes PASS TestConfiguration PASS TestHistory PASS TestHTML fail (horribly) TestHTTP PASS TestIMAP PASS TestInsertScript PASS TestLogger PASS TestMailParse fail TestModule PASS TestMQ PASS TestMutex PASS TestPipeScript PASS TestPOP3 fail TestProxy PASS TestWordMangle PASS TestXMLRPC fail TODO Why is there no TestDatabase? TestMailParse is failing on my machine because accented characters are not being recognized as part of the [:alpha:] character class. I have not fully understood why yet. Is any one else seeing this? Try running: print +(sort grep /[[:alpha:]]/, map { chr } 0..255), "\n"; To find out what [:alpha:] maps to. Index: Configuration.pm =================================================================== RCS file: /cvsroot/popfile/engine/POPFile/Configuration.pm,v retrieving revision 1.55 retrieving revision 1.56 diff -C2 -d -r1.55 -r1.56 *** Configuration.pm 7 Apr 2005 19:54:44 -0000 1.55 --- Configuration.pm 24 Aug 2005 18:35:13 -0000 1.56 *************** *** 36,40 **** use locale; ! use Getopt::Long; #---------------------------------------------------------------------------- --- 36,40 ---- use locale; ! use Getopt::Long qw(:config pass_through); #---------------------------------------------------------------------------- *************** *** 409,414 **** } } else { ! print STDERR "\nUnknown option $options[$i]\n"; ! return 0; } } else { --- 409,417 ---- } } else { ! if ( $options[$i] ne '--' ) { ! print STDERR "\nUnknown option: $options[$i]\n"; ! return 0; ! } ! ++$i; } } else { Index: Database.pm =================================================================== RCS file: /cvsroot/popfile/engine/POPFile/Database.pm,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Database.pm 31 Jan 2005 15:12:38 -0000 1.4 --- Database.pm 24 Aug 2005 18:35:13 -0000 1.5 *************** *** 362,370 **** print "\n\nDatabase schema is outdated, performing automatic upgrade\n"; ! # The database needs upgrading, so we are going to dump out ! # all the data in the database as INSERT statements in a ! # temporary file, then DROP all the tables in the database, ! # then recreate the schema from the new schema and finally ! # rerun the inserts. my $i = 0; --- 362,370 ---- print "\n\nDatabase schema is outdated, performing automatic upgrade\n"; ! # The database needs upgrading, so we are going to dump ! # out all the data in the database as INSERT OR IGNORE ! # statements in a temporary file, then DROP all the tables ! # in the database, then recreate the schema from the new ! # schema and finally rerun the inserts. my $i = 0; *************** *** 398,402 **** last if ( $#rows == -1 ); ! print INSERT "INSERT INTO $table ("; for my $i (0..$t->{NUM_OF_FIELDS}-1) { if ( $i != 0 ) { --- 398,402 ---- last if ( $#rows == -1 ); ! print INSERT "INSERT OR IGNORE INTO $table ("; for my $i (0..$t->{NUM_OF_FIELDS}-1) { if ( $i != 0 ) { *************** *** 464,468 **** # Now write the current version to the database ! $db->do( "insert into popfile ( version ) values ( $version ); " ); unlink $ins_file; --- 464,468 ---- # Now write the current version to the database ! $db->do( "INSERT OR REPLACE into popfile ( version ) values ( $version ); " ); unlink $ins_file; Index: History.pm =================================================================== RCS file: /cvsroot/popfile/engine/POPFile/History.pm,v retrieving revision 1.36 retrieving revision 1.37 diff -C2 -d -r1.36 -r1.37 *** History.pm 7 Apr 2005 19:54:45 -0000 1.36 --- History.pm 24 Aug 2005 18:35:13 -0000 1.37 *************** *** 920,925 **** my $userid = $self->{queries__}{$id}{userid}; ! $self->{queries__}{$id}{base} = "select XXX from history, buckets, ! magnets where history.userid = $userid and committed = 1"; $self->{queries__}{$id}{base} .= ' and history.bucketid = buckets.id'; --- 920,924 ---- my $userid = $self->{queries__}{$id}{userid}; ! $self->{queries__}{$id}{base} = "select XXX from history, buckets, magnets where history.userid = $userid and committed = 1"; $self->{queries__}{$id}{base} .= ' and history.bucketid = buckets.id'; |
From: John Graham-C. <jgr...@us...> - 2005-08-24 18:35:25
|
Update of /cvsroot/popfile/engine/Classifier In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8371/Classifier Modified Files: MailParse.pm Log Message: More v0.23.0 work. In this case around getting more parts of the test suite to work. *** POPFile/Database.pm: Replace INSERT with INSERT OR IGNORE statements. This surpresses the errors we were seeing with duplicate primary keys caused by the insertion of data from the schema file, followed by the insertion of data. The use of IGNORE also means that data inserted by the schema file will override old data. Making this change also causes the following tests to now pass: TestBayesScript, TestInsertScript. *** tests/TestConfiguration.tst Update tests for new global parameter GLOBAL_single_user. Fix a bug that was causing the command-line parser to erroneously complain about an empty -- command-line option. Changed the default options for Getopt::Long so that they are inline with the usage in POPFile/Loader.pm.TestConfiguration test suite now passes. *** POPFile/History.pm, tests/TestHistory.tst Fix minor oddity in History where the query used for searches had a LF in the middle of it (this was harmless but ugly). Update test suite so that start_query now gets a valid session. TestHistory suite now passes. *** Current state of the test suite: TestBayesScript PASS TestBayes PASS TestConfiguration PASS TestHistory PASS TestHTML fail (horribly) TestHTTP PASS TestIMAP PASS TestInsertScript PASS TestLogger PASS TestMailParse fail TestModule PASS TestMQ PASS TestMutex PASS TestPipeScript PASS TestPOP3 fail TestProxy PASS TestWordMangle PASS TestXMLRPC fail TODO Why is there no TestDatabase? TestMailParse is failing on my machine because accented characters are not being recognized as part of the [:alpha:] character class. I have not fully understood why yet. Is any one else seeing this? Try running: print +(sort grep /[[:alpha:]]/, map { chr } 0..255), "\n"; To find out what [:alpha:] maps to. Index: MailParse.pm =================================================================== RCS file: /cvsroot/popfile/engine/Classifier/MailParse.pm,v retrieving revision 1.219 retrieving revision 1.220 diff -C2 -d -r1.219 -r1.220 *** MailParse.pm 14 Aug 2005 03:57:26 -0000 1.219 --- MailParse.pm 24 Aug 2005 18:35:13 -0000 1.220 *************** *** 602,606 **** # Don't decode odd (nonprintable) characters or < >'s. ! if ( ( ( $2 < 255 ) && ( $2 > 63 ) ) || ( $2 == 61 ) || ( ( $2 < 60 ) && ( $2 > 31 ) ) ) { my $from = $1; my $to = chr($2); --- 602,608 ---- # Don't decode odd (nonprintable) characters or < >'s. ! if ( ( ( $2 < 255 ) && ( $2 > 63 ) ) || ! ( $2 == 61 ) || ! ( ( $2 < 60 ) && ( $2 > 31 ) ) ) { my $from = $1; my $to = chr($2); *************** *** 610,614 **** $self->{ut__} =~ s/$from/$to/g; print "$from -> $to\n" if $self->{debug__}; ! $self->update_pseudoword( 'html', 'numericentity', $encoded, $from ); } } --- 612,617 ---- $self->{ut__} =~ s/$from/$to/g; print "$from -> $to\n" if $self->{debug__}; ! $self->update_pseudoword( 'html', ! 'numericentity', $encoded, $from ); } } *************** *** 624,627 **** --- 627,631 ---- # Grab domain names + while ( $line =~ s/(([[:alpha:]0-9\-_]+\.)+)(com|edu|gov|int|mil|net|org|aero|biz|coop|info|museum|name|pro)([^[:alpha:]0-9\-_\.]|$)/$4/i ) { add_url($self, "$1$3", $encoded, '', '', $prefix); *************** *** 655,658 **** --- 659,663 ---- if ( $self->{lang__} eq 'Nihongo' ) { + # In Japanese mode, non-symbol EUC-JP characters should be # matched. *************** *** 686,690 **** # 2 byte characters. # ! # In Korean, care about words between 2 and 45 characters. while ( $line =~ s/(([A-Za-z]|$eksc)([A-Za-z\']|$eksc){1,44})([_\-,\.\"\'\)\?!:;\/& \t\n\r]{0,5}|$)// ) { --- 691,696 ---- # 2 byte characters. # ! # In Korean, care about words between 2 and 45 ! # characters. while ( $line =~ s/(([A-Za-z]|$eksc)([A-Za-z\']|$eksc){1,44})([_\-,\.\"\'\)\?!:;\/& \t\n\r]{0,5}|$)// ) { |
From: Joseph C. <tex...@us...> - 2005-08-24 09:17:10
|
Update of /cvsroot/popfile/engine/skins/default In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13630/skins/default Modified Files: configuration-bar.thtml Log Message: Set size for Change Password text boxes to 10. Did not set maxlength so longer passwords are still possible. Index: configuration-bar.thtml =================================================================== RCS file: /cvsroot/popfile/engine/skins/default/configuration-bar.thtml,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** configuration-bar.thtml 21 Aug 2005 22:17:51 -0000 1.17 --- configuration-bar.thtml 24 Aug 2005 09:17:02 -0000 1.18 *************** *** 95,101 **** </label> ! <TMPL_VAR NAME="Localize_Configuration_OldPassword">: <input type="password" name="old_password"> ! <TMPL_VAR NAME="Localize_Configuration_NewPassword">: <input type="password" name="new_password"> ! <TMPL_VAR NAME="Localize_Configuration_ConfirmPassword">: <input type="password" name="confirm_password"> <input type="submit" class="submit" name="change_password" value="<TMPL_VAR NAME="Localize_Apply">" /> --- 95,101 ---- </label> ! <TMPL_VAR NAME="Localize_Configuration_OldPassword">: <input type="password" name="old_password" size="10"> ! <TMPL_VAR NAME="Localize_Configuration_NewPassword">: <input type="password" name="new_password" size="10"> ! <TMPL_VAR NAME="Localize_Configuration_ConfirmPassword">: <input type="password" name="confirm_password" size="10"> <input type="submit" class="submit" name="change_password" value="<TMPL_VAR NAME="Localize_Apply">" /> |
From: Joseph C. <tex...@us...> - 2005-08-24 09:06:19
|
Update of /cvsroot/popfile/engine/skins/smallgrey In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10518/skins/smallgrey Modified Files: style.css Log Message: Update for 0.23 and clean it up a bit. Index: style.css =================================================================== RCS file: /cvsroot/popfile/engine/skins/smallgrey/style.css,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** style.css 31 Jul 2004 18:04:42 -0000 1.3 --- style.css 24 Aug 2005 09:06:09 -0000 1.4 *************** *** 15,31 **** table.head { - font-weight: normal; width: 100%; - background-color: #eeeeee; - color: #666666; } ! .shutdownLink { color: #990000; - background-color: inherit; text-decoration: none; } ! .shutdownLink:hover { text-decoration: underline; } --- 15,31 ---- table.head { width: 100%; } ! .headShutdown { ! font-size: 80%; ! } ! ! .headShutdown a { color: #990000; text-decoration: none; } ! .shutdownLink:hover, .logoutLink:hover { text-decoration: underline; } *************** *** 36,40 **** } ! .head, td.head { font-weight: bold; font-size: 140%; --- 36,40 ---- } ! .head { font-weight: bold; font-size: 140%; *************** *** 66,70 **** .menu { ! font-size: 120%; font-weight: normal; width: 100%; --- 66,70 ---- .menu { ! font-size: 140%; font-weight: normal; width: 100%; *************** *** 78,90 **** background-color: #cccccc; color: #000000; ! font-size: 123%; ! font-weight: normal; text-decoration: none; } ! td.menuSelected { ! border-left: 2px solid #000000; ! border-right: 2px solid #000000; ! border-top: 2px solid #000000; padding-left: 2px; padding-right: 2px; --- 78,88 ---- background-color: #cccccc; color: #000000; ! font-weight: bold; text-decoration: none; } ! .menuSelected { ! border: 2px solid #cccccc; ! border-bottom: 0; padding-left: 2px; padding-right: 2px; *************** *** 97,102 **** background-color: #efefef; color: #0000ff; ! font-size: 123%; ! font-weight: normal; text-decoration: none; } --- 95,99 ---- background-color: #efefef; color: #0000ff; ! font-weight: bold; text-decoration: none; } *************** *** 146,158 **** } - .bucketsTable td { - border-top: 1px solid #ffffff; - border-bottom: 1px solid #ffffff; - } - - table.bucketsTable { - margin: 3px; - } - .lineImg { width: 4px; --- 143,146 ---- *************** *** 182,203 **** } - td.accuracy0to49 { - background-color: red; - color: #666666; - height: 20px; - } - - td.accuracy50to93 { - background-color: yellow; - color: #666666; - height: 20px; - } - - td.accuracy94to100 { - background-color: green; - color: #666666; - height: 20px; - } - div.error01 { background-color: transparent; --- 170,173 ---- *************** *** 234,241 **** font-weight: bold; font-style: normal; ! background-color: #ffffcc; } ! .historyLabel a:hover { text-decoration: underline; } --- 204,211 ---- font-weight: bold; font-style: normal; ! background-color: #f7f7f7; } ! .historyLabel :hover { text-decoration: underline; } *************** *** 269,300 **** } - table.historyWidgetsTop { - width: 100%; - border-top: 2px solid #cccccc; - border-bottom: 2px solid #cccccc; - text-align: center; - } - - .historyWidgetsTop.submit { - margin-right: 1.5em; - } - - table.historyWidgetsBottom { - width: 100%; - border-bottom: 2px solid #cccccc; - } - - table.historyWidgetsBottom td { - padding-left: 1em; - font-weight: bold; - } - table.footer { width: 100%; background-color: #eeeeee; color: #666666; ! border-left: 2px solid #cccccc; ! border-right: 2px solid #cccccc; ! border-bottom: 2px solid #cccccc; } --- 239,248 ---- } table.footer { width: 100%; background-color: #eeeeee; color: #666666; ! border: 2px solid #cccccc; ! border-top: 0; } *************** *** 387,394 **** --- 335,489 ---- } + optgroup { + font-size: inherit; /* fix Moz 1.0 bug with % font sizes */ + } + + /*********************************************************/ + /* Shell structure */ + + .shellStatusMessage { + color: #000000; + background-color: #EDEDCA; + border: 3px #CCCC99 solid; + width: 100%; + } + + .shellErrorMessage { + color: #FF0000; + background-color: #EDEDCA; + border: 3px #CCCC99 solid; + width: 100%; + } + + /*********************************************************/ + /* Menu Settings */ + + .menuLink { + display: block; + width: 100%; + } + + /*********************************************************/ + /* Messages */ + div.helpMessage { background-color: #f7f7f7; border: 1px solid #cccccc; padding: 0.3em; + } + + div.helpMessage form { + margin: 0; + } + + /*********************************************************/ + /* Form Labels */ + + th.historyLabel { + text-align: left; + } + + /*********************************************************/ + /* Positioning */ + + .historyNavigatorTop, .historyNavigatorBottom { + text-align: right; + vertical-align: top; + } + + .historyNavigatorTop form, .historyNavigatorBottom form { + display:inline; + } + + .refreshLink { + margin-top: 0.5em; + } + + h2.history { + margin-top: 0; + margin-bottom: 0.3em; + } + + .search { + display: inline; + float: left; + padding-right: 1em; + } + + .filter { + display: inline; + } + + .viewHeadings { + display: inline; + } + + /*********************************************************/ + /* Config Bars */ + + .configBarTitle { + font-size: 100%; + display: inline; + } + + .configBarTitle a { + border: 1px #cccccc solid; + padding: 0.5em; padding-bottom: 0; + margin-left: 1em; + background-color: #cccccc; + font-weight: bold; + font-size: 100%; + } + + .configBarBody { + background-color: #efefef; + border-bottom: 1px solid #cccccc; + } + + .configBar td { + border: 1px solid #cccccc; + border-bottom: 0; + } + + .configBarBody form { + margin: 0; + } + + .configBarOption { + border: 1px solid #cccccc; + margin: 0.3em; + padding: 0.3em; + display: inline; + float: left; + min-height: 3em; + background-color: #f7f7f7; + } + + .checkLabel { + border: 1px solid #cccccc; + white-space: nowrap; + } + + .configBarBody input.submit { + margin-top: 0.1em; + } + + .configBarBody label.configurationLabel { + display: block; + } + + /*********************************************************/ + /* History Column Controls */ + + .columnControls { + white-space:nowrap; + vertical-align: top; + width: 10px; + } + + .columnRemove, .columnMove { + display: block; + width:100%; + height: 1em; } |
From: Joseph C. <tex...@us...> - 2005-08-22 08:41:48
|
Update of /cvsroot/popfile/engine/languages In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21847/languages Modified Files: English.msg Log Message: Add magnets explanation/warning based on Brian's patch. Add confirm javascript dialog for User page remove button. Index: English.msg =================================================================== RCS file: /cvsroot/popfile/engine/languages/English.msg,v retrieving revision 1.96 retrieving revision 1.97 diff -C2 -d -r1.96 -r1.97 *** English.msg 21 Aug 2005 22:17:51 -0000 1.96 --- English.msg 22 Aug 2005 08:41:37 -0000 1.97 *************** *** 303,306 **** --- 303,307 ---- Magnet_Always Always goes to bucket Magnet_Jump Jump to magnet page + Magnet_Note Magnets should be used sparingly since they bypass POPFile's learning process. Using magnets makes POPFile take longer to achieve high accuracy.<br /><br />Read more about magnets at the <a href="http://popfile.sourceforge.net/cgi-bin/wiki.pl?Glossary/AMagnet">POPFile Documentation Project</a>. Bucket_Error1 Bucket names can only contain the letters a to z in lower case, numbers 0 to 9, plus - and _ *************** *** 484,487 **** --- 485,490 ---- tip_Admin_ReportStats 0.22 text should be put back + tip_Users_Remove Delete user from POPFile + tip_Footer_HomePage Visit the POPFile home page tip_Footer_Manual The original POPFile documentation (slightly outdated) |
From: Joseph C. <tex...@us...> - 2005-08-22 08:37:52
|
Update of /cvsroot/popfile/engine/skins/default In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21036/skins/default Modified Files: magnet-navigator.thtml magnet-page.thtml users-page.thtml Log Message: Add magnets explanation/warning based on Brian's patch. Add confirm javascript dialog for User page remove button. Index: users-page.thtml =================================================================== RCS file: /cvsroot/popfile/engine/skins/default/users-page.thtml,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** users-page.thtml 15 Aug 2005 03:49:41 -0000 1.5 --- users-page.thtml 22 Aug 2005 08:37:44 -0000 1.6 *************** *** 51,55 **** </select> ! <input type="submit" class="submit" name="remove" value="<TMPL_VAR NAME="Localize_Remove">" /> </form> </TMPL_IF> --- 51,55 ---- </select> ! <input type="submit" class="submit" name="remove" onClick="return confirmClick('<TMPL_VAR NAME="Localize_tip_Users_Remove">')" value="<TMPL_VAR NAME="Localize_Remove">" /> </form> </TMPL_IF> *************** *** 109,113 **** </td> <td align="center"> ! <input type="submit" class="submit deleteButton" name="delete" value="<TMPL_VAR NAME="Localize_Remove">" /> </td> </tr> --- 109,113 ---- </td> <td align="center"> ! <input type="submit" class="submit deleteButton" name="delete" onClick="return confirmClick('<TMPL_VAR NAME="Localize_tip_Users_Remove">')" value="<TMPL_VAR NAME="Localize_Remove">" /> </td> </tr> Index: magnet-page.thtml =================================================================== RCS file: /cvsroot/popfile/engine/skins/default/magnet-page.thtml,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** magnet-page.thtml 21 Aug 2005 08:38:35 -0000 1.12 --- magnet-page.thtml 22 Aug 2005 08:37:44 -0000 1.13 *************** *** 5,9 **** <TMPL_INCLUDE NAME="magnet-navigator.thtml"> - <br /><br /> <form action="/magnets" method="post"> --- 5,8 ---- *************** *** 85,90 **** <input type="hidden" name="count" value="<TMPL_VAR NAME="Magnet_Count_Magnet">" /> </form> - <br /> - <br /> <TMPL_INCLUDE NAME="magnet-navigator.thtml"> --- 84,87 ---- *************** *** 99,102 **** --- 96,102 ---- </tr> </table> + + <table> + <tr><td> <div class="magnetsNewWidget"> <form action="/magnets" method="post"> *************** *** 158,164 **** </TMPL_IF> - <br /> </div> <TMPL_INCLUDE NAME="configuration-bar.thtml"> <TMPL_INCLUDE NAME="common-bottom.thtml"> --- 158,170 ---- </TMPL_IF> </div> + </td> + <td> + <div class="helpMessage"> + <TMPL_VAR NAME="Localize_Magnet_Note"> + </div> + </td></tr></table> + <TMPL_INCLUDE NAME="configuration-bar.thtml"> <TMPL_INCLUDE NAME="common-bottom.thtml"> Index: magnet-navigator.thtml =================================================================== RCS file: /cvsroot/popfile/engine/skins/default/magnet-navigator.thtml,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** magnet-navigator.thtml 15 Feb 2005 04:23:54 -0000 1.4 --- magnet-navigator.thtml 22 Aug 2005 08:37:43 -0000 1.5 *************** *** 1,4 **** --- 1,6 ---- <TMPL_IF NAME="Magnet_Navigator_Enabled"> + <p> + <TMPL_VAR NAME="Localize_Magnet_Jump">: *************** *** 27,29 **** --- 29,33 ---- </TMPL_IF> + </p> + </TMPL_IF> |
From: John Graham-C. <jgr...@us...> - 2005-08-21 22:18:31
|
Update of /cvsroot/popfile/engine/POPFile In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11349/POPFile Modified Files: API.pm Log Message: More v0.23.0 work; mostly around the test suite and the ability to change passwords. *** NOTE: Had to run 'dos2unix' because a number of files had CRLF line endings. POPFile standard is Unix-style LF only line endings on files. *** tests/TestBayes.tst and Classifier/Bayes.pm: Add tests for APIs that had no tests (and fix the bugs that the tests showed up!). All APIs now have tests; the new tests cover: add_account create_user get_accounts get_bucket_id get_bucket_name get_user_id get_user_list get_user_parameter get_user_parameter_from_id get_user_parameter_list remove_account remove_user set_user_parameter_from_id *** Classifier/Bayes.pm, tests/TestBayes.tst, UI/HTML.pm create_user now also creates a random password for the user and the password is displayed when the user is created in the UI. *** Classifier/Bayes.pm, tests/TestBayes.tst, UI/HTML.pm, skins/default/configuration-bar.thtml Added the ability to change password for a user. This is done in the configuration bar and added new APIs and tests (validate_password and set_password) for a user. *** POPFile/API.pm: Add external access to the following new APIs: add_account create_user get_user_id get_user_id_from_session get_user_parameter get_user_parameter_from_id get_user_parameter_list remove_account remove_user set_user_parameter_from_id *** tests/TestHTTP.tst: Remove redirection tests since this is no longer handled by the HTTP module. *** Current state of the test suite: TestBayesScript fail TestBayes PASS TestConfiguration fail TestHistory fail TestHTML fail (horribly) TestHTTP PASS TestIMAP PASS TestInsertScript fail TestLogger PASS TestMailParse fail TestModule PASS TestMQ PASS TestMutex PASS TestPipeScript PASS TestPOP3 fail TestProxy PASS TestWordMangle PASS TestXMLRPC fail *** TODO tests/TestModule.tst needs updating for the user_*_config_ APIs that have been added. Look into why we get bogus complaints about the primary key not being unique when we do a database upgrade. I think some of these are caused by the fact that popfile.sql contains some INSERT statements and we are getting double inserts. Perhaps the upgrade should be using UPDATE instead. Index: API.pm =================================================================== RCS file: /cvsroot/popfile/engine/POPFile/API.pm,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** API.pm 11 Feb 2005 00:34:36 -0000 1.11 --- API.pm 21 Aug 2005 22:17:47 -0000 1.12 *************** *** 38,42 **** } - # I'm generally against doing obscure things in Perl because it makes the code # hard to read, but since this entire file is a bunch of wrappers for the --- 38,41 ---- *************** *** 98,102 **** sub add_stopword { shift->{c}->add_stopword( @_ ); } sub remove_stopword { shift->{c}->remove_stopword( @_ ); } ! sub get_html_colored_message { shift->{c}->get_html_colored_message( @_); } # These APIs return lists and need to be altered to arrays before returning --- 97,111 ---- sub add_stopword { shift->{c}->add_stopword( @_ ); } sub remove_stopword { shift->{c}->remove_stopword( @_ ); } ! sub get_html_colored_message { shift->{c}->get_html_colored_message( @_ ); } ! ! sub create_user { shift->{c}->create_user( @_ ); } ! sub remove_user { shift->{c}->remove_user( @_ ); } ! sub get_user_id { shift->{c}->get_user_id( @_ ); } ! sub get_user_id_from_session { shift->{c}->get_user_id_from_session( @_ ); } ! sub add_account { shift->{c}->add_account( @_ ); } ! sub remove_account { shift->{c}->remove_account( @_ ); } ! sub get_user_parameter { shift->{c}->get_user_parameter( @_ ); } ! sub get_user_parameter_from_id { shift->{c}->get_user_parameter_from_id( @_ );} ! sub set_user_parameter_from_id { shift->{c}->get_user_parameter_from_id( @_ );} # These APIs return lists and need to be altered to arrays before returning *************** *** 113,116 **** --- 122,126 ---- sub get_bucket_word_list { [ shift->{c}->get_bucket_word_list( @_ ) ]; } sub get_bucket_word_prefixes { [ shift->{c}->get_bucket_word_prefixes( @_ ) ]; } + sub get_user_parameter_list { [ shift->{c}->get_bucket_word_list( @_ ) ]; } # This API is used to add a message to POPFile's history, process the message *************** *** 132,136 **** # Convert the two files into streams that can be passed to the # classifier - open IN, "<$in" or return undef; --- 142,145 ---- |
From: John Graham-C. <jgr...@us...> - 2005-08-21 22:18:31
|
Update of /cvsroot/popfile/engine In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11349 Modified Files: Makefile Log Message: More v0.23.0 work; mostly around the test suite and the ability to change passwords. *** NOTE: Had to run 'dos2unix' because a number of files had CRLF line endings. POPFile standard is Unix-style LF only line endings on files. *** tests/TestBayes.tst and Classifier/Bayes.pm: Add tests for APIs that had no tests (and fix the bugs that the tests showed up!). All APIs now have tests; the new tests cover: add_account create_user get_accounts get_bucket_id get_bucket_name get_user_id get_user_list get_user_parameter get_user_parameter_from_id get_user_parameter_list remove_account remove_user set_user_parameter_from_id *** Classifier/Bayes.pm, tests/TestBayes.tst, UI/HTML.pm create_user now also creates a random password for the user and the password is displayed when the user is created in the UI. *** Classifier/Bayes.pm, tests/TestBayes.tst, UI/HTML.pm, skins/default/configuration-bar.thtml Added the ability to change password for a user. This is done in the configuration bar and added new APIs and tests (validate_password and set_password) for a user. *** POPFile/API.pm: Add external access to the following new APIs: add_account create_user get_user_id get_user_id_from_session get_user_parameter get_user_parameter_from_id get_user_parameter_list remove_account remove_user set_user_parameter_from_id *** tests/TestHTTP.tst: Remove redirection tests since this is no longer handled by the HTTP module. *** Current state of the test suite: TestBayesScript fail TestBayes PASS TestConfiguration fail TestHistory fail TestHTML fail (horribly) TestHTTP PASS TestIMAP PASS TestInsertScript fail TestLogger PASS TestMailParse fail TestModule PASS TestMQ PASS TestMutex PASS TestPipeScript PASS TestPOP3 fail TestProxy PASS TestWordMangle PASS TestXMLRPC fail *** TODO tests/TestModule.tst needs updating for the user_*_config_ APIs that have been added. Look into why we get bogus complaints about the primary key not being unique when we do a database upgrade. I think some of these are caused by the fact that popfile.sql contains some INSERT statements and we are getting double inserts. Perhaps the upgrade should be using UPDATE instead. Index: Makefile =================================================================== RCS file: /cvsroot/popfile/engine/Makefile,v retrieving revision 1.42 retrieving revision 1.43 diff -C2 -d -r1.42 -r1.43 *** Makefile 12 Jan 2005 21:53:34 -0000 1.42 --- Makefile 21 Aug 2005 22:17:46 -0000 1.43 *************** *** 149,150 **** --- 149,151 ---- popfile.pck: popfile.pl bayes.pl pipe.pl insert.pl Classifier/*.pm POPFile/*.pm Proxy/*.pm Services/*.pm UI/*.pm @perl make_packing_list.pl $@ $^ + # DO NOT DELETE |
From: John Graham-C. <jgr...@us...> - 2005-08-21 22:18:31
|
Update of /cvsroot/popfile/engine/Classifier In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11349/Classifier Modified Files: Bayes.pm Log Message: More v0.23.0 work; mostly around the test suite and the ability to change passwords. *** NOTE: Had to run 'dos2unix' because a number of files had CRLF line endings. POPFile standard is Unix-style LF only line endings on files. *** tests/TestBayes.tst and Classifier/Bayes.pm: Add tests for APIs that had no tests (and fix the bugs that the tests showed up!). All APIs now have tests; the new tests cover: add_account create_user get_accounts get_bucket_id get_bucket_name get_user_id get_user_list get_user_parameter get_user_parameter_from_id get_user_parameter_list remove_account remove_user set_user_parameter_from_id *** Classifier/Bayes.pm, tests/TestBayes.tst, UI/HTML.pm create_user now also creates a random password for the user and the password is displayed when the user is created in the UI. *** Classifier/Bayes.pm, tests/TestBayes.tst, UI/HTML.pm, skins/default/configuration-bar.thtml Added the ability to change password for a user. This is done in the configuration bar and added new APIs and tests (validate_password and set_password) for a user. *** POPFile/API.pm: Add external access to the following new APIs: add_account create_user get_user_id get_user_id_from_session get_user_parameter get_user_parameter_from_id get_user_parameter_list remove_account remove_user set_user_parameter_from_id *** tests/TestHTTP.tst: Remove redirection tests since this is no longer handled by the HTTP module. *** Current state of the test suite: TestBayesScript fail TestBayes PASS TestConfiguration fail TestHistory fail TestHTML fail (horribly) TestHTTP PASS TestIMAP PASS TestInsertScript fail TestLogger PASS TestMailParse fail TestModule PASS TestMQ PASS TestMutex PASS TestPipeScript PASS TestPOP3 fail TestProxy PASS TestWordMangle PASS TestXMLRPC fail *** TODO tests/TestModule.tst needs updating for the user_*_config_ APIs that have been added. Look into why we get bogus complaints about the primary key not being unique when we do a database upgrade. I think some of these are caused by the fact that popfile.sql contains some INSERT statements and we are getting double inserts. Perhaps the upgrade should be using UPDATE instead. Index: Bayes.pm =================================================================== RCS file: /cvsroot/popfile/engine/Classifier/Bayes.pm,v retrieving revision 1.345 retrieving revision 1.346 diff -C2 -d -r1.345 -r1.346 *** Bayes.pm 14 Aug 2005 03:57:26 -0000 1.345 --- Bayes.pm 21 Aug 2005 22:17:46 -0000 1.346 *************** *** 1476,1480 **** # get a random session key in hex ! my $random = Crypt::Random::makerandom_octet( Length => 128, Strength => 1 ); my $now = time; return sha256_hex( "$$" . "$random$now" ); --- 1476,1481 ---- # get a random session key in hex ! my $random = Crypt::Random::makerandom_octet( Length => 128, ! Strength => 1 ); my $now = time; return sha256_hex( "$$" . "$random$now" ); *************** *** 1618,1622 **** #---------------------------------------------------------------------------- # ! # release_sessions_key # # $session A session key previously returned by get_session_key --- 1619,1623 ---- #---------------------------------------------------------------------------- # ! # release_session_key # # $session A session key previously returned by get_session_key *************** *** 1668,1672 **** # #---------------------------------------------------------------------------- - sub get_session_key_from_token { --- 1669,1672 ---- *************** *** 1698,1707 **** # figure out which user is being talked about ! my $result = $self->{db_get_user_from_account__}->execute( "$module:$token" ); if ( !defined( $result ) ) { $self->log_( 1, "Unknown account $module:$token" ); return undef; } ! my $user = $self->{db_get_user_from_account__}->fetchrow_arrayref->[0]; my $user_session = $self->generate_unique_session_key__(); --- 1698,1715 ---- # figure out which user is being talked about ! my $result = $self->{db_get_user_from_account__}->execute( ! "$module:$token" ); if ( !defined( $result ) ) { $self->log_( 1, "Unknown account $module:$token" ); return undef; } ! ! my $rows = $self->{db_get_user_from_account__}->fetchrow_arrayref; ! my $user = defined( $rows )?$rows->[0]:undef; ! ! if ( !defined( $user ) ) { ! $self->log_( 1, "Unknown account $module:$token" ); ! return undef; ! } my $user_session = $self->generate_unique_session_key__(); *************** *** 2626,2635 **** # to predict if there is flushable data) ! $self->flush_extra_( $mail, \*FLUSH, 0); close FLUSH; # append any data we got to the actual temp file ! if ( ( (-s "$msg_file.flush") > 0 ) && ( open FLUSH, "<$msg_file.flush" ) ) { binmode FLUSH; if ( open TEMP, ">>$msg_file" ) { --- 2634,2644 ---- # to predict if there is flushable data) ! $self->flush_extra_( $mail, \*FLUSH, 0 ); close FLUSH; # append any data we got to the actual temp file ! if ( ( (-s "$msg_file.flush") > 0 ) && ! ( open FLUSH, "<$msg_file.flush" ) ) { binmode FLUSH; if ( open TEMP, ">>$msg_file" ) { *************** *** 2768,2772 **** # $account The account to add # ! #---------------------------------------------------------------------------- sub add_account { --- 2777,2783 ---- # $account The account to add # ! # Returns 1 if the account was added successfully, or 0 for an error, ! # -1 if another user already has that account associated with it ! # ---------------------------------------------------------------------------- sub add_account { *************** *** 2811,2814 **** --- 2822,2827 ---- # $account The account to remove # + # Returns 1 if the account was successfully removed, 0 if not + # #---------------------------------------------------------------------------- sub remove_account *************** *** 2824,2828 **** } ! return $self->db_()->do( "delete from accounts where account = '$module:$account';" ); } --- 2837,2843 ---- } ! my $result = $self->db_()->do( "delete from accounts where account = '$module:$account';" ); ! ! return defined( $result ); } *************** *** 3277,3281 **** # # Returns 0 for success, 1 for user already exists, 2 for other error, ! # 3 for clone failure and undef if caller isn't an admin. # # ---------------------------------------------------------------------------- --- 3292,3297 ---- # # Returns 0 for success, 1 for user already exists, 2 for other error, ! # 3 for clone failure and undef if caller isn't an admin. If ! # successful also returns an initial password for the user. # # ---------------------------------------------------------------------------- *************** *** 3292,3296 **** if ( $can_admin != 1 ) { ! return undef; } --- 3308,3312 ---- if ( $can_admin != 1 ) { ! return ( undef, undef ); } *************** *** 3298,3312 **** if ( defined( $self->get_user_id( $session, $new_user ) ) ) { ! return 1; } ! my $password = md5_hex( $new_user . '__popfile__' ); ! $self->db_()->do( "insert into users ( name, password ) values ( '$new_user', '$password' );" ); my $id = $self->get_user_id( $session, $new_user ); if ( !defined( $id ) ) { ! return 2; } --- 3314,3339 ---- if ( defined( $self->get_user_id( $session, $new_user ) ) ) { ! return ( 1, undef ); } ! my $password = ''; ! my @chars = split( //,'abcdefghijklmnopqurstuvwxyz0123456789' ); ! while ( length( $password ) < 8 ) { ! my $c = $chars[int(rand($#chars+1))]; ! if ( int(rand(2)) == 1 ) { ! $c = uc($c); ! } ! $password .= $c; ! } ! ! my $password_hash = md5_hex( $new_user . '__popfile__' . $password ); ! ! $self->db_()->do( "insert into users ( name, password ) values ( '$new_user', '$password_hash' );" ); my $id = $self->get_user_id( $session, $new_user ); if ( !defined( $id ) ) { ! return ( 2, undef ); } *************** *** 3317,3321 **** my $clid = $self->get_user_id( $session, $clone ); if ( !defined( $clid ) ) { ! return 3; } my $h = $self->db_()->prepare( "select utid, val from user_params where userid = $clid;" ); --- 3344,3348 ---- my $clid = $self->get_user_id( $session, $clone ); if ( !defined( $clid ) ) { ! return ( 3, undef ); } my $h = $self->db_()->prepare( "select utid, val from user_params where userid = $clid;" ); *************** *** 3344,3353 **** # TODO clone bucket parameters - - # TODO assign a password - } ! return 0; } --- 3371,3377 ---- # TODO clone bucket parameters } ! return ( 0, $password ); } *************** *** 3359,3363 **** # # $session A valid session ID for an administrator ! # $user The name for the new to remove # # Returns 0 for success, undef for wrong permissions and 1 for user --- 3383,3387 ---- # # $session A valid session ID for an administrator ! # $user The name of the user to remove # # Returns 0 for success, undef for wrong permissions and 1 for user *************** *** 3388,3391 **** --- 3412,3416 ---- if ( $val == 0 ) { $self->db_()->do( "delete from users where name = '$user';" ); + return 0; } else { return 2; *************** *** 3393,3397 **** } ! return 0; } --- 3418,3496 ---- } ! return 1; ! } ! ! #---------------------------------------------------------------------------- ! # ! # validate_password ! # ! # Checks the password for the current user ! # ! # $session A valid session ID ! # $password A possible password to check ! # ! # Returns 1 if the password is valid, 0 otherwise ! # ! # ---------------------------------------------------------------------------- ! sub validate_password ! { ! my ( $self, $session, $password ) = @_; ! ! # Lookup the user name from the session key ! ! my $user; ! my $h = $self->db_()->prepare( "select name from users where id = $self->{api_sessions__}{$session};" ); ! $h->execute; ! if ( my $row = $h->fetchrow_arrayref ) { ! $h->finish; ! $user = $row->[0]; ! } else { ! return 0; ! } ! ! my $hash = md5_hex( $user . '__popfile__' . $password ); ! ! $self->{db_get_userid__}->execute( $user, $hash ); ! my $result = $self->{db_get_userid__}->fetchrow_arrayref; ! if ( !defined( $result ) ) { ! return 0; ! } ! ! return 1; ! } ! ! #---------------------------------------------------------------------------- ! # ! # set_password ! # ! # Sets the password for the current user ! # ! # $session A valid session ID ! # $password The new password ! # ! # Returns 1 if the password was updated, 0 if not ! # ! # ---------------------------------------------------------------------------- ! sub set_password ! { ! my ( $self, $session, $password ) = @_; ! ! # Lookup the user name from the session key ! ! my $user; ! my $h = $self->db_()->prepare( "select name from users where id = $self->{api_sessions__}{$session};" ); ! $h->execute; ! if ( my $row = $h->fetchrow_arrayref ) { ! $h->finish; ! $user = $row->[0]; ! } else { ! return 0; ! } ! ! my $hash = md5_hex( $user . '__popfile__' . $password ); ! ! $self->db_()->do( "update users set password = '$hash' where id = $self->{api_sessions__}{$session};" ); ! ! return 1; } *************** *** 3473,3477 **** return undef if ( !defined( $userid ) ); ! my ( $val, $def)= $self->get_user_parameter_from_id( $userid, $parameter ); return $val; --- 3572,3576 ---- return undef if ( !defined( $userid ) ); ! my ( $val, $def )= $self->get_user_parameter_from_id( $userid,$parameter ); return $val; *************** *** 3482,3486 **** # get_user_id (ADMIN ONLY) # ! # Returns the database ID of a named used # # $session A valid session ID --- 3581,3585 ---- # get_user_id (ADMIN ONLY) # ! # Returns the database ID of a named user # # $session A valid session ID *************** *** 3688,3693 **** # fast_get_html_colored_message # ! # Parser a mail message stored in a file and returns HTML representing the message ! # with coloring of the words # # $session A valid session key returned by a call to get_session_key --- 3787,3792 ---- # fast_get_html_colored_message # ! # Parser a mail message stored in a file and returns HTML representing ! # the message with coloring of the words # # $session A valid session key returned by a call to get_session_key |
From: John Graham-C. <jgr...@us...> - 2005-08-21 22:18:31
|
Update of /cvsroot/popfile/engine/Proxy In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11349/Proxy Modified Files: POP3.pm Proxy.pm Log Message: More v0.23.0 work; mostly around the test suite and the ability to change passwords. *** NOTE: Had to run 'dos2unix' because a number of files had CRLF line endings. POPFile standard is Unix-style LF only line endings on files. *** tests/TestBayes.tst and Classifier/Bayes.pm: Add tests for APIs that had no tests (and fix the bugs that the tests showed up!). All APIs now have tests; the new tests cover: add_account create_user get_accounts get_bucket_id get_bucket_name get_user_id get_user_list get_user_parameter get_user_parameter_from_id get_user_parameter_list remove_account remove_user set_user_parameter_from_id *** Classifier/Bayes.pm, tests/TestBayes.tst, UI/HTML.pm create_user now also creates a random password for the user and the password is displayed when the user is created in the UI. *** Classifier/Bayes.pm, tests/TestBayes.tst, UI/HTML.pm, skins/default/configuration-bar.thtml Added the ability to change password for a user. This is done in the configuration bar and added new APIs and tests (validate_password and set_password) for a user. *** POPFile/API.pm: Add external access to the following new APIs: add_account create_user get_user_id get_user_id_from_session get_user_parameter get_user_parameter_from_id get_user_parameter_list remove_account remove_user set_user_parameter_from_id *** tests/TestHTTP.tst: Remove redirection tests since this is no longer handled by the HTTP module. *** Current state of the test suite: TestBayesScript fail TestBayes PASS TestConfiguration fail TestHistory fail TestHTML fail (horribly) TestHTTP PASS TestIMAP PASS TestInsertScript fail TestLogger PASS TestMailParse fail TestModule PASS TestMQ PASS TestMutex PASS TestPipeScript PASS TestPOP3 fail TestProxy PASS TestWordMangle PASS TestXMLRPC fail *** TODO tests/TestModule.tst needs updating for the user_*_config_ APIs that have been added. Look into why we get bogus complaints about the primary key not being unique when we do a database upgrade. I think some of these are caused by the fact that popfile.sql contains some INSERT statements and we are getting double inserts. Perhaps the upgrade should be using UPDATE instead. Index: POP3.pm =================================================================== RCS file: /cvsroot/popfile/engine/Proxy/POP3.pm,v retrieving revision 1.110 retrieving revision 1.111 diff -C2 -d -r1.110 -r1.111 *** POP3.pm 7 Apr 2005 19:54:46 -0000 1.110 --- POP3.pm 21 Aug 2005 22:17:48 -0000 1.111 *************** *** 189,193 **** # version number ! $self->tee_( $client, "+OK " . $self->config_( 'welcome_string' ) . "$eol" ); # Compile some configurable regexp's once --- 189,194 ---- # version number ! $self->tee_( $client, "+OK " . $self->config_( 'welcome_string' ) . ! "$eol" ); # Compile some configurable regexp's once Index: Proxy.pm =================================================================== RCS file: /cvsroot/popfile/engine/Proxy/Proxy.pm,v retrieving revision 1.61 retrieving revision 1.62 diff -C2 -d -r1.61 -r1.62 *** Proxy.pm 23 May 2005 10:42:50 -0000 1.61 --- Proxy.pm 21 Aug 2005 22:17:48 -0000 1.62 *************** *** 478,482 **** my ( $self, $token ) = @_; ! return $self->classifier_()->get_session_key_from_token( $self->{api_session__}, $self->name(), $token ); } --- 478,485 ---- my ( $self, $token ) = @_; ! return $self->classifier_()->get_session_key_from_token( ! $self->{api_session__}, ! $self->name(), ! $token ); } |
From: John Graham-C. <jgr...@us...> - 2005-08-21 22:18:03
|
Update of /cvsroot/popfile/engine/tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11349/tests Modified Files: TestBayes.tst TestHTML.tst TestHTTP.tst Log Message: More v0.23.0 work; mostly around the test suite and the ability to change passwords. *** NOTE: Had to run 'dos2unix' because a number of files had CRLF line endings. POPFile standard is Unix-style LF only line endings on files. *** tests/TestBayes.tst and Classifier/Bayes.pm: Add tests for APIs that had no tests (and fix the bugs that the tests showed up!). All APIs now have tests; the new tests cover: add_account create_user get_accounts get_bucket_id get_bucket_name get_user_id get_user_list get_user_parameter get_user_parameter_from_id get_user_parameter_list remove_account remove_user set_user_parameter_from_id *** Classifier/Bayes.pm, tests/TestBayes.tst, UI/HTML.pm create_user now also creates a random password for the user and the password is displayed when the user is created in the UI. *** Classifier/Bayes.pm, tests/TestBayes.tst, UI/HTML.pm, skins/default/configuration-bar.thtml Added the ability to change password for a user. This is done in the configuration bar and added new APIs and tests (validate_password and set_password) for a user. *** POPFile/API.pm: Add external access to the following new APIs: add_account create_user get_user_id get_user_id_from_session get_user_parameter get_user_parameter_from_id get_user_parameter_list remove_account remove_user set_user_parameter_from_id *** tests/TestHTTP.tst: Remove redirection tests since this is no longer handled by the HTTP module. *** Current state of the test suite: TestBayesScript fail TestBayes PASS TestConfiguration fail TestHistory fail TestHTML fail (horribly) TestHTTP PASS TestIMAP PASS TestInsertScript fail TestLogger PASS TestMailParse fail TestModule PASS TestMQ PASS TestMutex PASS TestPipeScript PASS TestPOP3 fail TestProxy PASS TestWordMangle PASS TestXMLRPC fail *** TODO tests/TestModule.tst needs updating for the user_*_config_ APIs that have been added. Look into why we get bogus complaints about the primary key not being unique when we do a database upgrade. I think some of these are caused by the fact that popfile.sql contains some INSERT statements and we are getting double inserts. Perhaps the upgrade should be using UPDATE instead. Index: TestHTML.tst =================================================================== RCS file: /cvsroot/popfile/engine/tests/TestHTML.tst,v retrieving revision 1.35 retrieving revision 1.36 diff -C2 -d -r1.35 -r1.36 *** TestHTML.tst 23 Sep 2004 07:37:06 -0000 1.35 --- TestHTML.tst 21 Aug 2005 22:17:52 -0000 1.36 *************** *** 702,704 **** --- 702,706 ---- } + # TODO http_redirect_ + 1; Index: TestBayes.tst =================================================================== RCS file: /cvsroot/popfile/engine/tests/TestBayes.tst,v retrieving revision 1.58 retrieving revision 1.59 diff -C2 -d -r1.58 -r1.59 *** TestBayes.tst 15 Jan 2005 08:02:57 -0000 1.58 --- TestBayes.tst 21 Aug 2005 22:17:52 -0000 1.59 *************** *** 82,85 **** --- 82,199 ---- test_assert( $session ne '' ); + # Test for getting and setting the session key from an associated + # account + + my ( $success, $password ) = $b->create_user( $session, 'testuser' ); + test_assert_equal( $success, 0 ); + test_assert( $password ne '' ); + my ( $success2, $password2 ) = $b->create_user( $session, 'testuser2' ); + test_assert_equal( $success2, 0 ); + test_assert( $password2 ne '' ); + ( $success2, $password2 ) = $b->create_user( $session, 'testuser' ); + test_assert_equal( $success2, 1 ); + test_assert( !defined( $password2 ) ); + + my @users = sort @{$b->get_user_list( $session )}; + + test_assert( $#users == 2 ); + test_assert( $users[0] eq 'admin' ); + test_assert( $users[1] eq 'testuser' ); + test_assert( $users[2] eq 'testuser2' ); + + test_assert( $b->remove_user( $session, 'testuser3' ) == 1 ); + test_assert( $b->remove_user( $session, 'testuser2' ) == 0 ); + + @users = sort @{$b->get_user_list( $session )}; + + test_assert( $#users == 1 ); + test_assert( $users[0] eq 'admin' ); + test_assert( $users[1] eq 'testuser' ); + + $b->global_config_( 'single_user', 1 ); + + my $session2 = $b->get_session_key_from_token( $session, 'smtp', 'token' ); + test_assert( $session2 eq $session ); + $session2 = $b->get_session_key_from_token( $session, 'nntp', 'token' ); + test_assert( $session2 eq $session ); + $session2 = $b->get_session_key_from_token( $session, 'pop', 'token' ); + test_assert( $session2 eq $session ); + $session2 = $b->get_session_key_from_token( $session, 'pop3', 'token' ); + test_assert( $session2 eq $session ); + + $b->global_config_( 'single_user', 0 ); + + $session2 = $b->get_session_key_from_token( $session, 'smtp', 'token' ); + test_assert( $session2 eq $session ); + $session2 = $b->get_session_key_from_token( $session, 'nntp', 'token' ); + test_assert( $session2 eq $session ); + $session2 = $b->get_session_key_from_token( $session, 'pop', 'token' ); + test_assert( $session2 eq $session ); + $session2 = $b->get_session_key_from_token( $session, 'pop3', 'token' ); + test_assert( !defined( $session2 ) ); + + my $id2 = $b->get_user_id( $session, 'testuser2' ); + test_assert( !defined( $id2 ) ); + $id2 = $b->get_user_id( $session, 'testuser' ); + test_assert( defined( $id2 ) ); + + test_assert( $b->add_account( $session, $id2, 'pop3', 'foo:bar' ) == 1 ); + test_assert( $b->add_account( $session, $id2, 'pop3', 'foo:bar' ) == -1 ); + + my $session3 = $b->get_session_key_from_token( $session, 'pop3', 'fooz:bar' ); + test_assert( !defined( $session3 ) ); + $session3 = $b->get_session_key_from_token( $session, 'pop3', 'foo:bar' ); + test_assert( defined( $session3 ) ); + + my @parameters = sort $b->get_user_parameter_list( $session ); + test_assert_equal( $#parameters, 35 ); + test_assert_equal( join( ' ', @parameters ), 'GLOBAL_can_admin GLOBAL_private_key GLOBAL_public_key bayes_subject_mod_left bayes_subject_mod_right bayes_unclassified_weight bayes_xpl_angle history_history_days html_column_characters html_columns html_date_format html_language html_last_reset html_last_update_check html_page_size html_send_stats html_session_dividers html_show_bucket_help html_show_configbars html_show_training_help html_skin html_test_language html_update_check html_wordtable_format imap_bucket_folder_mappings imap_expunge imap_hostname imap_login imap_password imap_port imap_training_mode imap_uidnexts imap_uidvalidities imap_update_interval imap_use_ssl imap_watched_folders' ); + + test_assert( $b->get_user_parameter( $session, 'GLOBAL_can_admin' ) ); + test_assert( !$b->get_user_parameter( $session3, 'GLOBAL_can_admin' ) ); + + my ( $val, $def ) = $b->get_user_parameter_from_id( 1, 'GLOBAL_can_admin' ); + test_assert_equal( $val, 1 ); + test_assert_equal( $def, 0 ); + ( $val, $def ) = $b->get_user_parameter_from_id( $id2, 'GLOBAL_can_admin' ); + test_assert_equal( $val, 0 ); + test_assert_equal( $def, 1 ); + $b->set_user_parameter_from_id( $id2, 'GLOBAL_can_admin', 1 ); + ( $val, $def ) = $b->get_user_parameter_from_id( $id2, 'GLOBAL_can_admin' ); + test_assert_equal( $val, 1 ); + test_assert_equal( $def, 0 ); + $b->set_user_parameter_from_id( $id2, 'GLOBAL_can_admin', 0 ); + ( $val, $def ) = $b->get_user_parameter_from_id( $id2, 'GLOBAL_can_admin' ); + test_assert_equal( $val, 0 ); + test_assert_equal( $def, 1 ); + + test_assert_equal( $b->validate_password( $session3, '1234' ), 0 ); + test_assert_equal( $b->validate_password( $session3, $password ), 1 ); + test_assert_equal( $b->validate_password( $session, '1234' ), 0 ); + test_assert_equal( $b->validate_password( $session, '' ), 1 ); + + test_assert_equal( $b->set_password( $session3, '' ), 1 ); + test_assert_equal( $b->validate_password( $session3, '1234' ), 0 ); + test_assert_equal( $b->validate_password( $session3, '' ), 1 ); + + test_assert_equal( $b->set_password( $session, '1234' ), 1 ); + test_assert_equal( $b->validate_password( $session, '1234' ), 1 ); + test_assert_equal( $b->validate_password( $session, '' ), 0 ); + + test_assert_equal( $b->set_password( $session, '' ), 1 ); + + $b->release_session_key( $session3 ); + + my @accounts = $b->get_accounts( $session, 0 ); + test_assert( $#accounts == -1 ); + my @accounts = $b->get_accounts( $session, $id2 ); + test_assert( $#accounts == 0 ); + test_assert( $accounts[0] eq 'pop3:foo:bar' ); + + test_assert( $b->remove_account( $session, 'pop3', 'foo:bar' ) == 1 ); + + $session3 = $b->get_session_key_from_token( $session, 'pop3', 'foo:bar' ); + test_assert( !defined( $session3 ) ); + # get_all_buckets *************** *** 121,124 **** --- 235,245 ---- test_assert_equal( defined($buckets[3]), defined(undef) ); + # get_bucket_id, get_bucket_name + + my $spam_id = $b->get_bucket_id( $session, 'spam' ); + test_assert( defined( $spam_id ) ); + test_assert_equal( $b->get_bucket_name( $session, $spam_id ), 'spam' ); + + # get_bucket_word_count Index: TestHTTP.tst =================================================================== RCS file: /cvsroot/popfile/engine/tests/TestHTTP.tst,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** TestHTTP.tst 4 Jan 2005 22:52:05 -0000 1.10 --- TestHTTP.tst 21 Aug 2005 22:17:52 -0000 1.11 *************** *** 126,146 **** test_assert_equal( $h->url_encode_( '{start' ), '%7bstart' ); - # http_redirect_ tests - - open FILE, ">temp.tmp"; - $h->http_redirect_( \*FILE, 'http://www.usethesource.com/' ); - close FILE; - open FILE, "<temp.tmp"; - my $line = <FILE>; - test_assert_equal( $line, "HTTP/1.0 302 Found$eol" ); - $line = <FILE>; - test_assert_equal( $line, "Location: http://www.usethesource.com/$eol" ); - $line = <FILE>; - test_assert( defined( $line ) ); - test_assert( $line =~ /^$eol$/ ); - $line = <FILE>; - test_assert( !defined( $line ) ); - close FILE; - # http_error_ tests --- 126,129 ---- |
From: John Graham-C. <jgr...@us...> - 2005-08-21 22:18:03
|
Update of /cvsroot/popfile/engine/UI In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11349/UI Modified Files: HTML.pm HTTP.pm Log Message: More v0.23.0 work; mostly around the test suite and the ability to change passwords. *** NOTE: Had to run 'dos2unix' because a number of files had CRLF line endings. POPFile standard is Unix-style LF only line endings on files. *** tests/TestBayes.tst and Classifier/Bayes.pm: Add tests for APIs that had no tests (and fix the bugs that the tests showed up!). All APIs now have tests; the new tests cover: add_account create_user get_accounts get_bucket_id get_bucket_name get_user_id get_user_list get_user_parameter get_user_parameter_from_id get_user_parameter_list remove_account remove_user set_user_parameter_from_id *** Classifier/Bayes.pm, tests/TestBayes.tst, UI/HTML.pm create_user now also creates a random password for the user and the password is displayed when the user is created in the UI. *** Classifier/Bayes.pm, tests/TestBayes.tst, UI/HTML.pm, skins/default/configuration-bar.thtml Added the ability to change password for a user. This is done in the configuration bar and added new APIs and tests (validate_password and set_password) for a user. *** POPFile/API.pm: Add external access to the following new APIs: add_account create_user get_user_id get_user_id_from_session get_user_parameter get_user_parameter_from_id get_user_parameter_list remove_account remove_user set_user_parameter_from_id *** tests/TestHTTP.tst: Remove redirection tests since this is no longer handled by the HTTP module. *** Current state of the test suite: TestBayesScript fail TestBayes PASS TestConfiguration fail TestHistory fail TestHTML fail (horribly) TestHTTP PASS TestIMAP PASS TestInsertScript fail TestLogger PASS TestMailParse fail TestModule PASS TestMQ PASS TestMutex PASS TestPipeScript PASS TestPOP3 fail TestProxy PASS TestWordMangle PASS TestXMLRPC fail *** TODO tests/TestModule.tst needs updating for the user_*_config_ APIs that have been added. Look into why we get bogus complaints about the primary key not being unique when we do a database upgrade. I think some of these are caused by the fact that popfile.sql contains some INSERT statements and we are getting double inserts. Perhaps the upgrade should be using UPDATE instead. Index: HTML.pm =================================================================== RCS file: /cvsroot/popfile/engine/UI/HTML.pm,v retrieving revision 1.355 retrieving revision 1.356 diff -C2 -d -r1.355 -r1.356 *** HTML.pm 20 Aug 2005 19:09:41 -0000 1.355 --- HTML.pm 21 Aug 2005 22:17:48 -0000 1.356 *************** *** 1077,1084 **** } $templ->param( 'Configuration_Loop_Languages' => \@language_loop ); ! ! # If the configuration bar was included by the history page, let it also include the ! # history bar ! $templ->param( 'Is_history_page' => ( $template eq 'history-page.thtml' ? 1 : 0 ) ); --- 1077,1084 ---- } $templ->param( 'Configuration_Loop_Languages' => \@language_loop ); ! ! # If the configuration bar was included by the history page, let ! # it also include the history bar ! $templ->param( 'Is_history_page' => ( $template eq 'history-page.thtml' ? 1 : 0 ) ); *************** *** 1093,1096 **** --- 1093,1129 ---- } + # See if the user is trying to change their password + + if ( defined( $self->{form_}{change_password} ) ) { + + # Check that the two new passwords match + + if ( $self->{form_}{new_password} ne + $self->{form_}{confirm_password} ) { + + $self->error_message__( $templ, + $self->{language__}{Configuration_Password_Mismatch} ); + } else { + + # Check that the old password is correct + + if ( !$self->classifier_()->validate_password( $session, + $self->{form_}{old_password} ) ) { + + $self->error_message__( $templ, + $self->{language__}{Configuration_Password_Bad} ); + } else { + if ( !$self->classifier_()->set_password( $session, + $self->{form_}{new_password} ) ) { + $self->error_message__( $templ, + $self->{language__}{Configuration_Password_Fail}); + } else { + $self->status_message__( $templ, + $self->{language__}{Configuration_Set_Password} ); + } + } + } + } + return $templ; } *************** *** 1358,1367 **** if ( exists( $self->{form_}{create} ) && ( $self->{form_}{newuser} ne '' ) ) { ! my $result = $self->classifier_()->create_user( $session, $self->{form_}{newuser}, $self->{form_}{clone} ); if ( $result == 0 ) { if ( $self->{form_}{clone} ne '' ) { ! $self->status_message__( $templ, sprintf( $self->{language__}{Users_Created_And_Cloned}, $self->{form_}{newuser}, $self->{form_}{clone} ) ); } else { ! $self->status_message__( $templ, sprintf( $self->{language__}{Users_Created}, $self->{form_}{newuser} ) ); } } --- 1391,1400 ---- if ( exists( $self->{form_}{create} ) && ( $self->{form_}{newuser} ne '' ) ) { ! my ( $result, $password ) = $self->classifier_()->create_user( $session, $self->{form_}{newuser}, $self->{form_}{clone} ); if ( $result == 0 ) { if ( $self->{form_}{clone} ne '' ) { ! $self->status_message__( $templ, sprintf( $self->{language__}{Users_Created_And_Cloned}, $self->{form_}{newuser}, $self->{form_}{clone}, $password ) ); } else { ! $self->status_message__( $templ, sprintf( $self->{language__}{Users_Created}, $self->{form_}{newuser}, $password ) ); } } *************** *** 1373,1377 **** } if ( $result == 3 ) { ! $self->error_message__( $templ, sprintf( $self->{language__}{Users_Created_Not_Cloned}, $self->{form_}{newuser}, $self->{form_}{clone} ) ); } } --- 1406,1410 ---- } if ( $result == 3 ) { ! $self->error_message__( $templ, sprintf( $self->{language__}{Users_Created_Not_Cloned}, $self->{form_}{newuser}, $self->{form_}{clone}, $password ) ); } } Index: HTTP.pm =================================================================== RCS file: /cvsroot/popfile/engine/UI/HTTP.pm,v retrieving revision 1.30 retrieving revision 1.31 diff -C2 -d -r1.30 -r1.31 *** HTTP.pm 7 Apr 2005 19:54:53 -0000 1.30 --- HTTP.pm 21 Aug 2005 22:17:50 -0000 1.31 *************** *** 38,41 **** --- 38,42 ---- use Crypt::CBC; + use Crypt::Random; use MIME::Base64; *************** *** 99,103 **** $self->{selector_} = new IO::Select( $self->{server_} ); ! # Think of an encryption key for encrypting cookies using my $key = Crypt::Random::makerandom_octet( Length => 56, Strength => 1 ); --- 100,104 ---- $self->{selector_} = new IO::Select( $self->{server_} ); ! # Think of an encryption key for encrypting cookies using Blowfish my $key = Crypt::Random::makerandom_octet( Length => 56, Strength => 1 ); |
From: John Graham-C. <jgr...@us...> - 2005-08-21 22:18:02
|
Update of /cvsroot/popfile/engine/skins/default In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11349/skins/default Modified Files: configuration-bar.thtml history-bar.thtml history-javascript.thtml history-navigator-widget.thtml history-page.thtml history-search-filter-widget.thtml Log Message: More v0.23.0 work; mostly around the test suite and the ability to change passwords. *** NOTE: Had to run 'dos2unix' because a number of files had CRLF line endings. POPFile standard is Unix-style LF only line endings on files. *** tests/TestBayes.tst and Classifier/Bayes.pm: Add tests for APIs that had no tests (and fix the bugs that the tests showed up!). All APIs now have tests; the new tests cover: add_account create_user get_accounts get_bucket_id get_bucket_name get_user_id get_user_list get_user_parameter get_user_parameter_from_id get_user_parameter_list remove_account remove_user set_user_parameter_from_id *** Classifier/Bayes.pm, tests/TestBayes.tst, UI/HTML.pm create_user now also creates a random password for the user and the password is displayed when the user is created in the UI. *** Classifier/Bayes.pm, tests/TestBayes.tst, UI/HTML.pm, skins/default/configuration-bar.thtml Added the ability to change password for a user. This is done in the configuration bar and added new APIs and tests (validate_password and set_password) for a user. *** POPFile/API.pm: Add external access to the following new APIs: add_account create_user get_user_id get_user_id_from_session get_user_parameter get_user_parameter_from_id get_user_parameter_list remove_account remove_user set_user_parameter_from_id *** tests/TestHTTP.tst: Remove redirection tests since this is no longer handled by the HTTP module. *** Current state of the test suite: TestBayesScript fail TestBayes PASS TestConfiguration fail TestHistory fail TestHTML fail (horribly) TestHTTP PASS TestIMAP PASS TestInsertScript fail TestLogger PASS TestMailParse fail TestModule PASS TestMQ PASS TestMutex PASS TestPipeScript PASS TestPOP3 fail TestProxy PASS TestWordMangle PASS TestXMLRPC fail *** TODO tests/TestModule.tst needs updating for the user_*_config_ APIs that have been added. Look into why we get bogus complaints about the primary key not being unique when we do a database upgrade. I think some of these are caused by the fact that popfile.sql contains some INSERT statements and we are getting double inserts. Perhaps the upgrade should be using UPDATE instead. Index: history-search-filter-widget.thtml =================================================================== RCS file: /cvsroot/popfile/engine/skins/default/history-search-filter-widget.thtml,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** history-search-filter-widget.thtml 25 May 2005 14:23:49 -0000 1.12 --- history-search-filter-widget.thtml 21 Aug 2005 22:17:51 -0000 1.13 *************** *** 1,48 **** ! <form action="/history" method="post"> ! <div class="search"> ! <label class="historyLabel" for="historySearch" title="<TMPL_VAR NAME="Localize_tip_History_Search">"> ! <TMPL_VAR NAME="Localize_History_SearchMessage"> ! </label> ! <br /> ! <TMPL_IF NAME="History_If_Search"> ! <input type="text" id="historySearch" name="search" value="<TMPL_VAR ESCAPE=HTML NAME="History_Field_Search">" /> ! </TMPL_IF> ! ! </div> ! ! <div class="filter"> ! <label class="historyLabel" for="historyFilter" title="<TMPL_VAR NAME="Localize_tip_History_Filter">"> ! <TMPL_VAR NAME="Localize_History_FilterBy"> ! </label> ! <br> ! <input type="hidden" name="sort" value="<TMPL_VAR NAME="History_Field_Sort">" /> ! <select name="filter" id="historyFilter"> ! <option value=""></option> ! ! <TMPL_LOOP NAME="History_Loop_SF_Buckets"> ! ! <option value="<TMPL_VAR NAME="History_Bucket">" <TMPL_VAR NAME="History_Selected"> style="color: <TMPL_VAR NAME="History_Bucket_Color">"> ! <TMPL_VAR NAME="History_Bucket"> ! </option> ! ! </TMPL_LOOP> ! ! <option value="__filter__magnet" <TMPL_VAR NAME="History_Filter_Magnet">> ! <<TMPL_VAR NAME="Localize_History_ShowMagnet">> ! </option> ! <option value="unclassified" <TMPL_VAR NAME="History_Filter_Unclassified">> ! <unclassified> ! </option> ! </select> ! <input type="submit" class="submit" name="setfilter" value="<TMPL_VAR NAME="Localize_Find">" title="<TMPL_VAR NAME="Localize_tip_History_SearchSubmit">" /> ! <input type="submit" class="submit" name="reset_filter_search" value="<TMPL_VAR NAME="Localize_History_ResetSearch">" title="<TMPL_VAR NAME="Localize_tip_History_SearchReset">" /> ! </div> ! ! <div class="negate"> ! <input type="hidden" name="negate" value="" /> ! <input type="checkbox" name="negate" id="negate" class="checkbox" <TMPL_VAR NAME="History_Field_Not"> /> ! <label for="negate" title="<TMPL_VAR NAME="Localize_tip_History_SearchNegate">"> ! <TMPL_VAR NAME="Localize_History_Negate_Search"> ! </label> ! </div> ! </form> --- 1,48 ---- ! <form action="/history" method="post"> ! <div class="search"> ! <label class="historyLabel" for="historySearch" title="<TMPL_VAR NAME="Localize_tip_History_Search">"> ! <TMPL_VAR NAME="Localize_History_SearchMessage"> ! </label> ! <br /> ! <TMPL_IF NAME="History_If_Search"> ! <input type="text" id="historySearch" name="search" value="<TMPL_VAR ESCAPE=HTML NAME="History_Field_Search">" /> ! </TMPL_IF> ! ! </div> ! ! <div class="filter"> ! <label class="historyLabel" for="historyFilter" title="<TMPL_VAR NAME="Localize_tip_History_Filter">"> ! <TMPL_VAR NAME="Localize_History_FilterBy"> ! </label> ! <br> ! <input type="hidden" name="sort" value="<TMPL_VAR NAME="History_Field_Sort">" /> ! <select name="filter" id="historyFilter"> ! <option value=""></option> ! ! <TMPL_LOOP NAME="History_Loop_SF_Buckets"> ! ! <option value="<TMPL_VAR NAME="History_Bucket">" <TMPL_VAR NAME="History_Selected"> style="color: <TMPL_VAR NAME="History_Bucket_Color">"> ! <TMPL_VAR NAME="History_Bucket"> ! </option> ! ! </TMPL_LOOP> ! ! <option value="__filter__magnet" <TMPL_VAR NAME="History_Filter_Magnet">> ! <<TMPL_VAR NAME="Localize_History_ShowMagnet">> ! </option> ! <option value="unclassified" <TMPL_VAR NAME="History_Filter_Unclassified">> ! <unclassified> ! </option> ! </select> ! <input type="submit" class="submit" name="setfilter" value="<TMPL_VAR NAME="Localize_Find">" title="<TMPL_VAR NAME="Localize_tip_History_SearchSubmit">" /> ! <input type="submit" class="submit" name="reset_filter_search" value="<TMPL_VAR NAME="Localize_History_ResetSearch">" title="<TMPL_VAR NAME="Localize_tip_History_SearchReset">" /> ! </div> ! ! <div class="negate"> ! <input type="hidden" name="negate" value="" /> ! <input type="checkbox" name="negate" id="negate" class="checkbox" <TMPL_VAR NAME="History_Field_Not"> /> ! <label for="negate" title="<TMPL_VAR NAME="Localize_tip_History_SearchNegate">"> ! <TMPL_VAR NAME="Localize_History_Negate_Search"> ! </label> ! </div> ! </form> Index: history-page.thtml =================================================================== RCS file: /cvsroot/popfile/engine/skins/default/history-page.thtml,v retrieving revision 1.67 retrieving revision 1.68 diff -C2 -d -r1.67 -r1.68 *** history-page.thtml 15 Aug 2005 03:49:41 -0000 1.67 --- history-page.thtml 21 Aug 2005 22:17:51 -0000 1.68 *************** *** 1,300 **** ! <TMPL_INCLUDE NAME="common-top.thtml"> ! <TMPL_INCLUDE NAME="common-middle.thtml"> ! ! <TMPL_IF NAME="If_Show_Bucket_Help"> ! ! <div class="helpMessage"> ! <TMPL_VAR NAME="Localize_Help_Bucket_Setup"> ! <p /> ! <form method="post" action="/buckets"> ! <input type="submit" class="submit" name="nomore_bucket_help" value="<TMPL_VAR NAME="Localize_Help_No_More">" /> ! </form> ! </div> ! ! </TMPL_IF> ! ! <TMPL_IF NAME="If_Show_Training_Help"> ! ! <div class="helpMessage"> ! <TMPL_VAR NAME="Localize_Help_Training"> ! <p /> ! <form method="post" action="/buckets"> ! <input type="submit" class="submit" name="nomore_training_help" value="<TMPL_VAR NAME="Localize_Help_No_More">" /> ! </form> ! </div> ! ! </TMPL_IF> ! ! <form action="/history" method="post" style="display:none;"> ! <input type="hidden" name="search" value="<TMPL_VAR NAME="History_Field_Search">" /> ! <input type="hidden" name="sort" value="<TMPL_VAR NAME="History_Field_Sort">" /> ! <input type="hidden" name="negate" value="<TMPL_VAR NAME="History_Field_Not">" /> ! <input type="hidden" name="start_message" value="<TMPL_VAR NAME="History_Start_Message">" /> ! <input type="hidden" name="filter" value="<TMPL_VAR NAME="History_Field_Filter">" /> ! </form> ! <TMPL_IF NAME="History_If_Some_Messages"> ! ! <table width="100%" summary=""> ! <tr> ! <td align="left"> ! <h2 class="history" title="<TMPL_VAR NAME="Localize_tip_History_RecentNum">"><TMPL_VAR NAME="Localize_History_Title"> (<TMPL_VAR NAME="History_Count">)</h2> ! </td> ! <td class="historyNavigatorTop" rowspan="2"> ! ! <TMPL_IF "History_If_MultiPage"> ! <!-- the following html was generated by history-navigator-widget.thtml --> ! <TMPL_INCLUDE NAME="history-navigator-widget.thtml"> ! <!-- end of history-navigator-widget.thtml content --> ! </TMPL_IF> ! ! <div class="refreshLink"> ! (<a class="history" href="/history"><TMPL_VAR NAME="Localize_Refresh"></a>) ! </div> ! ! </td> ! </tr> ! <tr> ! <td colspan="2" class="historyWidgetsTop"> ! <!-- the following html was history-search-filter-widget.thtml --> ! <TMPL_INCLUDE NAME="history-search-filter-widget.thtml"> ! <!-- end of history-search-filter-widget.thtml content --> ! </td> ! </tr> ! </table> ! ! <form action="/history" method="post"> ! <div class="removeButtonsTop"> ! <input type="submit" class="submit removeButton" name="clearchecked" onClick="return confirmClick('<TMPL_VAR NAME="Localize_tip_History_RemoveChecked">')" value="<TMPL_VAR NAME="Localize_History_RemoveChecked">" title="<TMPL_VAR NAME="Localize_tip_History_RemoveChecked">" /> ! <input type="submit" class="submit removeButton" name="clearpage" onClick="return confirmClick('<TMPL_VAR NAME="Localize_tip_History_RemovePage">')" value="<TMPL_VAR NAME="Localize_History_RemovePage">" title="<TMPL_VAR NAME="Localize_tip_History_RemovePage">" /> ! <input type="submit" class="submit removeButton" name="clearall" onClick="return confirmClick('<TMPL_VAR NAME="Localize_tip_History_RemoveAll">')" value="<TMPL_VAR NAME="Localize_History_RemoveAll"> (<TMPL_VAR NAME="History_Count">)" title="<TMPL_VAR NAME="Localize_tip_History_RemoveAll">" /> ! </div> ! <table class="historyTable" width="100%" summary="<TMPL_VAR NAME="Localize_History_MainTableSummary">"> ! <tr class="rowHeader"> ! <th id="removeChecks" scope="col" align="left"></th> ! ! <TMPL_LOOP NAME="History_Loop_Headers"> ! ! <th scope="col"> ! <table width="100%" cellspacing="0"> ! <tr> ! <td class="columnControls"> ! <a class="columnRemove" href="/history?removecolumn=<TMPL_VAR NAME="History_Header">"><img title="<TMPL_VAR NAME="Localize_tip_History_RemoveColumn">" src="skins/x.gif" border="0" alt="x"></a> ! </td> ! <th class="historyLabel"> ! <a href="/history?<TMPL_VAR NAME="History_Fields">&setsort=<TMPL_VAR NAME="History_Sort"><TMPL_VAR NAME="History_Header">" title="<TMPL_VAR NAME="Localize_tip_History_Sort">"> ! ! <TMPL_IF NAME="History_If_Sorted"> ! ! <em class="historyLabelSort"> ! ! <TMPL_IF NAME="History_If_Sorted_Ascending"> ! ! > <TMPL_VAR NAME="History_Label"> ! ! <TMPL_ELSE> ! ! < <TMPL_VAR NAME="History_Label"> ! ! </TMPL_IF> ! ! </em> ! ! <TMPL_ELSE> ! ! <TMPL_VAR NAME="History_Label"> ! ! </TMPL_IF> ! ! </a> ! </th> ! ! <TMPL_IF NAME="History_If_MoveLeft"> ! <td class="columnControls"> ! <a class="columnMove" href="/history?moveleft=<TMPL_VAR NAME="History_Header">"><img title="<TMPL_VAR NAME="Localize_tip_History_MoveLeft">" src="skins/leftarrow.gif" border="0" alt="<"></a> ! </td> ! </TMPL_IF> ! <TMPL_IF NAME="History_If_MoveRight"> ! <td class="columnControls"> ! <a class="columnMove" href="/history?moveright=<TMPL_VAR NAME="History_Header">"><img title="<TMPL_VAR NAME="Localize_tip_History_MoveRight">" src="skins/rightarrow.gif" border="0" alt=">"></a> ! </td> ! </TMPL_IF> ! ! </tr> ! </table> ! </th> ! ! </TMPL_LOOP> ! ! <th scope="col" class="historyLabel"> ! <input type="submit" class="submit reclassifyButton" name="change" value="<TMPL_VAR NAME="Localize_Reclassify">" title="<TMPL_VAR NAME="Localize_tip_History_Reclassify">" /> ! </th> ! </tr> ! ! <TMPL_LOOP NAME="History_Loop_Messages"> ! ! <TMPL_IF NAME="History_If_Session"> ! <tr class="rowBoundary"><td colspan="<TMPL_VAR NAME="History_Colspan">"></td></tr> ! </TMPL_IF> ! ! <TMPL_IF NAME="__odd__"> ! <tr class="rowOdd"> ! <TMPL_ELSE> ! <tr class="rowEven"> ! </TMPL_IF> ! ! <td> ! <input type="checkbox" id="remove_<TMPL_VAR NAME="History_I1">" class="checkbox" name="remove_<TMPL_VAR NAME="History_I1">"/> ! <input type="hidden" id="rowid_<TMPL_VAR NAME="History_I1">" name="rowid_<TMPL_VAR NAME="History_I1">" value="<TMPL_VAR NAME="History_I1">"/> ! </td> ! ! <TMPL_LOOP NAME="History_Loop_Loop_Cells"> ! <TMPL_IF NAME="History_If_Bucket_Column"> ! <td> ! ! <TMPL_IF NAME="History_If_Magnetized"> ! ! </TMPL_IF> ! ! <TMPL_IF NAME="History_If_Not_Pseudo"> ! ! <a href="/buckets?showbucket=<TMPL_VAR NAME="History_Bucket">"> ! ! </TMPL_IF> ! ! <span style="color:<TMPL_VAR NAME="History_Bucket_Color">"> ! <TMPL_VAR NAME="History_Bucket"> ! </span> ! ! <TMPL_IF NAME="History_If_Not_Pseudo"> ! ! </a> ! ! </TMPL_IF> ! ! </td> ! <TMPL_ELSE> ! <TMPL_IF NAME="History_If_Subject_Column"> ! <td> ! <a class="messageLink" title="<TMPL_VAR NAME="History_Cell_Title" ESCAPE=HTML>" href="/view?view=<TMPL_VAR NAME="History_Mail_File"><TMPL_VAR NAME="History_Fields">"> ! <span title="<TMPL_VAR NAME="History_Cell_Title" ESCAPE=HTML>"><TMPL_VAR NAME="History_Cell_Value" ESCAPE=HTML></span></a> ! ! </td> ! <TMPL_ELSE> ! <td> ! <span title="<TMPL_VAR NAME="History_Cell_Title" ESCAPE=HTML>"><TMPL_VAR NAME="History_Cell_Value" ESCAPE=HTML></span> ! </td> ! </TMPL_IF> ! </TMPL_IF> ! </TMPL_LOOP> ! ! <td> ! ! <TMPL_IF NAME="History_If_Reclassified"> ! <TMPL_VAR NAME="Localize_History_Reclassified"> ! <input type="submit" class="submit undoButton" name="undo_<TMPL_VAR NAME="History_I">" value="<TMPL_VAR NAME="Localize_Undo">" /> ! ! <TMPL_ELSE> ! ! <TMPL_IF NAME="History_If_Magnetized"> ! <img title="<TMPL_VAR NAME="History_Magnet" ESCAPE=HTML>" alt="<TMPL_VAR NAME="History_Magnet" ESCAPE=HTML>" src="/skins/magnet.png"> ! <TMPL_ELSE> ! ! <select name="reclassify_<TMPL_VAR NAME="History_I">"> ! <option selected="selected"></option> ! ! <TMPL_LOOP NAME="History_Loop_Loop_Buckets"> ! ! <option value="<TMPL_VAR NAME="History_Bucket">" style="color: <TMPL_VAR NAME="History_Bucket_Color">"> ! <TMPL_VAR NAME="History_Bucket"> ! </option> ! ! </TMPL_LOOP> ! ! </select> ! ! </TMPL_IF> ! ! </TMPL_IF> ! </td> ! </tr> ! ! <TMPL_IF NAME="History_If_Feedback"> ! ! <tr class="rowHighlighted"> ! <td> ! ! </td> ! <td colspan="<TMPL_VAR NAME="History_Colspan">"> ! <TMPL_VAR NAME="History_Feedback"> ! </td> ! </tr> ! ! </TMPL_IF> ! ! </TMPL_LOOP> ! ! <tr> ! <td colspan="<TMPL_VAR NAME="History_Colspan">"></td> ! </tr> ! <tr> ! <td colspan="<TMPL_VAR NAME="History_Colspan">"> ! <div class="removeButtonsBottom"> ! <input type="submit" class="submit removeButton" name="clearchecked" onClick="return confirmClick('<TMPL_VAR NAME="Localize_tip_History_RemoveChecked">')" value="<TMPL_VAR NAME="Localize_History_RemoveChecked">" title="<TMPL_VAR NAME="Localize_tip_History_RemoveChecked">" /> ! <input type="submit" class="submit removeButton" name="clearpage" onClick="return confirmClick('<TMPL_VAR NAME="Localize_tip_History_RemovePage">')" value="<TMPL_VAR NAME="Localize_History_RemovePage">" title="<TMPL_VAR NAME="Localize_tip_History_RemovePage">" /> ! <input type="submit" class="submit removeButton" name="clearall" onClick="return confirmClick('<TMPL_VAR NAME="Localize_tip_History_RemoveAll">')" value="<TMPL_VAR NAME="Localize_History_RemoveAll"> (<TMPL_VAR NAME="History_Count">)" title="<TMPL_VAR NAME="Localize_tip_History_RemoveAll">" /> ! </div> ! </td> ! <th scope="col" class="historyLabel"> ! <input type="submit" class="submit reclassifyButton" name="change" value="<TMPL_VAR NAME="Localize_Reclassify">" title="<TMPL_VAR NAME="Localize_tip_History_Reclassify">" /> ! </th> ! </tr> ! </table> ! </form> ! ! <TMPL_IF "History_If_MultiPage"> ! ! <table width="100%" summary=""> ! <tr> ! <td class="historyNavigatorBottom"> ! <TMPL_INCLUDE NAME="history-navigator-widget.thtml"> ! </td> ! </tr> ! </table> ! ! </TMPL_IF> ! ! ! <TMPL_ELSE> <!-- if some messages --> ! ! ! <table width="100%" summary=""> ! <tr> ! <td align="left"> ! <h2 class="history"><TMPL_VAR NAME="Localize_History_Title"></h2> ! </td> ! <td class="historyNavigatorTop"> ! (<a class="history" href="/history"><TMPL_VAR NAME="Localize_Refresh"></a>) ! </td> ! </tr> ! <tr> ! <td colspan="2"> ! <!-- the following html was history-search-filter-widget.thtml --> ! <TMPL_INCLUDE NAME="history-search-filter-widget.thtml"> ! <!-- end of history-search-filter-widget.thtml content --> ! </td> ! </tr> ! ! <tr> ! <td> ! <span class="bucketsLabel"> ! <TMPL_VAR NAME="Localize_History_NoMessages">. ! </span> ! </td> ! </tr> ! </table> ! ! </TMPL_IF> <!-- if some messages --> ! ! <TMPL_INCLUDE NAME="history-javascript.thtml"> ! <TMPL_INCLUDE NAME="configuration-bar.thtml"> ! <TMPL_INCLUDE NAME="common-bottom.thtml"> --- 1,300 ---- ! <TMPL_INCLUDE NAME="common-top.thtml"> ! <TMPL_INCLUDE NAME="common-middle.thtml"> ! ! <TMPL_IF NAME="If_Show_Bucket_Help"> ! ! <div class="helpMessage"> ! <TMPL_VAR NAME="Localize_Help_Bucket_Setup"> ! <p /> ! <form method="post" action="/buckets"> ! <input type="submit" class="submit" name="nomore_bucket_help" value="<TMPL_VAR NAME="Localize_Help_No_More">" /> ! </form> ! </div> ! ! </TMPL_IF> ! ! <TMPL_IF NAME="If_Show_Training_Help"> ! ! <div class="helpMessage"> ! <TMPL_VAR NAME="Localize_Help_Training"> ! <p /> ! <form method="post" action="/buckets"> ! <input type="submit" class="submit" name="nomore_training_help" value="<TMPL_VAR NAME="Localize_Help_No_More">" /> ! </form> ! </div> ! ! </TMPL_IF> ! ! <form action="/history" method="post" style="display:none;"> ! <input type="hidden" name="search" value="<TMPL_VAR NAME="History_Field_Search">" /> ! <input type="hidden" name="sort" value="<TMPL_VAR NAME="History_Field_Sort">" /> ! <input type="hidden" name="negate" value="<TMPL_VAR NAME="History_Field_Not">" /> ! <input type="hidden" name="start_message" value="<TMPL_VAR NAME="History_Start_Message">" /> ! <input type="hidden" name="filter" value="<TMPL_VAR NAME="History_Field_Filter">" /> ! </form> ! <TMPL_IF NAME="History_If_Some_Messages"> ! ! <table width="100%" summary=""> ! <tr> ! <td align="left"> ! <h2 class="history" title="<TMPL_VAR NAME="Localize_tip_History_RecentNum">"><TMPL_VAR NAME="Localize_History_Title"> (<TMPL_VAR NAME="History_Count">)</h2> ! </td> ! <td class="historyNavigatorTop" rowspan="2"> ! ! <TMPL_IF "History_If_MultiPage"> ! <!-- the following html was generated by history-navigator-widget.thtml --> ! <TMPL_INCLUDE NAME="history-navigator-widget.thtml"> ! <!-- end of history-navigator-widget.thtml content --> ! </TMPL_IF> ! ! <div class="refreshLink"> ! (<a class="history" href="/history"><TMPL_VAR NAME="Localize_Refresh"></a>) ! </div> ! ! </td> ! </tr> ! <tr> ! <td colspan="2" class="historyWidgetsTop"> ! <!-- the following html was history-search-filter-widget.thtml --> ! <TMPL_INCLUDE NAME="history-search-filter-widget.thtml"> ! <!-- end of history-search-filter-widget.thtml content --> ! </td> ! </tr> ! </table> ! ! <form action="/history" method="post"> ! <div class="removeButtonsTop"> ! <input type="submit" class="submit removeButton" name="clearchecked" onClick="return confirmClick('<TMPL_VAR NAME="Localize_tip_History_RemoveChecked">')" value="<TMPL_VAR NAME="Localize_History_RemoveChecked">" title="<TMPL_VAR NAME="Localize_tip_History_RemoveChecked">" /> ! <input type="submit" class="submit removeButton" name="clearpage" onClick="return confirmClick('<TMPL_VAR NAME="Localize_tip_History_RemovePage">')" value="<TMPL_VAR NAME="Localize_History_RemovePage">" title="<TMPL_VAR NAME="Localize_tip_History_RemovePage">" /> ! <input type="submit" class="submit removeButton" name="clearall" onClick="return confirmClick('<TMPL_VAR NAME="Localize_tip_History_RemoveAll">')" value="<TMPL_VAR NAME="Localize_History_RemoveAll"> (<TMPL_VAR NAME="History_Count">)" title="<TMPL_VAR NAME="Localize_tip_History_RemoveAll">" /> ! </div> ! <table class="historyTable" width="100%" summary="<TMPL_VAR NAME="Localize_History_MainTableSummary">"> ! <tr class="rowHeader"> ! <th id="removeChecks" scope="col" align="left"></th> ! ! <TMPL_LOOP NAME="History_Loop_Headers"> ! ! <th scope="col"> ! <table width="100%" cellspacing="0"> ! <tr> ! <td class="columnControls"> ! <a class="columnRemove" href="/history?removecolumn=<TMPL_VAR NAME="History_Header">"><img title="<TMPL_VAR NAME="Localize_tip_History_RemoveColumn">" src="skins/x.gif" border="0" alt="x"></a> ! </td> ! <th class="historyLabel"> ! <a href="/history?<TMPL_VAR NAME="History_Fields">&setsort=<TMPL_VAR NAME="History_Sort"><TMPL_VAR NAME="History_Header">" title="<TMPL_VAR NAME="Localize_tip_History_Sort">"> ! ! <TMPL_IF NAME="History_If_Sorted"> ! ! <em class="historyLabelSort"> ! ! <TMPL_IF NAME="History_If_Sorted_Ascending"> ! ! > <TMPL_VAR NAME="History_Label"> ! ! <TMPL_ELSE> ! ! < <TMPL_VAR NAME="History_Label"> ! ! </TMPL_IF> ! ! </em> ! ! <TMPL_ELSE> ! ! <TMPL_VAR NAME="History_Label"> ! ! </TMPL_IF> ! ! </a> ! </th> ! ! <TMPL_IF NAME="History_If_MoveLeft"> ! <td class="columnControls"> ! <a class="columnMove" href="/history?moveleft=<TMPL_VAR NAME="History_Header">"><img title="<TMPL_VAR NAME="Localize_tip_History_MoveLeft">" src="skins/leftarrow.gif" border="0" alt="<"></a> ! </td> ! </TMPL_IF> ! <TMPL_IF NAME="History_If_MoveRight"> ! <td class="columnControls"> ! <a class="columnMove" href="/history?moveright=<TMPL_VAR NAME="History_Header">"><img title="<TMPL_VAR NAME="Localize_tip_History_MoveRight">" src="skins/rightarrow.gif" border="0" alt=">"></a> ! </td> ! </TMPL_IF> ! ! </tr> ! </table> ! </th> ! ! </TMPL_LOOP> ! ! <th scope="col" class="historyLabel"> ! <input type="submit" class="submit reclassifyButton" name="change" value="<TMPL_VAR NAME="Localize_Reclassify">" title="<TMPL_VAR NAME="Localize_tip_History_Reclassify">" /> ! </th> ! </tr> ! ! <TMPL_LOOP NAME="History_Loop_Messages"> ! ! <TMPL_IF NAME="History_If_Session"> ! <tr class="rowBoundary"><td colspan="<TMPL_VAR NAME="History_Colspan">"></td></tr> ! </TMPL_IF> ! ! <TMPL_IF NAME="__odd__"> ! <tr class="rowOdd"> ! <TMPL_ELSE> ! <tr class="rowEven"> ! </TMPL_IF> ! ! <td> ! <input type="checkbox" id="remove_<TMPL_VAR NAME="History_I1">" class="checkbox" name="remove_<TMPL_VAR NAME="History_I1">"/> ! <input type="hidden" id="rowid_<TMPL_VAR NAME="History_I1">" name="rowid_<TMPL_VAR NAME="History_I1">" value="<TMPL_VAR NAME="History_I1">"/> ! </td> ! ! <TMPL_LOOP NAME="History_Loop_Loop_Cells"> ! <TMPL_IF NAME="History_If_Bucket_Column"> ! <td> ! ! <TMPL_IF NAME="History_If_Magnetized"> ! ! </TMPL_IF> ! ! <TMPL_IF NAME="History_If_Not_Pseudo"> ! ! <a href="/buckets?showbucket=<TMPL_VAR NAME="History_Bucket">"> ! ! </TMPL_IF> ! ! <span style="color:<TMPL_VAR NAME="History_Bucket_Color">"> ! <TMPL_VAR NAME="History_Bucket"> ! </span> ! ! <TMPL_IF NAME="History_If_Not_Pseudo"> ! ! </a> ! ! </TMPL_IF> ! ! </td> ! <TMPL_ELSE> ! <TMPL_IF NAME="History_If_Subject_Column"> ! <td> ! <a class="messageLink" title="<TMPL_VAR NAME="History_Cell_Title" ESCAPE=HTML>" href="/view?view=<TMPL_VAR NAME="History_Mail_File"><TMPL_VAR NAME="History_Fields">"> ! <span title="<TMPL_VAR NAME="History_Cell_Title" ESCAPE=HTML>"><TMPL_VAR NAME="History_Cell_Value" ESCAPE=HTML></span></a> ! ! </td> ! <TMPL_ELSE> ! <td> ! <span title="<TMPL_VAR NAME="History_Cell_Title" ESCAPE=HTML>"><TMPL_VAR NAME="History_Cell_Value" ESCAPE=HTML></span> ! </td> ! </TMPL_IF> ! </TMPL_IF> ! </TMPL_LOOP> ! ! <td> ! ! <TMPL_IF NAME="History_If_Reclassified"> ! <TMPL_VAR NAME="Localize_History_Reclassified"> ! <input type="submit" class="submit undoButton" name="undo_<TMPL_VAR NAME="History_I">" value="<TMPL_VAR NAME="Localize_Undo">" /> ! ! <TMPL_ELSE> ! ! <TMPL_IF NAME="History_If_Magnetized"> ! <img title="<TMPL_VAR NAME="History_Magnet" ESCAPE=HTML>" alt="<TMPL_VAR NAME="History_Magnet" ESCAPE=HTML>" src="/skins/magnet.png"> ! <TMPL_ELSE> ! ! <select name="reclassify_<TMPL_VAR NAME="History_I">"> ! <option selected="selected"></option> ! ! <TMPL_LOOP NAME="History_Loop_Loop_Buckets"> ! ! <option value="<TMPL_VAR NAME="History_Bucket">" style="color: <TMPL_VAR NAME="History_Bucket_Color">"> ! <TMPL_VAR NAME="History_Bucket"> ! </option> ! ! </TMPL_LOOP> ! ! </select> ! ! </TMPL_IF> ! ! </TMPL_IF> ! </td> ! </tr> ! ! <TMPL_IF NAME="History_If_Feedback"> ! ! <tr class="rowHighlighted"> ! <td> ! ! </td> ! <td colspan="<TMPL_VAR NAME="History_Colspan">"> ! <TMPL_VAR NAME="History_Feedback"> ! </td> ! </tr> ! ! </TMPL_IF> ! ! </TMPL_LOOP> ! ! <tr> ! <td colspan="<TMPL_VAR NAME="History_Colspan">"></td> ! </tr> ! <tr> ! <td colspan="<TMPL_VAR NAME="History_Colspan">"> ! <div class="removeButtonsBottom"> ! <input type="submit" class="submit removeButton" name="clearchecked" onClick="return confirmClick('<TMPL_VAR NAME="Localize_tip_History_RemoveChecked">')" value="<TMPL_VAR NAME="Localize_History_RemoveChecked">" title="<TMPL_VAR NAME="Localize_tip_History_RemoveChecked">" /> ! <input type="submit" class="submit removeButton" name="clearpage" onClick="return confirmClick('<TMPL_VAR NAME="Localize_tip_History_RemovePage">')" value="<TMPL_VAR NAME="Localize_History_RemovePage">" title="<TMPL_VAR NAME="Localize_tip_History_RemovePage">" /> ! <input type="submit" class="submit removeButton" name="clearall" onClick="return confirmClick('<TMPL_VAR NAME="Localize_tip_History_RemoveAll">')" value="<TMPL_VAR NAME="Localize_History_RemoveAll"> (<TMPL_VAR NAME="History_Count">)" title="<TMPL_VAR NAME="Localize_tip_History_RemoveAll">" /> ! </div> ! </td> ! <th scope="col" class="historyLabel"> ! <input type="submit" class="submit reclassifyButton" name="change" value="<TMPL_VAR NAME="Localize_Reclassify">" title="<TMPL_VAR NAME="Localize_tip_History_Reclassify">" /> ! </th> ! </tr> ! </table> ! </form> ! ! <TMPL_IF "History_If_MultiPage"> ! ! <table width="100%" summary=""> ! <tr> ! <td class="historyNavigatorBottom"> ! <TMPL_INCLUDE NAME="history-navigator-widget.thtml"> ! </td> ! </tr> ! </table> ! ! </TMPL_IF> ! ! ! <TMPL_ELSE> <!-- if some messages --> ! ! ! <table width="100%" summary=""> ! <tr> ! <td align="left"> ! <h2 class="history"><TMPL_VAR NAME="Localize_History_Title"></h2> ! </td> ! <td class="historyNavigatorTop"> ! (<a class="history" href="/history"><TMPL_VAR NAME="Localize_Refresh"></a>) ! </td> ! </tr> ! <tr> ! <td colspan="2"> ! <!-- the following html was history-search-filter-widget.thtml --> ! <TMPL_INCLUDE NAME="history-search-filter-widget.thtml"> ! <!-- end of history-search-filter-widget.thtml content --> ! </td> ! </tr> ! ! <tr> ! <td> ! <span class="bucketsLabel"> ! <TMPL_VAR NAME="Localize_History_NoMessages">. ! </span> ! </td> ! </tr> ! </table> ! ! </TMPL_IF> <!-- if some messages --> ! ! <TMPL_INCLUDE NAME="history-javascript.thtml"> ! <TMPL_INCLUDE NAME="configuration-bar.thtml"> ! <TMPL_INCLUDE NAME="common-bottom.thtml"> Index: configuration-bar.thtml =================================================================== RCS file: /cvsroot/popfile/engine/skins/default/configuration-bar.thtml,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** configuration-bar.thtml 15 Aug 2005 03:49:41 -0000 1.16 --- configuration-bar.thtml 21 Aug 2005 22:17:51 -0000 1.17 *************** *** 1,107 **** ! <TMPL_IF NAME="If_Show_Config_Bars"> ! ! <div class="configBar"> ! ! <h2 class="configBarTitle"> ! <a name="configBar" title="<TMPL_VAR NAME="Localize_tip_Config_HideBar">" href="<TMPL_VAR NAME="Configuration_Action">?hide_configbar=1">Config Bar</a> ! </h2> ! ! <table class="configBarBody" cellspacing="0" width="100%"> ! ! <TMPL_IF NAME="Is_history_page"> ! ! <tr> ! <td> ! <form action="<TMPL_VAR NAME="Configuration_Action">" method="post"> ! <TMPL_INCLUDE NAME="history-bar.thtml"> ! </form> ! </td> ! </tr> ! ! </TMPL_IF> ! ! <tr> ! <td> ! <form action="<TMPL_VAR NAME="Configuration_Action">" method="post"> ! <div class="configBarOption"> ! <label class="configurationLabel" for="configSkin" title="<TMPL_VAR NAME="Localize_tip_Config_Skin">"> ! <TMPL_VAR NAME="Localize_Configuration_SkinsChoose">: ! </label> ! ! <input type="hidden" name="start_message" value="<TMPL_VAR NAME="History_Start_Message">" /> ! <select name="skin" id="configSkin"> ! <optgroup label="<TMPL_VAR NAME="Localize_Configuration_GeneralSkins">"> ! ! <TMPL_LOOP NAME="Configuration_Loop_General_Skins"> ! ! <option value="<TMPL_VAR NAME="Configuration_General_Skin">" <TMPL_VAR NAME="Configuration_General_Selected">> ! <TMPL_VAR NAME="Configuration_General_Skin"> ! </option> ! ! </TMPL_LOOP> ! ! </optgroup> ! ! <optgroup label="<TMPL_VAR NAME="Localize_Configuration_SmallSkins">"> ! ! <TMPL_LOOP NAME="Configuration_Loop_Small_Skins"> ! ! <option value="<TMPL_VAR NAME="Configuration_Small_Skin">" <TMPL_VAR NAME="Configuration_Small_Selected">> ! <TMPL_VAR NAME="Configuration_Small_Skin"> ! </option> ! ! </TMPL_LOOP> ! ! </optgroup> ! <optgroup label="<TMPL_VAR NAME="Localize_Configuration_TinySkins">"> ! ! <TMPL_LOOP NAME="Configuration_Loop_Tiny_Skins"> ! ! <option value="<TMPL_VAR NAME="Configuration_Tiny_Skin">" <TMPL_VAR NAME="Configuration_Tiny_Selected">> ! <TMPL_VAR NAME="Configuration_Tiny_Skin"> ! </option> ! ! </TMPL_LOOP> ! ! </optgroup> ! </select> ! <input type="submit" class="submit" name="change_skin" value="<TMPL_VAR NAME="Localize_Apply">" /> ! </div> ! ! <div class="configBarOption"> ! ! <label class="configurationLabel" for="configLanguage" title="<TMPL_VAR NAME="Localize_tip_Config_Language">"> ! <TMPL_VAR NAME="Localize_Configuration_LanguageChoose">: ! </label> ! ! <select name="language" id="configLanguage"> ! ! <TMPL_LOOP NAME="Configuration_Loop_Languages"> ! ! <option value="<TMPL_VAR NAME="Configuration_Language">" <TMPL_VAR NAME="Configuration_Selected_Language">> ! <TMPL_VAR NAME="Configuration_Language"> ! </option> ! ! </TMPL_LOOP> ! ! </select> ! <input type="submit" class="submit" name="change_language" value="<TMPL_VAR NAME="Localize_Apply">" /> ! </div> ! ! </form> ! </td> ! </tr> ! </table> ! ! </div> ! ! <TMPL_ELSE> ! ! <div class="configBarHidden"> ! <h2 class="configBarTitle"> ! <a title="<TMPL_VAR NAME="Localize_tip_Config_ShowBar">" href="<TMPL_VAR NAME="Configuration_Action">?show_configbar=1#configBar">Config Bar</a> ! </h2> ! </div> ! ! </TMPL_IF> ! --- 1,120 ---- ! <TMPL_IF NAME="If_Show_Config_Bars"> ! ! <div class="configBar"> ! ! <h2 class="configBarTitle"> ! <a name="configBar" title="<TMPL_VAR NAME="Localize_tip_Config_HideBar">" href="<TMPL_VAR NAME="Configuration_Action">?hide_configbar=1">Config Bar</a> ! </h2> ! ! <table class="configBarBody" cellspacing="0" width="100%"> ! ! <TMPL_IF NAME="Is_history_page"> ! ! <tr> ! <td> ! <form action="<TMPL_VAR NAME="Configuration_Action">" method="post"> ! <TMPL_INCLUDE NAME="history-bar.thtml"> ! </form> ! </td> ! </tr> ! ! </TMPL_IF> ! ! <tr> ! <td> ! <form action="<TMPL_VAR NAME="Configuration_Action">" method="post"> ! <div class="configBarOption"> ! <label class="configurationLabel" for="configSkin" title="<TMPL_VAR NAME="Localize_tip_Config_Skin">"> ! <TMPL_VAR NAME="Localize_Configuration_SkinsChoose">: ! </label> ! ! <input type="hidden" name="start_message" value="<TMPL_VAR NAME="History_Start_Message">" /> ! <select name="skin" id="configSkin"> ! <optgroup label="<TMPL_VAR NAME="Localize_Configuration_GeneralSkins">"> ! ! <TMPL_LOOP NAME="Configuration_Loop_General_Skins"> ! ! <option value="<TMPL_VAR NAME="Configuration_General_Skin">" <TMPL_VAR NAME="Configuration_General_Selected">> ! <TMPL_VAR NAME="Configuration_General_Skin"> ! </option> ! ! </TMPL_LOOP> ! ! </optgroup> ! ! <optgroup label="<TMPL_VAR NAME="Localize_Configuration_SmallSkins">"> ! ! <TMPL_LOOP NAME="Configuration_Loop_Small_Skins"> ! ! <option value="<TMPL_VAR NAME="Configuration_Small_Skin">" <TMPL_VAR NAME="Configuration_Small_Selected">> ! <TMPL_VAR NAME="Configuration_Small_Skin"> ! </option> ! ! </TMPL_LOOP> ! ! </optgroup> ! <optgroup label="<TMPL_VAR NAME="Localize_Configuration_TinySkins">"> ! ! <TMPL_LOOP NAME="Configuration_Loop_Tiny_Skins"> ! ! <option value="<TMPL_VAR NAME="Configuration_Tiny_Skin">" <TMPL_VAR NAME="Configuration_Tiny_Selected">> ! <TMPL_VAR NAME="Configuration_Tiny_Skin"> ! </option> ! ! </TMPL_LOOP> ! ! </optgroup> ! </select> ! <input type="submit" class="submit" name="change_skin" value="<TMPL_VAR NAME="Localize_Apply">" /> ! </div> ! ! <div class="configBarOption"> ! ! <label class="configurationLabel" for="configLanguage" title="<TMPL_VAR NAME="Localize_tip_Config_Language">"> ! <TMPL_VAR NAME="Localize_Configuration_LanguageChoose">: ! </label> ! ! <select name="language" id="configLanguage"> ! ! <TMPL_LOOP NAME="Configuration_Loop_Languages"> ! ! <option value="<TMPL_VAR NAME="Configuration_Language">" <TMPL_VAR NAME="Configuration_Selected_Language">> ! <TMPL_VAR NAME="Configuration_Language"> ! </option> ! ! </TMPL_LOOP> ! ! </select> ! <input type="submit" class="submit" name="change_language" value="<TMPL_VAR NAME="Localize_Apply">" /> ! </div> ! ! <div class="configBarOption"> ! ! <label class="configurationLabel" for="configPassword" title="<TMPL_VAR NAME="Localize_tip_Config_Password">"> ! <TMPL_VAR NAME="Localize_Configuration_ChangePassword">: ! </label> ! ! <TMPL_VAR NAME="Localize_Configuration_OldPassword">: <input type="password" name="old_password"> ! <TMPL_VAR NAME="Localize_Configuration_NewPassword">: <input type="password" name="new_password"> ! <TMPL_VAR NAME="Localize_Configuration_ConfirmPassword">: <input type="password" name="confirm_password"> ! ! <input type="submit" class="submit" name="change_password" value="<TMPL_VAR NAME="Localize_Apply">" /> ! </div> ! ! </form> ! </td> ! </tr> ! </table> ! ! </div> ! ! <TMPL_ELSE> ! ! <div class="configBarHidden"> ! <h2 class="configBarTitle"> ! <a title="<TMPL_VAR NAME="Localize_tip_Config_ShowBar">" href="<TMPL_VAR NAME="Configuration_Action">?show_configbar=1#configBar">Config Bar</a> ! </h2> ! </div> ! ! </TMPL_IF> ! Index: history-navigator-widget.thtml =================================================================== RCS file: /cvsroot/popfile/engine/skins/default/history-navigator-widget.thtml,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** history-navigator-widget.thtml 23 May 2005 09:39:33 -0000 1.5 --- history-navigator-widget.thtml 21 Aug 2005 22:17:51 -0000 1.6 *************** *** 1,26 **** ! <TMPL_VAR NAME="Localize_History_Jump">: ! <TMPL_IF NAME="History_Navigator_If_Previous"> ! [<a href="/history?start_message=<TMPL_VAR NAME="History_Navigator_Previous"><TMPL_VAR NAME="History_Navigator_Fields">">< <TMPL_VAR NAME="Localize_Previous"></a>] ! </TMPL_IF> ! ! <TMPL_LOOP NAME="History_Navigator_Loop"> ! <TMPL_IF NAME="History_Navigator_If_Spacer"> ! <TMPL_IF NAME="History_Navigator_If_Dots"> ! ... ! </TMPL_IF> ! <TMPL_ELSE> ! <TMPL_IF NAME="History_Navigator_If_This_Page"> ! <b><TMPL_VAR NAME="History_Navigator_Page"></b> ! <TMPL_ELSE> ! [<a href="/history?start_message=<TMPL_VAR NAME="History_Navigator_I"><TMPL_VAR NAME="History_Navigator_Fields">"><TMPL_VAR NAME="History_Navigator_Page"></a>] ! </TMPL_IF> ! </TMPL_IF> ! </TMPL_LOOP> ! ! <TMPL_IF NAME="History_Navigator_If_Next"> ! [<a href="/history?start_message=<TMPL_VAR NAME="History_Navigator_Next"><TMPL_VAR NAME="History_Navigator_Fields">"><TMPL_VAR NAME="Localize_Next"> ></a>] ! </TMPL_IF> ! <form action="/history" method="post"> ! <input type="text" name="jumptopage" value="" size="3" /> ! <input type="submit" class="submit" name="gopage" value="<TMPL_VAR NAME="Localize_Go">" /> ! </form> --- 1,26 ---- ! <TMPL_VAR NAME="Localize_History_Jump">: ! <TMPL_IF NAME="History_Navigator_If_Previous"> ! [<a href="/history?start_message=<TMPL_VAR NAME="History_Navigator_Previous"><TMPL_VAR NAME="History_Navigator_Fields">">< <TMPL_VAR NAME="Localize_Previous"></a>] ! </TMPL_IF> ! ! <TMPL_LOOP NAME="History_Navigator_Loop"> ! <TMPL_IF NAME="History_Navigator_If_Spacer"> ! <TMPL_IF NAME="History_Navigator_If_Dots"> ! ... ! </TMPL_IF> ! <TMPL_ELSE> ! <TMPL_IF NAME="History_Navigator_If_This_Page"> ! <b><TMPL_VAR NAME="History_Navigator_Page"></b> ! <TMPL_ELSE> ! [<a href="/history?start_message=<TMPL_VAR NAME="History_Navigator_I"><TMPL_VAR NAME="History_Navigator_Fields">"><TMPL_VAR NAME="History_Navigator_Page"></a>] ! </TMPL_IF> ! </TMPL_IF> ! </TMPL_LOOP> ! ! <TMPL_IF NAME="History_Navigator_If_Next"> ! [<a href="/history?start_message=<TMPL_VAR NAME="History_Navigator_Next"><TMPL_VAR NAME="History_Navigator_Fields">"><TMPL_VAR NAME="Localize_Next"> ></a>] ! </TMPL_IF> ! <form action="/history" method="post"> ! <input type="text" name="jumptopage" value="" size="3" /> ! <input type="submit" class="submit" name="gopage" value="<TMPL_VAR NAME="Localize_Go">" /> ! </form> Index: history-bar.thtml =================================================================== RCS file: /cvsroot/popfile/engine/skins/default/history-bar.thtml,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** history-bar.thtml 24 May 2005 08:23:46 -0000 1.16 --- history-bar.thtml 21 Aug 2005 22:17:51 -0000 1.17 *************** *** 1,49 **** ! <div class="configBarOption"> ! <label class="configurationLabel" title="<TMPL_VAR NAME="Localize_tip_Config_HistoryWidth">"> ! <TMPL_VAR NAME="Localize_History_Column_Characters">: ! </label> ! <input type="submit" class="submit" name="increase" value="<TMPL_VAR NAME="Localize_History_Increase">" title="<TMPL_VAR NAME="Localize_tip_Config_ColumnIncrease">" /> ! <input type="submit" class="submit" name="decrease" value="<TMPL_VAR NAME="Localize_History_Decrease">" title="<TMPL_VAR NAME="Localize_tip_Config_ColumnDecrease">" /> ! <input type="submit" class="submit" name="automatic" value="<TMPL_VAR NAME="Localize_History_Automatic">" title="<TMPL_VAR NAME="Localize_tip_Config_ColumnAuto">" /> ! </div> ! ! <div class="configBarOption"> ! <label class="configurationLabel" title="<TMPL_VAR NAME="Localize_tip_Config_HistoryColumns">"> ! <TMPL_VAR NAME="Localize_Configuration_Fields">: ! </label> ! ! <TMPL_LOOP NAME="Configuration_Loop_History_Columns"> ! ! <TMPL_IF NAME="Configuration_Field_Visible"> ! ! <span class="checkLabel"><input type="checkbox" id="<TMPL_VAR NAME="Configuration_Field_Name">" class="checkbox" name="<TMPL_VAR NAME="Configuration_Field_Name">"> <label for="<TMPL_VAR NAME="Configuration_Field_Name">"><TMPL_VAR NAME="Configuration_Localized_Field_Name"></label> </span> ! ! <TMPL_ELSE> ! ! <input type="hidden" id="<TMPL_VAR NAME="Configuration_Field_Name">" name="<TMPL_VAR NAME="Configuration_Field_Name">"> ! ! </TMPL_IF> ! ! </TMPL_LOOP> ! <input type="submit" class="submit" name="update_fields" value="<TMPL_VAR NAME="Localize_Apply">" /> ! <input type="hidden" name="start_message" value="<TMPL_VAR NAME="History_Start_Message">" /> ! </div> ! ! <div class="configBarOption"> ! <label class="configurationLabel" for="configPageSize" title="<TMPL_VAR NAME="Localize_tip_Config_PageSize">"> ! <TMPL_VAR NAME="Localize_Configuration_History">: ! </label> ! <input name="page_size" id="configPageSize" type="text" size="4" maxlength="4" value="<TMPL_VAR NAME="Configuration_Page_Size">" /> ! <input type="submit" class="submit" name="update_page_size" value="<TMPL_VAR NAME="Localize_Apply">" /> ! </div> ! <div class="configBarOption"> ! <label class="configurationLabel" for="configHistoryDays" title="<TMPL_VAR NAME="Localize_tip_Config_Days">"> ! <TMPL_VAR NAME="Localize_Configuration_Days">: ! </label> ! ! <input name="history_days" id="configHistoryDays" type="text" size="3" maxlength="3" value="<TMPL_VAR NAME="Configuration_History_Days">" /> ! ! <span class="checkLabel"><input type="checkbox" class="checkbox" name="purge_history" id="purge_history" value="<TMPL_VAR NAME="Localize_History_Purge">" /> ! <label for="purge_history" title="<TMPL_VAR NAME="Localize_tip_Config_Purge">"><TMPL_VAR NAME="Localize_History_Purge"></label></span> ! <input type="submit" class="submit" name="update_history_days" value="<TMPL_VAR NAME="Localize_Apply">" /> ! </div> --- 1,49 ---- ! <div class="configBarOption"> ! <label class="configurationLabel" title="<TMPL_VAR NAME="Localize_tip_Config_HistoryWidth">"> ! <TMPL_VAR NAME="Localize_History_Column_Characters">: ! </label> ! <input type="submit" class="submit" name="increase" value="<TMPL_VAR NAME="Localize_History_Increase">" title="<TMPL_VAR NAME="Localize_tip_Config_ColumnIncrease">" /> ! <input type="submit" class="submit" name="decrease" value="<TMPL_VAR NAME="Localize_History_Decrease">" title="<TMPL_VAR NAME="Localize_tip_Config_ColumnDecrease">" /> ! <input type="submit" class="submit" name="automatic" value="<TMPL_VAR NAME="Localize_History_Automatic">" title="<TMPL_VAR NAME="Localize_tip_Config_ColumnAuto">" /> ! </div> ! ! <div class="configBarOption"> ! <label class="configurationLabel" title="<TMPL_VAR NAME="Localize_tip_Config_HistoryColumns">"> ! <TMPL_VAR NAME="Localize_Configuration_Fields">: ! </label> ! ! <TMPL_LOOP NAME="Configuration_Loop_History_Columns"> ! ! <TMPL_IF NAME="Configuration_Field_Visible"> ! ! <span class="checkLabel"><input type="checkbox" id="<TMPL_VAR NAME="Configuration_Field_Name">" class="checkbox" name="<TMPL_VAR NAME="Configuration_Field_Name">"> <label for="<TMPL_VAR NAME="Configuration_Field_Name">"><TMPL_VAR NAME="Configuration_Localized_Field_Name"></label> </span> ! ! <TMPL_ELSE> ! ! <input type="hidden" id="<TMPL_VAR NAME="Configuration_Field_Name">" name="<TMPL_VAR NAME="Configuration_Field_Name">"> ! ! </TMPL_IF> ! ! </TMPL_LOOP> ! <input type="submit" class="submit" name="update_fields" value="<TMPL_VAR NAME="Localize_Apply">" /> ! <input type="hidden" name="start_message" value="<TMPL_VAR NAME="History_Start_Message">" /> ! </div> ! ! <div class="configBarOption"> ! <label class="configurationLabel" for="configPageSize" title="<TMPL_VAR NAME="Localize_tip_Config_PageSize">"> ! <TMPL_VAR NAME="Localize_Configuration_History">: ! </label> ! <input name="page_size" id="configPageSize" type="text" size="4" maxlength="4" value="<TMPL_VAR NAME="Configuration_Page_Size">" /> ! <input type="submit" class="submit" name="update_page_size" value="<TMPL_VAR NAME="Localize_Apply">" /> ! </div> ! <div class="configBarOption"> ! <label class="configurationLabel" for="configHistoryDays" title="<TMPL_VAR NAME="Localize_tip_Config_Days">"> ! <TMPL_VAR NAME="Localize_Configuration_Days">: ! </label> ! ! <input name="history_days" id="configHistoryDays" type="text" size="3" maxlength="3" value="<TMPL_VAR NAME="Configuration_History_Days">" /> ! ! <span class="checkLabel"><input type="checkbox" class="checkbox" name="purge_history" id="purge_history" value="<TMPL_VAR NAME="Localize_History_Purge">" /> ! <label for="purge_history" title="<TMPL_VAR NAME="Localize_tip_Config_Purge">"><TMPL_VAR NAME="Localize_History_Purge"></label></span> ! <input type="submit" class="submit" name="update_history_days" value="<TMPL_VAR NAME="Localize_Apply">" /> ! </div> Index: history-javascript.thtml =================================================================== RCS file: /cvsroot/popfile/engine/skins/default/history-javascript.thtml,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** history-javascript.thtml 21 Aug 2005 08:37:32 -0000 1.8 --- history-javascript.thtml 21 Aug 2005 22:17:51 -0000 1.9 *************** *** 1,18 **** ! <script type="text/javascript"> ! <!-- ! function OnLoadHandler() { // redefine default OnLoadHandler ! if (document.getElementById("removeChecks")) ! document.getElementById("removeChecks").innerHTML = "<input type='checkbox' class='checkbox' onclick='javascript:toggleChecks(this);' title='Select All' />"; ! } ! ! function toggleChecks(x) { ! d = document.forms; ! for (var i=0; i < d.length; i++) { ! for (var j=0; j < d[i].elements.length; j++) ! if (d[i].elements[j].name.substr(0,7) == "remove_") ! d[i].elements[j].checked = x.checked; ! } ! return 0; ! } ! --> ! </script> --- 1,18 ---- ! <script type="text/javascript"> ! <!-- ! function OnLoadHandler() { // redefine default OnLoadHandler ! if (document.getElementById("removeChecks")) ! document.getElementById("removeChecks").innerHTML = "<input type='checkbox' class='checkbox' onclick='javascript:toggleChecks(this);' title='Select All' />"; ! } ! ! function toggleChecks(x) { ! d = document.forms; ! for (var i=0; i < d.length; i++) { ! for (var j=0; j < d[i].elements.length; j++) ! if (d[i].elements[j].name.substr(0,7) == "remove_") ! d[i].elements[j].checked = x.checked; ! } ! return 0; ! } ! --> ! </script> |
From: John Graham-C. <jgr...@us...> - 2005-08-21 22:18:02
|
Update of /cvsroot/popfile/engine/languages In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11349/languages Modified Files: English.msg Log Message: More v0.23.0 work; mostly around the test suite and the ability to change passwords. *** NOTE: Had to run 'dos2unix' because a number of files had CRLF line endings. POPFile standard is Unix-style LF only line endings on files. *** tests/TestBayes.tst and Classifier/Bayes.pm: Add tests for APIs that had no tests (and fix the bugs that the tests showed up!). All APIs now have tests; the new tests cover: add_account create_user get_accounts get_bucket_id get_bucket_name get_user_id get_user_list get_user_parameter get_user_parameter_from_id get_user_parameter_list remove_account remove_user set_user_parameter_from_id *** Classifier/Bayes.pm, tests/TestBayes.tst, UI/HTML.pm create_user now also creates a random password for the user and the password is displayed when the user is created in the UI. *** Classifier/Bayes.pm, tests/TestBayes.tst, UI/HTML.pm, skins/default/configuration-bar.thtml Added the ability to change password for a user. This is done in the configuration bar and added new APIs and tests (validate_password and set_password) for a user. *** POPFile/API.pm: Add external access to the following new APIs: add_account create_user get_user_id get_user_id_from_session get_user_parameter get_user_parameter_from_id get_user_parameter_list remove_account remove_user set_user_parameter_from_id *** tests/TestHTTP.tst: Remove redirection tests since this is no longer handled by the HTTP module. *** Current state of the test suite: TestBayesScript fail TestBayes PASS TestConfiguration fail TestHistory fail TestHTML fail (horribly) TestHTTP PASS TestIMAP PASS TestInsertScript fail TestLogger PASS TestMailParse fail TestModule PASS TestMQ PASS TestMutex PASS TestPipeScript PASS TestPOP3 fail TestProxy PASS TestWordMangle PASS TestXMLRPC fail *** TODO tests/TestModule.tst needs updating for the user_*_config_ APIs that have been added. Look into why we get bogus complaints about the primary key not being unique when we do a database upgrade. I think some of these are caused by the fact that popfile.sql contains some INSERT statements and we are getting double inserts. Perhaps the upgrade should be using UPDATE instead. Index: English.msg =================================================================== RCS file: /cvsroot/popfile/engine/languages/English.msg,v retrieving revision 1.95 retrieving revision 1.96 diff -C2 -d -r1.95 -r1.96 *** English.msg 20 Aug 2005 08:17:17 -0000 1.95 --- English.msg 21 Aug 2005 22:17:51 -0000 1.96 *************** *** 176,179 **** --- 176,187 ---- Configuration_SOCKSServerUpdate Updated SOCKS V proxy host to %s Configuration_Fields Add history columns + Configuration_ChangePassword Change Password + Configuration_OldPassword Current + Configuration_NewPassword New + Configuration_ConfirmPassword Confirm New + Configuration_Password_Mismatch The new password must by identical in the New and Confirm New boxes + Configuration_Password_Bad The old password entered is incorrect + Configuration_Password_Fail Failed to set new password + Configuration_Set_Password New password has been set Advanced_Error1 '%s' already in the Ignored Words list *************** *** 200,208 **** Users_EditUser Edit user Users_Parameters Parameters ! Users_Created Created user '%s' Users_Not_Created Failed to create user '%s' ! Users_Created_And_Cloned Created user '%s' as clone of '%s' Users_Not_Created_Exists User '%s' not created: already exists ! Users_Created_Not_Cloned Created user '%s' but clone of '%s' failed Users_Removed Removed user '%s' Users_Removed_Failed Failed to remove user '%s' --- 208,216 ---- Users_EditUser Edit user Users_Parameters Parameters ! Users_Created Created user '%s' (initial password '%s') Users_Not_Created Failed to create user '%s' ! Users_Created_And_Cloned Created user '%s' as clone of '%s' (initial password '%s') Users_Not_Created_Exists User '%s' not created: already exists ! Users_Created_Not_Cloned Created user '%s' but clone of '%s' failed (initial password '%s') Users_Removed Removed user '%s' Users_Removed_Failed Failed to remove user '%s' |
From: Joseph C. <tex...@us...> - 2005-08-21 08:38:43
|
Update of /cvsroot/popfile/engine/skins/default In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10385/skins/default Modified Files: magnet-page.thtml Log Message: Add tooltips to magnet page. Index: magnet-page.thtml =================================================================== RCS file: /cvsroot/popfile/engine/skins/default/magnet-page.thtml,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** magnet-page.thtml 22 May 2005 10:45:43 -0000 1.11 --- magnet-page.thtml 21 Aug 2005 08:38:35 -0000 1.12 *************** *** 5,8 **** --- 5,9 ---- <TMPL_INCLUDE NAME="magnet-navigator.thtml"> + <br /><br /> <form action="/magnets" method="post"> *************** *** 100,104 **** <div class="magnetsNewWidget"> <form action="/magnets" method="post"> ! <label class="magnetsLabel" for="magnetsAddType"> <TMPL_VAR NAME="Localize_Magnet_MagnetType">: </label> --- 101,105 ---- <div class="magnetsNewWidget"> <form action="/magnets" method="post"> ! <label class="magnetsLabel" for="magnetsAddType" title="<TMPL_VAR NAME="Localize_tip_Magnet_Type">"> <TMPL_VAR NAME="Localize_Magnet_MagnetType">: </label> *************** *** 118,122 **** <br /> <input type="hidden" name="count" value="1" /> ! <label class="magnetsLabel" for="magnetsAddText"> <TMPL_VAR NAME="Localize_Magnet_Value">: </label> --- 119,123 ---- <br /> <input type="hidden" name="count" value="1" /> ! <label class="magnetsLabel" for="magnetsAddText" title="<TMPL_VAR NAME="Localize_tip_Magnet_Value">"> <TMPL_VAR NAME="Localize_Magnet_Value">: </label> *************** *** 125,129 **** <br /> <br /> ! <label class="magnetsLabel" for="magnetsAddBucket"> <TMPL_VAR NAME="Localize_Magnet_Always">: </label> --- 126,130 ---- <br /> <br /> ! <label class="magnetsLabel" for="magnetsAddBucket" title="<TMPL_VAR NAME="Localize_tip_Magnet_Bucket">"> <TMPL_VAR NAME="Localize_Magnet_Always">: </label> |
From: Joseph C. <tex...@us...> - 2005-08-21 08:37:40
|
Update of /cvsroot/popfile/engine/skins/default In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10176/skins/default Modified Files: common-javascript.thtml history-javascript.thtml Log Message: Use new advanced preference to control display of confirmation dialogs on Remove buttons. Remove old version of confirmClick function. Index: history-javascript.thtml =================================================================== RCS file: /cvsroot/popfile/engine/skins/default/history-javascript.thtml,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** history-javascript.thtml 25 May 2005 14:54:42 -0000 1.7 --- history-javascript.thtml 21 Aug 2005 08:37:32 -0000 1.8 *************** *** 15,22 **** return 0; } - - function confirmClick(message) { - return confirm (message); - } --> </script> --- 15,18 ---- Index: common-javascript.thtml =================================================================== RCS file: /cvsroot/popfile/engine/skins/default/common-javascript.thtml,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** common-javascript.thtml 22 May 2005 09:37:06 -0000 1.4 --- common-javascript.thtml 21 Aug 2005 08:37:30 -0000 1.5 *************** *** 1,9 **** <script type="text/javascript"> ! warnings = 1; // this will be replaced with an Advanced variable that the Template will insert here ! function confirmClick(x) { if(warnings) ! return confirm ("Are you sure you want to do this?"); else return 0; } --- 1,13 ---- <script type="text/javascript"> ! <TMPL_IF NAME="If_Javascript_OK"> ! warnings = 1; // confirmation dialogs enabled ! <TMPL_ELSE> ! warnings = 0; // confirmation dialogs disabled ! </TMPL_IF> ! function confirmClick(message) { if(warnings) ! return confirm (message); else return 0; } |
From: John Graham-C. <jgr...@us...> - 2005-08-20 19:09:50
|
Update of /cvsroot/popfile/engine/UI In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32427/UI Modified Files: HTML.pm Log Message: Added variable html_allow_javascript (defaults to 1) which translates to template variable If_Javascript_OK which can be used to enable/disable Javascript popups Index: HTML.pm =================================================================== RCS file: /cvsroot/popfile/engine/UI/HTML.pm,v retrieving revision 1.354 retrieving revision 1.355 diff -C2 -d -r1.354 -r1.355 *** HTML.pm 14 Aug 2005 03:57:27 -0000 1.354 --- HTML.pm 20 Aug 2005 19:09:41 -0000 1.355 *************** *** 167,170 **** --- 167,174 ---- $self->config_( 'strict_templates', 0 ); + # Whether to allow Javascript + + $self->config_( 'allow_javascript', 1 ); + # Load skins *************** *** 3427,3430 **** --- 3431,3435 ---- 'Common_Middle_If_CanAdmin' => $self->user_global_config_( $user, 'can_admin' ), + 'If_Javascript_OK' => $self->config_( 'allow_javascript' ), 'Configuration_Action' => $page ); |
From: Brian S. <xue...@us...> - 2005-08-20 11:53:46
|
Update of /cvsroot/popfile/windows/add-ons In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20260 Modified Files: updateimap.nsi Log Message: Fix the typo in the 'usage' message. Index: updateimap.nsi =================================================================== RCS file: /cvsroot/popfile/windows/add-ons/updateimap.nsi,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** updateimap.nsi 20 Aug 2005 11:23:30 -0000 1.1 --- updateimap.nsi 20 Aug 2005 11:53:37 -0000 1.2 *************** *** 122,126 **** Name "POPFile IMAP Updater" ! !define C_PFI_VERSION "0.0.5" ; Mention the wizard's version number in the window title --- 122,126 ---- Name "POPFile IMAP Updater" ! !define C_PFI_VERSION "0.0.6" ; Mention the wizard's version number in the window title *************** *** 460,464 **** !insertmacro PLS_TEXT PIU_LANG_MB_BADOPTION_4 "(where x is the required revision number, starting at 1)" !insertmacro PLS_TEXT PIU_LANG_MB_BADOPTION_5 "To get the most recent revision, set x to a huge number like 999" ! !insertmacro PLS_TEXT PIU_LANG_MB_BADOPTION_ALL "$(PIU_LANG_MB_BADOPTION_1)${MB_NL}${MB_NL}$(PIU_LANG_MB_BADOPTION_2)${MB_NL}${MB_NL}updateimap.exe${MB_NL}$(PIU_LANG_MB_BADOPTION_3)${MB_NL}${MB_NL}or${MB_NL}${MB_NL}update.exe /revision=1.x${MB_NL}$(PIU_LANG_MB_BADOPTION_4)${MB_NL}${MB_NL}$(PIU_LANG_MB_BADOPTION_5)" !insertmacro PLS_TEXT PIU_LANG_ANALYSISFAILED_1 "Sorry, unable to determine the most recent revision!" --- 460,464 ---- !insertmacro PLS_TEXT PIU_LANG_MB_BADOPTION_4 "(where x is the required revision number, starting at 1)" !insertmacro PLS_TEXT PIU_LANG_MB_BADOPTION_5 "To get the most recent revision, set x to a huge number like 999" ! !insertmacro PLS_TEXT PIU_LANG_MB_BADOPTION_ALL "$(PIU_LANG_MB_BADOPTION_1)${MB_NL}${MB_NL}$(PIU_LANG_MB_BADOPTION_2)${MB_NL}${MB_NL}updateimap.exe${MB_NL}$(PIU_LANG_MB_BADOPTION_3)${MB_NL}${MB_NL}or${MB_NL}${MB_NL}updateimap.exe /revision=1.x${MB_NL}$(PIU_LANG_MB_BADOPTION_4)${MB_NL}${MB_NL}$(PIU_LANG_MB_BADOPTION_5)" !insertmacro PLS_TEXT PIU_LANG_ANALYSISFAILED_1 "Sorry, unable to determine the most recent revision!" |
From: Brian S. <xue...@us...> - 2005-08-20 11:26:42
|
Update of /cvsroot/popfile/windows In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15865 Modified Files: pfi-library.nsh Log Message: Updated to support the "IMAP Updater" wizard. Index: pfi-library.nsh =================================================================== RCS file: /cvsroot/popfile/windows/pfi-library.nsh,v retrieving revision 1.64 retrieving revision 1.65 diff -C2 -d -r1.64 -r1.65 *** pfi-library.nsh 14 Jul 2005 11:29:46 -0000 1.64 --- pfi-library.nsh 20 Aug 2005 11:26:34 -0000 1.65 *************** *** 36,48 **** # (3) BACKUP defined in backup.nsi (POPFile 'User Data' Backup utility) # (4) DBSTATUS defined in test\pfidbstatus.nsi (POPFile SQLite Database Status Check) ! # (5) INSTALLER defined in installer.nsi (the main installer program, setup.exe) ! # (6) MSGCAPTURE defined in msgcapture.nsi (used to capture POPFile's console messages) ! # (7) PFIDIAG defined in test\pfidiag.nsi (helps diagnose installer-related problems) ! # (8) RESTORE defined in restore.nsi (POPFile 'User Data' Restore utility) ! # (9) RUNPOPFILE defined in runpopfile.nsi (simple front-end for popfile.exe) ! # (10) RUNSQLITE defined in runsqlite.nsi (simple front-end for sqlite.exe/sqlite3.exe) ! # (11) STOP_POPFILE defined in stop_popfile.nsi (the 'POPFile Silent Shutdown' utility) ! # (12) TRANSLATOR defined in test\translator.nsi (main installer translations testbed) ! # (13) TRANSLATOR_AUW defined in test\transAUW.nsi ('Add POPFile User' translations testbed) #-------------------------------------------------------------------------- --- 36,49 ---- # (3) BACKUP defined in backup.nsi (POPFile 'User Data' Backup utility) # (4) DBSTATUS defined in test\pfidbstatus.nsi (POPFile SQLite Database Status Check) ! # (5) IMAPUPDATER defined in add-ons\updateimap.nsi (POPFile 'IMAP Updater' wizard) ! # (6) INSTALLER defined in installer.nsi (the main installer program, setup.exe) ! # (7) MSGCAPTURE defined in msgcapture.nsi (used to capture POPFile's console messages) ! # (8) PFIDIAG defined in test\pfidiag.nsi (helps diagnose installer-related problems) ! # (9) RESTORE defined in restore.nsi (POPFile 'User Data' Restore utility) ! # (10) RUNPOPFILE defined in runpopfile.nsi (simple front-end for popfile.exe) ! # (11) RUNSQLITE defined in runsqlite.nsi (simple front-end for sqlite.exe/sqlite3.exe) ! # (12) STOP_POPFILE defined in stop_popfile.nsi (the 'POPFile Silent Shutdown' utility) ! # (13) TRANSLATOR defined in test\translator.nsi (main installer translations testbed) ! # (14) TRANSLATOR_AUW defined in test\transAUW.nsi ('Add POPFile User' translations testbed) #-------------------------------------------------------------------------- *************** *** 58,62 **** #-------------------------------------------------------------------------- ! !define C_PFI_LIBRARY_VERSION "0.1.9" #-------------------------------------------------------------------------- --- 59,63 ---- #-------------------------------------------------------------------------- ! !define C_PFI_LIBRARY_VERSION "0.1.10" #-------------------------------------------------------------------------- *************** *** 1294,1298 **** !macroend ! !ifdef ADDSSL | BACKUP | INSTALLER | RESTORE #-------------------------------------------------------------------------- # Installer Function: PFI_DumpLog --- 1295,1299 ---- !macroend ! !ifdef ADDSSL | BACKUP | IMAPUPDATER | INSTALLER | RESTORE #-------------------------------------------------------------------------- # Installer Function: PFI_DumpLog *************** *** 4227,4231 **** !macroend ! !ifndef ADDSSL & DBSTATUS & MSGCAPTURE & RUNSQLITE & STOP_POPFILE & TRANSLATOR #-------------------------------------------------------------------------- # Installer Function: PFI_StrStr --- 4228,4232 ---- !macroend ! !ifndef ADDSSL & DBSTATUS & IMAPUPDATER & MSGCAPTURE & RUNSQLITE & STOP_POPFILE & TRANSLATOR #-------------------------------------------------------------------------- # Installer Function: PFI_StrStr |
From: Brian S. <xue...@us...> - 2005-08-20 11:23:45
|
Update of /cvsroot/popfile/windows/add-ons In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15673 Added Files: updateimap.nsi Log Message: Stand-alone utility which downloads the experimental IMAP.pm module from the project's CVS repository to update an existing POPFile installation. --- NEW FILE: updateimap.nsi --- #-------------------------------------------------------------------------- # # updateimap.nsi --- This is the NSIS script used to create a utility which downloads and # installs either the latest version of the experimental IMAP.pm module # or the version specified on the command-line. This utility is intended # for use with an existing POPFile 0.22.x installation (the IMAP module # is still 'experimental' so it is not shipped with the 0.22.0 release). # # Copyright (c) 2004-2005 John Graham-Cumming # # This file is part of POPFile # # POPFile is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # POPFile is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with POPFile; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # #-------------------------------------------------------------------------- ; This version of the script has been tested with the "NSIS 2.0" compiler (final), ; released 7 February 2004, with no "official" NSIS patches applied. This compiler ; can be downloaded from http://prdownloads.sourceforge.net/nsis/nsis20.exe?download !define ${NSIS_VERSION}_found !ifndef v2.0_found !warning \ "$\r$\n\ $\r$\n*** NSIS COMPILER WARNING:\ $\r$\n***\ $\r$\n*** This script has only been tested using the NSIS 2.0 compiler\ $\r$\n*** and may not work properly with this NSIS ${NSIS_VERSION} compiler\ $\r$\n***\ $\r$\n*** The resulting 'installer' program should be tested carefully!\ $\r$\n$\r$\n" !endif !undef ${NSIS_VERSION}_found ;------------------------------------------------ ; This script uses 'cURL' to perform the downloads ;------------------------------------------------ ; The standard NSIS 'nsisdl' plugin cannot be used to download the IMAP.pm module because ; the server does not supply the content length so the 'curl' is used to download the data. ; ; For further information, including download links for a wide variety of platforms, visit ; curl's web site at http://curl.haxx.se ; ; There are over 15 official mirrors of the main web site and a similar number of official ; download mirrors. ; ; For this IMAP Updater wizard the "Win32 - Generic - non-SSL" version of 'curl' was used. ; ; The curl program contains built-in help (curl.exe --help) and a manual (curl.exe --manual) #-------------------------------------------------------------------------- # Optional run-time command-line switch (used by 'updateimap.exe') #-------------------------------------------------------------------------- # # /revision=CVS revision number # # By default this wizard downloads the most recent version found in CVS. If the wizard fails to # correctly identify the most recent version or if the user wishes to download and install a # particular revision then this command-line switch can be used. # # For example, to download and install IMAP.pm v1.4 use the command: # # updateimap.exe /revision=1.4 # # To get the most recent version without knowing its revision number, use the command: # # updateimap.exe /revision=1.999 # # (assuming the most recent version number is less than or equal to 1.999) #-------------------------------------------------------------------------- ;------------------------------------------------ ; Define PFI_VERBOSE to get more compiler output ;------------------------------------------------ ## !define PFI_VERBOSE ;-------------------------------------------------------------------------- ; Select LZMA compression (to generate smallest EXE file) ;-------------------------------------------------------------------------- SetCompressor lzma ;-------------------------------------------------------------------------- ; Symbols used to avoid confusion over where the line breaks occur. ; ; ${IO_NL} is used for InstallOptions-style 'new line' sequences. ; ${MB_NL} is used for MessageBox-style 'new line' sequences. ; ; (these two constants do not follow the 'C_' naming convention described below) ;-------------------------------------------------------------------------- !define IO_NL "\r\n" !define MB_NL "$\r$\n" ;-------------------------------------------------------------------------- ; POPFile constants have been given names beginning with 'C_' (eg C_README) ; (two commonly used exceptions to this rule are 'IO_NL' and 'MB_NL') ;-------------------------------------------------------------------------- ; This build is for use with the POPFile installer-created installations !define C_PFI_PRODUCT "POPFile" Name "POPFile IMAP Updater" !define C_PFI_VERSION "0.0.5" ; Mention the wizard's version number in the window title Caption "POPFile IMAP Updater v${C_PFI_VERSION}" ; Name to be used for the program file (also used for the 'Version Information') !define C_OUTFILE "updateimap.exe" ;-------------------------------------------------------------------------- ; Addresses used to download the list of available IMAP.pm revisions and to ; download a particular revision. Some simple parsing is performed on the ; available IMAP.pm revisions list in an attempt to find the most recent one. ;-------------------------------------------------------------------------- ; SourceForge URL for the CVS Revision History for the POPFile IMAP module !define C_CVS_HISTORY_URL "http://cvs.sourceforge.net/viewcvs.py/popfile/engine/Services/IMAP.pm" ; SourceForge URL used when downloading a particular CVS revision of the IMAP module !define C_CVS_IMAP_DL_URL "http://cvs.sourceforge.net/viewcvs.py/*checkout*/popfile/engine/Services/IMAP.pm?rev=$G_REVISION" #-------------------------------------------------------------------------- # User Registers (Global) #-------------------------------------------------------------------------- ; This script uses 'User Variables' (with names starting with 'G_') to hold GLOBAL data. Var G_ROOTDIR ; full path to the folder used for the POPFile program files Var G_REVISION ; The IMAP.pm CVS revision to be downloaded (e.g. 1.5) which is ; extracted from the CVS history page or specified on command-line Var G_REVDATE ; The date of the most recent CVS revision found in the list ; (e.g. "Mon Aug 23 12:18:58 2004 UTC") Var G_PLS_FIELD_1 ; used to customize some language strings ; NSIS provides 20 general purpose user registers: ; (a) $R0 to $R9 are used as local registers ; (b) $0 to $9 are used as additional local registers ; Local registers referred to by 'defines' use names starting with 'L_' (eg L_LNE, L_OLDUI) ; and the scope of these 'defines' is limited to the "routine" where they are used. ; In earlier versions of the NSIS compiler, 'User Variables' did not exist, and the convention ; was to use $R0 to $R9 as 'local' registers and $0 to $9 as 'global' ones. This is why this ; script uses registers $R0 to $R9 in preference to registers $0 to $9. ; POPFile constants have been given names beginning with 'C_' (eg C_README) ; except for 'IO_NL' and 'MB_NL' which are used when assembling multi-line strings #-------------------------------------------------------------------------- # Use the "Modern User Interface" #-------------------------------------------------------------------------- !include "MUI.nsh" #-------------------------------------------------------------------------- # Include private library functions and macro definitions #-------------------------------------------------------------------------- ; Avoid compiler warnings by disabling the functions and definitions we do not use !define IMAPUPDATER !include "..\pfi-library.nsh" #-------------------------------------------------------------------------- # Version Information settings (for the wizard's EXE file) #-------------------------------------------------------------------------- ; 'VIProductVersion' format is X.X.X.X where X is a number in range 0 to 65535 ; representing the following values: Major.Minor.Release.Build VIProductVersion "${C_PFI_VERSION}.0" VIAddVersionKey "ProductName" "POPFile IMAP Updater wizard" VIAddVersionKey "Comments" "POPFile Homepage: http://getpopfile.org/" VIAddVersionKey "CompanyName" "The POPFile Project" VIAddVersionKey "LegalCopyright" "Copyright (c) 2005 John Graham-Cumming" VIAddVersionKey "FileDescription" "Updates the IMAP module for POPFile 0.22.x" VIAddVersionKey "FileVersion" "${C_PFI_VERSION}" VIAddVersionKey "OriginalFilename" "${C_OUTFILE}" VIAddVersionKey "Build" "English-Mode" VIAddVersionKey "Build Date/Time" "${__DATE__} @ ${__TIME__}" !ifdef C_PFI_LIBRARY_VERSION VIAddVersionKey "Build Library Version" "${C_PFI_LIBRARY_VERSION}" !endif VIAddVersionKey "Build Script" "${__FILE__}${MB_NL}(${__TIMESTAMP__})" #-------------------------------------------------------------------------- # Configure the MUI pages #-------------------------------------------------------------------------- ;---------------------------------------------------------------- ; Interface Settings - General Interface Settings ;---------------------------------------------------------------- !define MUI_ICON "..\POPFileIcon\popfile.ico" ; The "Header" bitmap appears on all pages of the wizard (except Welcome & Finish pages) !define MUI_HEADERIMAGE !define MUI_HEADERIMAGE_BITMAP "hdr-update.bmp" !define MUI_HEADERIMAGE_RIGHT ;---------------------------------------------------------------- ; Interface Settings - Interface Resource Settings ;---------------------------------------------------------------- ; The banner provided by the default 'modern.exe' UI does not provide much room for the ; two lines of text, e.g. the German version is truncated, so we use a custom UI which ; provides slightly wider text areas. Each area is still limited to a single line of text. !define MUI_UI "..\UI\pfi_modern.exe" ; The 'hdr-common.bmp' logo is only 90 x 57 pixels, much smaller than the 150 x 57 pixel ; space provided by the default 'modern_headerbmpr.exe' UI, so we use a custom UI which ; leaves more room for the TITLE and SUBTITLE text. !define MUI_UI_HEADERIMAGE_RIGHT "..\UI\pfi_headerbmpr.exe" ;---------------------------------------------------------------- ; Interface Settings - Welcome/Finish Page Interface Settings ;---------------------------------------------------------------- ; The "Special" bitmap appears on the "Welcome" and "Finish" pages !define MUI_WELCOMEFINISHPAGE_BITMAP "special-update.bmp" ;---------------------------------------------------------------- ; Interface Settings - Installer Finish Page Interface Settings ;---------------------------------------------------------------- ; The log window shows progress messages and download statistics ShowInstDetails show !define MUI_FINISHPAGE_NOAUTOCLOSE ;---------------------------------------------------------------- ; Interface Settings - Abort Warning Settings ;---------------------------------------------------------------- ; Show a message box with a warning when the user closes the wizard before it has finished !define MUI_ABORTWARNING ;---------------------------------------------------------------- ; Customize MUI - General Custom Function ;---------------------------------------------------------------- ; Use a custom '.onGUIInit' function to permit language-specific error messages ; (the user-selected language is not available for use in the .onInit function) !define MUI_CUSTOMFUNCTION_GUIINIT PFIGUIInit #-------------------------------------------------------------------------- # Define the Page order for the wizard #-------------------------------------------------------------------------- ;--------------------------------------------------- ; Installer Page - Welcome ;--------------------------------------------------- !define MUI_WELCOMEPAGE_TITLE "$(PIU_LANG_WELCOME_TITLE)" !define MUI_WELCOMEPAGE_TEXT "$(PIU_LANG_WELCOME_TEXT)" !insertmacro MUI_PAGE_WELCOME ;--------------------------------------------------- ; Installer Page - License Page (uses English GPL) ;--------------------------------------------------- !define MUI_LICENSEPAGE_CHECKBOX !define MUI_PAGE_HEADER_SUBTEXT "$(PIU_LANG_LICENSE_SUBHDR)" !define MUI_LICENSEPAGE_TEXT_BOTTOM "$(PIU_LANG_LICENSE_BOTTOM)" !insertmacro MUI_PAGE_LICENSE "license.gpl" ;--------------------------------------------------- ; Installer Page - Select installation Directory ;--------------------------------------------------- ; Use a "pre" function to look for a registry entry for the 0.22.x version of POPFile ; (this build is intended for use with POPFile 0.22.x) !define MUI_PAGE_CUSTOMFUNCTION_PRE "CheckForExistingInstallation" ; Use a "leave" function to check that the user has selected an appropriate folder !define MUI_PAGE_CUSTOMFUNCTION_LEAVE "CheckInstallDir" ; This page is used to select the folder where the POPFile PROGRAM files can be found ; (we use this to generate the installation path for the POPFile IMAP module) !define MUI_PAGE_HEADER_TEXT "$(PIU_LANG_DESTNDIR_TITLE)" !define MUI_PAGE_HEADER_SUBTEXT "$(PIU_LANG_DESTNDIR_SUBTITLE)" !define MUI_DIRECTORYPAGE_TEXT_TOP "$(PIU_LANG_DESTNDIR_TEXT_TOP)" !define MUI_DIRECTORYPAGE_TEXT_DESTINATION "$(PIU_LANG_DESTNDIR_TEXT_DESTN)" !insertmacro MUI_PAGE_DIRECTORY ;--------------------------------------------------- ; Installer Page - Install files ;--------------------------------------------------- ; Override the standard "Installing..." page header !define MUI_PAGE_HEADER_TEXT "$(PIU_LANG_STD_HDR)" !define MUI_PAGE_HEADER_SUBTEXT "$(PIU_LANG_STD_SUBHDR)" ; Override the standard "Installation complete..." page header !define MUI_INSTFILESPAGE_FINISHHEADER_TEXT "$(PIU_LANG_END_HDR)" !define MUI_INSTFILESPAGE_FINISHHEADER_SUBTEXT "$(PIU_LANG_END_SUBHDR)" ; Override the standard "Installation Aborted..." page header !define MUI_INSTFILESPAGE_ABORTHEADER_TEXT "$(PIU_LANG_ABORT_HDR)" !define MUI_INSTFILESPAGE_ABORTHEADER_SUBTEXT "$(PIU_LANG_ABORT_SUBHDR)" !insertmacro MUI_PAGE_INSTFILES ;--------------------------------------------------- ; Installer Page - Finish ;--------------------------------------------------- !define MUI_FINISHPAGE_TITLE "$(PIU_LANG_FINISH_TITLE)" !define MUI_FINISHPAGE_TEXT "$(PIU_LANG_FINISH_TEXT)" !insertmacro MUI_PAGE_FINISH #-------------------------------------------------------------------------- # Language Support for the utility #-------------------------------------------------------------------------- !insertmacro MUI_LANGUAGE "English" ;-------------------------------------------------------------------------- ; Current build only supports English and uses local strings ; instead of language strings from languages\*-pfi.nsh files ;-------------------------------------------------------------------------- !macro PLS_TEXT NAME VALUE LangString ${NAME} ${LANG_ENGLISH} "${VALUE}" !macroend ;-------------------------------------------------------------------------- ; WELCOME page ;-------------------------------------------------------------------------- !insertmacro PLS_TEXT PIU_LANG_WELCOME_TITLE "Welcome to the $(^NameDA) Wizard" !insertmacro PLS_TEXT PIU_LANG_WELCOME_TEXT "This utility will download the POPFile IMAP module from CVS.${IO_NL}${IO_NL}Normally it will download the most up-to-date version, but you can request a particular version by starting the utility with the /revision=1.x option (where x is the revision of interest).${IO_NL}${IO_NL}For example: updateimap.exe /revision=1.5${IO_NL}${IO_NL}For the most recent revision, set x to a huge number like 999${IO_NL}${IO_NL}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~${IO_NL} WARNING:${IO_NL}${IO_NL} PLEASE SHUT DOWN POPFILE NOW !${IO_NL}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~${IO_NL}${IO_NL}$_CLICK" ;-------------------------------------------------------------------------- ; LICENSE page ;-------------------------------------------------------------------------- !insertmacro PLS_TEXT PIU_LANG_LICENSE_SUBHDR "Please review the license terms before using $(^NameDA)." !insertmacro PLS_TEXT PIU_LANG_LICENSE_BOTTOM "If you accept the terms of the agreement, click the check box below. You must accept the agreement to use $(^NameDA). $_CLICK" ;-------------------------------------------------------------------------- ; Source DIRECTORY page ;-------------------------------------------------------------------------- !insertmacro PLS_TEXT PIU_LANG_DESTNDIR_TITLE "Choose existing POPFile installation" !insertmacro PLS_TEXT PIU_LANG_DESTNDIR_SUBTITLE "This IMAP module should only be added to an existing POPFile 0.22.x installation" !insertmacro PLS_TEXT PIU_LANG_DESTNDIR_TEXT_TOP "The IMAP module must be installed using the same installation folder as POPFile 0.22.x.${MB_NL}${MB_NL}This utility will update the IMAP module in the version of POPFile which is installed in the following folder. To install in a different POPFile 0.22.x installation, click Browse and select another folder. $_CLICK" !insertmacro PLS_TEXT PIU_LANG_DESTNDIR_TEXT_DESTN "Existing POPFile 0.22.x installation folder" !insertmacro PLS_TEXT PIU_LANG_DESTNDIR_MB_WARN_1 "POPFile 0.22.x does NOT seem to be installed in${MB_NL}${MB_NL}$G_PLS_FIELD_1" !insertmacro PLS_TEXT PIU_LANG_DESTNDIR_MB_WARN_2 "Are you sure you want to use this folder ?" ;-------------------------------------------------------------------------- ; INSTFILES page ;-------------------------------------------------------------------------- ; Initial page header !insertmacro PLS_TEXT PIU_LANG_STD_HDR "Adding/Updating the IMAP module (for POPFile 0.22.x)" !insertmacro PLS_TEXT PIU_LANG_STD_SUBHDR "Please wait while the IMAP module is downloaded and installed..." ; Successful completion page header !insertmacro PLS_TEXT PIU_LANG_END_HDR "IMAP installation completed" !insertmacro PLS_TEXT PIU_LANG_END_SUBHDR "IMAP module v$G_REVISION has been installed successfully" ; Unsuccessful completion page header !insertmacro PLS_TEXT PIU_LANG_ABORT_HDR "IMAP installation failed" !insertmacro PLS_TEXT PIU_LANG_ABORT_SUBHDR "The attempt to add or update the IMAP module has failed" ; Progress reports !insertmacro PLS_TEXT PIU_LANG_PROG_INITIALISE "Initializing..." !insertmacro PLS_TEXT PIU_LANG_PROG_GETLIST "Downloading list of available CVS revisions..." !insertmacro PLS_TEXT PIU_LANG_PROG_CHECKDOWNLOAD "Analyzing the result of the download operation..." !insertmacro PLS_TEXT PIU_LANG_PROG_FINDREVISION "Searching the list to find the most recent IMAP revision..." !insertmacro PLS_TEXT PIU_LANG_PROG_USERCANCELLED "IMAP update cancelled by the user" !insertmacro PLS_TEXT PIU_LANG_PROG_GETIMAP "Downloading the IMAP.pm module..." !insertmacro PLS_TEXT PIU_LANG_PROG_BACKUPIMAP "Making backup copy of previous IMAP.pm file..." !insertmacro PLS_TEXT PIU_LANG_PROG_INSTALLIMAP "Updating the IMAP.pm file..." !insertmacro PLS_TEXT PIU_LANG_PROG_SUCCESS "POPFile 0.22.x IMAP support updated to v$G_REVISION" !insertmacro PLS_TEXT PIU_LANG_PROG_SAVELOG "Saving install log file..." !insertmacro PLS_TEXT PIU_LANG_TAKE_A_FEW_SECONDS "(this may take a few seconds)" ;-------------------------------------------------------------------------- ; FINISH page ;-------------------------------------------------------------------------- !insertmacro PLS_TEXT PIU_LANG_FINISH_TITLE "Completing the $(^NameDA) Wizard" !insertmacro PLS_TEXT PIU_LANG_FINISH_TEXT "POPFile IMAP module v$G_REVISION has been installed.${IO_NL}${IO_NL}You can now start POPFile and use the POPFile User Interface to activate and configure the IMAP module.${IO_NL}${IO_NL}Click Finish to close this wizard." ;-------------------------------------------------------------------------- ; Miscellaneous strings ;-------------------------------------------------------------------------- !insertmacro PLS_TEXT PIU_LANG_MUTEX "Another copy of the IMAP Updater wizard is running!" !insertmacro PLS_TEXT PIU_LANG_COMPAT_NOTFOUND "Warning: Cannot find compatible version of POPFile !" !insertmacro PLS_TEXT PIU_LANG_MB_BADOPTION_1 "Invalid command-line option supplied ($G_PLS_FIELD_1)" !insertmacro PLS_TEXT PIU_LANG_MB_BADOPTION_2 "Usage examples:" !insertmacro PLS_TEXT PIU_LANG_MB_BADOPTION_3 "(to get the most up-to-date revision using CVS data)" !insertmacro PLS_TEXT PIU_LANG_MB_BADOPTION_4 "(where x is the required revision number, starting at 1)" !insertmacro PLS_TEXT PIU_LANG_MB_BADOPTION_5 "To get the most recent revision, set x to a huge number like 999" !insertmacro PLS_TEXT PIU_LANG_MB_BADOPTION_ALL "$(PIU_LANG_MB_BADOPTION_1)${MB_NL}${MB_NL}$(PIU_LANG_MB_BADOPTION_2)${MB_NL}${MB_NL}updateimap.exe${MB_NL}$(PIU_LANG_MB_BADOPTION_3)${MB_NL}${MB_NL}or${MB_NL}${MB_NL}update.exe /revision=1.x${MB_NL}$(PIU_LANG_MB_BADOPTION_4)${MB_NL}${MB_NL}$(PIU_LANG_MB_BADOPTION_5)" !insertmacro PLS_TEXT PIU_LANG_ANALYSISFAILED_1 "Sorry, unable to determine the most recent revision!" !insertmacro PLS_TEXT PIU_LANG_ANALYSISFAILED_2 "You can specify a particular revision using the command" !insertmacro PLS_TEXT PIU_LANG_ANALYSISFAILED_3 "updateimap.exe /revision=1.x" !insertmacro PLS_TEXT PIU_LANG_MB_ANALYSISFAILED "$(PIU_LANG_ANALYSISFAILED_1)${MB_NL}${MB_NL}$(PIU_LANG_ANALYSISFAILED_2)${MB_NL}${MB_NL}$(PIU_LANG_ANALYSISFAILED_3)" !insertmacro PLS_TEXT PIU_LANG_MB_GETPERMISSION "Do you want to download and install IMAP.pm v$G_REVISION ?$G_REVDATE" !insertmacro PLS_TEXT PIU_LANG_MB_HISTORYFAIL_1 "Download of the list of available CVS revisions failed" !insertmacro PLS_TEXT PIU_LANG_MB_HISTORYFAIL_2 "(error: $G_PLS_FIELD_1)" !insertmacro PLS_TEXT PIU_LANG_MB_IMAPFAIL_1 "Download of IMAP module failed" !insertmacro PLS_TEXT PIU_LANG_MB_IMAPFAIL_2 "(error: $G_PLS_FIELD_1)" !insertmacro PLS_TEXT PIU_LANG_MB_BADIMAPFILE_1 "The downloaded file is not a POPFile module !" !insertmacro PLS_TEXT PIU_LANG_MB_BADIMAPFILE_2 "First line starts with '$G_PLS_FIELD_1'" !insertmacro PLS_TEXT PIU_LANG_MB_BADIMAPFILE_3 "Expected to find only '# POPFILE LOADABLE MODULE'" !insertmacro PLS_TEXT PIU_LANG_MB_BADIMAPFILE_4 "Downloaded file ignored - no changes made to POPFile" ; String required by the 'PFI_DumpLog' library function (hence the 'PFI_LANG_' prefix) !insertmacro PLS_TEXT PFI_LANG_MB_SAVELOG_ERROR "Error: problem detected when saving the log file" #-------------------------------------------------------------------------- # General settings #-------------------------------------------------------------------------- ; Specify NSIS output filename OutFile "${C_OUTFILE}" ; Ensure CRC checking cannot be turned off using the /NCRC command-line switch CRCcheck Force #-------------------------------------------------------------------------- # Default Destination Folder #-------------------------------------------------------------------------- InstallDir "$PROGRAMFILES\${C_PFI_PRODUCT}\" #-------------------------------------------------------------------------- # Reserve the files required by the wizard (to improve performance) #-------------------------------------------------------------------------- ; Things that need to be extracted on startup (keep these lines before any File command!) ; Only useful when solid compression is used (by default, solid compression is enabled ; for BZIP2 and LZMA compression) !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS #-------------------------------------------------------------------------- # Installer Function: PFIGUIInit # (custom .onGUIInit function) # # Used to complete the initialization of the wizard. # This code was moved from '.onInit' in order to permit the use of language-specific strings # (the selected language is not available inside the '.onInit' function) #-------------------------------------------------------------------------- Function PFIGUIInit !define L_RESERVED $1 ; used in the system.dll call !define L_TEMP $R9 ; used when checking the command-line parameter (if any) Push ${L_RESERVED} Push ${L_TEMP} ; Ensure only one copy of this wizard (or any other POPFile installer) is running System::Call 'kernel32::CreateMutexA(i 0, i 0, t "OnlyOnePFI_mutex") i .r1 ?e' Pop ${L_RESERVED} StrCmp ${L_RESERVED} 0 mutex_ok MessageBox MB_OK|MB_ICONEXCLAMATION "$(PIU_LANG_MUTEX)" Abort bad_option: MessageBox MB_OK|MB_ICONSTOP "$(PIU_LANG_MB_BADOPTION_ALL)" Abort mutex_ok: Call PFI_GetParameters Pop $G_REVISION StrCmp $G_REVISION "" exit StrCpy $G_PLS_FIELD_1 $G_REVISION StrCpy ${L_TEMP} $G_REVISION 12 StrCmp ${L_TEMP} "/revision=1." 0 bad_option StrCpy $G_REVISION $G_REVISION "" 12 Push $G_REVISION Call PFI_StrCheckDecimal Pop $G_REVISION StrCmp $G_REVISION "" bad_option IntCmp $G_REVISION 0 bad_option bad_option StrCpy $G_REVISION "1.$G_REVISION" exit: Pop ${L_TEMP} Pop ${L_RESERVED} !undef L_RESERVED !undef L_TEMP FunctionEnd #-------------------------------------------------------------------------- # Installer Section: POPFile IMAP component # # The NSISdl plugin cannot be used for these downloads because the server # does not specify the content length so this utility uses cURL instead. # # To avoid opening console windows, the cURL output is sent to the log window # (so no progress reports are displayed during the file download operation # but we can display some statistics once the file has been downloaded). #-------------------------------------------------------------------------- Section "IMAP" SecIMAP !define L_HANDLE $R9 ; file handle used to access the CVS log history list !define L_RESULT $R8 !define L_TEMP $R7 ; Local copy of the CVS log history file (which we use to find the most recent revision) !define C_CVS_HISTORY_FILE "$PLUGINSDIR\cvslog.htm" ; String used to define cURL report format !define C_CURL_REPORT "Downloaded %{size_download} bytes in %{time_total} seconds${IO_NL}Average speed: %{speed_download} bytes per second${IO_NL}" Push ${L_HANDLE} Push ${L_RESULT} Push ${L_TEMP} SetDetailsPrint textonly DetailPrint "$(PIU_LANG_PROG_INITIALISE)" SetDetailsPrint none ; We cannot use the nsisdl plugin here because the server does not specify the content length ; (see this script's header comment for information on where to obtain 'curl.exe') SetOutPath "$PLUGINSDIR" File "curl.exe" File "COPYING" SetDetailsPrint listonly StrCpy $G_REVDATE "" DetailPrint "----------------------------------------------" DetailPrint "POPFile IMAP Updater wizard v${C_PFI_VERSION}" DetailPrint "----------------------------------------------" DetailPrint "" IfFileExists "$G_ROOTDIR\*.*" check_param CreateDirectory $G_ROOTDIR check_param: StrCmp $G_REVISION "" look_for_suitable_version DetailPrint "User has requested IMAP.pm v$G_REVISION" Goto get_imap_module look_for_suitable_version: IfFileExists "$G_ROOTDIR\POPFile\Database.pm" look_for_most_recent_version StrCpy $G_REVISION "1.9" DetailPrint "Pre-0.23.0 installation found. Get most recent 0.22-compatible file (IMAP.pm v$G_REVISION)" Goto get_imap_module look_for_most_recent_version: SetDetailsPrint both DetailPrint "$(PIU_LANG_PROG_GETLIST) $(PIU_LANG_TAKE_A_FEW_SECONDS)" SetDetailsPrint listonly DetailPrint "" nsExec::ExecToLog '"curl.exe" -s -S -w "${C_CURL_REPORT}" -o "${C_CVS_HISTORY_FILE}" "${C_CVS_HISTORY_URL}"' Pop ${L_RESULT} DetailPrint "" SetDetailsPrint textonly DetailPrint "$(PIU_LANG_PROG_CHECKDOWNLOAD)" SetDetailsPrint listonly StrCmp ${L_RESULT} "0" analyse_history StrCpy $G_PLS_FIELD_1 ${L_RESULT} SetDetailsPrint both DetailPrint "$(PIU_LANG_MB_HISTORYFAIL_1)" SetDetailsPrint listonly DetailPrint "$(PIU_LANG_MB_HISTORYFAIL_2)" MessageBox MB_OK|MB_ICONEXCLAMATION "$(PIU_LANG_MB_HISTORYFAIL_1)${MB_NL}$(PIU_LANG_MB_HISTORYFAIL_2)" Goto error_exit analyse_history: SetDetailsPrint both DetailPrint "$(PIU_LANG_PROG_FINDREVISION)" SetDetailsPrint listonly Call GetMostRecentVersionInfo Pop $G_REVDATE Pop $G_REVISION StrCmp $G_REVISION "" analysis_failed DetailPrint "Search result: IMAP.pm v$G_REVISION ($G_REVDATE)" StrCpy $G_REVDATE "${MB_NL}${MB_NL}(CVS timestamp $G_REVDATE)" Goto get_imap_module analysis_failed: DetailPrint "" DetailPrint "$(PIU_LANG_ANALYSISFAILED_1)" DetailPrint "" DetailPrint "$(PIU_LANG_ANALYSISFAILED_2)" DetailPrint "$(PIU_LANG_ANALYSISFAILED_3)" DetailPrint "$(PIU_LANG_MB_BADOPTION_4)" DetailPrint "" DetailPrint "$(PIU_LANG_MB_BADOPTION_5)" MessageBox MB_OK|MB_ICONSTOP "$(PIU_LANG_MB_ANALYSISFAILED)${MB_NL}${MB_NL}$(PIU_LANG_MB_BADOPTION_4)${MB_NL}${MB_NL}$(PIU_LANG_MB_BADOPTION_5)" Goto error_exit get_imap_module: DetailPrint "" SetDetailsPrint both DetailPrint "Ready to download IMAP.pm v$G_REVISION from CVS" SetDetailsPrint listonly MessageBox MB_YESNO|MB_ICONQUESTION "$(PIU_LANG_MB_GETPERMISSION)" IDYES download_imap DetailPrint "" SetDetailsPrint both DetailPrint "$(PIU_LANG_PROG_USERCANCELLED)" SetDetailsPrint listonly Goto error_exit download_imap: DetailPrint "" SetDetailsPrint both DetailPrint "$(PIU_LANG_PROG_GETIMAP) $(PIU_LANG_TAKE_A_FEW_SECONDS)" SetDetailsPrint listonly DetailPrint "" nsExec::ExecToLog '"curl.exe" -s -S -w "${C_CURL_REPORT}" -o "$PLUGINSDIR\IMAP.pm" "${C_CVS_IMAP_DL_URL}"' Pop ${L_RESULT} DetailPrint "" SetDetailsPrint textonly DetailPrint "$(PIU_LANG_PROG_CHECKDOWNLOAD)" SetDetailsPrint listonly StrCmp ${L_RESULT} "0" file_received StrCpy $G_PLS_FIELD_1 ${L_RESULT} SetDetailsPrint both DetailPrint "$(PIU_LANG_MB_IMAPFAIL_1)" SetDetailsPrint listonly DetailPrint "$(PIU_LANG_MB_IMAPFAIL_2)" MessageBox MB_OK|MB_ICONEXCLAMATION "$(PIU_LANG_MB_IMAPFAIL_1)${MB_NL}$(PIU_LANG_MB_IMAPFAIL_2)" Goto error_exit file_received: FileOpen ${L_HANDLE} "$PLUGINSDIR\IMAP.pm" r FileRead ${L_HANDLE} ${L_RESULT} FileClose ${L_HANDLE} Push ${L_RESULT} Call PFI_TrimNewlines Pop $G_PLS_FIELD_1 StrCpy $G_PLS_FIELD_1 $G_PLS_FIELD_1 25 StrCmp $G_PLS_FIELD_1 "# POPFILE LOADABLE MODULE" success DetailPrint "$(PIU_LANG_MB_BADIMAPFILE_1)" DetailPrint "" DetailPrint "$(PIU_LANG_MB_BADIMAPFILE_2)" DetailPrint "$(PIU_LANG_MB_BADIMAPFILE_3)" DetailPrint "" DetailPrint "$(PIU_LANG_MB_BADIMAPFILE_4)" MessageBox MB_OK|MB_ICONEXCLAMATION "$(PIU_LANG_MB_BADIMAPFILE_1)\ ${MB_NL}${MB_NL}${MB_NL}\ $(PIU_LANG_MB_BADIMAPFILE_2)\ ${MB_NL}${MB_NL}\ $(PIU_LANG_MB_BADIMAPFILE_3)\ ${MB_NL}${MB_NL}${MB_NL}\ $(PIU_LANG_MB_BADIMAPFILE_4)" error_exit: SetDetailsPrint listonly DetailPrint "" Call PFI_GetDateTimeStamp Pop $G_PLS_FIELD_1 DetailPrint "----------------------------------------------" DetailPrint "IMAP Updater failed ($G_PLS_FIELD_1)" DetailPrint "----------------------------------------------" Abort success: IfFileExists "$G_ROOTDIR\Services\*.*" backup_current_file CreateDirectory "$G_ROOTDIR\Services" Goto copy_file backup_current_file: DetailPrint "$(PIU_LANG_PROG_BACKUPIMAP)" DetailPrint "" !insertmacro PFI_BACKUP_123_DP "$G_ROOTDIR\Services" "IMAP.pm" copy_file: DetailPrint "" DetailPrint "$(PIU_LANG_PROG_INSTALLIMAP)" Rename "$PLUGINSDIR\IMAP.pm" "$G_ROOTDIR\Services\IMAP.pm" DetailPrint "" SetDetailsPrint both DetailPrint "$(PIU_LANG_PROG_SUCCESS)" SetDetailsPrint listonly DetailPrint "" Call PFI_GetDateTimeStamp Pop $G_PLS_FIELD_1 DetailPrint "----------------------------------------------" DetailPrint "IMAP Updater completed $G_PLS_FIELD_1" DetailPrint "----------------------------------------------" DetailPrint "" SetDetailsPrint textonly DetailPrint "$(PIU_LANG_PROG_SAVELOG)" ; Save a log showing what was installed !insertmacro PFI_BACKUP_123 "$G_ROOTDIR" "updateimap.log" Push "$G_ROOTDIR\updateimap.log" Call PFI_DumpLog SetDetailsPrint both DetailPrint "Log report saved in '$G_ROOTDIR\updateimap.log'" SetDetailsPrint none Pop ${L_TEMP} Pop ${L_RESULT} Pop ${L_HANDLE} !undef L_HANDLE !undef L_RESULT !undef L_TEMP SectionEnd #-------------------------------------------------------------------------- # Installer Function: CheckForExistingInstallation # (the "pre" function for the DIRECTORY selection page) # # Set the initial value used by the DIRECTORY page to the location used by the most recent # installation of POPFile v0.22.x #-------------------------------------------------------------------------- Function CheckForExistingInstallation ReadRegStr $INSTDIR HKCU "Software\POPFile Project\${C_PFI_PRODUCT}\MRI" "InstallPath" StrCmp $INSTDIR "" try_HKLM IfFileExists "$INSTDIR\*.*" exit try_HKLM: ReadRegStr $INSTDIR HKLM "Software\POPFile Project\${C_PFI_PRODUCT}\MRI" "InstallPath" StrCmp $INSTDIR "" use_default IfFileExists "$INSTDIR\*.*" exit use_default: MessageBox MB_OK|MB_ICONEXCLAMATION "$(PIU_LANG_COMPAT_NOTFOUND)" StrCpy $INSTDIR "$PROGRAMFILES\${C_PFI_PRODUCT}" exit: FunctionEnd #-------------------------------------------------------------------------- # Installer Function: CheckInstallDir # (the "leave" function for the DIRECTORY selection page) # # This function is used to check if a previous POPFile installation exists in the directory # chosen for this installation's POPFile program files (popfile.pl, etc) #-------------------------------------------------------------------------- Function CheckInstallDir ; Initialise the global user variable used for the main POPFIle program folder location StrCpy $G_ROOTDIR "$INSTDIR" ; Warn the user if the selected directory does not appear to contain POPFile 0.22.x files ; and allow user to select a different directory if they wish IfFileExists "$G_ROOTDIR\popfile-service.exe" continue IfFileExists "$G_ROOTDIR\runpopfile.exe" continue IfFileExists "$G_ROOTDIR\UI\HTML.pm" continue MessageBox MB_YESNO|MB_ICONQUESTION "$(PIU_LANG_DESTNDIR_MB_WARN_1)\ ${MB_NL}${MB_NL}\ $INSTDIR\ ${MB_NL}${MB_NL}${MB_NL}\ $(PIU_LANG_DESTNDIR_MB_WARN_2)" IDYES continue ; Return to the DIRECTORY selection page Abort continue: ; Move to the INSTFILES page (to install the files) FunctionEnd #-------------------------------------------------------------------------- # Installer Function: GetMostRecentVersionInfo # # Extracts information from the downloaded CVS history log # # Inputs: # none # Outputs: # (top of stack) - CVS timestamp for it (e.g. "Mon Aug 23 12:18:58 2004 UTC") # (if unable to find the data, an empty string is returned) # (top of stack - 1) - first revision found, assumed to be the most recent (e.g. "1.6") # (if unable to find the data, an empty string is returned) # # Usage: # Call GetMostRecentVersionInfo # Pop $R0 ; get the timestamp (e.g. "Mon Aug 23 12:18:58 2004 UTC") # Pop $R1 ; ge the CVS revision (e.g. "1.6") # # (if no valid data found, $R1 = "" and $R0 = "") #-------------------------------------------------------------------------- Function GetMostRecentVersionInfo !define L_HANDLE $R9 ; file handle for the log history file !define L_LINE $R8 ; a line from the log history file !define L_PARAM $R7 !define L_RESULT_DATE $R6 ; either the most recent CVS revision's timestamp or "" !define L_RESULT_REV $R5 ; either the most recent CVS revision number (e.g. "1.6") or "" !define L_TEMP $R4 Push ${L_RESULT_DATE} Push ${L_RESULT_REV} Push ${L_HANDLE} Push ${L_LINE} Push ${L_PARAM} Push ${L_TEMP} StrCpy ${L_RESULT_REV} "" StrCpy ${L_RESULT_DATE} "" FileOpen ${L_HANDLE} "${C_CVS_HISTORY_FILE}" r loop: FileRead ${L_HANDLE} ${L_LINE} StrCmp ${L_LINE} "" done StrCpy ${L_PARAM} ${L_LINE} 12 StrCmp ${L_PARAM} "Revision <b>" 0 loop StrCpy ${L_TEMP} 12 revision_loop: StrCpy ${L_PARAM} ${L_LINE} 1 ${L_TEMP} StrCmp ${L_PARAM} "<" date_loop StrCpy ${L_RESULT_REV} "${L_RESULT_REV}${L_PARAM}" IntOp ${L_TEMP} ${L_TEMP} + 1 Goto revision_loop date_loop: FileRead ${L_HANDLE} ${L_LINE} StrCmp ${L_LINE} "" done StrCpy ${L_PARAM} ${L_LINE} 3 StrCmp ${L_PARAM} "<i>" 0 date_loop StrCpy ${L_RESULT_DATE} ${L_LINE} 28 3 done: FileClose ${L_HANDLE} Pop ${L_TEMP} Pop ${L_PARAM} Pop ${L_LINE} Pop ${L_HANDLE} Exch ${L_RESULT_REV} Exch Exch ${L_RESULT_DATE} !undef L_HANDLE !undef L_LINE !undef L_PARAM !undef L_RESULT_DATE !undef L_RESULT_REV !undef L_TEMP FunctionEnd #-------------------------------------------------------------------------- # End of 'updatemap.nsi' #-------------------------------------------------------------------------- |
From: Joseph C. <tex...@us...> - 2005-08-20 08:17:27
|
Update of /cvsroot/popfile/engine/languages In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17008/languages Modified Files: English.msg Log Message: Change a couple of the new tooltip string names to better match existing string names. Index: English.msg =================================================================== RCS file: /cvsroot/popfile/engine/languages/English.msg,v retrieving revision 1.94 retrieving revision 1.95 diff -C2 -d -r1.94 -r1.95 *** English.msg 25 May 2005 14:23:48 -0000 1.94 --- English.msg 20 Aug 2005 08:17:17 -0000 1.95 *************** *** 478,482 **** tip_Footer_HomePage Visit the POPFile home page tip_Footer_Manual The original POPFile documentation (slightly outdated) ! tip_Footer_Documentation POPFile's documentation wiki tip_Footer_FAQ POPFile Frequently Asked Questions tip_Footer_Version POPFile version number --- 478,482 ---- tip_Footer_HomePage Visit the POPFile home page tip_Footer_Manual The original POPFile documentation (slightly outdated) ! tip_Footer_Wiki POPFile's documentation wiki tip_Footer_FAQ POPFile Frequently Asked Questions tip_Footer_Version POPFile version number *************** *** 484,486 **** tip_Footer_RFE Have an idea to improve POPFile? Let us know. tip_Footer_MailingList Want to hear about changes to POPFile? Sign up. ! tip_Footer_Donate Like POPFile? Contribute to making it more successful. --- 484,486 ---- tip_Footer_RFE Have an idea to improve POPFile? Let us know. tip_Footer_MailingList Want to hear about changes to POPFile? Sign up. ! tip_Footer_FeedMe Like POPFile? Contribute to making it more successful. |
From: Joseph C. <tex...@us...> - 2005-08-20 08:13:28
|
Update of /cvsroot/popfile/engine/skins/default In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16154/skins/default Modified Files: common-bottom.thtml Log Message: Add tooltips for footer links and information. Index: common-bottom.thtml =================================================================== RCS file: /cvsroot/popfile/engine/skins/default/common-bottom.thtml,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** common-bottom.thtml 22 May 2005 10:45:43 -0000 1.13 --- common-bottom.thtml 20 Aug 2005 08:13:20 -0000 1.14 *************** *** 14,26 **** <tr> <td class="footerBody"> ! <a class="bottomLink" href="http://popfile.sourceforge.net/"><TMPL_VAR NAME="Localize_Footer_HomePage"></a> <br /> ! <a class="bottomLink" href="http://popfile.sourceforge.net/manual/<TMPL_VAR NAME="Localize_ManualLanguage">/manual.html"> <TMPL_VAR NAME="Localize_Footer_Manual"></a> <br /> ! <a class="bottomLink" href="http://popfile.sourceforge.net/cgi-bin/wiki.pl"> <TMPL_VAR NAME="Localize_Footer_Wiki"></a> <br /> ! <a class="bottomLink" href="http://popfile.sourceforge.net/cgi-bin/wiki.pl?<TMPL_VAR NAME="Localize_FAQLink">"><TMPL_VAR NAME="Localize_FAQ"></a> <br /> </td> --- 14,28 ---- <tr> <td class="footerBody"> ! <a class="bottomLink" href="http://popfile.sourceforge.net/" title="<TMPL_VAR NAME="Localize_tip_Footer_HomePage">"> ! <TMPL_VAR NAME="Localize_Footer_HomePage"></a> <br /> ! <a class="bottomLink" href="http://popfile.sourceforge.net/manual/<TMPL_VAR NAME="Localize_ManualLanguage">/manual.html" title="<TMPL_VAR NAME="Localize_tip_Footer_Manual">"> <TMPL_VAR NAME="Localize_Footer_Manual"></a> <br /> ! <a class="bottomLink" href="http://popfile.sourceforge.net/cgi-bin/wiki.pl" title="<TMPL_VAR NAME="Localize_tip_Footer_Wiki">"> <TMPL_VAR NAME="Localize_Footer_Wiki"></a> <br /> ! <a class="bottomLink" href="http://popfile.sourceforge.net/cgi-bin/wiki.pl?<TMPL_VAR NAME="Localize_FAQLink">" title="<TMPL_VAR NAME="Localize_tip_Footer_FAQ">"> ! <TMPL_VAR NAME="Localize_FAQ"></a> <br /> </td> *************** *** 29,42 **** <img src="<TMPL_VAR NAME="Skin_Root">otto.png" border="0" alt="" /></a> <br /> ! <TMPL_VAR NAME="Common_Bottom_Version"> <br /> ! (<TMPL_VAR NAME="Common_Bottom_Date"> - <TMPL_VAR NAME="Common_Bottom_LastLogin">) </td> <td class="footerBody"> ! <a class="bottomLink" href="http://sourceforge.net/tracker/index.php?group_id=63137&atid=502959"><TMPL_VAR NAME="Localize_Footer_RequestFeature"></a> <br /> ! <a class="bottomLink" href="http://lists.sourceforge.net/lists/listinfo/popfile-announce"><TMPL_VAR NAME="Localize_Footer_MailingList"></a> <br /> ! <a class="bottomLink" href="http://sourceforge.net/forum/forum.php?forum_id=213876"><TMPL_VAR NAME="Localize_Footer_FeedMe"></a> </td> </tr> --- 31,47 ---- <img src="<TMPL_VAR NAME="Skin_Root">otto.png" border="0" alt="" /></a> <br /> ! <span title="<TMPL_VAR NAME="Localize_tip_Footer_Version">"><TMPL_VAR NAME="Common_Bottom_Version"></span> <br /> ! <span title="<TMPL_VAR NAME="Localize_tip_Footer_Login">">(<TMPL_VAR NAME="Common_Bottom_Date"> - <TMPL_VAR NAME="Common_Bottom_LastLogin">)</span> </td> <td class="footerBody"> ! <a class="bottomLink" href="http://sourceforge.net/tracker/index.php?group_id=63137&atid=502959" title="<TMPL_VAR NAME="Localize_tip_Footer_RFE">"> ! <TMPL_VAR NAME="Localize_Footer_RequestFeature"></a> <br /> ! <a class="bottomLink" href="http://lists.sourceforge.net/lists/listinfo/popfile-announce" title="<TMPL_VAR NAME="Localize_tip_Footer_MailingList">"> ! <TMPL_VAR NAME="Localize_Footer_MailingList"></a> <br /> ! <a class="bottomLink" href="http://sourceforge.net/forum/forum.php?forum_id=213876" title="<TMPL_VAR NAME="Localize_tip_Footer_FeedMe">"> ! <TMPL_VAR NAME="Localize_Footer_FeedMe"></a> </td> </tr> |