",
#"Elektoj: ".join(',',keys %acxetoj),
$q->mytable();
if(defined $kodsxangxo) { # cxi programo ankaux prizorgas la kodsxangxojn.
eeb::Print "
",
l('lingvoelekto')," ",
$q->popup_menu(-name=>'lingvo', -values=>[sort keys %Lingvoj::lingvoj])," ",
"Elektu vian kodigon (ekzemple elektu askio-n se vi spertas problemojn pri supersignojn): ",
$q->popup_menu(-name=>'kodo', -values=>[sort keys %eeb::kodoj])," ",
"Surogatoj (ne necesas por kodigoj unikodo, latino 3 kaj html): ",
$q->popup_menu(-name=>'surogato', -values=>[keys %eeb::surogatoj])," ",
$q->submit(-name=>'Ek!');
}
else
{
eeb::Print " ", # KOMENCO DE GRANDA TABELO
$q->hidden('kodo'), # cxu ili aperu cxi tie???
$q->hidden('surogato'),
$q->hidden('lingvo');
}
if($sql =~ /Formulare/i && ! defined $kodsxangxo)
{
eeb::Print
"Plenigu",
# (per regulaj esprimoj )",
" la kampojn pri kiuj vi interesiĝas. Esperantajn supersignojn vi povas tajpi unikode, ikse aŭ tute ne. Neesperantajn supersignojn forlasu. Malplenaj kampoj (kune kun iliaj kaj/aŭ-kampoj) estas ignorotaj. ",
"getkodo."&nombro=200&fonto=Librokatalogo%20de%20UEA&fonto=Listo%20de%20Don%20Harlow&fonto=Listo%20de%20Verloren%20van%20Themaat&fonto=Nederlanda%20Bibliografio&prezento=tabela\">",
"Jen ekzemplo kiu rezultas ĉiujn verkojn faritajn aŭ tradukitajn de Zamenhof.",
"", # TABELO EN MALDEKSTRA KAMPO
$q->hidden('kolapsita');
if($q->param('kolapsita') == 0)
{
eeb::Print
$q->hidden('simplegapeto'),
"", #
l('auxtoro'),": ",
$q->textfield(-name=>'auxtoro', -size=>40,-maxlength=>100, -default=>''),
$q->popup_menu(-name=>'kaj1', -values=>['kaj','au'],
-default=>'kaj', -labels=>{'kaj'=>'kaj', 'au'=>'aŭ'} )," ", # UNUA LINIO
"",l('titolo')," \n",
$q->textfield(-name=>'titolo', -size=>40,-maxlength=>200),
$q->popup_menu(-name=>'kaj2', -values=>['kaj','au'],
-default=>'kaj', -labels=>{'kaj'=>'kaj', 'au'=>'aŭ'} )," ", # DUA LINIO
"",l('tradukinto')," \n",
$q->textfield(-name=>'tradukinto',-size=>40,-maxlength=>100, -default=>''),
#$q->popup_menu(-name=>'kaj3', -values=>['kaj','au'],
# -default=>'kaj'),
" ", # TRIA LINIO
"",
$q->submit(-name=>'kolapsigu', -value=>'Prenu la suprajn tri kune'),
" ";
}
else
{
eeb::Print
$q->hidden('auxtoro'),$q->hidden('titolo'),$q->hidden('tradukinto'),
"",l('simplega')," ",
$q->textfield(-name=>'simplegapeto',
-size=>40,-maxlength=>100, -default=>''),
" ",$q->submit(-name=>'kolapsigu', -value=>'Diserigu'),
" ";
}
eeb::Print
"Aperas en: ", # KVARA LINIO KUN LINGVOELEKTO
"", # TABELO POR LINGVOJ
"",
$q->scrolling_list(
-name=>'aperlingvo',
-values=>&lingvoj($dbh,0),
-size=>4,
-multiple=>'true',
-defaults=>[],
-labels=>&lingvoj($dbh,1)
),
" ",
$q->popup_menu(-name=>'kaj4', -values=>['kaj', 'au'],
-default=>'kaj', -labels=>{'kaj'=>'kaj', 'au'=>'aŭ'} )," ",
"tradukita el: ",
$q->scrolling_list(
-name=>'origlingvo',
-values=>&origlingvoj($dbh,0),
-size=>4,
-multiple=>'true',
-defaults=>[],
-labels=>&origlingvoj($dbh,1)
),
"
", # FINO KVARA LINIO
"Kategorioj: ",
$q->scrolling_list(
-name=>'kategorioj',
-values=>&kategorioj($dbh,0),
-size=>4,
-multiple=>'true',
-defaults=>[],
-labels=>&kategorioj($dbh,1)),
" ",
"
", # FINO DE TABELO EN MALDEKSTRA TABELO
}
else
{
eeb::Print $q->hidden('auxtoro'),$q->hidden('titolo'),$q->hidden('tradukinto'),$q->hidden('aperlingvo'),$q->hidden('origlingvo'),
$q->hidden('kaj1'),$q->hidden('kaj2'),$q->hidden('kaj3'),$q->hidden('kaj4');
}
if($sql =~ /SQLe/ && ! defined $kodsxangxo)
{
eeb::Print
"SQL-peto: ", $q->textarea(-name=>'sqlpeto', -columns=>75,-rows=>10,
-value=>$defauxltsql);
}
else
{
eeb::Print $q->hidden('sqlpeto' && !$kodsxangxo);
}
if($sql =~ /Simplege/ && ! defined $kodsxangxo)
{
eeb::Print
#"", #t2 tr1 td1
l('simplega')," ",
$q->textfield(-name=>'simplegapeto',
-size=>30,-maxlength=>100, -default=>''),
$q->hidden('prezento', 'kataloga');
#"";
#" "; #t2 tr1 td1
}
else
{
eeb::Print $q->hidden('simplegapeto') if $sql !~ /Formu/;
}
if (! defined $kodsxangxo)
{
eeb::Print
#"", #t2 tr0 td0
#"
", #t1
"",
$q->submit(-name=>'sercxu',-value=>l("sercxu")),
($sql =~ /Form/i ? $q->submit(-name=>'visxu', -value=>l('visxu')) : ''),
$q->hidden('postajfojoj', 1),
" ",
" ",
"", # dekstra tabelo
"",
"",
#$q->hidden('hsql',"$sql"),
" ",
#$q->hidden('hkodo',"$kodo"),
#" getkodo."\">",
l("sxangxumanieron")," ";
if ($sql =~ /SQLe/) { eeb::Print $q->submit(-name=>'SQL',-value=>"Formulare"), $q->submit(-name=>'SQL',-value=>"Simplege"); }
if ($sql =~ /Formulare/) { eeb::Print $q->submit(-name=>'SQL',-value=>"SQLe"), $q->submit(-name=>'SQL',-value=>"Simplege"); }
if ($sql =~ /Simplege/) { eeb::Print $q->submit(-name=>'SQL',-value=>"Formulare"); }
eeb::Print
" ", # unua linio en dekstra tabelo
#"".eeb::kod("Ŝanĝu enkodigon al")." ",
##$q->getkodo() =~ /iks/ ? $q->submit(-name=>'kodo',-value=>"unikodo") : $q->submit(-name=>'kodo',-value=>"iksoj"),
$sql =~ /Formul|Simplege/ ? " Regulaj esprimoj: ".$q->checkbox(-name=>'regulajesprimoj', -label=>' ')." " : "",
"".l('Kodigo')." ",$q->image_button(-name=>'kodsxangxo', -src=>'bildoj/butono.png', -align=>'MIDDLE'), $sql !~ /Simpleg/ ? " (".l('nun').$q->param('kodo').")" : ''," ",
"",
$sql =~ /Simplege/ ? $q->hidden('nombro',200)." " # dua linio
: "Maksimuma grando".
$q->textfield(-name=>'nombro', -default=>'200', -size=>4, -maxlength=>4)." ",
$sql =~ /SQL|Simplege/ ? "" : "Fontoj ",
$sql =~ /SQL|Simplege/ ? $q->hidden('fonto')." ".l('nunsercxas')." ".join(', ',$q->param('fonto'))." ".l('sxangxuper')." "
:
$q->scrolling_list(
-name=>'fonto',
-values=>[ keys %fontoj ],
-size=>5,
-multiple=>'true',
-defaults=>[@defauxltfontoj],
-labels=>{ %fontoj }
)."",
$sql =~ /SQL|Simplege/ ? " " : "Prezento"." ".$q->popup_menu(-name=>'prezento', -values=>['tabela','kataloga'],
-default=>'kataloga')." ",
$sercxu ? "".$q->submit(-name=>'aldonu',-value=>l('aldonu'))." " : "" ,
$nacxetoj == 0 ? "" : "getkodo."&surogato=".$q->getsurogato."&lingvo=".$q->param('lingvo')."&acxetoj=".join('+',keys %acxetoj)."\">".l('rigardu', $nacxetoj)." ",
"
", # dekstra tablelo
" "; # supra du
}
eeb::Print
"
",
$q->a({href=>($q->getkodo() =~ /uni/ ? "helpo.html" : "x/helpo.html") },"Helpo"),
" | ", $q->a({href=>$bibliografialoko."interesajpetoj.html"},"Kelkaj interesaj eltiraĵoj"),
" | ", $q->a({href=>$bibliografialoko."farinda.html"},"Cimoj/Ideoj"),
" | ", $q->a({href=>$bibliografialoko."nova.html"},"Nova"),
" ",
$q->a({href=>"http://www.uea.org/"},"UEA"),
" | ",$q->a({href=>"http://www.best.com/%7Edonh/Esperanto/Literaturo/literaturo.html"},"Don"),
" | ",$q->a({href=>$bibliografialoko."verloren.html"},"Verloren"),
" | ",$q->a({href=>$mihxil."nederlanda.html"},"Nederlanda"),
" | ",$q->a({href=>"http://www.rano.demon.co.uk/angbib.html"},"Angla"),
" | ",$q->a({href=>"http://www.dmoz.org/World/Esperanto/Literaturo/"},"dmoz"),
" | ",$q->a({href=>"http://www.cs.chalmers.se/~martinw/esperanto/bibl/"},"Bibliotekoj"),
#" | ",$q->a({href=>"http://www.dmoz.org/World/Esperanto/Literaturo/"},"Literaturo"),
#" | ",$q->a({href=>"http://www.cs.chalmers.se/~martinw/esperanto/aalen/sercho_eo.html"},"Aalen"),
#" | ",$q->a({href=>"http://euler.onb.ac.at/cgi-allegro/maske.pl?db=esperanto"},"Trovanto"),
#" | ",$q->a({href=>"../esperanto.html"},eeb::kod("Miĥil'")),
" ",
$jeffk ? "" : l("Bonvolu ligi")." <http://www.uea.org/katalogo >"." ",
"",
"versio 2000-12-10, raportu problemojn!",
" ",
#" . ".eeb::kod("2000-03-11, 12:30: datumbazo en rekonstruo (mi faras ŝanĝojn en ĝi) "),
" ",
""; # TABELO1}
# $q->end_form,
if($sercxu) # cxiujn postajn fojon kio ajn okazas, sercxo okazu.
{
do {
eeb::Print
"
",
"";
} unless $q->param('simpla');
my $sqlpeto;
my $dmozsercxo =0;
my $dmozpeto = "";
if($sql =~ /Form|Simplege/) {
my $in = '';
for ( $q->param('fonto') ) {
$in .= 'U' if /UEA/;
$in .= 'N' if /Nederlanda/;
$in .= 'G' if /Angla/;
$in .= 'D' if /Harlow/;
$in .= 'V' if /Verloren/;
$in .= 'R' if /Aliaj/;
$in .= 'A' if /Aalen/;
$dmozsercxo = 1 if /Dmoz/;
}
my @in = split ('',$in);
if (@in == 0 && $dmozsercxo == 0) { @in =('U','N','D','V', 'R'); }
$in = "'".join ("','",@in)."'";
my $kampoj;
$kampoj = "b.origino borg, unikanumero, auxtoro, titolo, tradukinto, b.aperloko, b.aperjaro, o.origino";
if($in =~ /U/) { # por UEA ni bezonas kelkajn pliajn kampojn.
$kampoj .= ", subtitolo, kunlaborantoj, priskribo, rimarkoj, prezo, pagxnombro, formato, rabatono";
}
#Faru la sql-peto:
$sqlpeto = join('',
"select $kampoj\n",
" from $tabelo b, originoj o\n",
" where b.origino = o.kodo\n ");
my $kaj = "and (";
if ($sql =~ /Form/i && $q->param('kolapsita') == 0) {
eeb::Print("Atentu! Kun diserigitaj kampoj ne (jam) eblas serĉi en dmoz ") if $dmozsercxo == 1;
if(! ($q->param('auxtoro') =~ /^\s*$/)) {
my $s = eeb::faru_esprimon($q->param('auxtoro'), $q->param('regulajesprimoj'));
$sqlpeto .= "$kaj b._auxtoro REGEXP '$s'\n";
$kaj = $q->param('kaj1') =~ /^k/ ? "and" : "or";
}
if(! ($q->param('titolo') =~ /^\s*$/)) {
my $s = eeb::faru_esprimon($q->param('titolo'), $q->param('regulajesprimoj'));
$sqlpeto .= "$kaj b._titolo REGEXP '$s'\n";
$kaj = $q->param('kaj2') =~ /^k/ ? "and" : "or";
}
if(! ($q->param('tradukinto') =~ /^\s*$/)) {
my $s = eeb::faru_esprimon($q->param('tradukinto'), $q->param('regulajesprimoj'));
$sqlpeto .= "$kaj b._tradukinto REGEXP '$s'\n";
$kaj = "and";
}
}
if ($sql =~ /Simplege/ ||
($sql =~ /Form/i && $q->param('kolapsita') == 1) &&
($q->param('simplegapeto') !~ /^\s*$/)
)
{
my $s = eeb::faru_esprimon($q->param('simplegapeto'), $q->param('regulajesprimoj'));
# eeb::Print $q->param('simplegapeto');
$dmozpeto = uc(eeb::kod($q->param('simplegapeto'))) if $dmozsercxo == 1;
#if($s =~ /\\[^n]/) {
# eeb::Print l('nemysqlregulesprimo')," ";
#}
#print $s;
if($s !~ /^$/) {
$sqlpeto .= "$kaj (( b._auxtoro REGEXP '$s')\n";
$sqlpeto .= " or ( b._titolo REGEXP '$s') \n";
$sqlpeto .= " or ( b._tradukinto REGEXP '$s'))\n";
$kaj = "and";
}
}
if($sql =~ /Form/i ) {
if($q->param('aperlingvo'))
{
my $in = "'".join ("','", $q->param('aperlingvo'))."'";
if ( $in !~ /ajna/)
{
$sqlpeto .= "$kaj b.lingvo in ($in) \n";
$kaj = $q->param('kaj4') =~ /^k/ ? "and" : "or";
}
}
if($q->param('origlingvo'))
{
my $in = "'".join ("','", $q->param('origlingvo'))."'";
if( $in =~ /ajna/)
{
$sqlpeto .= "$kaj b.originalo = 0 ";
}
elsif ( $in =~ /neniu/)
{
$sqlpeto .= "$kaj b.originalo = 1 ";
}
else
{
$sqlpeto .= "$kaj b.originala_lingvo in ($in) \n";
}
$kaj = "and";
}
if($q->param('kategorioj'))
{
#$sqlpeto .= "and (";
#$kaj = "";
my $kaj = 'and (';
for ($q->param('kategorioj'))
{
$sqlpeto .= "$kaj b.kategorio REGEXP \"$_\" ";
$kaj = 'or'
}
$sqlpeto .= ")";
}
}
# la jenaj aferoj restas validaj ankaŭ en la simplega serĉo.
$sqlpeto .= ")" if $kaj !~ /\(/;
if($q->param('fonto')) {
$sqlpeto .= "and b.origino in ($in)" if @in < keys %fontoj;
}
if($q->param('prezento') =~ /tabela/) {
$sqlpeto .= " order by b._auxtoro";
$q->mysql($dbh, $sqlpeto, \%acxetoj, $dmozpeto);
}
else {
$sqlpeto .= " order by b._titolo";
$q->mykatalogo($dbh, $sqlpeto, \%acxetoj, $dmozpeto);
}
}
if($sql =~ /SQLe/) {
$sqlpeto = $q ->param('sqlpeto');
$q->mysql($dbh, $sqlpeto);
}
eeb::Print "
" unless $q->param('simpla');
}
$dbh->disconnect();
eeb::Print
$q->end_form;
print
#$q->dump(),
$q->end_html,"\n";
{
my (%lingvoj, @lingvoj);
sub origlingvoj
{
my $dbh = shift;
my $kion = shift;
if(! %lingvoj)
{
my $nuna;
$nuna= $dbh->prepare("select l.lingvo, l.kodo from $tabelo b, lingvoj l where b.originala_lingvo=l.kodo group by l.lingvo order by l._lingvo");
$nuna->execute();
eeb::Print "
Eraro $DBI::err: $DBI::errstr" if($DBI::err);
my (@rezulto);
@lingvoj = ('ajna', 'neniu');
$lingvoj{'ajna'} = 'ajna lingvo';
$lingvoj{'neniu'} = 'neniu lingvo';
while(@rezulto = $nuna->fetchrow())
{
push(@lingvoj, $rezulto[1]);
$lingvoj{$rezulto[1]} = $rezulto[0];
}
}
return \@lingvoj if $kion == 0;
return \%lingvoj;
}
}
{
my (%lingvoj, @lingvoj);
sub lingvoj
{
my $dbh = shift;
my $kion = shift;
if(! %lingvoj)
{
my $nuna;
$nuna= $dbh->prepare("select l.lingvo, l.kodo from $tabelo b, lingvoj l where b.lingvo=l.kodo group by b.lingvo order by l._lingvo");
$nuna->execute();
eeb::Print "
Eraro $DBI::err: $DBI::errstr" if($DBI::err);
my (@rezulto);
@lingvoj = ('ajna');
$lingvoj{'ajna'} = 'ajna lingvo';
while(@rezulto = $nuna->fetchrow())
{
push(@lingvoj, $rezulto[1]);
$lingvoj{$rezulto[1]} = $rezulto[0];
}
}
return \@lingvoj if $kion == 0;
return \%lingvoj;
}
}
{
my (%kategorioj, @kategorioj);
sub kategorioj
{
my $dbh = shift;
my $kion = shift;
if (! %kategorioj)
{
my $nuna;
$nuna= $dbh->prepare("select k.kodo, k.priskribo from kategorioj k where super = 0 order by k._priskribo");
$nuna->execute();
eeb::Print "
Eraro $DBI::err: $DBI::errstr" if($DBI::err);
my (@rezulto);
while(@rezulto = $nuna->fetchrow()) {
$kategorioj{$rezulto[0]} = substr($rezulto[1],0,30);
push(@kategorioj, $rezulto[0]);
}
}
return \@kategorioj if $kion == 0;
return \%kategorioj;
}
}
# Local variables:
# coding: utf-8
# mode: perl
# End: