Bug 6536: Add a form for SRU Field mapping
authorMarcel de Rooy <m.de.rooy@rijksmuseum.nl>
Thu, 22 May 2014 13:37:29 +0000 (15:37 +0200)
committerTomas Cohen Arazi <tomascohen@gmail.com>
Mon, 1 Sep 2014 13:08:50 +0000 (10:08 -0300)
This form allows you to enter the match between the standard names of
the Z3950 search fields and the field names for a specific SRU server.
This patch only adds the form; it will be used in a subsequent patch.

Test plan:
Not needed, but you can call the form by constructing a URL like:
    cgi-bin/koha/admin/sru_modmapping.pl?mapping=title=1,author=2
You should see the form with title and author filled.
Note that you cannot save the information yet.

Signed-off-by: Giuseppe Angilella <giuseppe.angilella@ct.infn.it>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
admin/sru_modmapping.pl [new file with mode: 0755]
koha-tmpl/intranet-tmpl/prog/en/modules/admin/sru_modmapping.tt [new file with mode: 0644]

diff --git a/admin/sru_modmapping.pl b/admin/sru_modmapping.pl
new file mode 100755 (executable)
index 0000000..d5ef116
--- /dev/null
@@ -0,0 +1,46 @@
+#!/usr/bin/perl
+
+# Copyright 2014 Rijksmuseum
+#
+# 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>.
+
+use Modern::Perl;
+use CGI;
+use C4::Auth;
+use C4::Output;
+
+# Initialize CGI, template
+
+my $input = new CGI;
+my $mapstr = $input->param('mapping')//'';
+my ( $template, $loggedinuser, $cookie ) = get_template_and_user( {
+    template_name => "admin/sru_modmapping.tt",
+    query => $input,
+    type => "intranet",
+    authnotrequired => 0,
+});
+
+# Main code: convert mapping string to hash structure and show template
+
+my %map;
+foreach my $singlemap ( split ',', $mapstr ) {
+    my @temp = split '=', $singlemap;
+    $map{ $temp[0] } = $temp[1] if @temp>1;
+}
+$template->param( mapping => \%map );
+output_html_with_http_headers $input, $cookie, $template->output;
+
+# End of main code
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/sru_modmapping.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/sru_modmapping.tt
new file mode 100644 (file)
index 0000000..6ededf6
--- /dev/null
@@ -0,0 +1,91 @@
+[% INCLUDE 'doc-head-open.inc' %]
+<title>Koha &rsaquo; SRU Search fields mapping</title>
+[% INCLUDE 'doc-head-close.inc' %]
+
+<script type="text/javascript">
+//<![CDATA[
+    $(document).ready(function() {
+        $("#form01").submit(function(event) {
+            if(window.opener) {
+                var newmap=allInputs();
+                window.opener.$('#show_sru_fields').val(newmap);
+                window.close();
+            } else {
+                // In this case not called as a popup. Just do nothing.
+                event.preventDefault();
+            }
+        });
+    });
+    function allInputs () {
+        var aInput= new Array();
+        $("form :input").each(function() {
+            if( this.id && $(this).val() ) {
+                aInput.push(this.id+'='+$(this).val());
+            }
+        });
+        return aInput.join(',');
+    }
+//]]>
+</script>
+</head>
+
+<body id="sru_modmapping">
+<div id="custom-doc" class="yui-t7">
+
+    <div id="bd">
+        <h1>Modify SRU Search fields mapping</h1>
+        <form id="form01" method="post">
+            <fieldset class="rows">
+                <legend>Legend </legend>
+                <ul>
+                <li>
+                <label for="Title">Title: </label>
+                <input id="title" type="text" value="[% mapping.title %]" />
+                </li>
+                <li>
+                <label for="ISBN">ISBN: </label>
+                <input id="isbn" type="text" value="[% mapping.isbn %]" />
+                </li>
+                <li>
+                <label for="LCCall">LC Call No: </label>
+                <input id="lccall" type="text" value="[% mapping.lccall %]" />
+                </li>
+                <li>
+                <label for="Control number">Control no: </label>
+                <input id="controlnumber" type="text" value="[% mapping.controlnumber %]" />
+                </li>
+                <li>
+                <label for="Any">Any: </label>
+                <input id="srchany" type="text" value="[% mapping.srchany %]" />
+                </li>
+                <li>
+                <label for="Author">Author: </label>
+                <input id="author" type="text" value="[% mapping.author %]" />
+                </li>
+                <li>
+                <label for="ISSN">ISSN: </label>
+                <input id="issn" type="text" value="[% mapping.issn %]" />
+                </li>
+                <li>
+                <label for="Subject">Subject: </label>
+                <input id="subject" type="text" value="[% mapping.subject %]" />
+                </li>
+                <li>
+                <label for="Dewey">Dewey: </label>
+                <input id="dewey" type="text" value="[% mapping.dewey %]" />
+                </li>
+                <li>
+                <label for="Standard ID">Standard ID: </label>
+                <input id="stdid" type="text" value="[% mapping.stdid %]" />
+                </li>
+
+                </ul>
+            </fieldset>
+            <fieldset class="action">
+                <input type="submit" value="Save" class="submit" />
+                <a class="close cancel" href="#">Cancel</a>
+            </fieldset>
+        </form>
+    </div>
+
+[% INCLUDE 'intranet-bottom.inc' %]