+ if (remove_tag($_,$loggedinuser)) {
+ $dels++;
+ } else {
+ push @errors, {failed_delete=>$_};
+ }
+}
+
+if ($is_ajax) {
+ my $sum = 0;
+ foreach (values %counts) {$sum += $_;}
+ my $js_reply = sprintf("response = {\n\tadded: %d,\n\tdeleted: %d,\n\terrors: %d",$sum,$dels,scalar @errors);
+
+ # If no add attempts were made, flag global errors.
+ if (@globalErrorIndexes) {
+ $js_reply .= ",\n\tglobal_errors: [";
+ my $first = 1;
+ foreach (@globalErrorIndexes) {
+ $js_reply .= "," unless $first;
+ $first = 0;
+ $js_reply .= "\n\t\t$_";
+ }
+ $js_reply .= "\n\t]";
+ }
+
+ my $err_string = '';
+ if (scalar @errors) {
+ $err_string = ",\n\talerts: ["; # open response_function
+ my $i = 1;
+ foreach (@errors) {
+ my $key = (keys %$_)[0];
+ $err_string .= "\n\t\t KOHA.Tags.tag_message.$key(\"" . $_->{$key} . '")';
+ if($i < scalar @errors){ $err_string .= ","; }
+ $i++;
+ }
+ $err_string .= "\n\t]\n"; # close response_function
+ }
+
+ # Add per-biblionumber results for use on results page
+ my $js_perbib = "";
+ for my $bib (keys %$perBibResults) {
+ my $bibResult = $perBibResults->{$bib};
+ my $js_bibres = ",\n\t$bib: {\n\t\tadded: $bibResult->{adds}";
+ $js_bibres .= ",\n\t\terrors: [";
+ my $i = 0;
+ foreach (@{$bibResult->{errors}}) {
+ $js_bibres .= "," if ($i);
+ my $key = (keys %$_)[0];
+ $js_bibres .= "\n\t\t\t KOHA.Tags.tag_message.$key(\"" . $_->{$key} . '")';
+ $i++;
+ }
+ $js_bibres .= "\n\t\t]\n\t}";
+ $js_perbib .= $js_bibres;
+ }
+
+ output_with_http_headers($query, undef, "$js_reply\n$err_string\n$js_perbib\n};", 'js');
+ exit;