From 66334f92b3c5eebfe1136f1e0e34d5ef73f1135c Mon Sep 17 00:00:00 2001 From: Robin Sheat Date: Sat, 29 Sep 2012 11:34:32 +1200 Subject: [PATCH] Bug 7642 - [3.8.x] fix the lost display of tag sizes This fixes the display of different sized words for differently popular tags. It is a bit of a refactor of that part of the system, moving logic to more sensible places (and removing an unused method on the way.) Note that it isn't an attempt to reproduce what was there previously, just to do something similar, and in an easier to change fashion. Sponsored-By: New Zealand Educational Institute Signed-off-by: Marc Veron Works as expected. --- C4/Tags.pm | 96 +++++++++------- koha-tmpl/opac-tmpl/prog/en/css/opac.css | 133 ++++++++++++++++++++++ koha-tmpl/opac-tmpl/prog/en/modules/opac-tags.tt | 22 +--- opac/opac-tags.pl | 29 +---- t/db_dependent/Tags.t | 53 ++++++++- 5 files changed, 241 insertions(+), 92 deletions(-) diff --git a/C4/Tags.pm b/C4/Tags.pm index 731154d..f84dabb 100644 --- a/C4/Tags.pm +++ b/C4/Tags.pm @@ -32,21 +32,21 @@ use vars qw($ext_dict $select_all @fields); BEGIN { $VERSION = 3.08.01.002; @ISA = qw(Exporter); - @EXPORT_OK = qw( - &get_tag &get_tags &get_tag_rows - &add_tags &add_tag - &delete_tag_row_by_id - &remove_tag - &delete_tag_rows_by_ids - &rectify_weights - &get_approval_rows - &blacklist - &whitelist - &is_approved - &approval_counts - &get_count_by_tag_status - &get_filters - ); + @EXPORT_OK = qw( + &get_tag &get_tags &get_tag_rows + &add_tags &add_tag + &delete_tag_row_by_id + &remove_tag + &delete_tag_rows_by_ids + &get_approval_rows + &blacklist + &whitelist + &is_approved + &approval_counts + &get_count_by_tag_status + &get_filters + stratify_tags + ); # %EXPORT_TAGS = (); $ext_dict = C4::Context->preference('TagsExternalDictionary'); if ($debug) { @@ -489,34 +489,7 @@ sub get_tag ($) { # by tag_id return $sth->fetchrow_hashref; } -sub rectify_weights (;$) { - my $dbh = C4::Context->dbh; - my $sth; - my $query = " - SELECT term,biblionumber,count(*) as count - FROM tags_all - "; - (@_) and $query .= " WHERE term =? "; - $query .= " GROUP BY term,biblionumber "; - $sth = $dbh->prepare($query); - if (@_) { - $sth->execute(shift); - } else { - $sth->execute(); - } - my $results = $sth->fetchall_arrayref({}) or return undef; - my %tally = (); - foreach (@$results) { - _set_weight($_->{count},$_->{term},$_->{biblionumber}); - $tally{$_->{term}} += $_->{count}; - } - foreach (keys %tally) { - _set_weight_total($tally{$_},$_); - } - return ($results,\%tally); -} - -sub increment_weights ($$) { +sub increment_weights { increment_weight(@_); increment_weight_total(shift); } @@ -593,6 +566,43 @@ sub add_tag ($$;$$) { # biblionumber,term,[borrowernumber,approvernumber] } } +# This takes a set of tags, as returned by C and divides +# them up into a number of "strata" based on their weight. This is useful +# to display them in a number of different sizes. +# +# Usage: +# ($min, $max) = stratify_tags($strata, $tags); +# $stratum: the number of divisions you want +# $tags: the tags, as provided by get_approval_rows +# $min: the minumum stratum value +# $max: the maximum stratum value. This may be the same as $min if there +# is only one weight. Beware of divide by zeros. +# This will add a field to the tag called "stratum" containing the calculated +# value. +sub stratify_tags { + my ( $strata, $tags ) = @_; + + my ( $min, $max ); + foreach (@$tags) { + my $w = $_->{weight_total}; + $min = $w if ( !defined($min) || $min > $w ); + $max = $w if ( !defined($max) || $max < $w ); + } + + # normalise min to zero + $max = $max - $min; + my $orig_min = $min; + $min = 0; + + # if min and max are the same, just make it 1 + my $span = ( $strata - 1 ) / ( $max || 1 ); + foreach (@$tags) { + my $w = $_->{weight_total}; + $_->{stratum} = int( ( $w - $orig_min ) * $span ); + } + return ( $min, $max ); +} + 1; __END__ diff --git a/koha-tmpl/opac-tmpl/prog/en/css/opac.css b/koha-tmpl/opac-tmpl/prog/en/css/opac.css index bdb2dc9..e93e401 100644 --- a/koha-tmpl/opac-tmpl/prog/en/css/opac.css +++ b/koha-tmpl/opac-tmpl/prog/en/css/opac.css @@ -2520,3 +2520,136 @@ span.sep { } */ +.authstanza { + margin-top: 1em; +} + +.authstanzaheading { + font-weight: bold; +} + +.authstanza li { + margin-left: 0.5em; +} + +#didyoumean { + background-color: #EEE; + border: 1px solid #E8E8E8; + margin: 0 0 0.5em; + text-align: left; + padding: 0.5em; + border-radius: 3px 3px 3px 3px; +} + +.suggestionlabel { + font-weight: bold; +} + +.searchsuggestion { + padding: 0.2em 0.5em; + white-space: nowrap; + display: inline-block; +} + +.authlink { + padding-left: 0.25em; +} +#hierarchies a { + font-weight: normal; + text-decoration: underline; + color: #069; +} + +#hierarchies a:hover { + color: #990033; +} + +/* jQuery UI Datepicker */ +.ui-datepicker table {width: 100%; font-size: .9em; border : 0; border-collapse: collapse; margin:0 0 .4em; } +.ui-datepicker th { background : transparent none; padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } + +.ui-datepicker-trigger { + vertical-align: middle; + margin : 0 3px; +} +.ui-datepicker { + -moz-box-shadow: 1px 1px 3px 0 #666; + -webkit-box-shadow: 1px 1px 3px 0 #666; + box-shadow: 1px 1px 3px 0 #666; +} + +.contents { + width: 75%; +} + +.contentblock { + position: relative; + margin-left: 2em; +} + +.contents .t:first-child:before { + content: "→ "; +} + +.contents .t:before { + content: "\A→ "; + white-space: pre; +} + +.contents .t { + font-weight: bold; + display: inline; +} + +.contents .r { + display: inline; +} + +body#opac-main #opacmainuserblockmobile { + display: none; +} + +.mobile_only { + display : none; +} + +/* different sizes for different tags in opac-tags.tt */ +.tagweight0 { + font-size: 12px; +} + +.tagweight1 { + font-size: 14px; +} + +.tagweight2 { + font-size: 16px; +} + +.tagweight3 { + font-size: 18px; +} + +.tagweight4 { + font-size: 20px; +} + +.tagweight5 { + font-size: 22px; +} + +.tagweight6 { + font-size: 24px; +} + +.tagweight7 { + font-size: 26px; +} + +.tagweight8 { + font-size: 28px; +} + +.tagweight9 { + font-size: 30px; +} diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/opac-tags.tt b/koha-tmpl/opac-tmpl/prog/en/modules/opac-tags.tt index 1c291c9..0d24cb6 100644 --- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-tags.tt +++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-tags.tt @@ -21,26 +21,6 @@