word edit: unadvertised search option ?q
[sheet.git] / writer.plp
index 48ffd6748245eb97cef7245ae14695444eb9b35d..66e8f9f2590d13a1dd356e35bf57364c0e25dbb5 100644 (file)
@@ -13,16 +13,9 @@ EOT
 use List::Util qw( pairs pairkeys );
 
 my $db = eval {
-       my @dbinfo = (
-               'DBI:Pg:dbname=sheet;host=localhost', 'sheetadmin', 'fairuse',
-       ) or die "database not configured\n";
-       require DBIx::Simple;
-       DBIx::Simple->new(@dbinfo[0..2], {
-               RaiseError => 1,
-               pg_enable_utf8 => 1,
-       });
+       require Shiar_Sheet::DB;
+       Shiar_Sheet::DB->connect;
 } or Abort('Database error', 501, $@);
-$db->abstract->{array_datatypes}++;
 
 my $user = eval {
        if (defined $post{username}) {
@@ -105,8 +98,20 @@ my %wordcol = (
        source  => {-label => 'Image'},
        thumb   => {-label => 'Convert options', -multiple => 1},
 );
-my ($find) = map {{id => $_}} $fields{id} || $Request || ();
 
+if (my $search = $fields{q}) {
+       my %filter = (form => {ilike => '%'.$search.'%'});
+       my $results = $db->select(word => '*', \%filter);
+       say '<h1>Search</h1><ul>';
+       printf("<li><small>%s</small> %s %s</li>\n",
+               $_->{id}, showlink($_->{form}, "/writer/$_->{id}"),
+               sprintf('<img src="/%s" style="height:3ex; width:auto" />', Shiar_Sheet::FormRow::imagepath($_ => 'thumb')) x defined $_->{thumb}
+       ) for $results->hashes;
+       say "</ul>\n";
+       exit;
+}
+
+my ($find) = map {{id => $_}} $fields{id} || $Request || ();
 my $row;
 if ($find) {
        $row = $db->select(word => '*', $find)->hash
@@ -300,7 +305,7 @@ package Shiar_Sheet::FormRow {
        sub imagepath {
                my ($row, $col) = @_;
                return "data/word/org/$row->{id}.jpg"   if $col eq 'source';
-               return "data/word/en/$row->{form}.jpg"  if $col eq 'thumb';
+               return "data/word/en/$row->{id}.jpg"  if $col eq 'thumb';
                return;
        }
 }