fixes, improvements and doc
[koha_fer] / value_builder / unimarc_field_225a.pl
index 3661703..f04d1bd 100644 (file)
 # You should have received a copy of the GNU General Public License along with
 # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
 # Suite 330, Boston, MA  02111-1307 USA
+=head1 SYNOPSIS
+
+This plugin is used to map isbn/editor with collection.
+It need :
+  in thesaurus, a category named EDITORS
+  in this category, datas must be entered like following :
+  isbn separator editor separator collection.
+  for example :
+  2204 -- Cerf -- Cogitatio fidei
+  2204 -- Cerf -- Le Magistère de l'Eglise
+  2204 -- Cerf -- Lectio divina
+  2204 -- Cerf -- Lire la Bible
+  2204 -- Cerf -- Pour lire
+  2204 -- Cerf -- Sources chrétiennes
+
+  when the user clic on ... on 225a line, the popup shows the list of collections from the selected editor
+  if the biblio has no isbn, then the search if done on editor only
+  If the biblio ha an isbn, the search is done on isbn and editor. It's faster.
+
+=over 2
+
+=cut
 
 use strict;
+use C4::Auth;
 use CGI;
 use C4::Context;
 use HTML::Template;
 use C4::Search;
 use C4::Output;
 
-sub plugin_parameters {
-my ($dbh,$record,$tagslib,$i,$tabloop) = @_;
-return "";
-}
 sub plugin_javascript {
-my ($dbh,$record,$tagslib,$i,$tabloop) = @_;
+my ($dbh,$record,$tagslib,$field_number,$tabloop) = @_;
 my $function_name= "100".(int(rand(100000))+1);
 my $res="
 <script>
@@ -78,15 +97,32 @@ my ($input) = @_;
        my $isbn_found = $input->param('isbn_found');
        my $dbh = C4::Context->dbh;
        my $authoritysep = C4::Context->preference("authoritysep");
-       my $template = gettemplate("value_builder/unimarc_field_225a.tmpl",0);
+       my ($template, $loggedinuser, $cookie)
+       = get_template_and_user({template_name => "value_builder/unimarc_field_225a.tmpl",
+                                       query => $input,
+                                       type => "intranet",
+                                       authnotrequired => 0,
+                                       flagsrequired => {parameters => 1},
+                                       debug => 1,
+                                       });
 # builds collection list : search isbn and editor, in parent, then load collections from bibliothesaurus table
-       my $sth = $dbh->prepare("select stdlib from bibliothesaurus where father=? and category='EDITORS'");
-       my @splited = split //, $isbn_found;
-       my $isbn_rebuild='';
-       my @collections;
-       foreach my $x (@splited) {
-               $isbn_rebuild.=$x;
-               $sth->execute("$isbn_rebuild $authoritysep $editor_found $authoritysep");
+       # if there is an isbn, complete search
+               my @collections;
+       if ($isbn_found) {
+               my $sth = $dbh->prepare("select stdlib from bibliothesaurus where father=? and category='EDITORS'");
+               my @splited = split //, $isbn_found;
+               my $isbn_rebuild='';
+               foreach my $x (@splited) {
+                       $isbn_rebuild.=$x;
+                       $sth->execute("$isbn_rebuild $authoritysep $editor_found $authoritysep");
+                       while (my ($line)= $sth->fetchrow) {
+                               push @collections,$line;
+                       }
+               }
+       } else {
+       # if there is no isbn, search with %
+               my $sth = $dbh->prepare("select stdlib from bibliothesaurus where father like ? and category='EDITORS'");
+               $sth->execute("\%$authoritysep $editor_found $authoritysep");
                while (my ($line)= $sth->fetchrow) {
                        push @collections,$line;
                }
@@ -100,7 +136,7 @@ my ($input) = @_;
                                                                                                );
        $template->param(index => $index,
                                                        collection => $collection);
-       print "Content-Type: text/html\n\n", $template->output;
+       print $input->header(-cookie => $cookie),$template->output;
 }
 
 1;