Merge remote branch 'kc/new/enh/bug_5692' into kcmaster
This commit is contained in:
commit
9bb2554e39
3 changed files with 263 additions and 0 deletions
110
cataloguing/value_builder/unimarc_field_210c_bis.pl
Executable file
110
cataloguing/value_builder/unimarc_field_210c_bis.pl
Executable file
|
@ -0,0 +1,110 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
# Copyright 2000-2002 Katipo Communications
|
||||
#
|
||||
# This file is part of Koha.
|
||||
#
|
||||
# Koha is free software; you can redistribute it and/or modify it under the
|
||||
# terms of the GNU General Public License as published by the Free Software
|
||||
# Foundation; either version 2 of the License, or (at your option) any later
|
||||
# version.
|
||||
#
|
||||
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with Koha; if not, write to the Free Software Foundation, Inc.,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
This plugin is used to map isbn/editor with collection.
|
||||
It need :
|
||||
in thesaurus, a category named EDITORS
|
||||
in this category, datas must be entered like following :
|
||||
isbn separator editor separator collection.
|
||||
for example :
|
||||
2204 -- Cerf -- Cogitatio fidei
|
||||
2204 -- Cerf -- Le Magistere de l'Eglise
|
||||
2204 -- Cerf -- Lectio divina
|
||||
2204 -- Cerf -- Lire la Bible
|
||||
2204 -- Cerf -- Pour lire
|
||||
2204 -- Cerf -- Sources chretiennes
|
||||
|
||||
when the user clic on ... on 225a line, the popup shows the list of collections from the selected editor
|
||||
if the biblio has no isbn, then the search if done on editor only
|
||||
If the biblio ha an isbn, the search is done on isbn and editor. It's faster.
|
||||
|
||||
=over 2
|
||||
|
||||
=cut
|
||||
|
||||
use strict;
|
||||
|
||||
#use warnings; FIXME - Bug 2505
|
||||
use C4::Auth;
|
||||
use CGI;
|
||||
use C4::Context;
|
||||
|
||||
use C4::AuthoritiesMarc;
|
||||
use C4::Output;
|
||||
|
||||
=head1
|
||||
|
||||
plugin_parameters : other parameters added when the plugin is called by the dopop function
|
||||
|
||||
=cut
|
||||
|
||||
sub plugin_parameters {
|
||||
my ( $dbh, $record, $tagslib, $i, $tabloop ) = @_;
|
||||
return "";
|
||||
}
|
||||
|
||||
sub plugin_javascript {
|
||||
my ( $dbh, $record, $tagslib, $field_number, $tabloop ) = @_;
|
||||
my $function_name = $field_number;
|
||||
my $res = "
|
||||
<script type=\"text/javascript\">
|
||||
function Focus$function_name(subfield_managed) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
function Blur$function_name(subfield_managed) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
function Clic$function_name(index) {
|
||||
window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_210c_bis.pl&index=\"+index,\"unimarc210c\",'width=500,height=400,toolbar=false,scrollbars=no');
|
||||
}
|
||||
</script>
|
||||
";
|
||||
|
||||
return ( $function_name, $res );
|
||||
}
|
||||
|
||||
sub plugin {
|
||||
my ($input) = @_;
|
||||
my $index = $input->param('index');
|
||||
my $result = $input->param('result');
|
||||
my $editor_found = $input->param('editor_found');
|
||||
my $authoritysep = C4::Context->preference("authoritysep");
|
||||
warn Data::Dumper::Dumper $index;
|
||||
|
||||
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
|
||||
{ template_name => "cataloguing/value_builder/unimarc_field_210c_bis.tmpl",
|
||||
query => $input,
|
||||
type => "intranet",
|
||||
authnotrequired => 0,
|
||||
flagsrequired => { editcatalogue => '*' },
|
||||
debug => 1,
|
||||
}
|
||||
);
|
||||
|
||||
$template->param(
|
||||
index => $index,
|
||||
);
|
||||
output_html_with_http_headers $input, $cookie, $template->output;
|
||||
}
|
||||
|
||||
1;
|
78
cataloguing/ysearch.pl
Executable file
78
cataloguing/ysearch.pl
Executable file
|
@ -0,0 +1,78 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
# This software is placed under the gnu General Public License, v2 (http://www.gnu.org/licenses/gpl.html)
|
||||
|
||||
# Copyright 2007 Tamil s.a.r.l.
|
||||
#
|
||||
# This file is part of Koha.
|
||||
#
|
||||
# Koha is free software; you can redistribute it and/or modify it under the
|
||||
# terms of the GNU General Public License as published by the Free Software
|
||||
# Foundation; either version 2 of the License, or (at your option) any later
|
||||
# version.
|
||||
#
|
||||
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with Koha; if not, write to the Free Software Foundation, Inc.,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
=head1 ysearch.pl
|
||||
|
||||
|
||||
=cut
|
||||
|
||||
use strict;
|
||||
|
||||
#use warnings; FIXME - Bug 2505
|
||||
use CGI;
|
||||
use C4::Context;
|
||||
use C4::Auth qw/check_cookie_auth/;
|
||||
|
||||
my $input = new CGI;
|
||||
my $query = $input->param('query');
|
||||
my $table = $input->param('table');
|
||||
my $field = $input->param('field');
|
||||
|
||||
# Prevent from disclosing data
|
||||
die() unless ($table eq "biblioitems");
|
||||
|
||||
binmode STDOUT, ":utf8";
|
||||
print $input->header( -type => 'text/plain', -charset => 'UTF-8' );
|
||||
|
||||
my ( $auth_status, $sessionID ) = check_cookie_auth( $input->cookie('CGISESSID'), { cataloguing => '*' } );
|
||||
if ( $auth_status ne "ok" ) {
|
||||
exit 0;
|
||||
}
|
||||
|
||||
my $dbh = C4::Context->dbh;
|
||||
my $sql = qq(SELECT distinct $field
|
||||
FROM $table
|
||||
WHERE $field LIKE ? OR $field LIKE ? or $field LIKE ?);
|
||||
$sql .= qq( ORDER BY $field);
|
||||
my $sth = $dbh->prepare($sql);
|
||||
$sth->execute("$query%", "% $query%", "%-$query%");
|
||||
|
||||
while ( my $rec = $sth->fetchrow_hashref ) {
|
||||
print nsb_clean($rec->{$field}) . "\n";
|
||||
}
|
||||
|
||||
sub nsb_clean {
|
||||
my $NSB = '\x88' ; # NSB : begin Non Sorting Block
|
||||
my $NSE = '\x89' ; # NSE : Non Sorting Block end
|
||||
my $NSB2 = '\x98' ; # NSB : begin Non Sorting Block
|
||||
my $NSE2 = '\x9C' ; # NSE : Non Sorting Block end
|
||||
# handles non sorting blocks
|
||||
my ($string) = @_ ;
|
||||
$_ = $string ;
|
||||
s/$NSB//g ;
|
||||
s/$NSE//g ;
|
||||
s/$NSB2//g ;
|
||||
s/$NSE2//g ;
|
||||
$string = $_ ;
|
||||
|
||||
return($string) ;
|
||||
}
|
||||
|
|
@ -0,0 +1,75 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD Xhtml 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>UNIMARC_Field 225a builder</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<script type="text/javascript" src="[% yuipath %]/utilities/utilities.js"></script>
|
||||
<script type="text/javascript" src="[% yuipath %]/datasource/datasource.js"></script>
|
||||
<script type="text/javascript" src="[% yuipath %]/autocomplete/autocomplete-min.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="[% themelang %]/css/staff-global.css" />
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div id="header_search">
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
YAHOO.util.Event.onContentReady("header_search", function() {
|
||||
new function() {
|
||||
// Define a custom formatter function
|
||||
this.fnCustomFormatter = function(oResultItem, sQuery) {
|
||||
var name = oResultItem[0];
|
||||
var aMarkup = [
|
||||
"<div class=\"sample-result\">",
|
||||
name,
|
||||
"<\/div>"];
|
||||
return (aMarkup.join(""));
|
||||
};
|
||||
|
||||
// Instantiate one XHR DataSource and define schema as an array:
|
||||
// ["Record Delimiter",
|
||||
// "Field Delimiter"]
|
||||
this.oACDS = new YAHOO.widget.DS_XHR("/cgi-bin/koha/cataloguing/ysearch.pl", ["\n", "\t"]);
|
||||
this.oACDS.scriptQueryAppend = "table=biblioitems&field=publishercode";
|
||||
this.oACDS.responseType = YAHOO.widget.DS_XHR.TYPE_FLAT;
|
||||
this.oACDS.maxCacheEntries = 60;
|
||||
this.oACDS.queryMatchSubset = false;
|
||||
|
||||
// Instantiate first AutoComplete
|
||||
var myInput = document.getElementById('findvalue');
|
||||
var myContainer = document.getElementById('yvaluecontainer');
|
||||
this.oAutoComp = new YAHOO.widget.AutoComplete(myInput,myContainer,this.oACDS);
|
||||
//this.oAutoComp.delimChar = ";";
|
||||
this.oAutoComp.queryDelay = 1;
|
||||
this.oAutoComp.formatResult = this.fnCustomFormatter;
|
||||
this.oAutoComp.maxResultsDisplayed = 1000;
|
||||
}
|
||||
});
|
||||
//]]>
|
||||
</script>
|
||||
<div id="mainbloc">
|
||||
|
||||
<div id="plugin">
|
||||
<div class="autocomplete">
|
||||
<form name="f_pop" onsubmit="javascript:report()" action="">
|
||||
<div id="borrowerautocomplete" class="autocomplete">
|
||||
<input autocomplete="off" id="findvalue" name="findvalue" size="40" class="focus" type="text" /><br /><br />
|
||||
<input id="ysearchsubmit" type="submit" class="submit" value="Submit" />
|
||||
<div id="yvaluecontainer"></div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
function report() {
|
||||
var doc = opener.document;
|
||||
var field = doc.getElementById("[% index %]");
|
||||
field.value = document.f_pop.findvalue.value;
|
||||
|
||||
window.close();
|
||||
return false;
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in a new issue