Tags AJAX integration on OPAC details page, so it behaves like results.
Also, prevent duplicate tags (same user, biblio and term). Strip leading/trailing whitespace from term. Block whitespace terms. The CSS for details could be enhanced to emphasize tagstatus more. Signed-off-by: Joshua Ferraro <jmf@liblime.com>
This commit is contained in:
parent
d6a92d6dc0
commit
a101cd2d82
3 changed files with 29 additions and 12 deletions
32
C4/Tags.pm
32
C4/Tags.pm
|
@ -531,18 +531,25 @@ sub add_tag ($$;$$) { # biblionumber,term,[borrowernumber,approvernumber]
|
|||
my $biblionumber = shift or return undef;
|
||||
my $term = shift or return undef;
|
||||
my $borrowernumber = (@_) ? shift : 0; # the user, default to kohaadmin
|
||||
|
||||
# first, add to tags regardless of approaval
|
||||
$term =~ s/^\s+//;
|
||||
$term =~ s/\s+$//;
|
||||
($term) or return undef; # must be more than whitespace
|
||||
my $rows = get_tag_rows({biblionumber=>$biblionumber, borrowernumber=>$borrowernumber, term=>$term, limit=>1});
|
||||
my $query = "INSERT INTO tags_all
|
||||
(borrowernumber,biblionumber,term,date_created)
|
||||
VALUES (?,?,?,NOW())";
|
||||
$debug and print STDERR "add_tag query:\n $query\n",
|
||||
"add_tag query args: ($borrowernumber,$biblionumber,$term)\n";
|
||||
if (scalar @$rows) {
|
||||
$debug and carp "Duplicate tag detected. Tag not added.";
|
||||
return undef;
|
||||
}
|
||||
# add to tags_all regardless of approaval
|
||||
my $sth = C4::Context->dbh->prepare($query);
|
||||
$sth->execute($borrowernumber,$biblionumber,$term);
|
||||
|
||||
# then
|
||||
if (@_) { # if an arg remains, it is the borrowernumber of the approver: tag is pre-approved.
|
||||
if (@_) { # if an arg remains, it is the borrowernumber of the approver: tag is pre-approved. Note, whitelist unaffected.
|
||||
my $approver = shift;
|
||||
add_tag_approval($term,$approver);
|
||||
add_tag_index($term,$biblionumber,$approver);
|
||||
|
@ -620,12 +627,19 @@ trying to calculate that and the "weight" (number of times a tag appears) on the
|
|||
biblionumber - book record it is attached to
|
||||
weight - number of times tag applied by any user
|
||||
|
||||
tags_blacklist - TODO
|
||||
tags_blacklist - A set of regular expression filters. Unsurprisingly, these should be perl-
|
||||
compatible (PCRE) for your version of perl. Since this is a blacklist, a term will be
|
||||
blocked if it matches any of the given patterns. WARNING: do not add blacklist regexps
|
||||
if you do not understand their operation and interaction. It is quite easy to define too
|
||||
simple or too complex a regexp and effectively block all terms. The blacklist operation is
|
||||
fairly resource intensive, since every line of tags_blacklist will need to be read and compared.
|
||||
It is recommended that tags_blacklist be used minimally, and only by an administrator with an
|
||||
understanding of regular expression syntax and performance.
|
||||
|
||||
So the best way to think about the different tabes is that they are each tailored to a certain
|
||||
So the best way to think about the different tables is that they are each tailored to a certain
|
||||
use. Note that tags_approval and tags_index do not rely on the user's borrower mapping, so
|
||||
the tag population can continue to grow even if a user is removed, along with the corresponding
|
||||
rows in tags_all.
|
||||
the tag population can continue to grow even if a user (along with their corresponding
|
||||
rows in tags_all) is removed.
|
||||
|
||||
=head2 Tricks
|
||||
|
||||
|
@ -664,8 +678,10 @@ mysql> select biblionumber from biblio where title LIKE "%Health%";
|
|||
+--------------+
|
||||
26 rows in set (0.00 sec)
|
||||
|
||||
Then, take those numbers and type them into this perl command line:
|
||||
Then, take those numbers and type/pipe them into this perl command line:
|
||||
perl -ne 'use C4::Tags qw(get_tags add_tag); use Data::Dumper;chomp; add_tag($_,"health",51,1); print Dumper get_tags({limit=>5,term=>"health",});'
|
||||
|
||||
Note, the borrowernumber in this example is 51. Use your own or any arbitrary valid borrowernumber.
|
||||
|
||||
=cut
|
||||
|
||||
|
|
|
@ -69,7 +69,7 @@ KOHA.Tags = {
|
|||
scrubbed_all_bad : function(arg) {return ("Error! Your tag was entirely markup code. It was NOT added. Please try again with plain text.");},
|
||||
badparam : function(arg) {return ("Error! Illegal parameter '" +arg+ "'.");},
|
||||
scrubbed : function(arg) {return ("Note: your tag contained markup code that was removed. The tag was added as '" +arg+ "'.");},
|
||||
failed_add_tag : function(arg) {return ("Error! The add_tag operation failed on '" +arg+ "'.");},
|
||||
failed_add_tag : function(arg) {return ("Error! The add_tag operation failed on '" +arg+ "'. Note: you can only tag an item with a given term once. Check 'My Tags' to see your current tags.");},
|
||||
failed_delete : function(arg) {return ("Error! You cannot delete the tag '" +arg+ "'. Note: you can only delete your own tags.");},
|
||||
},
|
||||
};
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
});
|
||||
|
||||
<!-- TMPL_IF NAME="GoogleJackets" -->KOHA.Google.GetCoverFromIsbn();<!-- /TMPL_IF -->
|
||||
<!-- TMPL_IF NAME="TagsEnabled" -->$(".tagbutton").click(KOHA.Tags.add_tag_button);<!-- /TMPL_IF -->
|
||||
|
||||
});
|
||||
//]]>
|
||||
|
@ -193,13 +194,13 @@
|
|||
<span class="label" id="addtagl"><a href="#">Add</a></span>
|
||||
<form name="tagform<!-- TMPL_VAR NAME="biblionumber" -->" method="post" action="/cgi-bin/koha/opac-tags.pl" id="tagform">
|
||||
<label for="newtag<!-- TMPL_VAR NAME="biblionumber" -->">New:</label><input name="newtag<!-- TMPL_VAR NAME="biblionumber" -->" id="newtag<!-- TMPL_VAR NAME="biblionumber" -->" maxlength="100" />
|
||||
<input name="tagbutton" class="input tagbutton" type="submit" value="Add" />
|
||||
<input name="tagbutton" class="input tagbutton" title="<!-- TMPL_VAR NAME="biblionumber" -->" type="submit" value="Add" />
|
||||
<a href="#">Cancel</a>
|
||||
</form>
|
||||
<br />
|
||||
<span id="tagstatus<!-- TMPL_VAR NAME="biblionumber" -->" class="tagstatus" style="display:none;">
|
||||
<span id="newtag<!-- TMPL_VAR NAME="biblionumber" -->_status" class="tagstatus" style="display:none;">
|
||||
Tag status here.
|
||||
</span>
|
||||
<br />
|
||||
<!-- /TMPL_IF -->
|
||||
</div>
|
||||
<!-- /TMPL_IF -->
|
||||
|
|
Loading…
Reference in a new issue