* bugfix for the search on a MARC detail, when you clic on the magnifying glass ...
authortipaul <tipaul>
Mon, 3 Jan 2005 10:48:33 +0000 (10:48 +0000)
committertipaul <tipaul>
Mon, 3 Jan 2005 10:48:33 +0000 (10:48 +0000)
* partial support of the "linkage" MARC feature : if you enter a "link" on a MARC subfield, the magnifying glass won't search on the field, but on the linked field. I agree it's a partial support. Will be improved, but I need to investigate MARC21 & UNIMARC diffs on this topic.

C4/Biblio.pm
C4/SearchMarc.pm
koha-tmpl/intranet-tmpl/default/en/catalogue/MARCdetail.tmpl
koha-tmpl/intranet-tmpl/default/en/parameters/marc_subfields_structure.tmpl

index ef527cb..3424cdd 100644 (file)
@@ -253,7 +253,7 @@ sub MARCgettagslib {
 
     $sth =
       $dbh->prepare(
-"select tagfield,tagsubfield,$libfield as lib,tab, mandatory, repeatable,authorised_value,authtypecode,value_builder,kohafield,seealso,hidden,isurl from marc_subfield_structure where frameworkcode=? order by tagfield,tagsubfield"
+"select tagfield,tagsubfield,$libfield as lib,tab, mandatory, repeatable,authorised_value,authtypecode,value_builder,kohafield,seealso,hidden,isurl,link from marc_subfield_structure where frameworkcode=? order by tagfield,tagsubfield"
     );
     $sth->execute($frameworkcode);
 
@@ -265,12 +265,13 @@ sub MARCgettagslib {
     my $seealso;
     my $hidden;
     my $isurl;
+       my $link;
 
     while (
         ( $tag,         $subfield,   $lib,              $tab,
         $mandatory,     $repeatable, $authorised_value, $authtypecode,
         $value_builder, $kohafield,  $seealso,          $hidden,
-        $isurl )
+        $isurl,                        $link )
         = $sth->fetchrow
       )
     {
@@ -285,6 +286,7 @@ sub MARCgettagslib {
         $res->{$tag}->{$subfield}->{seealso}          = $seealso;
         $res->{$tag}->{$subfield}->{hidden}           = $hidden;
         $res->{$tag}->{$subfield}->{isurl}            = $isurl;
+        $res->{$tag}->{$subfield}->{link}            = $link;
     }
     return $res;
 }
@@ -2632,6 +2634,10 @@ Paul POULAIN paul.poulain@free.fr
 
 # $Id$
 # $Log$
+# Revision 1.114  2005/01/03 10:48:33  tipaul
+# * bugfix for the search on a MARC detail, when you clic on the magnifying glass (caused an internal server error)
+# * partial support of the "linkage" MARC feature : if you enter a "link" on a MARC subfield, the magnifying glass won't search on the field, but on the linked field. I agree it's a partial support. Will be improved, but I need to investigate MARC21 & UNIMARC diffs on this topic.
+#
 # Revision 1.113  2004/12/10 16:27:53  tipaul
 # limiting the number of search term to 8. There was no limit before, but 8 words seems to be the upper limit mySQL can deal with (in less than a second. tested on a DB with 13 000 items)
 # In 2.4, a new DB structure will highly speed things and this limit will be removed.
index e4a4abf..5f8d71e 100644 (file)
@@ -166,6 +166,7 @@ $marcflavour ("MARC21" or "UNIMARC") determines which tags are used for retrievi
 
 sub catalogsearch {
        my ($dbh, $tags, $and_or, $excluding, $operator, $value, $offset,$length,$orderby) = @_;
+       warn "@$tags[0], @$and_or[0], @$excluding[0], @$operator[0], @$value[0], $offset,$length,$orderby";
        # build the sql request. She will look like :
        # select m1.bibid
        #               from marc_subfield_table as m1, marc_subfield_table as m2
@@ -190,10 +191,11 @@ sub catalogsearch {
        $orderby = "biblio.title" unless $orderby;
        
        #last minute stripping out of ' and ,
-       foreach $_ (@$value) {
-       $_=~ s/\'/ /g;
-       $_=~ s/\,/ /g;
-       }
+# paul : quoting, it's done a few lines lated.
+#      foreach $_ (@$value) {
+#              $_=~ s/\'/ /g;
+#              $_=~ s/\,/ /g;
+#      }
        
        for(my $i = 0 ; $i <= $#{$value} ; $i++)
        {
@@ -201,7 +203,7 @@ sub catalogsearch {
                @$value[$i] =~ s/\*/%/g;
                # remove % at the beginning
                @$value[$i] =~ s/^%//g;
-           @$value[$i] =~ s/(\.|\?|\:|\!|\'|,|\-|\"|\(|\)|\[|\]|\{|\})/ /g;
+           @$value[$i] =~ s/(\.|\?|\:|\!|\'|,|\-|\"|\(|\)|\[|\]|\{|\})/ /g if @$operator[$i] eq "contains";
                if(@$excluding[$i])     # NOT statements
                {
                        $any_not = 1;
index 217efba..cf0057e 100644 (file)
                        <!-- TMPL_LOOP NAME="subfield" -->
                                <p>
                                        <label class="labelsubfield">
-                                       <a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator=&amp;#x003D&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
-                                               <img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
+                                       <!-- TMPL_IF name="link">
+                                               <a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="link" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
+                                       <!-- TMPL_ELSE -->
+                                               <a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
+                                       <!-- /TMPL_IF -->
+                                       <img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
                                        </a>
                                        <!-- TMPL_VAR NAME="marc_subfield" -->
                                        <!-- TMPL_VAR NAME="marc_lib" --></label>
                        <!-- TMPL_LOOP NAME="subfield" -->
                                <p>
                                        <label class="labelsubfield">
-                                       <a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator=&amp;#x003D&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
-                                               <img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
+                                       <!-- TMPL_IF name="link">
+                                               <a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="link" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
+                                       <!-- TMPL_ELSE -->
+                                               <a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
+                                       <!-- /TMPL_IF -->
+                                       <img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
                                        </a>
                                        <!-- TMPL_VAR NAME="marc_subfield" -->
                                        <!-- TMPL_VAR NAME="marc_lib" --></label>
                        <!-- TMPL_LOOP NAME="subfield" -->
                                <p>
                                        <label class="labelsubfield">
-                                       <a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator=&amp;#x003D&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
-                                               <img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
+                                       <!-- TMPL_IF name="link">
+                                               <a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="link" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
+                                       <!-- TMPL_ELSE -->
+                                               <a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
+                                       <!-- /TMPL_IF -->
+                                       <img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
                                        </a>
                                        <!-- TMPL_VAR NAME="marc_subfield" -->
                                        <!-- TMPL_VAR NAME="marc_lib" --></label>
                        <!-- TMPL_LOOP NAME="subfield" -->
                                <p>
                                        <label class="labelsubfield">
-                                       <a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator=&amp;#x003D&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
-                                               <img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
+                                       <!-- TMPL_IF name="link">
+                                               <a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="link" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
+                                       <!-- TMPL_ELSE -->
+                                               <a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
+                                       <!-- /TMPL_IF -->
+                                       <img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
                                        </a>
                                        <!-- TMPL_VAR NAME="marc_subfield" -->
                                        <!-- TMPL_VAR NAME="marc_lib" --></label>
                        <!-- TMPL_LOOP NAME="subfield" -->
                                <p>
                                        <label class="labelsubfield">
-                                       <a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator=&amp;#x003D&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
-                                               <img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
+                                       <!-- TMPL_IF name="link">
+                                               <a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="link" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
+                                       <!-- TMPL_ELSE -->
+                                               <a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
+                                       <!-- /TMPL_IF -->
+                                       <img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
                                        </a>
                                        <!-- TMPL_VAR NAME="marc_subfield" -->
                                        <!-- TMPL_VAR NAME="marc_lib" --></label>
                        <!-- TMPL_LOOP NAME="subfield" -->
                                <p>
                                        <label class="labelsubfield">
-                                       <a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator=&amp;#x003D&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
-                                               <img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
+                                       <!-- TMPL_IF name="link">
+                                               <a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="link" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
+                                       <!-- TMPL_ELSE -->
+                                               <a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
+                                       <!-- /TMPL_IF -->
+                                       <img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
                                        </a>
                                        <!-- TMPL_VAR NAME="marc_subfield" -->
                                        <!-- TMPL_VAR NAME="marc_lib" --></label>
                        <!-- TMPL_LOOP NAME="subfield" -->
                                <p>
                                        <label class="labelsubfield">
-                                       <a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator=&amp;#x003D&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
-                                               <img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
+                                       <!-- TMPL_IF name="link">
+                                               <a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="link" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
+                                       <!-- TMPL_ELSE -->
+                                               <a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
+                                       <!-- /TMPL_IF -->
+                                       <img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
                                        </a>
                                        <!-- TMPL_VAR NAME="marc_subfield" -->
                                        <!-- TMPL_VAR NAME="marc_lib" --></label>
                        <!-- TMPL_LOOP NAME="subfield" -->
                                <p>
                                        <label class="labelsubfield">
-                                       <a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator=&amp;#x003D&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
-                                               <img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
+                                       <!-- TMPL_IF name="link">
+                                               <a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="link" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
+                                       <!-- TMPL_ELSE -->
+                                               <a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
+                                       <!-- /TMPL_IF -->
+                                       <img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
                                        </a>
                                        <!-- TMPL_VAR NAME="marc_subfield" -->
                                        <!-- TMPL_VAR NAME="marc_lib" --></label>
                        <!-- TMPL_LOOP NAME="subfield" -->
                                <p>
                                        <label class="labelsubfield">
-                                       <a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator=&amp;#x003D&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
-                                               <img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
+                                       <!-- TMPL_IF name="link">
+                                               <a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="link" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
+                                       <!-- TMPL_ELSE -->
+                                               <a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
+                                       <!-- /TMPL_IF -->
+                                       <img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
                                        </a>
                                        <!-- TMPL_VAR NAME="marc_subfield" -->
                                        <!-- TMPL_VAR NAME="marc_lib" --></label>
                        <!-- TMPL_LOOP NAME="subfield" -->
                                <p>
                                        <label class="labelsubfield">
-                                       <a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator=&amp;#x003D&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
-                                               <img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
+                                       <!-- TMPL_IF name="link">
+                                               <a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="link" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
+                                       <!-- TMPL_ELSE -->
+                                               <a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
+                                       <!-- /TMPL_IF -->
+                                       <img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
                                        </a>
                                        <!-- TMPL_VAR NAME="marc_subfield" -->
                                        <!-- TMPL_VAR NAME="marc_lib" --></label>
index fe9559e..368b457 100644 (file)
                        <!-- TMPL_IF NAME="authorised_value" --> Auth value :<!-- TMPL_VAR NAME="authorised_value" -->,<!-- /TMPL_IF -->
                        <!-- TMPL_IF NAME="authtypecode" --> Authority :<!-- TMPL_VAR NAME="authtypecode" -->,<!-- /TMPL_IF -->
                        <!-- TMPL_IF NAME="value_builder" -->Plugin :<!-- TMPL_VAR NAME="value_builder" -->,<!-- /TMPL_IF -->
+                       <!-- TMPL_IF NAME="link" -->Link:<!-- TMPL_VAR NAME="link" -->,<!-- /TMPL_IF -->
                <!-- /TMPL_IF -->
        </td>
        <td><a href="<!-- TMPL_VAR NAME="delete" -->"><img src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/edittrash.png" width="32" hspace="0" vspace="0" border="0"></a></td>