From 72f8328b0ad05ad31bb6cd79dd4505c6c4a9cc2c Mon Sep 17 00:00:00 2001 From: tipaul Date: Sat, 26 Oct 2002 17:57:18 +0000 Subject: [PATCH] road to 1.3.1 thesaurus / authorities support --- admin/thesaurus.pl | 261 ++++++++++++++++++ .../default/en/parameters/admin-home.tmpl | 69 +++-- .../default/en/parameters/thesaurus.tmpl | 133 +++++++++ 3 files changed, 438 insertions(+), 25 deletions(-) create mode 100755 admin/thesaurus.pl create mode 100644 koha-tmpl/intranet-tmpl/default/en/parameters/thesaurus.tmpl diff --git a/admin/thesaurus.pl b/admin/thesaurus.pl new file mode 100755 index 0000000000..699bab26d7 --- /dev/null +++ b/admin/thesaurus.pl @@ -0,0 +1,261 @@ +#!/usr/bin/perl + +# Copyright 2000-2002 Katipo Communications +# +# 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 2 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, write to the Free Software Foundation, Inc., 59 Temple Place, +# Suite 330, Boston, MA 02111-1307 USA + +use strict; +use CGI; +use C4::Context; +use C4::Output; +use C4::Search; +use HTML::Template; +use C4::Context; + + +sub StringSearch { + my ($env,$category,$toponly,$branch,$searchstring,$type)=@_; + my $dbh = C4::Context->dbh; + $searchstring=~ s/\'/\\\'/g; + my $query="Select distinct stdlib,id,hierarchy,level from bibliothesaurus where (category like \"$category%\")"; + $query .= " and hierarchy='$branch'" if ($branch && $toponly); + $query .= " and hierarchy like \"$branch%\"" if ($branch && !$toponly); + $query .= " and hierarchy=''" if (!$branch & $toponly); + $query .= " and stdlib like \"$searchstring%\"" if ($searchstring); + $query .= " order by category,stdlib"; + my $sth=$dbh->prepare($query); + $sth->execute; + my @results; + my $cnt=0; + my $old_stdlib=""; + while (my $data=$sth->fetchrow_hashref){ + if ($old_stdlib ne $data->{'stdlib'}) { + $cnt ++; + push(@results,$data); + } + $old_stdlib = $data->{'stdlib'}; + } + $sth->finish; + return ($cnt,\@results); +} + +my $input = new CGI; +my $search_category=$input->param('search_category'); +my $toponly = $input->param('toponly'); +my $branch = $input->param('branch'); +my $searchstring = $input->param('searchstring'); +$searchstring=~ s/\,//g; +my $id = $input->param('id'); +my $reqsel="select category,stdlib,freelib from authorised_values where id='$id'"; +my $reqdel="delete from authorised_values where id='$id'"; +my $offset=$input->param('offset'); +my $script_name="/cgi-bin/koha/admin/thesaurus.pl"; +my $dbh = C4::Context->dbh; + +my $template = gettemplate("parameters/thesaurus.tmpl",0); +my $pagesize=20; +my $op = $input->param('op'); + +if ($op) { +$template->param(script_name => $script_name, + $op => 1); # we show only the TMPL_VAR names $op +} else { +$template->param(script_name => $script_name, + else => 1); # we show only the TMPL_VAR names $op +} +################## ADD_FORM ################################## +# called by default. Used to create form to add or modify a record +if ($op eq 'add_form') { + my $data; + if ($id) { + my $dbh = C4::Context->dbh; + my $sth=$dbh->prepare("select id,category,freelib,stdlib from bibliothesaurus where id='$id'"); + $sth->execute; + $data=$sth->fetchrow_hashref; + $sth->finish; + } else { + $data->{'category'} = $input->param('category'); + $data->{'stdlib'} = $input->param('stdlib'); + } + if ($search_category) { + $template->param(action => "Modify authorised value"); + } else { + $template->param(action => "Add authorised value"); + } + $template->param(category => $data->{'category'}, + stdlib => $data->{'stdlib'}, + freelib => $data->{'freelib'}, + id => $data->{'id'} + ); + if ($data->{'category'}) { + $template->param(category => "$data->{'category'}"); + } else { + $template->param(category => ""); + } +################## ADD_VALIDATE ################################## +# called by add_form, used to insert/modify data in DB +} elsif ($op eq 'add_validate') { + my $dbh = C4::Context->dbh; + my $sth=$dbh->prepare("replace bibliothesaurus (id,category,stdlib,freelib) values (?,?,?,?)"); + $sth->execute($input->param('id'), $input->param('category'), $input->param('stdlib'), $input->param('freelib')); + $sth->finish; + print "Content-Type: text/html\n\nparam('category')."\">"; + exit; +################## DELETE_CONFIRM ################################## +# called by default form, used to confirm deletion of data in DB +} elsif ($op eq 'delete_confirm') { + my $dbh = C4::Context->dbh; + my $sth=$dbh->prepare($reqsel); + $sth->execute; + my $data=$sth->fetchrow_hashref; + $sth->finish; + $template->param(search_category => $search_category, + Tvalue => $data->{'stdlib'}, + id =>$id, + ); + + # END $OP eq DELETE_CONFIRM +################## DELETE_CONFIRMED ################################## +# called by delete_confirm, used to effectively confirm deletion of data in DB +} elsif ($op eq 'delete_confirmed') { + my $dbh = C4::Context->dbh; + my $sth=$dbh->prepare($reqdel); + $sth->execute; + $sth->finish; + print "Content-Type: text/html\n\n"; + exit; + # END $OP eq DELETE_CONFIRMED +################## DETAIL_FORM ################################## +} elsif ($op eq 'detail_form') { + # build categories list + my $sth = $dbh->prepare("select distinct category from bibliothesaurus"); + $sth->execute; + my @category_list; + while ( my ($category) = $sth->fetchrow_array) { + push(@category_list,$category); + } + my $tab_list = CGI::scrolling_list(-name=>'search_category', + -values=> \@category_list, + -default=>"", + -size=>1, + -multiple=>0, + ); + if (!$search_category) { + $search_category=$category_list[0]; + } + my $env; + my $sth = $dbh->prepare("select stdlib,category from bibliothesaurus where id=?"); + $sth->execute($id); + my ($stdlib,$category) = $sth->fetchrow_array; + warn "ID : $id / $stdlib / $category"; + $sth->finish; + $sth= $dbh->prepare("select id,freelib from bibliothesaurus where stdlib=?"); + $sth->execute($stdlib); + my $toggle="white"; + # builds value list + my @loop_data; + while ( my ($id,$freelib) = $sth->fetchrow_array) { + if ($toggle eq 'white'){ + $toggle="#ffffcc"; + } else { + $toggle="white"; + } + my %row_data; # get a fresh hash for the row data + $row_data{freelib} = $freelib; + $row_data{edit} = "$script_name?op=add_form&id=$id"; + $row_data{delete} = "$script_name?op=delete_confirm&search_category=$search_category&id=$id"; + push(@loop_data, \%row_data); + } + + $template->param(loop => \@loop_data, + tab_list => $tab_list, + category => $search_category, + toponly => $toponly, + searchstring => $searchstring, + stdlib => $stdlib, + category => $category); +################## DEFAULT ################################## +} else { # DEFAULT + # build categories list + my $sth = $dbh->prepare("select distinct category from bibliothesaurus"); + $sth->execute; + my @category_list; + while ( my ($category) = $sth->fetchrow_array) { + push(@category_list,$category); + } + my $tab_list = CGI::scrolling_list(-name=>'search_category', + -values=> \@category_list, + -default=>"", + -size=>1, + -multiple=>0, + ); + if (!$search_category) { + $search_category=$category_list[0]; + } + my $env; + my ($count,$results)=StringSearch($env,$search_category,$toponly,$branch,$searchstring,'web'); + my $toggle="white"; + my @loop_data = (); + # builds value list + for (my $i=$offset; $i < ($offset+$pagesize<$count?$offset+$pagesize:$count); $i++){ + if ($toggle eq 'white'){ + $toggle="#ffffcc"; + } else { + $toggle="white"; + } + my %row_data; # get a fresh hash for the row data + $row_data{category} = $results->[$i]{'category'}; + $row_data{stdlib} = ("    " x $results->[$i]{'level'}).$results->[$i]{'stdlib'}; + $row_data{stdlib} = $results->[$i]{'stdlib'}; + $row_data{dig} ="[$i]{'hierarchy'}".($results->[$i]{'hierarchy'}?"|":"")."$results->[$i]{'id'}&toponly=$toponly>"; + $row_data{related} ="[$i]{'id'}&op=detail_form>"; + $row_data{edit} = "$script_name?op=add_form&id=".$results->[$i]{'id'}; + $row_data{delete} = "$script_name?op=delete_confirm&search_category=$search_category&id=".$results->[$i]{'id'}; + push(@loop_data, \%row_data); + } + # rebuild coplete hierarchy + my $sth = $dbh->prepare("select stdlib from bibliothesaurus where id=?"); + my @hierarchy = split(/\|/,$branch); + my @hierarchy_loop; + warn "total : $#hierarchy"; + my $x; + for (my $xi=0;$xi<=$#hierarchy;$xi++) { + my %link; + $sth->execute($hierarchy[$xi]); + my ($t) = $sth->fetchrow_array; + $x.=$hierarchy[$xi]; + $link{'string'}=$t; + $link{'branch'}=$x; + push (@hierarchy_loop, \%link); + $x.='|'; + } + $template->param(loop => \@loop_data, + tab_list => $tab_list, + category => $search_category, + toponly => $toponly, + searchstring => $searchstring, + hierarchy_loop => \@hierarchy_loop); + if ($offset>0) { + my $prevpage = $offset-$pagesize; + $template->param(previous => "<< Prev"); + } + if ($offset+$pagesize<$count) { + my $nextpage =$offset+$pagesize; + $template->param(next => "Next >>"); + } +} #---- END $OP eq DEFAULT + +print "Content-Type: text/html\n\n", $template->output; diff --git a/koha-tmpl/intranet-tmpl/default/en/parameters/admin-home.tmpl b/koha-tmpl/intranet-tmpl/default/en/parameters/admin-home.tmpl index 1ced59c2ed..ec6e23c457 100644 --- a/koha-tmpl/intranet-tmpl/default/en/parameters/admin-home.tmpl +++ b/koha-tmpl/intranet-tmpl/default/en/parameters/admin-home.tmpl @@ -1,55 +1,74 @@
Koha admin page


