Bugzilla – Attachment 116220 Details for
Bug 20410
Remove OpacGroupResults system preference and feature
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 20410: Remove OpacGroupResults and PazPar2
Bug-20410-Remove-OpacGroupResults-and-PazPar2.patch (text/plain), 91.03 KB, created by
Jonathan Druart
on 2021-02-02 15:04:55 UTC
(
hide
)
Description:
Bug 20410: Remove OpacGroupResults and PazPar2
Filename:
MIME Type:
Creator:
Jonathan Druart
Created:
2021-02-02 15:04:55 UTC
Size:
91.03 KB
patch
obsolete
>From 26a23abc63cbfecfcbdda8949ac8eb6582d136ee Mon Sep 17 00:00:00 2001 >From: Jonathan Druart <jonathan.druart@bugs.koha-community.org> >Date: Tue, 2 Feb 2021 16:00:22 +0100 >Subject: [PATCH] Bug 20410: Remove OpacGroupResults and PazPar2 > >This feature is not used as far as we know and it's not known to work. >It's preferable to remove it. > >Test plan: >Make sure the OpacGroupResults pref code is removed, as well as the >PazPar2 files and code. >--- > C4/Search.pm | 75 ---- > C4/UsageStats.pm | 1 - > Makefile.PL | 61 +-- > debian/koha-common.install | 1 - > debian/koha-core.install | 1 - > debian/templates/koha-conf-site.xml.in | 14 - > etc/koha-conf.xml | 14 - > etc/pazpar2/MARC21slimUtils.xsl | 65 --- > etc/pazpar2/koha-biblios.xml | 30 -- > etc/pazpar2/marc21-work-groups.xsl | 199 ---------- > etc/pazpar2/marc21.xsl | 288 -------------- > etc/pazpar2/pazpar2.xml | 100 ----- > etc/pazpar2/pz2-ourl-base.xsl | 169 -------- > etc/pazpar2/pz2-ourl-marc21.xsl | 97 ----- > .../data/mysql/atomicupdate/bug_20410.perl | 8 + > .../modules/admin/preferences/searching.pref | 7 - > .../en/modules/opac-results-grouped.tt | 373 ------------------ > misc/bin/koha-pazpar2-ctl.sh | 62 --- > misc/koha-install-log | 6 - > opac/opac-search.pl | 53 +-- > rewrite-config.PL | 14 - > t/db_dependent/UsageStats.t | 1 - > 22 files changed, 24 insertions(+), 1615 deletions(-) > delete mode 100644 etc/pazpar2/MARC21slimUtils.xsl > delete mode 100644 etc/pazpar2/koha-biblios.xml > delete mode 100644 etc/pazpar2/marc21-work-groups.xsl > delete mode 100644 etc/pazpar2/marc21.xsl > delete mode 100644 etc/pazpar2/pazpar2.xml > delete mode 100644 etc/pazpar2/pz2-ourl-base.xsl > delete mode 100644 etc/pazpar2/pz2-ourl-marc21.xsl > create mode 100644 installer/data/mysql/atomicupdate/bug_20410.perl > delete mode 100644 koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-results-grouped.tt > delete mode 100755 misc/bin/koha-pazpar2-ctl.sh > >diff --git a/C4/Search.pm b/C4/Search.pm >index 864d4bd11b..0b50169ae0 100644 >--- a/C4/Search.pm >+++ b/C4/Search.pm >@@ -23,7 +23,6 @@ use C4::Koha; # getFacets > use Koha::DateUtils; > use Koha::Libraries; > use Lingua::Stem; >-use C4::Search::PazPar2; > use XML::Simple; > use C4::XSLT; > use C4::Reserves; # GetReserveStatus >@@ -804,80 +803,6 @@ sub _get_facets_info { > return $facets_info; > } > >-sub pazGetRecords { >- my ( >- $koha_query, $simple_query, $sort_by_ref, $servers_ref, >- $results_per_page, $offset, $branches, $query_type, >- $scan >- ) = @_; >- #NOTE: Parameter $branches is not used here ! >- >- my $paz = C4::Search::PazPar2->new(C4::Context->config('pazpar2url')); >- $paz->init(); >- $paz->search($simple_query); >- sleep 1; # FIXME: WHY? >- >- # do results >- my $results_hashref = {}; >- my $stats = XMLin($paz->stat); >- my $results = XMLin($paz->show($offset, $results_per_page, 'work-title:1'), forcearray => 1); >- >- # for a grouped search result, the number of hits >- # is the number of groups returned; 'bib_hits' will have >- # the total number of bibs. >- $results_hashref->{'biblioserver'}->{'hits'} = $results->{'merged'}->[0]; >- $results_hashref->{'biblioserver'}->{'bib_hits'} = $stats->{'hits'}; >- >- HIT: foreach my $hit (@{ $results->{'hit'} }) { >- my $recid = $hit->{recid}->[0]; >- >- my $work_title = $hit->{'md-work-title'}->[0]; >- my $work_author; >- if (exists $hit->{'md-work-author'}) { >- $work_author = $hit->{'md-work-author'}->[0]; >- } >- my $group_label = (defined $work_author) ? "$work_title / $work_author" : $work_title; >- >- my $result_group = {}; >- $result_group->{'group_label'} = $group_label; >- $result_group->{'group_merge_key'} = $recid; >- >- my $count = 1; >- if (exists $hit->{count}) { >- $count = $hit->{count}->[0]; >- } >- $result_group->{'group_count'} = $count; >- >- for (my $i = 0; $i < $count; $i++) { >- # FIXME -- may need to worry about diacritics here >- my $rec = $paz->record($recid, $i); >- push @{ $result_group->{'RECORDS'} }, $rec; >- } >- >- push @{ $results_hashref->{'biblioserver'}->{'GROUPS'} }, $result_group; >- } >- >- # pass through facets >- my $termlist_xml = $paz->termlist('author,subject'); >- my $terms = XMLin($termlist_xml, forcearray => 1); >- my @facets_loop = (); >- #die Dumper($results); >-# foreach my $list (sort keys %{ $terms->{'list'} }) { >-# my @facets = (); >-# foreach my $facet (sort @{ $terms->{'list'}->{$list}->{'term'} } ) { >-# push @facets, { >-# facet_label_value => $facet->{'name'}->[0], >-# }; >-# } >-# push @facets_loop, ( { >-# type_label => $list, >-# facets => \@facets, >-# } ); >-# } >- >- return ( undef, $results_hashref, \@facets_loop ); >-} >- > # TRUNCATION > sub _detect_truncation { > my ( $operand, $index ) = @_; >diff --git a/C4/UsageStats.pm b/C4/UsageStats.pm >index e743d8e88c..aef95499e4 100644 >--- a/C4/UsageStats.pm >+++ b/C4/UsageStats.pm >@@ -291,7 +291,6 @@ sub BuildReport { > TalkingTechItivaPhoneNotification > uppercasesurnames > IncludeSeeFromInSearches >- OpacGroupResults > QueryAutoTruncate > QueryFuzzy > QueryStemming >diff --git a/Makefile.PL b/Makefile.PL >index b2d48ae65f..91d4b3c36b 100644 >--- a/Makefile.PL >+++ b/Makefile.PL >@@ -94,7 +94,6 @@ Makefile.PL - Koha packager and installer > --koha_user Koha Unix user (e.g. koha) > --koha_group Koha Unix group (e.g. koha) > --install_sru Install the SRU server (yes, no) >- --install_pazpar2 Install PazPar2 (yes, no) > --use_memcached Use Memcached (yes, no) > --font_dir Location of fonts (e.g. /usr/share/fonts/truetype/dejavu) > --run_database_tests Run database dependent tests (yes, no) >@@ -280,10 +279,6 @@ Directory for backup files produced by Koha. > > Directory for external Koha plugins. > >-=item PAZPAR2_CONF_DIR >- >-Directory for PazPar2 configuration files. >- > =item FONT_DIR > > Directory where DejaVu fonts are installed. >@@ -328,7 +323,6 @@ my $target_map = { > './etc' => { target => 'KOHA_CONF_DIR', trimdir => -1 }, > './etc/zebradb' => { target => 'ZEBRA_CONF_DIR', trimdir => -1 }, > './etc/z3950' => { target => 'Z3950_CONF_DIR', trimdir => -1 }, >- './etc/pazpar2' => { target => 'PAZPAR2_CONF_DIR', trimdir => -1 }, > './help.pl' => 'INTRANET_CGI_DIR', > './ill' => 'INTRANET_CGI_DIR', > './installer-CPAN.pl' => 'NONE', >@@ -517,7 +511,6 @@ my %config_defaults = ( > 'DB_TLS_CLIENT_CERTIFICATE' => '/etc/mysql-ssl/client-cert.pem', > 'DB_TLS_CLIENT_KEY' => '/etc/mysql-ssl/client-key.pem', > 'INSTALL_SRU' => 'yes', >- 'INSTALL_PAZPAR2' => 'no', > 'ZEBRA_MARC_FORMAT' => 'marc21', > 'ZEBRA_LANGUAGE' => 'en', > 'ZEBRA_TOKENIZER' => 'chr', >@@ -530,8 +523,6 @@ my %config_defaults = ( > 'KOHA_GROUP' => 'koha', > 'MERGE_SERVER_HOST' => 'localhost', > 'MERGE_SERVER_PORT' => '11001', >- 'PAZPAR2_HOST' => 'localhost', >- 'PAZPAR2_PORT' => '11002', > 'RUN_DATABASE_TESTS' => 'no', > 'PATH_TO_ZEBRA' => '', > 'USE_MEMCACHED' => 'yes', >@@ -603,7 +594,6 @@ my $cli_zebra_sru_auth_port = ""; > my $cli_koha_user = ""; > my $cli_koha_group = ""; > my $cli_koha_install_sru = ""; >-my $cli_koha_install_pazpar2 = ""; > my $cli_koha_use_memcached = ""; > my $cli_koha_font_dir = ""; > my $cli_koha_run_database_tests = ""; >@@ -638,7 +628,6 @@ my $results = GetOptions( > "koha_user=s" => \$cli_koha_user, > "koha_group=s" => \$cli_koha_group, > "install_sru=s" => \$cli_koha_install_sru, >- "install_pazpar2=s" => \$cli_koha_install_pazpar2, > "use_memcached=s" => \$cli_koha_use_memcached, > "font_dir=s" => \$cli_koha_font_dir, > "run_database_tests=s" => \$cli_koha_run_database_tests, >@@ -692,15 +681,8 @@ push @{ $pl_files->{'rewrite-config.PL'} }, ( > ); > push @{ $pl_files->{'rewrite-config.PL'} }, ( > 'blib/SCRIPT_DIR/koha-zebra-ctl.sh', >- 'blib/SCRIPT_DIR/koha-pazpar2-ctl.sh', > 'blib/SCRIPT_DIR/koha-index-daemon-ctl.sh', > ); >-if ($config{'INSTALL_PAZPAR2'} eq 'yes') { >- push @{ $pl_files->{'rewrite-config.PL'} }, ( >- 'blib/PAZPAR2_CONF_DIR/koha-biblios.xml', >- 'blib/PAZPAR2_CONF_DIR/pazpar2.xml' >- ); >-} > $config{'ZEBRA_AUTH_CFG'} = 'zebra-authorities-dom.cfg'; > $config{'ZEBRA_BIB_CFG'} = 'zebra-biblios-dom.cfg'; > $config{'AUTH_RETRIEVAL_CFG'} = 'retrieval-info-auth-dom.xml'; >@@ -921,7 +903,6 @@ sub get_cli_values { > KOHA_USER => $cli_koha_user, > KOHA_GROUP => $cli_koha_group, > INSTALL_SRU => $cli_koha_install_sru, >- INSTALL_PAZPAR2 => $cli_koha_install_pazpar2, > USE_MEMCACHED => $cli_koha_use_memcached, > FONT_DIR => $cli_koha_font_dir, > RUN_DATABASE_TESTS => $cli_koha_run_database_tests, >@@ -1232,41 +1213,6 @@ SRU port for authority data?); > > } > >- $msg = q( >-Along with Zebra, you can also choose to install PazPar2, >-which is a metasearch tool. With PazPar2, >-Koha can perform on-the-fly merging of bibliographic >-records during searching, allowing for FRBRization of >-the results list. >- >-Install the PazPar2 configuration files?); >- $msg .= _add_valid_values_disp('INSTALL_PAZPAR2', $valid_values); >- $config{'INSTALL_PAZPAR2'} = _get_value('INSTALL_PAZPAR2', $msg, $defaults->{'INSTALL_PAZPAR2'}, $valid_values, $install_log_values); >- >- if ($config{'INSTALL_PAZPAR2'} eq 'yes') { >- $msg = q( >-Since you've chosen to configure PazPar2, you must >-specify the host and port(s) that PazPar2 >-uses: >-); >- $msg = q( >-Zebra bibliographic server host?); >- $config{'MERGE_SERVER_HOST'} = _get_value('MERGE_SERVER_HOST', $msg, $defaults->{'MERGE_SERVER_HOST'}, $valid_values, $install_log_values); >- >- $msg = q( >-Zebra bibliographic port for PazPar2 to use?); >- $config{'MERGE_SERVER_PORT'} = _get_value('MERGE_SERVER_PORT', $msg, $defaults->{'MERGE_SERVER_PORT'}, $valid_values, $install_log_values); >- >- $msg = q( >-PazPar2 host?); >- $config{'PAZPAR2_HOST'} = _get_value('PAZPAR2_HOST', $msg, $defaults->{'PAZPAR2_HOST'}, $valid_values, $install_log_values); >- >- $msg = q( >-PazPar2 port?); >- $config{'PAZPAR2_PORT'} = _get_value('PAZPAR2_PORT', $msg, $defaults->{'PAZPAR2_PORT'}, $valid_values, $install_log_values); >- >- } >- > $msg = q( > Use memcached to cache the results of some function calls? > This provides a significant performance improvement. >@@ -1489,7 +1435,6 @@ sub get_target_directories { > $dirmap{'KOHA_CONF_DIR'} = File::Spec->catdir(@basedir, $package, 'etc'); > $dirmap{'ZEBRA_CONF_DIR'} = File::Spec->catdir(@basedir, $package, 'etc', 'zebradb'); > $dirmap{'Z3950_CONF_DIR'} = File::Spec->catdir(@basedir, $package, 'etc', 'z3950'); >- $dirmap{'PAZPAR2_CONF_DIR'} = File::Spec->catdir(@basedir, $package, 'etc', 'pazpar2'); > $dirmap{'MISC_DIR'} = File::Spec->catdir(@basedir, $package, 'misc'); > $dirmap{'SCRIPT_DIR'} = File::Spec->catdir(@basedir, $package, 'bin'); > $dirmap{'SCRIPT_NONDEV_DIR'} = $dirmap{'SCRIPT_DIR'}; >@@ -1523,7 +1468,6 @@ sub get_target_directories { > $dirmap{'KOHA_CONF_DIR'} = File::Spec->catdir(@basedir, $package, 'etc'); > $dirmap{'ZEBRA_CONF_DIR'} = File::Spec->catdir(@basedir, $package, 'etc', 'zebradb'); > $dirmap{'Z3950_CONF_DIR'} = File::Spec->catdir(@basedir, $package, 'etc', 'z3950'); >- $dirmap{'PAZPAR2_CONF_DIR'} = File::Spec->catdir(@basedir, $package, 'etc', 'pazpar2'); > $dirmap{'MISC_DIR'} = File::Spec->catdir(@basedir, $package, 'misc'); > $dirmap{'SCRIPT_DIR'} = File::Spec->catdir(@basedir, $package, 'bin'); > #For dev install, point NONDEV_DIR to misc in current dir (not base) >@@ -1552,7 +1496,6 @@ sub get_target_directories { > $dirmap{'KOHA_CONF_DIR'} = File::Spec->catdir(File::Spec->rootdir(), 'etc', $package); > $dirmap{'ZEBRA_CONF_DIR'} = File::Spec->catdir(File::Spec->rootdir(), 'etc', $package, 'zebradb'); > $dirmap{'Z3950_CONF_DIR'} = File::Spec->catdir(File::Spec->rootdir(), 'etc', $package, 'z3950'); >- $dirmap{'PAZPAR2_CONF_DIR'} = File::Spec->catdir(File::Spec->rootdir(), 'etc', $package, 'pazpar2'); > $dirmap{'MISC_DIR'} = File::Spec->catdir(@basedir, $package, 'misc'); > $dirmap{'SCRIPT_DIR'} = File::Spec->catdir(@basedir, $package, 'bin'); > $dirmap{'SCRIPT_NONDEV_DIR'} = $dirmap{'SCRIPT_DIR'}; >@@ -1782,8 +1725,6 @@ sub _update_zebra_conf_target { > $target .= "\t\t\$(KOHA_INST_ZEBRA_CONF_DIR) \$(KOHA_DEST_ZEBRA_CONF_DIR) \n"; > $target .= "\t\$(NOECHO) chmod -R u+w \$(KOHA_DEST_ZEBRA_CONF_DIR)\n"; > $target .= "\tumask 022; \$(MOD_INSTALL) \\\n"; >- $target .= "\t\t\$(KOHA_INST_PAZPAR2_CONF_DIR) \$(KOHA_DEST_PAZPAR2_CONF_DIR) \n"; >- $target .= "\t\$(NOECHO) chmod -R u+w \$(KOHA_DEST_PAZPAR2_CONF_DIR)\n"; > > return $target; > } >@@ -1809,7 +1750,7 @@ make_upgrade_backup :: > \t\$(NOECHO) umask 022; \$(MOD_BACKUP) \\ > /; > foreach my $key (qw/KOHA_CONF_DIR INTRANET_TMPL_DIR INTRANET_WWW_DIR OPAC_TMPL_DIR OPAC_WWW_DIR >- PAZPAR2_CONF_DIR ZEBRA_CONF_DIR PLUGINS_DIR/) { >+ ZEBRA_CONF_DIR PLUGINS_DIR/) { > $upgrade .= "\t\t\$(KOHA_INST_$key) \$(KOHA_DEST_$key) \\\n" > unless exists $skip_directories->{$key} or > not exists $target_directories->{$key}; >diff --git a/debian/koha-common.install b/debian/koha-common.install >index 7bc5b7e781..2f5c793d11 100644 >--- a/debian/koha-common.install >+++ b/debian/koha-common.install >@@ -1,5 +1,4 @@ > debian/tmp/usr/* usr >-debian/tmp/etc/koha/pazpar2 > debian/tmp/etc/koha/zebradb/[!z]* > debian/tmp/etc/koha/z3950 > debian/templates/* etc/koha >diff --git a/debian/koha-core.install b/debian/koha-core.install >index 7bc5b7e781..2f5c793d11 100644 >--- a/debian/koha-core.install >+++ b/debian/koha-core.install >@@ -1,5 +1,4 @@ > debian/tmp/usr/* usr >-debian/tmp/etc/koha/pazpar2 > debian/tmp/etc/koha/zebradb/[!z]* > debian/tmp/etc/koha/z3950 > debian/templates/* etc/koha >diff --git a/debian/templates/koha-conf-site.xml.in b/debian/templates/koha-conf-site.xml.in >index 1480ddeb88..d6ebd44498 100644 >--- a/debian/templates/koha-conf-site.xml.in >+++ b/debian/templates/koha-conf-site.xml.in >@@ -10,19 +10,6 @@ __START_SRU_PUBLICSERVER__ > <listen id="publicserver" >tcp:@:__SRU_BIBLIOS_PORT__</listen> > __END_SRU_PUBLICSERVER__ > >-<!-- Settings for special biblio server instance for PazPar2. >- Because PazPar2 only connects to a Z39.50 server using TCP/IP, >- it cannot use the Unix-domain socket that biblioserver uses. >- Therefore, a custom server is defined. --> >-<!-- >-<listen id="mergeserver">tcp:@:__MERGE_SERVER_PORT__</listen> >-<server id="mergeserver" listenref="mergeserver"> >- <directory>/var/lib/koha/__KOHASITE__/biblios</directory> >- <config>/etc/koha/sites/__KOHASITE__/zebra-biblios-dom.cfg</config> >- <cql2rpn>/var/lib/koha/__KOHASITE__/pqf.properties</cql2rpn> >-</server> >---> >- > <!-- BIBLIOGRAPHIC RECORDS --> > <server id="biblioserver" listenref="biblioserver"> > <directory>/var/lib/koha/__KOHASITE__/biblios</directory> >@@ -297,7 +284,6 @@ __END_SRU_PUBLICSERVER__ > tool --> > <backup_db_via_tools>0</backup_db_via_tools> > <backup_conf_via_tools>0</backup_conf_via_tools> >- <!-- <pazpar2url>http://__PAZPAR2_HOST__:__PAZPAR2_PORT__/search.pz2</pazpar2url> --> > <install_log>/usr/share/koha/misc/koha-install-log</install_log> > <useldapserver>0</useldapserver><!-- see C4::Auth_with_ldap for extra configs you must add if you want to turn this on --> > <useshibboleth>0</useshibboleth><!-- see C4::Auth_with_shibboleth for extra configs you must do to turn this on --> >diff --git a/etc/koha-conf.xml b/etc/koha-conf.xml >index 8b15553066..c5f827ba8d 100644 >--- a/etc/koha-conf.xml >+++ b/etc/koha-conf.xml >@@ -14,19 +14,6 @@ > <listen id="publicserver" >tcp:@:__ZEBRA_SRU_BIBLIOS_PORT__</listen> > --> > >-<!-- Settings for special biblio server instance for PazPar2. >- Because PazPar2 only connects to a Z39.50 server using TCP/IP, >- it cannot use the Unix-domain socket that biblioserver uses. >- Therefore, a custom server is defined. --> >-__PAZPAR2_TOGGLE_XML_PRE__ >-<listen id="mergeserver">tcp:@:__MERGE_SERVER_PORT__</listen> >-<server id="mergeserver" listenref="mergeserver"> >- <directory>__ZEBRA_DATA_DIR__/biblios</directory> >- <config>__ZEBRA_CONF_DIR__/__ZEBRA_BIB_CFG__</config> >- <cql2rpn>__ZEBRA_CONF_DIR__/pqf.properties</cql2rpn> >-</server> >-__PAZPAR2_TOGGLE_XML_POST__ >- > <!-- BIBLIOGRAPHIC RECORDS --> > <server id="biblioserver" listenref="biblioserver"> > <directory>__ZEBRA_DATA_DIR__/biblios</directory> >@@ -114,7 +101,6 @@ __PAZPAR2_TOGGLE_XML_POST__ > <!-- > <supportdir>__SCRIPT_NONDEV_DIR__</supportdir> > --> >- <pazpar2url>http://__PAZPAR2_HOST__:__PAZPAR2_PORT__/search.pz2</pazpar2url> > <install_log>__MISC_DIR__/koha-install-log</install_log> > <useldapserver>0</useldapserver><!-- see C4::Auth_with_ldap for extra configs you must add if you want to turn this on --> > <useshibboleth>0</useshibboleth><!-- see C4::Auth_with_shibboleth for extra configs you must do to turn this on --> >diff --git a/etc/pazpar2/MARC21slimUtils.xsl b/etc/pazpar2/MARC21slimUtils.xsl >deleted file mode 100644 >index 27c40eeb71..0000000000 >--- a/etc/pazpar2/MARC21slimUtils.xsl >+++ /dev/null >@@ -1,65 +0,0 @@ >-<?xml version='1.0'?> >-<xsl:stylesheet version="1.0" xmlns:marc="http://www.loc.gov/MARC21/slim" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> >- <xsl:template name="datafield"> >- <xsl:param name="tag"/> >- <xsl:param name="ind1"><xsl:text> </xsl:text></xsl:param> >- <xsl:param name="ind2"><xsl:text> </xsl:text></xsl:param> >- <xsl:param name="subfields"/> >- <xsl:element name="datafield"> >- <xsl:attribute name="tag"> >- <xsl:value-of select="$tag"/> >- </xsl:attribute> >- <xsl:attribute name="ind1"> >- <xsl:value-of select="$ind1"/> >- </xsl:attribute> >- <xsl:attribute name="ind2"> >- <xsl:value-of select="$ind2"/> >- </xsl:attribute> >- <xsl:copy-of select="$subfields"/> >- </xsl:element> >- </xsl:template> >- >- <xsl:template name="subfieldSelect"> >- <xsl:param name="codes"/> >- <xsl:param name="delimeter"><xsl:text> </xsl:text></xsl:param> >- <xsl:variable name="str"> >- <xsl:for-each select="marc:subfield"> >- <xsl:if test="contains($codes, @code)"> >- <xsl:value-of select="text()"/><xsl:value-of select="$delimeter"/> >- </xsl:if> >- </xsl:for-each> >- </xsl:variable> >- <xsl:value-of select="substring($str,1,string-length($str)-string-length($delimeter))"/> >- </xsl:template> >- >- <xsl:template name="buildSpaces"> >- <xsl:param name="spaces"/> >- <xsl:param name="char"><xsl:text> </xsl:text></xsl:param> >- <xsl:if test="$spaces>0"> >- <xsl:value-of select="$char"/> >- <xsl:call-template name="buildSpaces"> >- <xsl:with-param name="spaces" select="$spaces - 1"/> >- <xsl:with-param name="char" select="$char"/> >- </xsl:call-template> >- </xsl:if> >- </xsl:template> >- >- <xsl:template name="chopPunctuation"> >- <xsl:param name="chopString"/> >- <xsl:variable name="length" select="string-length($chopString)"/> >- <xsl:choose> >- <xsl:when test="$length=0"/> >- <xsl:when test="contains('.:,;/ ', substring($chopString,$length,1))"> >- <xsl:call-template name="chopPunctuation"> >- <xsl:with-param name="chopString" select="substring($chopString,1,$length - 1)"/> >- </xsl:call-template> >- </xsl:when> >- <xsl:when test="not($chopString)"/> >- <xsl:otherwise><xsl:value-of select="$chopString"/></xsl:otherwise> >- </xsl:choose> >- </xsl:template> >-</xsl:stylesheet><!-- Stylus Studio meta-information - (c)1998-2002 eXcelon Corp. >-<metaInformation> >-<scenarios/><MapperInfo srcSchemaPath="" srcSchemaRoot="" srcSchemaPathIsRelative="yes" srcSchemaInterpretAsXML="no" destSchemaPath="" destSchemaRoot="" destSchemaPathIsRelative="yes" destSchemaInterpretAsXML="no"/> >-</metaInformation> >---> >\ No newline at end of file >diff --git a/etc/pazpar2/koha-biblios.xml b/etc/pazpar2/koha-biblios.xml >deleted file mode 100644 >index dc0fba0a28..0000000000 >--- a/etc/pazpar2/koha-biblios.xml >+++ /dev/null >@@ -1,30 +0,0 @@ >-<settings target="__MERGE_SERVER_HOST__:__MERGE_SERVER_PORT__/biblios"> >- >- <set name="pz:name" value="Koha bib database"/> >- >- <!-- This file introduces default settings for pazpar2 --> >- <!-- $Id: loc.xml,v 1.2 2007-07-10 13:43:07 adam Exp $ --> >- >- <!-- mapping for unqualified search --> >- <set name="pz:cclmap:term" value="u=1016 t=l,r s=al"/> >- >- <!-- field-specific mappings --> >- >- <set name="pz:cclmap:au" value="u=1004 s=al"/> >- <set name="pz:cclmap:ti" value="u=4 s=al"/> >- <set name="pz:cclmap:su" value="u=21 s=al"/> >- <set name="pz:cclmap:isbn" value="u=7"/> >- <set name="pz:cclmap:issn" value="u=8"/> >- <set name="pz:cclmap:date" value="u=30 r=r"/> >- >- <!-- Retrieval settings --> >- >- <set name="pz:requestsyntax" value="marc21"/> >- <set name="pz:elements" value="F"/> >- >- <!-- Result normalization settings --> >- >- <set name="pz:nativesyntax" value="iso2709"/> >- <set name="pz:xslt" value="__ZEBRA_MARC_FORMAT__-work-groups.xsl"/> >- >-</settings> >diff --git a/etc/pazpar2/marc21-work-groups.xsl b/etc/pazpar2/marc21-work-groups.xsl >deleted file mode 100644 >index 62515730f4..0000000000 >--- a/etc/pazpar2/marc21-work-groups.xsl >+++ /dev/null >@@ -1,199 +0,0 @@ >-<?xml version="1.0" encoding="UTF-8"?> >-<!-- $Id: marc21.xsl,v 1.22 2007-10-04 12:01:15 adam Exp $ --> >-<xsl:stylesheet >- version="1.0" >- xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >- xmlns:pz="http://www.indexdata.com/pazpar2/1.0" >- xmlns:marc="http://www.loc.gov/MARC21/slim"> >- >- >- <xsl:output indent="yes" method="xml" version="1.0" encoding="UTF-8"/> >- >-<!-- Extract metadata from MARC21/USMARC >- http://www.loc.gov/marc/bibliographic/ecbdhome.html >---> >- <xsl:include href="MARC21slimUtils.xsl" /> >- <xsl:include href="pz2-ourl-marc21.xsl" /> >- >- <xsl:template match="/marc:record"> >- <xsl:variable name="title_medium" select="marc:datafield[@tag='245']/marc:subfield[@code='h']"/> >- <xsl:variable name="journal_title" select="marc:datafield[@tag='773']/marc:subfield[@code='t']"/> >- <xsl:variable name="electronic_location_url" select="marc:datafield[@tag='856']/marc:subfield[@code='u']"/> >- <xsl:variable name="medium"> >- <xsl:choose> >- <xsl:when test="$title_medium"> >- <xsl:value-of select="substring-after(substring-before($title_medium,']'),'[')"/> >- </xsl:when> >- <xsl:when test="$electronic_location_url"> >- <xsl:text>electronic resource</xsl:text> >- </xsl:when> >- <xsl:when test="$journal_title"> >- <xsl:text>article</xsl:text> >- </xsl:when> >- <xsl:otherwise> >- <xsl:text>book</xsl:text> >- </xsl:otherwise> >- </xsl:choose> >- </xsl:variable> >- >- <xsl:variable name="uniform_title_key"> >- <xsl:choose> >- <xsl:when test="marc:datafield[@tag='130']"> >- <xsl:for-each select="marc:datafield[@tag='130']"> >- <xsl:call-template name="subfieldSelect"> >- <xsl:with-param name="codes">adgknmpr</xsl:with-param> >- </xsl:call-template> >- </xsl:for-each> >- </xsl:when> >- <xsl:when test="marc:datafield[@tag='240']"> >- <xsl:for-each select="marc:datafield[@tag='240']"> >- <xsl:call-template name="subfieldSelect"> >- <xsl:with-param name="codes">adgknmpr</xsl:with-param> >- </xsl:call-template> >- </xsl:for-each> >- </xsl:when> >- <xsl:when test="marc:datafield[@tag='243']"> >- <xsl:for-each select="marc:datafield[@tag='243']"> >- <xsl:call-template name="subfieldSelect"> >- <xsl:with-param name="codes">adgknmpr</xsl:with-param> >- </xsl:call-template> >- </xsl:for-each> >- </xsl:when> >- </xsl:choose> >- </xsl:variable> >- >- <xsl:variable name="title_key"> >- <xsl:for-each select="marc:datafield[@tag='245']"> >- <xsl:call-template name="subfieldSelect"> >- <xsl:with-param name="codes">abnp</xsl:with-param> >- </xsl:call-template> >- </xsl:for-each> >- </xsl:variable> >- >- <xsl:variable name="work_title"> >- <xsl:choose> >- <xsl:when test="$uniform_title_key != ''"> >- <xsl:value-of select="$uniform_title_key" /> >- </xsl:when> >- <xsl:otherwise> >- <xsl:value-of select="$title_key" /> >- </xsl:otherwise> >- </xsl:choose> >- </xsl:variable> >- >- <xsl:variable name="non_ut_main_entry_key"> >- <xsl:choose> >- <xsl:when test="marc:datafield[@tag='100']"> >- <xsl:for-each select="marc:datafield[@tag='100']"> >- <xsl:call-template name="subfieldSelect"> >- <xsl:with-param name="codes">abcd</xsl:with-param> >- </xsl:call-template> >- </xsl:for-each> >- </xsl:when> >- <xsl:when test="marc:datafield[@tag='110']"> >- <xsl:for-each select="marc:datafield[@tag='110']"> >- <xsl:call-template name="subfieldSelect"> >- <xsl:with-param name="codes">abcd</xsl:with-param> >- </xsl:call-template> >- </xsl:for-each> >- </xsl:when> >- <xsl:when test="marc:datafield[@tag='111']"> >- <xsl:for-each select="marc:datafield[@tag='111']"> >- <xsl:call-template name="subfieldSelect"> >- <xsl:with-param name="codes">abcdnq</xsl:with-param> >- </xsl:call-template> >- </xsl:for-each> >- </xsl:when> >- </xsl:choose> >- </xsl:variable> >- >- <xsl:variable name="mergekey"> >- <xsl:text>titlekey </xsl:text> >- <xsl:value-of select="$work_title" /> >- <xsl:if test="$non_ut_main_entry_key != ''"> >- <xsl:text> namemainentry </xsl:text> >- <xsl:value-of select="$non_ut_main_entry_key" /> >- </xsl:if> >- </xsl:variable> >- >- <pz:record> >- <xsl:attribute name="mergekey"> >- <xsl:value-of select="$mergekey"/> >- </xsl:attribute> >- >- <xsl:for-each select="marc:datafield[@tag='999']"> >- <pz:metadata type="kohaid"> >- <xsl:value-of select="marc:subfield[@code='c']"/> >- </pz:metadata> >- </xsl:for-each> >- >-<!-- >- <xsl:for-each select="marc:datafield[@tag='020']"> >- <pz:metadata type="isbn"> >- <xsl:value-of select="marc:subfield[@code='a']"/> >- </pz:metadata> >- </xsl:for-each> >---> >- >- <xsl:for-each select="marc:datafield[@tag='245']"> >- <pz:metadata type="work-title"> >- <xsl:value-of select="$work_title" /> >- </pz:metadata> >- </xsl:for-each> >- >- <xsl:if test="$non_ut_main_entry_key != ''"> >- <pz:metadata type="work-author"> >- <xsl:value-of select="$non_ut_main_entry_key" /> >- </pz:metadata> >- </xsl:if> >-<!-- >- <xsl:for-each select="marc:datafield[@tag='250']"> >- <pz:metadata type="edition"> >- <xsl:value-of select="marc:subfield[@code='a']"/> >- </pz:metadata> >- </xsl:for-each> >- >- <xsl:for-each select="marc:datafield[@tag='260']"> >- <pz:metadata type="publication-place"> >- <xsl:value-of select="marc:subfield[@code='a']"/> >- </pz:metadata> >- <pz:metadata type="publication-name"> >- <xsl:value-of select="marc:subfield[@code='b']"/> >- </pz:metadata> >- <pz:metadata type="publication-date"> >- <xsl:value-of select="marc:subfield[@code='c']"/> >- </pz:metadata> >- </xsl:for-each> >---> >- >-<!-- >- <xsl:for-each select="marc:datafield[@tag='300']"> >- <pz:metadata type="physical-extent"> >- <xsl:value-of select="marc:subfield[@code='a']"/> >- </pz:metadata> >- <pz:metadata type="physical-format"> >- <xsl:value-of select="marc:subfield[@code='b']"/> >- </pz:metadata> >- <pz:metadata type="physical-dimensions"> >- <xsl:value-of select="marc:subfield[@code='c']"/> >- </pz:metadata> >- <pz:metadata type="physical-accomp"> >- <xsl:value-of select="marc:subfield[@code='e']"/> >- </pz:metadata> >- <pz:metadata type="physical-unittype"> >- <xsl:value-of select="marc:subfield[@code='f']"/> >- </pz:metadata> >- <pz:metadata type="physical-unitsize"> >- <xsl:value-of select="marc:subfield[@code='g']"/> >- </pz:metadata> >- <pz:metadata type="physical-specified"> >- <xsl:value-of select="marc:subfield[@code='3']"/> >- </pz:metadata> >- </xsl:for-each> >---> >- >- </pz:record> >- >- </xsl:template> >- >-</xsl:stylesheet> >diff --git a/etc/pazpar2/marc21.xsl b/etc/pazpar2/marc21.xsl >deleted file mode 100644 >index f47642cc0a..0000000000 >--- a/etc/pazpar2/marc21.xsl >+++ /dev/null >@@ -1,288 +0,0 @@ >-<?xml version="1.0" encoding="UTF-8"?> >-<!-- $Id: marc21.xsl,v 1.22 2007-10-04 12:01:15 adam Exp $ --> >-<xsl:stylesheet >- version="1.0" >- xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >- xmlns:pz="http://www.indexdata.com/pazpar2/1.0" >- xmlns:marc="http://www.loc.gov/MARC21/slim"> >- >- >- <xsl:output indent="yes" method="xml" version="1.0" encoding="UTF-8"/> >- >-<!-- Extract metadata from MARC21/USMARC >- http://www.loc.gov/marc/bibliographic/ecbdhome.html >---> >- <xsl:include href="pz2-ourl-marc21.xsl" /> >- >- <xsl:template match="/marc:record"> >- <xsl:variable name="title_medium" select="marc:datafield[@tag='245']/marc:subfield[@code='h']"/> >- <xsl:variable name="journal_title" select="marc:datafield[@tag='773']/marc:subfield[@code='t']"/> >- <xsl:variable name="electronic_location_url" select="marc:datafield[@tag='856']/marc:subfield[@code='u']"/> >- <xsl:variable name="fulltext_a" select="marc:datafield[@tag='900']/marc:subfield[@code='a']"/> >- <xsl:variable name="fulltext_b" select="marc:datafield[@tag='900']/marc:subfield[@code='b']"/> >- <xsl:variable name="medium"> >- <xsl:choose> >- <xsl:when test="$title_medium"> >- <xsl:value-of select="substring-after(substring-before($title_medium,']'),'[')"/> >- </xsl:when> >- <xsl:when test="$fulltext_a"> >- <xsl:text>electronic resource</xsl:text> >- </xsl:when> >- <xsl:when test="$fulltext_b"> >- <xsl:text>electronic resource</xsl:text> >- </xsl:when> >- <xsl:when test="$electronic_location_url"> >- <xsl:text>electronic resource</xsl:text> >- </xsl:when> >- <xsl:when test="$journal_title"> >- <xsl:text>article</xsl:text> >- </xsl:when> >- <xsl:otherwise> >- <xsl:text>book</xsl:text> >- </xsl:otherwise> >- </xsl:choose> >- </xsl:variable> >- >- <xsl:variable name="mergekey"> >- <xsl:text>title </xsl:text> >- <xsl:choose> >- <xsl:when test="marc:datafield[@tag='240']"> >- <xsl:value-of select="marc:datafield[@tag='240']/marc:subfield[@code='a']"/> >- </xsl:when> >- <xsl:otherwise> >- <xsl:value-of select="marc:datafield[@tag='245']/marc:subfield[@code='a']"/> >- </xsl:otherwise> >- </xsl:choose> >- <xsl:text> author </xsl:text> >- <xsl:value-of select="marc:datafield[@tag='100']/marc:subfield[@code='a']"/> >-<!-- >- <xsl:text> medium </xsl:text> >- <xsl:value-of select="$medium"/> >---> >- </xsl:variable> >- >- <pz:record> >- <xsl:attribute name="mergekey"> >- <xsl:value-of select="$mergekey"/> >- </xsl:attribute> >- >- >- <xsl:for-each select="marc:controlfield[@tag='001']"> >- <pz:metadata type="id"> >- <xsl:value-of select="."/> >- </pz:metadata> >- </xsl:for-each> >- >- <xsl:for-each select="marc:datafield[@tag='010']"> >- <pz:metadata type="lccn"> >- <xsl:value-of select="marc:subfield[@code='a']"/> >- </pz:metadata> >- </xsl:for-each> >- >- <xsl:for-each select="marc:datafield[@tag='999']"> >- <pz:metadata type="kohaid"> >- <xsl:value-of select="marc:subfield[@code='c']"/> >- </pz:metadata> >- </xsl:for-each> >- >- >- <xsl:for-each select="marc:datafield[@tag='020']"> >- <pz:metadata type="isbn"> >- <xsl:value-of select="marc:subfield[@code='a']"/> >- </pz:metadata> >- </xsl:for-each> >- >- <xsl:for-each select="marc:datafield[@tag='022']"> >- <pz:metadata type="issn"> >- <xsl:value-of select="marc:subfield[@code='a']"/> >- </pz:metadata> >- </xsl:for-each> >- >- <xsl:for-each select="marc:datafield[@tag='027']"> >- <pz:metadata type="tech-rep-nr"> >- <xsl:value-of select="marc:subfield[@code='a']"/> >- </pz:metadata> >- </xsl:for-each> >- >- <xsl:for-each select="marc:datafield[@tag='100']"> >- <pz:metadata type="author"> >- <xsl:value-of select="marc:subfield[@code='a']"/> >- </pz:metadata> >- <pz:metadata type="author-title"> >- <xsl:value-of select="marc:subfield[@code='c']"/> >- </pz:metadata> >- <pz:metadata type="author-date"> >- <xsl:value-of select="marc:subfield[@code='d']"/> >- </pz:metadata> >- </xsl:for-each> >- >- <xsl:for-each select="marc:datafield[@tag='110']"> >- <pz:metadata type="corporate-name"> >- <xsl:value-of select="marc:subfield[@code='a']"/> >- </pz:metadata> >- <pz:metadata type="corporate-location"> >- <xsl:value-of select="marc:subfield[@code='c']"/> >- </pz:metadata> >- <pz:metadata type="corporate-date"> >- <xsl:value-of select="marc:subfield[@code='d']"/> >- </pz:metadata> >- </xsl:for-each> >- >- <xsl:for-each select="marc:datafield[@tag='111']"> >- <pz:metadata type="meeting-name"> >- <xsl:value-of select="marc:subfield[@code='a']"/> >- </pz:metadata> >- <pz:metadata type="meeting-location"> >- <xsl:value-of select="marc:subfield[@code='c']"/> >- </pz:metadata> >- <pz:metadata type="meeting-date"> >- <xsl:value-of select="marc:subfield[@code='d']"/> >- </pz:metadata> >- </xsl:for-each> >- >- <xsl:for-each select="marc:datafield[@tag='260']"> >- <pz:metadata type="date"> >- <xsl:value-of select="marc:subfield[@code='c']"/> >- </pz:metadata> >- </xsl:for-each> >- >- <xsl:for-each select="marc:datafield[@tag='245']"> >- <pz:metadata type="title"> >- <xsl:value-of select="marc:subfield[@code='a']"/> >- </pz:metadata> >- <pz:metadata type="title-remainder"> >- <xsl:value-of select="marc:subfield[@code='b']"/> >- </pz:metadata> >- <pz:metadata type="title-responsibility"> >- <xsl:value-of select="marc:subfield[@code='c']"/> >- </pz:metadata> >- <pz:metadata type="title-dates"> >- <xsl:value-of select="marc:subfield[@code='f']"/> >- </pz:metadata> >- <pz:metadata type="title-medium"> >- <xsl:value-of select="marc:subfield[@code='h']"/> >- </pz:metadata> >- <pz:metadata type="title-number-section"> >- <xsl:value-of select="marc:subfield[@code='n']"/> >- </pz:metadata> >- </xsl:for-each> >- >- <xsl:for-each select="marc:datafield[@tag='250']"> >- <pz:metadata type="edition"> >- <xsl:value-of select="marc:subfield[@code='a']"/> >- </pz:metadata> >- </xsl:for-each> >- >- <xsl:for-each select="marc:datafield[@tag='260']"> >- <pz:metadata type="publication-place"> >- <xsl:value-of select="marc:subfield[@code='a']"/> >- </pz:metadata> >- <pz:metadata type="publication-name"> >- <xsl:value-of select="marc:subfield[@code='b']"/> >- </pz:metadata> >- <pz:metadata type="publication-date"> >- <xsl:value-of select="marc:subfield[@code='c']"/> >- </pz:metadata> >- </xsl:for-each> >- >- <xsl:for-each select="marc:datafield[@tag='300']"> >- <pz:metadata type="physical-extent"> >- <xsl:value-of select="marc:subfield[@code='a']"/> >- </pz:metadata> >- <pz:metadata type="physical-format"> >- <xsl:value-of select="marc:subfield[@code='b']"/> >- </pz:metadata> >- <pz:metadata type="physical-dimensions"> >- <xsl:value-of select="marc:subfield[@code='c']"/> >- </pz:metadata> >- <pz:metadata type="physical-accomp"> >- <xsl:value-of select="marc:subfield[@code='e']"/> >- </pz:metadata> >- <pz:metadata type="physical-unittype"> >- <xsl:value-of select="marc:subfield[@code='f']"/> >- </pz:metadata> >- <pz:metadata type="physical-unitsize"> >- <xsl:value-of select="marc:subfield[@code='g']"/> >- </pz:metadata> >- <pz:metadata type="physical-specified"> >- <xsl:value-of select="marc:subfield[@code='3']"/> >- </pz:metadata> >- </xsl:for-each> >- >- <xsl:for-each select="marc:datafield[@tag='440']"> >- <pz:metadata type="series-title"> >- <xsl:value-of select="marc:subfield[@code='a']"/> >- </pz:metadata> >- </xsl:for-each> >- >- <xsl:for-each select="marc:datafield[@tag >= 500 and @tag <= 599] >- [@tag != '506' and @tag != '530' and >- @tag != '540' and @tag != '546' >- and @tag != '522']"> >- <pz:metadata type="description"> >- <xsl:value-of select="*/text()"/> >- </pz:metadata> >- </xsl:for-each> >- >- <xsl:for-each select="marc:datafield[@tag='650' or @tag='653']"> >- <pz:metadata type="subject"> >- <xsl:value-of select="marc:subfield[@code='a']"/> >- </pz:metadata> >- <pz:metadata type="subject-long"> >- <xsl:for-each select="marc:subfield"> >- <xsl:if test="position() > 1"> >- <xsl:text>, </xsl:text> >- </xsl:if> >- <xsl:value-of select="."/> >- </xsl:for-each> >- </pz:metadata> >- </xsl:for-each> >- >- <xsl:for-each select="marc:datafield[@tag='856']"> >- <pz:metadata type="electronic-url"> >- <xsl:value-of select="marc:subfield[@code='u']"/> >- </pz:metadata> >- <pz:metadata type="electronic-text"> >- <xsl:value-of select="marc:subfield[@code='y']"/> >- </pz:metadata> >- <pz:metadata type="electronic-note"> >- <xsl:value-of select="marc:subfield[@code='z']"/> >- </pz:metadata> >- </xsl:for-each> >- >- <xsl:for-each select="marc:datafield[@tag='773']"> >- <pz:metadata type="citation"> >- <xsl:for-each select="*"> >- <xsl:value-of select="normalize-space(.)"/> >- <xsl:text> </xsl:text> >- </xsl:for-each> >- </pz:metadata> >- </xsl:for-each> >- >- <pz:metadata type="medium"> >- <xsl:value-of select="$medium"/> >- </pz:metadata> >- >- <xsl:if test="$fulltext_a"> >- <pz:metadata type="fulltext"> >- <xsl:value-of select="$fulltext_a"/> >- </pz:metadata> >- </xsl:if> >- >- <xsl:if test="$fulltext_b"> >- <pz:metadata type="fulltext"> >- <xsl:value-of select="$fulltext_b"/> >- </pz:metadata> >- </xsl:if> >- >- <xsl:if test="$open_url_resolver"> >- <pz:metadata type="open-url"> >- <xsl:call-template name="insert-md-openurl" /> >- </pz:metadata> >- </xsl:if> >- >- </pz:record> >- >- </xsl:template> >- >-</xsl:stylesheet> >diff --git a/etc/pazpar2/pazpar2.xml b/etc/pazpar2/pazpar2.xml >deleted file mode 100644 >index 2269647975..0000000000 >--- a/etc/pazpar2/pazpar2.xml >+++ /dev/null >@@ -1,100 +0,0 @@ >-<?xml version="1.0" encoding="UTF-8"?> >-<!-- $Id: pazpar2.cfg.dist,v 1.21 2007-10-04 12:01:15 adam Exp $ --> >-<pazpar2 xmlns="http://www.indexdata.com/pazpar2/1.0"> >- >- <server> >- <listen port="__PAZPAR2_PORT__"/> >- <settings src="__PAZPAR2_CONF_DIR__/koha-biblios.xml"/> >- >- <relevance> >- <icu_chain id="relevance" locale="el"> >- <normalize rule="[:Control:] Any-Remove"/> >- <tokenize rule="l"/> >- <normalize rule="[[:WhiteSpace:][:Punctuation:]] Remove"/> >- <casemap rule="l"/> >- <index/> >- </icu_chain> >- </relevance> >- >- <sort> >- <icu_chain id="sort" locale="el"> >- <normalize rule="[[:Control:][:WhiteSpace:][:Punctuation:]] Remove"/> >- <casemap rule="l"/> >- <sortkey/> >- </icu_chain> >- </sort> >- >- <mergekey> >- <icu_chain id="mergekey" locale="el"> >- <tokenize rule="l"/> >- <normalize rule="[[:Control:][:WhiteSpace:][:Punctuation:]] Remove"/> >- <casemap rule="l"/> >- <index/> >- </icu_chain> >- </mergekey> >- >- <service> >- <!-- we try to keep same order as in marc21.xsl --> >- <metadata name="id"/> >- <metadata name="lccn" merge="unique"/> >- <metadata name="kohaid" /> >- <metadata name="isbn"/> >- <metadata name="issn"/> >- <metadata name="tech-rep-nr"/> >- <metadata name="author" brief="yes" termlist="yes" merge="longest" rank="2"/> >- <metadata name="author-title"/> >- <metadata name="author-date"/> >- <metadata name="corporate-name"/> >- <metadata name="corporate-location"/> >- <metadata name="corporate-date"/> >- <metadata name="meeting-name"/> >- <metadata name="meeting-location"/> >- <metadata name="meeting-date"/> >- <metadata name="date" brief="yes" sortkey="numeric" type="year" >- merge="range" termlist="yes"/> >- <metadata name="work-title" brief="yes" sortkey="skiparticle" >- merge="longest" rank="6"/> >- <metadata name="work-author" brief="yes" sortkey="skiparticle" >- merge="longest" rank="6"/> >- <metadata name="title-remainder" brief="yes" merge="longest" rank="5"/> >- <metadata name="title-responsibility" brief="yes" /> >- <metadata name="title-dates" brief="yes" merge="longest"/> >- <metadata name="title-medium" brief="yes" merge="longest"/> >- <metadata name="title-number-section" brief="yes" merge="longest"/> >- <metadata name="medium" brief="yes" merge="longest"/> >- <metadata name="edition"/> >- <metadata name="publication-place"/> >- <metadata name="publication-name"/> >- <metadata name="publication-date"/> >- <metadata name="physical-extent"/> >- <metadata name="physical-format"/> >- <metadata name="physical-dimensions"/> >- <metadata name="physical-accomp"/> >- <metadata name="physical-unittype"/> >- <metadata name="physical-unitsize"/> >- <metadata name="physical-specified"/> >- >- <metadata name="series-title"/> >- >- <metadata name="description" merge="longest" rank="3"/> >- <metadata name="subject-long" rank="3"/> >- <metadata name="subject" termlist="yes" rank="0"/> >- <metadata name="electronic-url"/> >- <metadata name="electronic-text"/> >- <metadata name="electronic-note"/> >- <metadata name="citation"/> >- <metadata name="fulltext"/> >- >- <metadata name="url_recipe" setting="postproc"/> >- <metadata name="open_url_resolver" setting="parameter"/> >- <metadata name="open-url" merge="longest"/> >- </service> >- </server> >- >-</pazpar2> >-<!-- Keep this comment at the end of the file >- Local variables: >- mode: nxml >- End: >---> >- >diff --git a/etc/pazpar2/pz2-ourl-base.xsl b/etc/pazpar2/pz2-ourl-base.xsl >deleted file mode 100644 >index 260dc9f760..0000000000 >--- a/etc/pazpar2/pz2-ourl-base.xsl >+++ /dev/null >@@ -1,169 +0,0 @@ >-<?xml version="1.0" encoding="UTF-8"?> >-<xsl:stylesheet >- version="1.0" >- xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >- xmlns:pz="http://www.indexdata.com/pazpar2/1.0" >- xmlns:marc="http://www.loc.gov/MARC21/slim" >- xmlns:str="http://exslt.org/strings" >- extension-element-prefixes="str"> >- >- <xsl:param name="open_url_resolver"/> >- <!--<xsl:variable name="resolver">http://zeus.lib.uoc.gr:3210/sfxtst3</xsl:variable>--> >- >- <xsl:template name="insert-md-openurl"> >- >- <xsl:value-of select="$open_url_resolver" /><xsl:text>?generatedby=pz2</xsl:text> >- <xsl:call-template name="ou-parse-author" /> >- <xsl:call-template name="ou-parse-date" /> >- <xsl:call-template name="ou-parse-volume" /> >- <xsl:call-template name="ou-parse-any"> >- <xsl:with-param name="field_name" select="string('isbn')" /> >- </xsl:call-template> >- <xsl:call-template name="ou-parse-any"> >- <xsl:with-param name="field_name" select="string('issn')" /> >- </xsl:call-template> >- <xsl:call-template name="ou-parse-any"> >- <xsl:with-param name="field_name" select="string('title')" /> >- </xsl:call-template> >- <xsl:call-template name="ou-parse-any"> >- <xsl:with-param name="field_name" select="string('atitle')" /> >- </xsl:call-template> >- >- </xsl:template> >- >- <!-- parsing raw string data --> >- >- <xsl:template name="ou-parse-author" > >- <xsl:variable name="author"> >- <xsl:call-template name="ou-author" /> >- </xsl:variable> >- >- <xsl:variable name="aulast" select="normalize-space(substring-before($author, ','))"/> >- >- <xsl:variable name="aufirst" >- select="substring-before( normalize-space(substring-after($author, ',')), ' ')"/> >- >- <xsl:if test="$aulast != ''"> >- <xsl:text>&aulast=</xsl:text> >- <xsl:value-of select="$aulast" /> >- </xsl:if> >- >- <xsl:if test="string-length( translate($aufirst, '.', '') ) > 1" > >- <xsl:text>&aufirst=</xsl:text> >- <xsl:value-of select="$aufirst" /> >- </xsl:if> >- >- </xsl:template> >- >- <xsl:template name="ou-parse-volume"> >- <xsl:variable name="volume"> >- <xsl:call-template name="ou-volume" /> >- </xsl:variable> >- >- <xsl:variable name="vol" select="substring-after($volume, 'Vol')"/> >- <xsl:variable name="issue" select="false()" /> >- <xsl:variable name="spage" select="false()" /> >- >- <xsl:if test="$vol"> >- <xsl:text>&volume=</xsl:text> >- <xsl:value-of select="$vol" /> >- </xsl:if> >- >- <xsl:if test="$issue"> >- <xsl:text>&issue=</xsl:text> >- <xsl:value-of select="$issue" /> >- </xsl:if> >- >- <xsl:if test="$spage"> >- <xsl:text>&spage=</xsl:text> >- <xsl:value-of select="$vol" /> >- </xsl:if> >- >- </xsl:template> >- >- >- <xsl:template name="ou-parse-date"> >- <xsl:variable name="date"> >- <xsl:call-template name="ou-date" /> >- </xsl:variable> >- >- <xsl:variable name="parsed_date" select="translate($date, '.[]c;', '')"/> >- >- <xsl:if test="$parsed_date"> >- <xsl:text>&date=</xsl:text> >- <xsl:value-of select="$parsed_date" /> >- </xsl:if> >- >- </xsl:template> >- >- >- <xsl:template name="ou-parse-any"> >- <xsl:param name="field_name" /> >- >- <xsl:variable name="field_value"> >- <xsl:choose> >- >- <xsl:when test="$field_name = 'isbn'"> >- <xsl:call-template name="ou-isbn"/> >- </xsl:when> >- >- <xsl:when test="$field_name = 'issn'"> >- <xsl:call-template name="ou-issn"/> >- </xsl:when> >- >- <xsl:when test="$field_name = 'atitle'"> >- <xsl:call-template name="ou-atitle"/> >- </xsl:when> >- >- <xsl:when test="$field_name = 'title'"> >- <xsl:call-template name="ou-title"/> >- </xsl:when> >- >- </xsl:choose> >- </xsl:variable> >- >- <xsl:variable name="digits" select="1234567890"/> >- >- <xsl:variable name="parsed_value"> >- <xsl:choose> >- >- <xsl:when test="$field_name = 'isbn'"> >- <xsl:value-of select="translate($field_value, translate($field_value, concat($digits, 'X'), ''), '')"/> >- </xsl:when> >- >- <xsl:when test="$field_name = 'issn'"> >- <xsl:value-of select="translate($field_value, translate($field_value, concat($digits, '-', 'X'), ''), '')"/> >- </xsl:when> >- >- <xsl:when test="$field_name = 'atitle'"> >- <xsl:value-of select="translate(normalize-space($field_value), '.', '')"/> >- </xsl:when> >- >- <xsl:when test="$field_name = 'title'"> >- <xsl:value-of select="translate(normalize-space($field_value), '.', '')"/> >- </xsl:when> >- >- </xsl:choose> >- </xsl:variable> >- >- >- <xsl:if test="$parsed_value != ''"> >- <xsl:text>&</xsl:text> >- <xsl:value-of select="$field_name" /> >- <xsl:text>=</xsl:text> >- <xsl:value-of select="$parsed_value" /> >- </xsl:if> >- >- </xsl:template> >- >- >-</xsl:stylesheet> >-<!-- >-/* >- * Local variables: >- * c-basic-offset: 2 >- * indent-tabs-mode: nil >- * End: >- * vim: shiftwidth=2 tabstop=4 expandtab >- */ >---> >diff --git a/etc/pazpar2/pz2-ourl-marc21.xsl b/etc/pazpar2/pz2-ourl-marc21.xsl >deleted file mode 100644 >index 1c8efde457..0000000000 >--- a/etc/pazpar2/pz2-ourl-marc21.xsl >+++ /dev/null >@@ -1,97 +0,0 @@ >-<?xml version="1.0" encoding="UTF-8"?> >-<xsl:stylesheet >- version="1.0" >- xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >- xmlns:pz="http://www.indexdata.com/pazpar2/1.0" >- xmlns:marc="http://www.loc.gov/MARC21/slim" >- xmlns:str="http://exslt.org/strings" >- extension-element-prefixes="str"> >- >- <xsl:import href="pz2-ourl-base.xsl"/> >- >- <xsl:template name="ou-author" > >- <!-- what to do with multiple authors??--> >- <xsl:for-each select="marc:datafield[@tag='100' or @tag='700']"> >- <xsl:value-of select="marc:subfield[@code='a']"/> >- </xsl:for-each> >- </xsl:template> >- >- <xsl:template name="ou-title" > >- <!-- if 773 exists its a journal/article --> >- <xsl:choose> >- >- <xsl:when test="marc:datafield[@tag='773']/marc:subfield[@code='t']"> >- <xsl:value-of select="marc:datafield[@tag='773']/marc:subfield[@code='t']"/> >- </xsl:when> >- >- <xsl:when test="marc:datafield[@tag='245']/marc:subfield[@code='a']"> >- <xsl:value-of select="marc:datafield[@tag='245']/marc:subfield[@code='a']"/> >- </xsl:when> >- >- </xsl:choose> >- </xsl:template> >- >- >- <xsl:template name="ou-atitle" > >- <!-- return value only if article or journal --> >- <xsl:if test="marc:datafield[@tag='773']"> >- <xsl:value-of select="marc:datafield[@tag='245']/marc:subfield[@code='a']"/> >- </xsl:if> >- </xsl:template> >- >- >- <xsl:template name="ou-date" > >- <xsl:for-each select="marc:datafield[@tag='260']"> >- <xsl:value-of select="marc:subfield[@code='c']"/> >- </xsl:for-each> >- </xsl:template> >- >- >- <xsl:template name="ou-isbn" > >- <!-- if 773 exists its a journal/article --> >- <xsl:choose> >- >- <xsl:when test="marc:datafield[@tag='773']/marc:subfield[@code='z']"> >- <xsl:value-of select="marc:datafield[@tag='773']/marc:subfield[@code='z']"/> >- </xsl:when> >- >- <xsl:when test="marc:datafield[@tag='020']/marc:subfield[@code='a']"> >- <xsl:value-of select="marc:datafield[@tag='020']/marc:subfield[@code='a']"/> >- </xsl:when> >- >- </xsl:choose> >- </xsl:template> >- >- >- <xsl:template name="ou-issn" > >- <!-- if 773 exists its a journal/article --> >- <xsl:choose> >- >- <xsl:when test="marc:datafield[@tag='773']/marc:subfield[@code='x']"> >- <xsl:value-of select="marc:datafield[@tag='773']/marc:subfield[@code='x']"/> >- </xsl:when> >- >- <xsl:when test="marc:datafield[@tag='022']/marc:subfield[@code='a']"> >- <xsl:value-of select="marc:datafield[@tag='022']/marc:subfield[@code='a']"/> >- </xsl:when> >- >- </xsl:choose> >- </xsl:template> >- >- >- <xsl:template name="ou-volume" > >- <xsl:if test="marc:datafield[@tag='773']"> >- <xsl:value-of select="marc:datafield[@tag='773']/marc:subfield[@code='g']"/> >- </xsl:if> >- </xsl:template> >- >-</xsl:stylesheet> >-<!-- >-/* >- * Local variables: >- * c-basic-offset: 2 >- * indent-tabs-mode: nil >- * End: >- * vim: shiftwidth=2 tabstop=4 expandtab >- */ >---> >diff --git a/installer/data/mysql/atomicupdate/bug_20410.perl b/installer/data/mysql/atomicupdate/bug_20410.perl >new file mode 100644 >index 0000000000..2f56bbe2df >--- /dev/null >+++ b/installer/data/mysql/atomicupdate/bug_20410.perl >@@ -0,0 +1,8 @@ >+$DBversion = 'XXX'; # will be replaced by the RM >+if( CheckVersion( $DBversion ) ) { >+ $dbh->do( q{ >+ DELETE FROM systempreferences WHERE variable="OpacGroupResults" >+ }); >+ >+ NewVersion( $DBversion, 20410, "Remove OpacGroupResults"); >+} >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/searching.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/searching.pref >index 71bcbfaa1c..df5b909525 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/searching.pref >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/searching.pref >@@ -37,13 +37,6 @@ Searching: > unescape_escaped: Unescape escaped > dont_escape: Don't escape > - "regular expressions within query strings. If \"Escape\" is selected occurences of \"/\" in search terms will be automatically escaped, and regular expressions interpreted as regular strings. If \"Unescape escaped\" is selected this will allow writing regular expressions \"\/like this\/\" while \"/this/\", \"or/this\" will be escaped and interpreted as regular strings. (Elasticsearch only.)" >- - >- - pref: OpacGroupResults >- default: 0 >- choices: >- yes: Use >- no: "Don't use" >- - PazPar2 to group similar results on the OPAC. This requires that PazPar2 is set up and running. > - > - pref: TraceCompleteSubfields > default: 0 >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-results-grouped.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-results-grouped.tt >deleted file mode 100644 >index c976070934..0000000000 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-results-grouped.tt >+++ /dev/null >@@ -1,373 +0,0 @@ >-[% USE raw %] >-[% USE Asset %] >-[% USE Koha %] >-[% SET AdlibrisEnabled = Koha.Preference('AdlibrisCoversEnabled') %] >-[% SET AdlibrisURL = Koha.Preference('AdlibrisCoversURL') %] >-[% INCLUDE 'doc-head-open.inc' %] >-<title>[% IF ( LibraryNameTitle ) %][% LibraryNameTitle | html %][% ELSE %]Koha online[% END %] catalog › >-[% IF ( searchdesc ) %] >- Results of search [% IF ( query_desc ) %]for '[% query_desc | html %]'[% END %][% IF ( limit_desc ) %] with limit(s): '[% limit_desc | html %]'[% END %] >-[% ELSE %] >- You did not specify any search criteria. >-[% END %]</title> >-[% INCLUDE 'doc-head-close.inc' %] >-[% BLOCK cssinclude %][% END %] >-<link rel="alternate" type="application/rss+xml" title="Koha - RSS" href="/cgi-bin/koha/opac-rss.pl?[% query_cgi | $raw %][% limit_cgi | url %]" /> >- >-</head> >-[% INCLUDE 'bodytag.inc' bodyid='results-grouped' %] >-[% INCLUDE 'masthead.inc' %] >- >- <div class="main"> >- <nav aria-label="breadcrumb"> >- <ul class="breadcrumb"> >- <li class="breadcrumb-item"> >- <a href="/cgi-bin/koha/opac-main.pl">Home</a> >- </li> >- <li class="breadcrumb-item active" aria-current="page"> >- [% IF ( searchdesc ) %] >- <a href="#">Results of search [% IF ( query_desc ) %]for '[% query_desc | html %]'[% END %][% IF ( limit_desc ) %] with limit(s): '[% limit_desc | html %]'[% END %]</a> >- [% ELSE %] >- <a href="#">You did not specify any search criteria.</a> >- [% END %] >- </li> >- </ul> >- </nav> >- >- [% IF ( query_error ) %] >- <div class="container-fluid"> >- <div class="row"> >- <div class="col order-first order-md-first order-lg-2"> >- <div class="alert alert-warning"> >- <h4>Error:</h4> >- <p>[% query_error | html %]</p> >- </div> >- </div> <!-- / .span12 --> >- </div> <!-- / .row --> >- </div> <!-- / .container-fluid --> >- [% END %] >- >- <div class="container-fluid"> >- <div class="row"> >- [% IF ( opacfacets && total ) %] >- <div class="col-lg-2"> >- <div id="facetcontainer"> >- <!-- FACETS START --> >- [% INCLUDE 'opac-facets.inc' %] >- <!-- FACETS END --> >- </div> >- </div> >- <div class="col-10 order-first order-md-first order-lg-2"> >- [% ELSE %] >- <div class="col order-first order-md-first order-lg-2"> >- [% END %] >- <div id="grouped-results" class="maincontent"> >- <!-- Search Results Table --> >- [% IF ( total ) %] >- [% IF ( scan ) %] >- <h1>Scan index:</h1> >- <form action="/cgi-bin/koha/opac-search.pl" method="get"> >- <table> >- <tbody> >- <tr> >- <td> >- Scan index for: <input type="text" name="q" id="scan-index" size="35" value="" /> >- </td> >- </tr> >- <tr> >- <td> >- <label for="scan-index">Indexed in:</label> >- <select name="idx" id="scan-index"> >- <option value="">Any word</option> >- <option value="kw,phr:">Any phrase</option> >- <option value="ti:">Title</option> >- <option value="ti,phr:">Title phrase</option> >- <option value="au,phr:">Author</option> >- <option value="su:">Subject</option> >- <option value="su,phr:">Subject phrase</option> >- <option value="se:">Series</option> >- <option value="pb:">Publisher</option> >- <option value="nt:">Notes</option> >- <option value="se:">Series Title</option> >- <option value="sn:">ISBN</option> >- <option value="ss:">ISSN</option> >- </select> >- <input type="hidden" name="scan" value="1" /> >- </td> >- </tr> >- </tbody> >- </table> >- </form> >- >- <form action="/cgi-bin/koha/opac-search.pl" method="get"> >- <table> >- <thead> >- <tr> >- <th>Term/Phrase</th> >- <th>Count</th> >- </tr> >- </thead> >- <tbody> >- [% FOREACH SEARCH_RESULT IN SEARCH_RESULTS %] >- <tr> >- <td> >- <a href="/cgi-bin/koha/opac-search.pl?q=[% SEARCH_RESULT.scan_use |url %]"[% SEARCH_RESULT.title |url %]""><span class="biblio-title">[% SEARCH_RESULT.title | html %]</span></a> >- </td> >- <td> >- [% FOREACH subtitl IN SEARCH_RESULT.subtitle.split(' | ') %][% IF Koha.Preference('marcflavour')=='UNIMARC' %],[% END %] >- <span class="subtitle">[% subtitl | html %]</span> >- [% END %] >- <span class="part-number">[% SEARCH_RESULT.part_number | html %]</span> <span class="part-name">[% SEARCH_RESULT.part_name | html %]</span> >- </td> >- </tr> >- [% END %] >- </thead> >- </table> >- </form> >- [% ELSE %] >- >- <div class="searchresults"> >- <form action="/cgi-bin/koha/opac-search.pl" method="get" name="bookbag_form" id="bookbag_form"> >- [% IF ( searchdesc ) %] >- [% FOREACH QUERY_INPUT IN QUERY_INPUTS %] >- <input type="hidden" name="[% QUERY_INPUT.input_name | html %]" value="[% QUERY_INPUT.input_value | html %]"/> >- [% END %] >- [% FOREACH LIMIT_INPUT IN LIMIT_INPUTS %] >- <input type="hidden" name="[% LIMIT_INPUT.input_name | html %]" value="[% LIMIT_INPUT.input_value | html %]"/> >- [% END %] >- [% END %] >- >- <!-- TABLE RESULTS START --> >- <table class="table table-striped"> >- <tr> >- <td colspan="3" class="resultscontrol"> >- <div class="resort"> >- <select id="sort_by" name="sort_by"> [% INCLUDE 'resort_form.inc' %] </select> >- <input type="submit" class="submit clearfix" id="sortsubmit" value="Go" /> >- </div> >- [% IF ( ( Koha.Preference( 'opacbookbag' ) == 1 ) || ( Koha.Preference( 'virtualshelves' ) == 1 ) ) %] >- <div class="cartlist"><span class="checkall"></span> >- <span class="clearall"></span> >- <a href="#" class="highlight_toggle" id="highlight_toggle_off">Unhighlight</a> >- <a href="#" class="highlight_toggle" id="highlight_toggle_on">Highlight</a> >- <span class="addto"></span></div> >- [% END %] >- </td> >- </tr> >- <!-- Actual Search Results --> >- [% FOREACH SEARCH_RESULT IN SEARCH_RESULTS %] >- <tr class="grouplabel"><td colspan="3">[% SEARCH_RESULT.group_label | html %]</td></tr> >- [% FOREACH GROUP_RESULT IN SEARCH_RESULT.GROUP_RESULTS %] >- [% IF ( GROUP_RESULT.even ) %] >- <tr class="highlight"> >- [% ELSE %] >- <tr> >- [% END %] >- <td> >- [% IF ( AdlibrisEnabled && GROUP_RESULT.normalized_isbn ) %] >- <img src="[% AdlibrisURL | html %]?isbn=[% GROUP_RESULT.normalized_isbn | html %]" class="adlibris-cover" alt="Adlibris cover image" /> >- [% END %] >- [% IF ( OPACAmazonCoverImages ) %] >- <a class="p1" href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% GROUP_RESULT.biblionumber |url %]">[% IF ( GROUP_RESULT.isbn ) %]<img src="https://images-na.ssl-images-amazon.com/images/P/[% GROUP_RESULT.isbn | html %].01.TZZZZZZZ.jpg" alt="" class="thumbnail" />[% ELSE %]<img src="http://g-images.amazon.com/images/G/01/x-site/icons/no-img-sm.gif" alt="" class="thumbnail" />[% END %] >- </a> >- [% ELSE %] >- [% UNLESS ( Koha.Preference('OpacNoItemTypeImages') ) %] >- [% IF ( GROUP_RESULT.imageurl ) %] >- <img src="[% GROUP_RESULT.imageurl | html %]" title="[% GROUP_RESULT.description | html %]" /> >- [% END %] >- [% END %] >- [% GROUP_RESULT.description | html %] >- [% END %] >- </td> >- <td> >- [% GROUP_RESULT.result_number | html %]. >- [% IF ( GROUP_RESULT.BiblioDefaultViewmarc ) %] >- <a class="title" href="/cgi-bin/koha/opac-MARCdetail.pl?biblionumber=[% GROUP_RESULT.biblionumber |url %]" title="View details for this title">[% GROUP_RESULT.title | html %] >- [% ELSE %] >- [% IF ( GROUP_RESULT.BiblioDefaultViewisbd ) %] >- <a class="title" href="/cgi-bin/koha/opac-ISBDdetail.pl?biblionumber=[% GROUP_RESULT.biblionumber |url %]" title="View details for this title">[% GROUP_RESULT.title | html %] >- [% ELSE %] >- <a class="title" href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% GROUP_RESULT.biblionumber |url %]" title="View details for this title">[% GROUP_RESULT.title | html %] >- [% END %] >- [% FOREACH subtitl IN GROUP_RESULT.subtitle %] >- [% subtitl | html %] >- [% END %] >- </a> >- [% END # / IF GROUP_RESULT.BiblioDefaultViewmarc %] >- [% IF ( GROUP_RESULT.author ) %] >- by <a href="/cgi-bin/koha/opac-search.pl?q=au:[% GROUP_RESULT.author |url %]" title="Search for works by this author">[% GROUP_RESULT.author | html %]</a> >- [% ELSE %] >- >- [% END %] >- <p> >- [% IF ( GROUP_RESULT.publicationyear ) %] - [% GROUP_RESULT.publicationyear | html %][% END %] >- [% IF ( GROUP_RESULT.publishercode ) %]- [% GROUP_RESULT.publishercode | html %][% END %] >- [% IF ( GROUP_RESULT.place ) %] ; [% GROUP_RESULT.place | html %][% END %] >- [% IF ( GROUP_RESULT.pages ) %] - [% GROUP_RESULT.pages | html %][% END %] >- [% IF ( GROUP_RESULT.notes ) %] : [% GROUP_RESULT.notes | html %][% END %] >- [% IF ( GROUP_RESULT.size ) %] ; [% GROUP_RESULT.size | html %][% END %] >- [% IF ( GROUP_RESULT.timestamp ) %] <em>(modified on [% GROUP_RESULT.timestamp | html %])</em>[% END %] >- </p> >- [% IF ( GROUP_RESULT.searchhighlightblob ) %] >- <p class="searchhighlightblob">[% GROUP_RESULT.searchhighlightblob | html %]</p> >- [% END %] >- <p class="availability"> >- [% IF ( GROUP_RESULT.available_items_loop ) %] >- <span class="available"><strong>Items available at:</strong> >- [% FOREACH available_items_loo IN GROUP_RESULT.available_items_loop %] >- [% IF ( available_items_loo.branchname ) %][% available_items_loo.branchname | html %][% END %] >- [% IF ( OPACItemsResultsDisplay ) %] >- [% IF ( available_items_loo.location ) %]<span class="shelvingloc">[% available_items_loo.location | html %]</span>[% END %] >- [% IF ( available_items_loo.itemcallnumber ) %][<a href="/cgi-bin/koha/opac-search.pl?q=callnum:[% available_items_loo.itemcallnumber |url %]">[% available_items_loo.itemcallnumber | html %]</a>][% END %] >- [% END %] >- ([% available_items_loo.count | html %]), >- [% END # / FOREACH available_items_loo %] >- </span> >- [% ELSE %] >- <span class="unavailable">No items available:</span> >- [% END # / IF GROUP_RESULT.available_items_loop %] >- <span class="unavailable"> >- [% IF ( GROUP_RESULT.onloancount ) %] Checked out ([% GROUP_RESULT.onloancount | html %]), [% END %] >- [% IF ( GROUP_RESULT.withdrawncount ) %] Withdrawn ([% GROUP_RESULT.withdrawncount | html %]), [% END %] >- [% IF ( GROUP_RESULT.itemlostcount ) %] Lost ([% GROUP_RESULT.itemlostcount | html %]),[% END %] >- [% IF ( GROUP_RESULT.damagedcount ) %] Damaged ([% GROUP_RESULT.damagedcount | html %]),[% END %] >- [% IF ( GROUP_RESULT.orderedcount ) %] On order ([% GROUP_RESULT.orderedcount | html %]),[% END %] >- [% IF ( GROUP_RESULT.intransitcount ) %] In transit ([% GROUP_RESULT.intransitcount | html %]),[% END %] >- </span> >- </p> >- <p> >- [% IF Koha.Preference( 'RequestOnOpac' ) == 1 %] >- [% UNLESS ( GROUP_RESULT.norequests ) %] >- [% IF Koha.Preference( 'opacuserlogin' ) == 1 && GROUP_RESULT.holdable %] >- <a class="hold" href="/cgi-bin/koha/opac-reserve.pl?biblionumber=[% GROUP_RESULT.biblionumber | html %]">Place hold</a><!-- add back when available 0 holds in queue--> >- [% END %] >- [% END %] >- [% END %] >- >- [% IF ( ( Koha.Preference( 'opacbookbag' ) == 1 ) || ( Koha.Preference( 'virtualshelves' ) == 1 ) ) %] >- <input type="checkbox" name="biblionumber" value="[% GROUP_RESULT.biblionumber | html %]" title="Click to add to cart" /> <label for="bib[% GROUP_RESULT.biblionumber | html %]"> >- [% END %] >- <img src="[% themelang | html %]/images/[% GROUP_RESULT.itemtype | html %].gif" alt="[% GROUP_RESULT.ccode | html %]" title="[% GROUP_RESULT.ccode | html %]" /> >- [% IF ( ( Koha.Preference( 'opacbookbag' ) = 1 ) || ( Koha.Preference( 'virtualshelves' ) == 1 ) ) %]</label>[% END %] >- [% IF ( GROUP_RESULT.classification ) %] >- <a href="/cgi-bin/koha/opac-search.pl?q=callnum:[% GROUP_RESULT.classification |url %]"> [% GROUP_RESULT.classification | html %] </a> >- [% END %] >- </p> >- </td> >- </tr> >- [% END # / FOREACH GROUP_RESULT %] >- [% END # / FOREACH SEARCH_RESULTS %] >- </table> >- </form> >- </div> <!-- / .searchresults --> >- [% END # / IF scan %] >- [% INCLUDE 'page-numbers.inc' %] >- [% END # / IF total %] >- >- [% IF Koha.Preference( 'suggestion' ) == 1 && ( Koha.Preference( 'AnonSuggestions' ) == 1 || loggedinusername || Koha.Preference( 'ILLModule' ) == 1 ) %] >- <div class="suggestion"> >- Not finding what you're looking for? >- <ul> >- [% IF Koha.Preference( 'AnonSuggestions' ) == 1 %] >- <li>Make a <a href="/cgi-bin/koha/opac-suggestions.pl?op=add">purchase suggestion</a></li> >- [% ELSE %] >- [% IF ( loggedinusername ) %] >- <li>Make a <a href="/cgi-bin/koha/opac-suggestions.pl?op=add">purchase suggestion</a></li> >- [% END %] >- [% END %] >- [% IF Koha.Preference( 'ILLModule' ) == 1 && loggedinusername %] >- <li>Make an <a href="/cgi-bin/koha/opac-illrequests.pl?op=create">Interlibrary loan request</a></li> >- [% END %] >- </ul> >- </div> >- [% END %] >- </div> <!-- / #grouped-results --> >- >- </div> <!-- /.col-10/12 --> >- </div> <!-- / .row --> >- </div> <!-- / .container-fluid --> >- </div><!-- / .main --> >- >-[% INCLUDE 'opac-bottom.inc' %] >-[% BLOCK jsinclude %] >- <script> >- var q_array = new Array(); // will hold the search terms, if possible >- $(document).ready(function(){ >- [% IF ( OpacHighlightedWords ) %] >- $('a.title').each(function() { >- $(this).attr("href", $(this).attr("href") + "&query_desc=[% query_desc | uri %]"); >- }); >- [% END %] >- >- $('#sort_by').change(function() { >- $('#bookbag_form').submit(); >- }); >- $("span.clearall").html("<a id=\"CheckNone\" class=\"btn btn-link btn-sm\" href=\"#\">" + _("Clear all") + "</a>"); >- $("span.checkall").html("<a id=\"CheckAll\" class=\"btn btn-link btn-sm\" href=\"#\">" + _("Select all") + "</a>"); >- $("span.addto").html("<label for=\"addto\">" + _("Add to: ") + "</label><select name=\"addto\" id=\"addto\"><option value=\"\"></option>[% IF Koha.Preference( 'opacbookbag' ) == 1 %]<option value=\"addtocart\">" + _("Cart") + "</option>[% END %][% IF Koha.Preference( 'virtualshelves' ) == 1 %][% IF ( loggedinusername ) %]<optgroup label=\"" + _("Lists:") + "\">[% IF ( barshelves ) %][% FOREACH barshelvesloo IN barshelvesloop %][% IF ( category == 1 ) %]<option id=\"s[% barshelvesloo.shelfnumber | html %]\" value=\"addtolist\">[% barshelvesloo.shelfname | html %]</option>[% END %][% END %][% END %]<option value=\"newlist\">" + _("[ New list ]") + "</option></optgroup>[% ELSE %]<option value=\"newlist\">" + _("List") + "</option>[% END %][% END %]</select> <input type=\"submit\" class=\"submit\" value=\"" + _("Save") + "\" />"); >- $("#addto").change(function(){ >- cartList(); >- }); >- $(".addto").find("input:submit").click(function(){ >- cartList(); >- return false; >- }); >- function cartList(){ >- if($("#addto").find("option:selected").attr("value") == "addtolist"){ >- var shelfnumber = $("#addto").find("option:selected").attr("id").replace("s",""); >- [% IF ( loggedinusername ) %]if (vShelfAdd()) { >- Dopop('/cgi-bin/koha/opac-addbybiblionumber.pl?selectedshelf='+shelfnumber+'&' + vShelfAdd()); >- }[% ELSE %] alert(_("You must be logged in to create or add to Lists")); [% END %] >- return false; >- } else if($("#addto").find("option:selected").attr("value") == "newlist"){ >- [% IF ( loggedinusername ) %]if (vShelfAdd()) { >- Dopop('/cgi-bin/koha/opac-addbybiblionumber.pl?newshelf=1&' + vShelfAdd()); >- }[% ELSE %] alert(_("You must be logged in to create or add to Lists")); [% END %] >- return false; >- } >- if($("#addto").find("option:selected").attr("value") == "addtocart"){ >- addMultiple(); >- return false; >- } >- } >- $("#CheckAll").on("click", function(e){ >- e.preventDefault(); >- $("#bookbag_form").find("input:checkbox").prop("checked", true); >- }); >- $("#CheckNone").on("click", function(e){ >- e.preventDefault(); >- $("#bookbag_form").find("input:checkbox").prop("checked", true); >- }); >- [% IF ( query_desc ) %] >- var query_desc = "[% query_desc |replace("'", "\'") |replace('\n', '\\n') |replace('\r', '\\r') | html %]"; >- q_array = query_desc.split(" "); >- // ensure that we don't have "" at the end of the array, which can >- // break the highlighter >- while (q_array.length > 0 && q_array[q_array.length-1] == "") { >- q_array = q_array.splice(0,-1); >- } >- highlightOn(); >- $("#highlight_toggle_on" ).hide().click(function() {highlightOn() ;}); >- $("#highlight_toggle_off").show().click(function() {highlightOff();}); >- [% END %] >- }); >- >- function highlightOff() { >- $("td").removeHighlight(); >- $(".highlight_toggle").toggle(); >- } >- function highlightOn() { >- var x; >- for (x in q_array) { >- q_array[x] = q_array[x].replace(/\w*:([\w])/, "$1"); >- q_array[x] = q_array[x].toLowerCase(); >- var myStopwords = "[% Koha.Preference('NotHighlightedWords') | html %]".toLowerCase().split('|'); >- if ( (q_array[x].length > 0) && ($.inArray(q_array[x], myStopwords) == -1) ) { >- $("td").highlight(q_array[x]); >- } >- } >- $(".highlight_toggle").toggle(); >- } >- >- </script> >-[% END %] >diff --git a/misc/bin/koha-pazpar2-ctl.sh b/misc/bin/koha-pazpar2-ctl.sh >deleted file mode 100755 >index 6db96dce31..0000000000 >--- a/misc/bin/koha-pazpar2-ctl.sh >+++ /dev/null >@@ -1,62 +0,0 @@ >-#!/bin/bash >- >-# 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 3 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, see <http://www.gnu.org/licenses>. >- >-### BEGIN INIT INFO >-# Provides: koha-pazpar-daemon >-# Required-Start: $syslog $remote_fs >-# Required-Stop: $syslog $remote_fs >-# Default-Start: 2 3 4 5 >-# Default-Stop: 0 1 6 >-# Short-Description: PazPar2 server daemon for Koha >-### END INIT INFO >- >-USER=__KOHA_USER__ >-GROUP=__KOHA_GROUP__ >-DBNAME=__DB_NAME__ >-NAME=koha-pazpar2-ctl.$DBNAME >-LOGDIR=__LOG_DIR__ >-ERRLOG=$LOGDIR/koha-pazpar2daemon.err >-STDOUT=$LOGDIR/koha-pazpar2daemon.log >-OUTPUT=$LOGDIR/koha-pazpar2daemon-output.log >-PAZPAR2_CONF=__PAZPAR2_CONF_DIR__/pazpar2.xml >-PAZPAR2SRV=/usr/sbin/pazpar2 >- >-test -f $PAZPAR2SRV || exit 0 >- >-OTHERUSER='' >-if [[ $EUID -eq 0 ]]; then >- OTHERUSER="--user=$USER.$GROUP" >-fi >- >-case "$1" in >- start) >- echo "Starting PazPar2 Server" >- daemon --name=$NAME --errlog=$ERRLOG --stdout=$STDOUT --output=$OUTPUT --verbose=1 --respawn --delay=30 $OTHERUSER -- $PAZPAR2SRV -f $PAZPAR2_CONF >- ;; >- stop) >- echo "Stopping PazPar2 Server" >- daemon --name=$NAME --errlog=$ERRLOG --stdout=$STDOUT --output=$OUTPUT --verbose=1 --respawn --delay=30 --stop -- $PAZPAR2SRV -f $PAZPAR2_CONF >- ;; >- restart) >- echo "Restarting the PazPar2 Server" >- daemon --name=$NAME --errlog=$ERRLOG --stdout=$STDOUT --output=$OUTPUT --verbose=1 --respawn --delay=30 --restart -- $PAZPAR2SRV -f $PAZPAR2_CONF >- ;; >- *) >- echo "Usage: /etc/init.d/$NAME {start|stop|restart}" >- exit 1 >- ;; >-esac >diff --git a/misc/koha-install-log b/misc/koha-install-log >index 885280bb16..7e56fd1876 100644 >--- a/misc/koha-install-log >+++ b/misc/koha-install-log >@@ -37,7 +37,6 @@ OPAC_WWW_DIR=__OPAC_WWW_DIR__ > PERL_MODULE_DIR=__PERL_MODULE_DIR__ > KOHA_CONF_DIR=__KOHA_CONF_DIR__ > ZEBRA_CONF_DIR=__ZEBRA_CONF_DIR__ >-PAZPAR2_CONF_DIR=__PAZPAR2_CONF_DIR__ > MISC_DIR=__MISC_DIR__ > SCRIPT_DIR=__SCRIPT_DIR__ > MAN_DIR=__MAN_DIR__ >@@ -51,15 +50,10 @@ ZEBRA_AUTH_CFG=__ZEBRA_AUTH_CFG__ > ZEBRA_BIB_CFG=__ZEBRA_BIB_CFG__ > AUTH_RETRIEVAL_CFG=__AUTH_RETRIEVAL_CFG__ > BIB_RETRIEVAL_CFG=__BIB_RETRIEVAL_CFG__ >-MERGE_SERVER_HOST=__MERGE_SERVER_HOST__ >-MERGE_SERVER_PORT=__MERGE_SERVER_PORT__ >-PAZPAR2_HOST=__PAZPAR2_HOST__ >-PAZPAR2_PORT=__PAZPAR2_PORT__ > INSTALL_MODE=__INSTALL_MODE__ > INSTALL_BASE=__INSTALL_BASE__ > INSTALL_ZEBRA=__INSTALL_ZEBRA__ > INSTALL_SRU=__INSTALL_SRU__ >-INSTALL_PAZPAR2=__INSTALL_PAZPAR2__ > ZEBRA_TOKENIZER=__ZEBRA_TOKENIZER__ > RUN_DATABASE_TESTS=__RUN_DATABASE_TESTS__ > PATH_TO_ZEBRA=__PATH_TO_ZEBRA__ >diff --git a/opac/opac-search.pl b/opac/opac-search.pl >index 2d1ac14e0a..743db92f40 100755 >--- a/opac/opac-search.pl >+++ b/opac/opac-search.pl >@@ -101,13 +101,9 @@ my @params = $cgi->multi_param("limit"); > my @searchCategories = $cgi->multi_param('searchcat'); > > my $format = $cgi->param("format") || ''; >-my $build_grouped_results = C4::Context->preference('OPACGroupResults'); > if ($format =~ /(rss|atom|opensearchdescription)/) { > $template_name = 'opac-opensearch.tt'; > } >-elsif (@params && $build_grouped_results) { >- $template_name = 'opac-results-grouped.tt'; >-} > elsif ((@params>=1) || ($cgi->param("q")) || ($cgi->param('multibranchlimit')) || ($cgi->param('limit-yr')) || @searchCategories ) { > $template_name = 'opac-results.tt'; > } >@@ -618,10 +614,6 @@ if ($tag) { > # FIXME: Because search and standard search don't work together OpacHiddenItems > # displays search results which should be hidden. > # FIXME: No facets for tags search. >-} elsif ($build_grouped_results) { >- eval { >- ($error, $results_hashref, $facets) = C4::Search::pazGetRecords($query,$simple_query,\@sort_by,\@servers,$results_per_page,$offset,undef,$query_type,$scan); >- }; > } else { > $pasarParams .= '&query=' . uri_escape_utf8($query); > $pasarParams .= '&count=' . uri_escape_utf8($results_per_page); >@@ -667,20 +659,8 @@ for (my $i=0;$i<@servers;$i++) { > if ($server && $server =~/biblioserver/) { # this is the local bibliographic server > $hits = $results_hashref->{$server}->{"hits"}; > my $page = $cgi->param('page') || 0; >- my @newresults; >- if ($build_grouped_results) { >- foreach my $group (@{ $results_hashref->{$server}->{"GROUPS"} }) { >- # because pazGetRecords handles retieving only the records >- # we want as specified by $offset and $results_per_page, >- # we need to set the offset parameter of searchResults to 0 >- my @group_results = searchResults( $search_context, $query_desc, $group->{'group_count'},$results_per_page, 0, $scan, >- $group->{"RECORDS"}, $variables); >- push @newresults, { group_label => $group->{'group_label'}, GROUP_RESULTS => \@group_results }; >- } >- } else { >- @newresults = searchResults( $search_context, $query_desc, $hits, $results_per_page, $offset, $scan, >+ my @newresults = searchResults( $search_context, $query_desc, $hits, $results_per_page, $offset, $scan, > $results_hashref->{$server}->{"RECORDS"}, $variables); >- } > $hits = 0 unless @newresults; > > my $art_req_itypes; >@@ -799,23 +779,20 @@ for (my $i=0;$i<@servers;$i++) { > exit; > } > if ($hits) { >- if ( !$build_grouped_results ) { >- # We build the encrypted list of first OPACnumSearchResults biblios to pass with the search criteria for paging on opac-detail >- $pasarParams .= '&listBiblios='; >- my $j = 0; >- foreach (@newresults) { >- my $bibnum = ($_->{biblionumber})?$_->{biblionumber}:0; >- $pasarParams .= uri_escape_utf8($bibnum) . ','; >- $j++; >- last if ($j == $results_per_page); >- } >- chop $pasarParams if ($pasarParams =~ /,$/); >- $pasarParams .= '&total=' . uri_escape_utf8( int($total) ) if ($pasarParams !~ /total=(?:[0-9]+)?/); >- if ($pasarParams) { >- my $session = get_session($cgi->cookie("CGISESSID")); >- $session->param('busc' => $pasarParams); >- } >- # >+ # We build the encrypted list of first OPACnumSearchResults biblios to pass with the search criteria for paging on opac-detail >+ $pasarParams .= '&listBiblios='; >+ my $j = 0; >+ foreach (@newresults) { >+ my $bibnum = ($_->{biblionumber})?$_->{biblionumber}:0; >+ $pasarParams .= uri_escape_utf8($bibnum) . ','; >+ $j++; >+ last if ($j == $results_per_page); >+ } >+ chop $pasarParams if ($pasarParams =~ /,$/); >+ $pasarParams .= '&total=' . uri_escape_utf8( int($total) ) if ($pasarParams !~ /total=(?:[0-9]+)?/); >+ if ($pasarParams) { >+ my $session = get_session($cgi->cookie("CGISESSID")); >+ $session->param('busc' => $pasarParams); > } > $template->param(total => $hits); > my $limit_cgi_not_availablity = $limit_cgi; >diff --git a/rewrite-config.PL b/rewrite-config.PL >index a7d4088b33..4484e60d34 100644 >--- a/rewrite-config.PL >+++ b/rewrite-config.PL >@@ -121,7 +121,6 @@ my %configuration = ( > '__PERL_MODULE_DIR__' => ($ENV{'INSTALLSITELIB'} || sprintf($prefix."/lib/perl5/site_perl/%vd",$^V))."/koha", > '__KOHA_CONF_DIR__' => "$prefix/etc/koha", > '__ZEBRA_CONF_DIR__' => "$prefix/etc/koha/zebradb", >- '__PAZPAR2_CONF_DIR__' => "$prefix/etc/koha/pazpar2", > '__MISC_DIR__' => "$prefix/misc", > '__SCRIPT_DIR__' => "$prefix/bin", > '__SCRIPT_NONDEV_DIR__' => "$prefix/bin", >@@ -140,15 +139,9 @@ my %configuration = ( > '__ZEBRA_AUTH_CFG__' => 'zebra-authorities-dom.cfg', > '__ZEBRA_BIB_CFG__' => 'zebra-biblios-dom.cfg', > "__MERGE_SERVER_HOST__" => $myhost, >- "__MERGE_SERVER_PORT__" => '11001', >- "__PAZPAR2_HOST__" => $myhost, >- "__PAZPAR2_PORT__" => '11002', > "__INSTALL_MODE__" => 'standard', > "__INSTALL_BASE__" => '/usr/share/koha', > "__INSTALL_SRU__" => 'yes', >- "__INSTALL_PAZPAR2__" => 'no', >- "__PAZPAR2_TOGGLE_XML_PRE__" => '<!--', >- "__PAZPAR2_TOGGLE_XML_POST__" => '-->', > "__RUN_DATABASE_TESTS__" => 'no', > "__PATH_TO_ZEBRA__" => "", > "__USE_MEMCACHED__" => 'yes', >@@ -175,13 +168,6 @@ foreach my $key (keys %configuration) { > } > } > >-# munge commenting out the PazPar2 mergeserver >-# entry in koha-conf.xml if necessary >-if ($configuration{'__INSTALL_PAZPAR2__'} eq 'yes') { >- $configuration{'__PAZPAR2_TOGGLE_XML_PRE__'} = ''; >- $configuration{'__PAZPAR2_TOGGLE_XML_POST__'} = ''; >-} >- > my $fname = $ARGV[0]; > my $file = &read_file($fname); > $file =~ s/__.*?__/exists $configuration{$&} ? $configuration{$&} : $&/seg; >diff --git a/t/db_dependent/UsageStats.t b/t/db_dependent/UsageStats.t >index 05c9231990..febb65ab56 100755 >--- a/t/db_dependent/UsageStats.t >+++ b/t/db_dependent/UsageStats.t >@@ -553,7 +553,6 @@ sub mocking_systempreferences_to_a_set_value { > TalkingTechItivaPhoneNotification > uppercasesurnames > IncludeSeeFromInSearches >- OpacGroupResults > QueryAutoTruncate > QueryFuzzy > QueryStemming >-- >2.20.1
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 20410
:
116220
|
116248
|
116478