From 74571a7aba9148d69710d2e97e5cc557409c0ca5 Mon Sep 17 00:00:00 2001 From: Jacek Ablewicz Date: Thu, 1 Sep 2016 21:10:57 +0200 Subject: [PATCH] Bug 17233 - Add 008 value builder plugin for MARC21 classifications Content-Type: text/plain; charset=utf-8 This patch adds 008 cataloguing value builder for MARC21 classifications records (LCC, DDC/Dewey, UDC and so on). For most practical purposes, MARC21 classification records () are quite similar to regular MARC21 authority records, so handling them in Koha is (almost) achievable by means of the built-in 'regular' MARC21 authority records related functionalities, but there are some notable differences - in particular, 008 field length and format is not the same. To test: 1) apply patch 2) link the new plugin (marc21_field_008_classifications.pl) to the 008 field in the existing (or cloned, ..) authority framework of your choice 3) try to add, edit, re-edit 008 field using this "authority" framework, ensure that the new plugin behaves as it should according to the Library of Congress specifications for MARC21 classification records 008 field format (). Signed-off-by: Mark Tompsett Signed-off-by: Marcel de Rooy --- .../marc21_field_008_classifications.pl | 97 +++++++++ .../marc21_field_008_classifications.tt | 219 +++++++++++++++++++++ 2 files changed, 316 insertions(+) create mode 100755 cataloguing/value_builder/marc21_field_008_classifications.pl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/value_builder/marc21_field_008_classifications.tt diff --git a/cataloguing/value_builder/marc21_field_008_classifications.pl b/cataloguing/value_builder/marc21_field_008_classifications.pl new file mode 100755 index 0000000..f066c7e --- /dev/null +++ b/cataloguing/value_builder/marc21_field_008_classifications.pl @@ -0,0 +1,97 @@ +#!/usr/bin/perl + +# 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 . + +use Modern::Perl; +use C4::Auth; +use CGI qw ( -utf8 ); +use C4::Context; + +use C4::Search; +use C4::Output; +use Koha::Util::FrameworkPlugin qw|date_entered|; + +use constant FIXLEN_DATA_ELTS => 'baaaaaaa'; + +my $builder = sub { + my ( $params ) = @_; + my $function_name = $params->{id}; + my $dateentered = date_entered(); + my $defaultval = FIXLEN_DATA_ELTS; + my $res=" + +"; + + return $res; +}; + +my $launcher = sub { + my ( $params ) = @_; + my $input = $params->{cgi}; + my $index = $input->param('index'); + my $result = $input->param('result'); + my $authtype = $input->param('authtypecode') || ''; + + my $defaultval = FIXLEN_DATA_ELTS; + + my ($template, $loggedinuser, $cookie) = get_template_and_user({ + template_name => "cataloguing/value_builder/marc21_field_008_classifications.tt", + query => $input, + type => "intranet", + authnotrequired => 0, + flagsrequired => { editcatalogue => '*' }, + debug => 1, + }); + my $dateentered = date_entered(); + $result = "$dateentered$defaultval" unless $result; + my @f; + for (0,6..13) { + $f[$_]=substr($result,$_,$_==0?6:1); + } + $template->param(index => $index); + + $f[0] = $dateentered if !$f[0] || $f[0]=~/\s/; + $template->param(f1 => $f[0]); + + for (6..13) { + $template->param( + "f$_" => $f[$_], + "f$_".($f[$_] eq '|'? 'pipe': $f[$_]) => $f[$_], + ); + } + output_html_with_http_headers $input, $cookie, $template->output; +}; + +return { builder => $builder, launcher => $launcher }; diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/value_builder/marc21_field_008_classifications.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/value_builder/marc21_field_008_classifications.tt new file mode 100644 index 0000000..3072f36 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/value_builder/marc21_field_008_classifications.tt @@ -0,0 +1,219 @@ +[% INCLUDE 'doc-head-open.inc' %] +Koha › Classifications › 008 builder +[% INCLUDE 'doc-head-close.inc' %] + + +

008 Fixed-length data elements

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
00-05- Date entered on file[% f1 %]
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+
Cancel
+
+ + +[% INCLUDE 'popup-bottom.inc' %] -- 2.1.4