- - +
TableMeaning
+ + + +
Biblio related parameters
+ - - + + - + - + - - + + - - + + + + +
libraries branchesthe differents branches you manage with this koha serverItem typesthe supports of an item.
budgetbudget the budgets allowed to differents book funds.
book fundsbook funds the differents book funds.
categoriesthe differents types of borrowers.authorised valuesDefine here categories and authorised values for them. + Authorised values are used in MARC form to limit/help editing MARC biblios
Item typesthe supports of an item.ThesaurusThesaurus management. You can define as many thesaurus as needed, through definiitions of thesaurus "category"
+ + + +
MARC related parameters
+ + + +
MARC tag structureMARC structure : tag then subfields
Links koha - MARC DBDefine links between the koha standard DB and the MARC one. Note those links can be defined through MARC structure. This tool is just a shortcut to speed up linkage
+ + + + +
Various datas :
+ + + + - + + + + + - + - + - + - - - - - - - - - -
libraries branchesthe differents branches you manage with this koha server
Currenciescategoriesthe differents types of borrowers.
Currencies Currencies of booksellers.
PrintersPrinters Printers (UNIX paths).
stopwordsstopwords Words deleted during searches
systempreferencessystempreferences System preferences
authorised valuesDefine here categories and authorised values for them. - Authorised values are used in MARC form to limit/help editing MARC biblios
TableMeaning
MARC tag structureMARC structure : tag then subfields
Links koha - MARC DBDefine links between the koha standard DB and the MARC one. Note those links can be defined through MARC structure. This tool is just a shortcut to speed up linkage
+
diff --git a/koha-tmpl/intranet-tmpl/default/en/parameters/thesaurus.tmpl b/koha-tmpl/intranet-tmpl/default/en/parameters/thesaurus.tmpl new file mode 100644 index 0000000000..d22add3c4b --- /dev/null +++ b/koha-tmpl/intranet-tmpl/default/en/parameters/thesaurus.tmpl @@ -0,0 +1,133 @@ + + + + +Thesaurus management
+ + + + +
Values related to ()
+

+ + + + + + + + + + + + + + +
Other forms  
">Edit">Delete
+ + +"> +"> +

+ +
+ + + +

+
+ + + + + + + + + + + + + + + + + + +
Category
Authority lib
Other lib
 "> +
+
+
+ + + + + + + + + + + + + + "> + + + + + + + +Thesaurus management +

Manages thesaurus and authorities files.
+

    + Dig : see datas depending from this one
    + Related : see other forms of this authority entry

    +
+
+ + checked
>Top hierarchy only + "> + + New category... + + + + ">
+
+
lib
Value
CONFIRM DELETION
+ + + + + + + + + + + + + + + + + + + +
 AuthorityDigRelated  
 DigRelated">Edit">Delete
+ + + + + +
+ + +"> +

+ +
+ + -- 2.39.2