[Debtags-commits] [svn] r1486 -
central-database/branches/alioth/webfrontend
Enrico Zini
enrico at costa.debian.org
Mon Nov 14 14:42:19 UTC 2005
Author: enrico
Date: Mon Nov 14 14:42:16 2005
New Revision: 1486
Modified:
central-database/branches/alioth/webfrontend/Engine.pm
central-database/branches/alioth/webfrontend/main.css
central-database/branches/alioth/webfrontend/search.cgi
central-database/branches/alioth/webfrontend/searchtemplate.html
Log:
Fixed search (case insensitive, words are ANDed).
Populate unwanted tags with a list of default unwanted tags.
Added introductory text to the package list.
Make tag lists fixed-height and scrolled to avoid pushing the package list down.
Modified: central-database/branches/alioth/webfrontend/Engine.pm
==============================================================================
--- central-database/branches/alioth/webfrontend/Engine.pm (original)
+++ central-database/branches/alioth/webfrontend/Engine.pm Mon Nov 14 14:42:16 2005
@@ -127,7 +127,7 @@
sub hasSomeTag ($@)
{
my $self = shift;
- my %tags = map { $_ => 1 } @{$db->{pkgs}{$self->name}{tags}};
+ my %tags = map { $_->{name} => 1 } @{$db->{pkgs}{$self->name}{tags}};
for my $t (@_)
{
return 1 if exists $tags{$t->name()};
@@ -391,28 +391,37 @@
{
my ($parms, $p) = @_;
+# my $verbose = ($p->name eq 'freedroid-data');
+
# &main::msg("Match %s with t:%s w:%s\n", $p->name(), join(', ', @{$parms->{tags}}), join(', ', @{$parms->{words}}));
+# &main::msg("%s has tags %s\n", $p->name, join(',',map{$_->name} $p->tags)) if $verbose;
+
if ($parms->{tags} && @{$parms->{tags}})
{
+# &main::msg("Checking tags %s\n", join(',',map{$_->name} @{$parms->{tags}})) if $verbose;
return undef if not $p->hasTag(@{$parms->{tags}});
}
if ($parms->{notags} && @{$parms->{notags}})
{
- return undef if $p->hasTag(@{$parms->{notags}});
+# &main::msg("Checking notags %s\n", join(',',map{$_->name} @{$parms->{notags}})) if $verbose;
+ return undef if $p->hasSomeTag(@{$parms->{notags}});
}
if ($parms->{words})
{
+# &main::msg("Checking words %s inside\n%s\n%s\n%s\n", join(',',@{$parms->{words}}), $p->name, $p->sdesc, $p->ldesc) if $verbose;
for my $w (@{$parms->{words}})
{
- return undef if
- index($p->name(), $w) == -1 &&
- index($p->sdesc(), $w) == -1 &&
- index($p->ldesc(), $w) == -1;
+ my $re = qr/$w/io;
+ # TODO: AND the words instead of ORing
+ return undef if !(
+ $p->name() =~ $re &&
+ $p->sdesc() =~ $re &&
+ $p->ldesc() =~ $re);
}
}
-# &main::msg("OK %s\n", $p->name());
+# &main::msg("OK %s\n", $p->name()) if $verbose;
return 1;
}
@@ -442,22 +451,22 @@
# Return the $max_tags most frequent tags among the packages resulting for the
# full-text search with the words given as arguments
-sub tagsForSearch ($@)
+sub tagsForSearch ($$)
{
- my $max_tags = shift;
- my $search = { words => [@_] };
+ my ($max_tags, $search) = @_;
my %tags;
- for my $pkg (grep { matchPackage($search, $_) } packages())
+ for my $p (grep { matchPackage($search, $_) } packages())
{
- for my $tag ($pkg->tags())
+# &main::msg("Found %s\n", $p->name());
+ for my $tag ($p->tags())
{
++$tags{$tag->name()} if $tag->name() !~ /^special::/;
}
}
my @res = (sort { $tags{$b} <=> $tags{$a} } keys %tags)[0 .. $max_tags];
- while (!findPackages({tags => [tag(@res)]}))
+ while (!findPackages({tags => [tag(@res)], notags => $search->{notags}}))
{
- &main::msg("No entries with %s, trying to remove %s\n", join(',', at res), $res[$#res]);
+# &main::msg("No entries with %s, trying to remove %s\n", join(',', at res), $res[$#res]);
pop @res;
}
return @res;
Modified: central-database/branches/alioth/webfrontend/main.css
==============================================================================
--- central-database/branches/alioth/webfrontend/main.css (original)
+++ central-database/branches/alioth/webfrontend/main.css Mon Nov 14 14:42:16 2005
@@ -234,6 +234,14 @@
float: left;
padding: 0.5em;
}
+.tagbox {
+overflow: auto;
+height: 50%;
+}
+.tagbox LI {
+margin-left: 1;
+padding-left: 1;
+}
.sebuttons {
font-size: x-small;
padding-bottom: 3pt;
Modified: central-database/branches/alioth/webfrontend/search.cgi
==============================================================================
--- central-database/branches/alioth/webfrontend/search.cgi (original)
+++ central-database/branches/alioth/webfrontend/search.cgi Mon Nov 14 14:42:16 2005
@@ -15,7 +15,7 @@
##
#my $release="unstable";
-my $max_tags = 5;
+my $max_tags = 6;
##
## Generic functions
@@ -57,7 +57,11 @@
if ($selwords =~ m/[A-Za-z0-9 ._-]+/)
{
@sel_words = grep { $_ } split(/\s+/, $selwords);
- @want_tags = Engine::tagsForSearch($max_tags, @sel_words);
+ @unwant_tags = ('role::aux:dummy', 'role::content:data', 'role::sw:shlib');
+ @want_tags = Engine::tagsForSearch($max_tags, {
+ words => \@sel_words,
+ notags => [Engine::tag(@unwant_tags)]
+ });
}
} elsif ($selwords = param('oldstart')) {
$action = 'search';
@@ -296,6 +300,15 @@
$template->param(TTAGS => \@ht_ttags);
$template->param(PKGS => \@ht_pkgs);
+my $count_pkg = scalar @ht_pkgs;
+if ($count_pkg == 0)
+{
+ $template->param(PKGS_INTRO => "No packages found:");
+} elsif ($count_pkg == 1) {
+ $template->param(PKGS_INTRO => "One package found:");
+} else {
+ $template->param(PKGS_INTRO => "$count_pkg packages found:");
+}
#my $count_hf = keys %hidden_facets;
#if ($count_hf == 1)
#{
Modified: central-database/branches/alioth/webfrontend/searchtemplate.html
==============================================================================
--- central-database/branches/alioth/webfrontend/searchtemplate.html (original)
+++ central-database/branches/alioth/webfrontend/searchtemplate.html Mon Nov 14 14:42:16 2005
@@ -42,23 +42,25 @@
<p>Wanted tags:
<tmpl_if name="WTAGS">
</p>
- <ul>
- <tmpl_loop name="WTAGS">
- <li>
- <div class="sefacet">
- <span title="<tmpl_var name='FNAME'>: <tmpl_var name='FLDESC'>"><tmpl_var name="FSDESC"></span>:
- </div>
- <div class="setag">
- <span title="<tmpl_var name='NAME'>: <tmpl_var name='LDESC'>"><tmpl_var name="SDESC"></span> <!-- tmpl_var name="COUNT" -->
- </div>
- <div class="sebuttons">
- <a href='<tmpl_var name="UNWURL">'>[Don't want]</a>
- <a href='<tmpl_var name="IGURL">'>[Ignore]</a>
- <a href='<tmpl_var name="REMURL">'>[Remove]</a>
- </div>
- </li>
- </tmpl_loop>
- </ul>
+ <div class="tagbox">
+ <ul>
+ <tmpl_loop name="WTAGS">
+ <li>
+ <div class="sefacet">
+ <span title="<tmpl_var name='FNAME'>: <tmpl_var name='FLDESC'>"><tmpl_var name="FSDESC"></span>:
+ </div>
+ <div class="setag">
+ <span title="<tmpl_var name='NAME'>: <tmpl_var name='LDESC'>"><tmpl_var name="SDESC"></span> <!-- tmpl_var name="COUNT" -->
+ </div>
+ <div class="sebuttons">
+ <a href='<tmpl_var name="UNWURL">'>[Don't want]</a>
+ <a href='<tmpl_var name="IGURL">'>[Ignore]</a>
+ <a href='<tmpl_var name="REMURL">'>[Remove]</a>
+ </div>
+ </li>
+ </tmpl_loop>
+ </ul>
+ </div>
<tmpl_else>
<b>none</b></p>
</tmpl_if>
@@ -68,23 +70,25 @@
<p>Unwanted tags:
<tmpl_if name="UTAGS">
</p>
- <ul>
- <tmpl_loop name="UTAGS">
- <li>
- <div class="sefacet">
- <span title="<tmpl_var name='FNAME'>: <tmpl_var name='FLDESC'>"><tmpl_var name="FSDESC"></span>:
- </div>
- <div class="setag">
- <span title="<tmpl_var name='NAME'>: <tmpl_var name='LDESC'>"><tmpl_var name="SDESC"></span> <!-- tmpl_var name="COUNT" -->
- </div>
- <div class="sebuttons">
- <a href='<tmpl_var name="WAURL">'>[Want]</a>
- <a href='<tmpl_var name="IGURL">'>[Ignore]</a>
- <a href='<tmpl_var name="REMURL">'>[Remove]</a>
- </div>
- </li>
- </tmpl_loop>
- </ul>
+ <div class="tagbox">
+ <ul>
+ <tmpl_loop name="UTAGS">
+ <li>
+ <div class="sefacet">
+ <span title="<tmpl_var name='FNAME'>: <tmpl_var name='FLDESC'>"><tmpl_var name="FSDESC"></span>:
+ </div>
+ <div class="setag">
+ <span title="<tmpl_var name='NAME'>: <tmpl_var name='LDESC'>"><tmpl_var name="SDESC"></span> <!-- tmpl_var name="COUNT" -->
+ </div>
+ <div class="sebuttons">
+ <a href='<tmpl_var name="WAURL">'>[Want]</a>
+ <a href='<tmpl_var name="IGURL">'>[Ignore]</a>
+ <a href='<tmpl_var name="REMURL">'>[Remove]</a>
+ </div>
+ </li>
+ </tmpl_loop>
+ </ul>
+ </div>
<tmpl_else>
<b>none</b></p>
</tmpl_if>
@@ -94,23 +98,25 @@
<p>Ignored tags:
<tmpl_if name="ITAGS">
</p>
- <ul>
- <tmpl_loop name="ITAGS">
- <li>
- <div class="sefacet">
- <span title="<tmpl_var name='FNAME'>: <tmpl_var name='FLDESC'>"><tmpl_var name="FSDESC"></span>:
- </div>
- <div class="setag">
- <span title="<tmpl_var name='NAME'>: <tmpl_var name='LDESC'>"><tmpl_var name="SDESC"></span> <!-- tmpl_var name="COUNT" -->
- </div>
- <div class="sebuttons">
- <a href='<tmpl_var name="WAURL">'>[Want]</a>
- <a href='<tmpl_var name="UNWURL">'>[Don't want]</a>
- <a href='<tmpl_var name="REMURL">'>[Remove]</a>
- </div>
- </li>
- </tmpl_loop>
- </ul>
+ <div class="tagbox">
+ <ul>
+ <tmpl_loop name="ITAGS">
+ <li>
+ <div class="sefacet">
+ <span title="<tmpl_var name='FNAME'>: <tmpl_var name='FLDESC'>"><tmpl_var name="FSDESC"></span>:
+ </div>
+ <div class="setag">
+ <span title="<tmpl_var name='NAME'>: <tmpl_var name='LDESC'>"><tmpl_var name="SDESC"></span> <!-- tmpl_var name="COUNT" -->
+ </div>
+ <div class="sebuttons">
+ <a href='<tmpl_var name="WAURL">'>[Want]</a>
+ <a href='<tmpl_var name="UNWURL">'>[Don't want]</a>
+ <a href='<tmpl_var name="REMURL">'>[Remove]</a>
+ </div>
+ </li>
+ </tmpl_loop>
+ </ul>
+ </div>
<tmpl_else>
<b>none</b></p>
</tmpl_if>
@@ -120,23 +126,25 @@
<p>Top tags in the result:
<tmpl_if name="TTAGS">
</p>
- <ul>
- <tmpl_loop name="TTAGS">
- <li>
- <div class="sefacet">
- <span title="<tmpl_var name='FNAME'>: <tmpl_var name='FLDESC'>"><tmpl_var name="FSDESC"></span>:
- </div>
- <div class="setag">
- <span title="<tmpl_var name='NAME'>: <tmpl_var name='LDESC'>"><tmpl_var name="SDESC"></span> <!-- tmpl_var name="COUNT" -->
- </div>
- <div class="sebuttons">
- <a href='<tmpl_var name="WAURL">'>[Want]</a>
- <a href='<tmpl_var name="UNWURL">'>[Don't want]</a>
- <a href='<tmpl_var name="IGURL">'>[Ignore]</a>
- </div>
- </li>
- </tmpl_loop>
- </ul>
+ <div class="tagbox">
+ <ul>
+ <tmpl_loop name="TTAGS">
+ <li>
+ <div class="sefacet">
+ <span title="<tmpl_var name='FNAME'>: <tmpl_var name='FLDESC'>"><tmpl_var name="FSDESC"></span>:
+ </div>
+ <div class="setag">
+ <span title="<tmpl_var name='NAME'>: <tmpl_var name='LDESC'>"><tmpl_var name="SDESC"></span> <!-- tmpl_var name="COUNT" -->
+ </div>
+ <div class="sebuttons">
+ <a href='<tmpl_var name="WAURL">'>[Want]</a>
+ <a href='<tmpl_var name="UNWURL">'>[Don't want]</a>
+ <a href='<tmpl_var name="IGURL">'>[Ignore]</a>
+ </div>
+ </li>
+ </tmpl_loop>
+ </ul>
+ </div>
<tmpl_else>
<b>none</b></p>
</tmpl_if>
More information about the Debtags-commits
mailing list