[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