@@ -, +, @@ --- 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(-) --- a/C4/Tags.pm +++ a/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__ --- a/koha-tmpl/opac-tmpl/prog/en/css/opac.css +++ a/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; +} --- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-tags.tt +++ a/koha-tmpl/opac-tmpl/prog/en/modules/opac-tags.tt @@ -21,26 +21,6 @@