$VERSION = 1.00;
@ISA = qw(Exporter);
@EXPORT = qw(&db_setocean &db_writer &db_connect $dbh
- &db_filename &db_doall &db_onconflict &db_setdatadir);
+ &db_filename &db_doall &db_onconflict
+ &db_setdatadir $db_datadir);
%EXPORT_TAGS = ( );
@EXPORT_OK = qw();
our $dbfn;
our $dbh;
-our $datadir= '.';
+our $db_datadir= '.';
sub db_setdatadir ($) {
- $datadir= $_[0];
+ $db_datadir= $_[0];
}
sub db_setocean ($) {
my ($oceanname) = @_;
- $dbfn= "$datadir/OCEAN-$oceanname.db";
+ $dbfn= "$db_datadir/OCEAN-$oceanname.db";
}
sub db_filename () {
return $dbfn;
}
sub db_connect () {
- return if $dbh;
$dbh= DBI->connect("dbi:SQLite:$dbfn",'','',
{ AutoCommit=>0,
RaiseError=>1, ShowErrorStatement=>1,
$VERSION = 1.00;
@ISA = qw(Exporter);
@EXPORT = qw($dbh &db_setocean &db_connect &db_doall
- $self_url $base_url);
+ &ocean_list);
%EXPORT_TAGS = ( );
@EXPORT_OK = qw();
}
}
-$self_url= 'http://'.$ENV{'SERVER_NAME'}.$ENV{'SCRIPT_NAME'}.$ENV{'PATH_INFO'};
-$base_url= $self_url; $base_url =~ s,/[^/]+,,;
+my @ocean_list;
+
+sub ocean_list () {
+ if (!@ocean_list) {
+ my $fn= "$db_datadir/master-info.txt";
+ my $f= new IO::File $fn or die $!;
+ my @r;
+ while (<$f>) {
+ next unless m/^ocean\s+(\S.*\S)\s*$/;
+ push @r, $1;
+ }
+ $f->error and die $!;
+ close $fn;
+ @ocean_list= @r;
+ }
+ return @ocean_list;
+}
1;
@vars= ({ Name => 'Ocean',
Before => 'Ocean: ',
CmpCanon => sub { ucfirst lc $_[0] },
- Values => [ qw(Midnight Ice) ]
+ Values => [ ocean_list() ]
}, { Name => 'Dropdowns',
Before => 'Interface: ',
CmpCanon => sub { !!$_[0] },
$qf{$n}= $value;
}
}
- my $uri= URI->new($self_url);
+ my $uri= URI->new($m->current_comp()->name());
$uri->query_form(%qf);
print '<a href="', $uri->path_query(), '">';
$after= '</a>';
print '<p>';
}
+die "unknown ocean $a{Ocean} ?"
+ unless grep { $_ eq $a{Ocean} } ocean_list();
+
db_setocean($a{Ocean});
db_connect();
<form action="/ucgi/~clareb/mason/something" method="get">
% if (!$a{Dropdowns}) {
-Enter route (islands, or archipelagoes, separated by commas;
+Enter route (islands, or archipelagoes, separated by |s or commas;
abbreviations are OK):<br/>
<script type="text/javascript">
sprintf('<option value="%s">%s</option>',
map { encode_entities($_) } @$row);
}
+
+$sth=$dbh->prepare("SELECT DISTINCT archipelago FROM islands
+ ORDER BY archipelago;");
+$sth->execute();
+my $archlistdata='';
+
+while ($row=$sth->fetchrow_arrayref) {
+ $archlistdata.=
+ sprintf('<option value="%s">%s</option>',
+ map { encode_entities($_) } (@$row, @$row));
+}
</%perl>
+<script type="text/javascript">
+function setarch(dd) {
+ alert('setarch '+dd);
+}
+function setisland(dd) {
+ alert('setisland '+dd);
+}
+</script>
+
<table>
+
<tr>
% for my $dd (0..$a{Dropdowns}-1) {
-<td><select name="islandid<% $dd %>">
+<td><select name="archipelago<% $dd %>" onchange="setarch(<% $dd %>)">
+<option name="none">Whole ocean</option>
+<% $archlistdata %></select></td>
+% }
+</tr>
+
+<tr>
+% for my $dd (0..$a{Dropdowns}-1) {
+<td><select name="islandid<% $dd %>" onchange="setisland(<% $dd %>)">
<option name="none">Select island...</option>
<% $islandlistdata %></select></td>
% }
</tr>
+
</table>
% }