#check to see what accounttype
if ( $data->{'accounttype'} eq 'Rep' || $data->{'accounttype'} eq 'L' ) {
- ReturnLostItem( $borrowernumber, $data->{'itemnumber'} );
+ C4::Circulation::ReturnLostItem( $borrowernumber, $data->{'itemnumber'} );
}
}
&GetOrderNumber &GetLateOrders &GetOrderFromItemnumber
&SearchOrder &GetHistory &GetRecentAcqui
&ModReceiveOrder &ModOrderBiblioitemNumber
+ &GetCancelledOrders
&NewOrderItem &ModOrderItem
$sth->execute( $biblioitemnumber, $ordernumber, $biblionumber );
}
+=head3 GetCancelledOrders
+
+ my @orders = GetCancelledOrders($basketno, $orderby);
+
+Returns cancelled orders for a basket
+
+=cut
+
+sub GetCancelledOrders {
+ my ( $basketno, $orderby ) = @_;
+
+ return () unless $basketno;
+
+ my $dbh = C4::Context->dbh;
+ my $query = "
+ SELECT biblio.*, biblioitems.*, aqorders.*, aqbudgets.*
+ FROM aqorders
+ LEFT JOIN aqbudgets ON aqbudgets.budget_id = aqorders.budget_id
+ LEFT JOIN biblio ON biblio.biblionumber = aqorders.biblionumber
+ LEFT JOIN biblioitems ON biblioitems.biblionumber = biblio.biblionumber
+ WHERE basketno = ?
+ AND (datecancellationprinted IS NOT NULL
+ AND datecancellationprinted <> '0000-00-00')
+ ";
+
+ $orderby = "aqorders.datecancellationprinted desc, aqorders.timestamp desc"
+ unless $orderby;
+ $query .= " ORDER BY $orderby";
+ my $sth = $dbh->prepare($query);
+ $sth->execute($basketno);
+ my $results = $sth->fetchall_arrayref( {} );
+
+ return @$results;
+}
+
+
#------------------------------------------------------------#
=head3 ModReceiveOrder
$session->flush;
$session->delete();
C4::Context->_unset_userenv($sessionID);
- _session_log(sprintf "%20s from %16s logged out at %30s (manually).\n", $userid,$ip,(strftime "%c",localtime));
+ #_session_log(sprintf "%20s from %16s logged out at %30s (manually).\n", $userid,$ip,(strftime "%c",localtime));
$sessionID = undef;
$userid = undef;
$info{'timed_out'} = 1;
$session->delete();
C4::Context->_unset_userenv($sessionID);
- _session_log(sprintf "%20s from %16s logged out at %30s (inactivity).\n", $userid,$ip,(strftime "%c",localtime));
+ #_session_log(sprintf "%20s from %16s logged out at %30s (inactivity).\n", $userid,$ip,(strftime "%c",localtime));
$userid = undef;
$sessionID = undef;
}
$info{'different_ip'} = 1;
$session->delete();
C4::Context->_unset_userenv($sessionID);
- _session_log(sprintf "%20s from %16s logged out at %30s (ip changed to %16s).\n", $userid,$ip,(strftime "%c",localtime), $info{'newip'});
+ #_session_log(sprintf "%20s from %16s logged out at %30s (ip changed to %16s).\n", $userid,$ip,(strftime "%c",localtime), $info{'newip'});
$sessionID = undef;
$userid = undef;
}
$userid = $retuserid if ($retuserid ne '');
}
if ($return) {
- _session_log(sprintf "%20s from %16s logged in at %30s.\n", $userid,$ENV{'REMOTE_ADDR'},(strftime '%c', localtime));
+ #_session_log(sprintf "%20s from %16s logged in at %30s.\n", $userid,$ENV{'REMOTE_ADDR'},(strftime '%c', localtime));
if ( $flags = haspermission( $userid, $flagsrequired ) ) {
$loggedin = 1;
}
}
my $date=POSIX::strftime("%y%m%d",localtime);
if (!$record->field('008')) {
- $record->insert_fields_ordered(
- MARC::Field->new('008',$date."|||a|||||| | ||| d")
- );
+ # Get a valid default value for field 008
+ my $default_008 = C4::Context->preference('MARCAuthorityControlField008');
+ if(!$default_008 or length($default_008)<34) {
+ $default_008 = '|| aca||aabn | a|a d';
+ }
+ else {
+ $default_008 = substr($default_008,0,34);
+ }
+
+ $record->insert_fields_ordered( MARC::Field->new('008',$date.$default_008) );
}
if (!$record->field('040')) {
$record->insert_fields_ordered(
$separator = C4::Context->preference('authoritysep');
}
push @subfields_loop,
- { code => $subfieldcode,
+ { tag => $field->tag(),
+ code => $subfieldcode,
value => $value,
link_loop => \@this_link_loop,
separator => $separator
This function builds partial MARC::Record from a hash
Hash entries can be from biblio or biblioitems.
-This function is called in acquisition module, to create a basic catalogue entry from user entry
+This function is called in acquisition module, to create a basic catalogue
+entry from user entry
=cut
+
sub TransformKohaToMarc {
- my ($hash) = @_;
- my $sth = C4::Context->dbh->prepare( "SELECT tagfield,tagsubfield FROM marc_subfield_structure WHERE frameworkcode=? AND kohafield=?" );
+ my $hash = shift;
my $record = MARC::Record->new();
SetMarcUnicodeFlag( $record, C4::Context->preference("marcflavour") );
- foreach ( keys %{$hash} ) {
- &TransformKohaToMarcOneField( $sth, $record, $_, $hash->{$_}, '' );
+ my $db_to_marc = C4::Context->marcfromkohafield;
+ while ( my ($name, $value) = each %$hash ) {
+ next unless my $dtm = $db_to_marc->{''}->{$name};
+ my ($tag, $letter) = @$dtm;
+ foreach my $value ( split(/\s?\|\s?/, $value, -1) ) {
+ if ( my $field = $record->field($tag) ) {
+ $field->add_subfields( $letter => $value );
+ }
+ else {
+ $record->insert_fields_ordered( MARC::Field->new(
+ $tag, " ", " ", $letter => $value ) );
+ }
+ }
+
}
return $record;
}
return $hostmarcfield;
}
-
-=head2 TransformKohaToMarcOneField
-
- $record = TransformKohaToMarcOneField( $sth, $record, $kohafieldname, $value, $frameworkcode );
-
-=cut
-
-sub TransformKohaToMarcOneField {
- my ( $sth, $record, $kohafieldname, $value, $frameworkcode ) = @_;
- $frameworkcode = '' unless $frameworkcode;
- my $tagfield;
- my $tagsubfield;
-
- if ( !defined $sth ) {
- my $dbh = C4::Context->dbh;
- $sth = $dbh->prepare( "SELECT tagfield,tagsubfield FROM marc_subfield_structure WHERE frameworkcode=? AND kohafield=?" );
- }
- $sth->execute( $frameworkcode, $kohafieldname );
- if ( ( $tagfield, $tagsubfield ) = $sth->fetchrow ) {
- my @values = split(/\s?\|\s?/, $value, -1);
-
- foreach my $itemvalue (@values){
- my $tag = $record->field($tagfield);
- if ($tag) {
- $tag->add_subfields( $tagsubfield => $itemvalue );
- $record->delete_field($tag);
- $record->insert_fields_ordered($tag);
- }
- else {
- $record->add_fields( $tagfield, " ", " ", $tagsubfield => $itemvalue );
- }
- }
- }
- return $record;
-}
-
=head2 TransformHtmlToXml
$xml = TransformHtmlToXml( $tags, $subfields, $values, $indicator,
}
$prevtag = @$tags[$i];
}
- $xml .= "</datafield>\n" if @$tags > 0;
+ $xml .= "</datafield>\n" if $xml =~ m/<datafield/;
if ( C4::Context->preference('marcflavour') eq 'UNIMARC' and !$unimarc_and_100_exist ) {
# warn "SETTING 100 for $auth_type";
# find reserves.....
# That'll save a database query.
- my ( $resfound, $resrec ) =
+ my ( $resfound, $resrec, undef ) =
CheckReserves( $itemnumber );
if ( $resfound and not $ignoreRs ) {
$resrec->{'ResFound'} = $resfound;
}
# See if the item is on reserve.
- my ( $restype, $res ) = C4::Reserves::CheckReserves( $item->{'itemnumber'} );
+ my ( $restype, $res, undef ) = C4::Reserves::CheckReserves( $item->{'itemnumber'} );
if ($restype) {
my $resbor = $res->{'borrowernumber'};
my ( $resborrower ) = C4::Members::GetMember( borrowernumber => $resbor );
);
}
- # See if the item is on reserve.
- my ( $restype, $res ) =
- C4::Reserves::CheckReserves( $item->{'itemnumber'} );
- if ($restype) {
- my $resbor = $res->{'borrowernumber'};
- if ( $resbor eq $borrower->{'borrowernumber'} ) {
- # The item is reserved by the current patron
- ModReserveFill($res);
- }
- elsif ( $restype eq "Waiting" ) {
- # warn "Waiting";
- # The item is on reserve and waiting, but has been
- # reserved by some other patron.
- }
- elsif ( $restype eq "Reserved" ) {
- # warn "Reserved";
- # The item is reserved by someone else.
- if ($cancelreserve) { # cancel reserves on this item
- CancelReserve(0, $res->{'itemnumber'}, $res->{'borrowernumber'});
- }
- }
- if ($cancelreserve) {
- CancelReserve($res->{'biblionumber'}, 0, $res->{'borrowernumber'});
- }
- else {
- # set waiting reserve to first in reserve queue as book isn't waiting now
- ModReserve(1,
- $res->{'biblionumber'},
- $res->{'borrowernumber'},
- $res->{'branchcode'}
- );
- }
- }
+ MoveReserve( $item->{'itemnumber'}, $borrower->{'borrowernumber'}, $cancelreserve );
# Starting process for transfer job (checking transfert and validate it if we have one)
my ($datesent) = GetTransfers($item->{'itemnumber'});
# find reserves.....
# if we don't have a reserve with the status W, we launch the Checkreserves routine
- my ($resfound, $resrec) = C4::Reserves::CheckReserves( $item->{'itemnumber'} );
+ my ($resfound, $resrec, undef) = C4::Reserves::CheckReserves( $item->{'itemnumber'} );
if ($resfound) {
$resrec->{'ResFound'} = $resfound;
$messages->{'ResFound'} = $resrec;
$error="too_many";
}
- my ( $resfound, $resrec ) = C4::Reserves::CheckReserves($itemnumber);
+ my ( $resfound, $resrec, undef ) = C4::Reserves::CheckReserves($itemnumber);
if ($resfound) {
$renewokay = 0;
$error="on_reserve"
use strict;
use warnings;
-use vars qw($VERSION $AUTOLOAD $context @context_stack);
+use vars qw($VERSION $AUTOLOAD $context @context_stack $servers $memcached $ismemcached);
BEGIN {
if ($ENV{'HTTP_USER_AGENT'}) {
$main::SIG{__DIE__} = \&CGI::Carp::confess;
}
} # else there is no browser to send fatals to!
+
+ # Check if there are memcached servers set
+ $servers = $ENV{'MEMCACHED_SERVERS'};
+ if ($servers) {
+ # Load required libraries and create the memcached object
+ require Cache::Memcached;
+ $memcached = Cache::Memcached->new({
+ servers => [ $servers ],
+ debug => 0,
+ compress_threshold => 10_000,
+ namespace => $ENV{'MEMCACHED_NAMESPACE'} || 'koha'
+ });
+ # Verify memcached available (set a variable and test the output)
+ $ismemcached = $memcached->set('ismemcached','1');
+ }
+
$VERSION = '3.00.00.036';
}
sub read_config_file { # Pass argument naming config file to read
my $koha = XMLin(shift, keyattr => ['id'], forcearray => ['listen', 'server', 'serverinfo'], suppressempty => '');
+
+ if ($ismemcached) {
+ $memcached->set('kohaconf',$koha);
+ }
+
return $koha; # Return value: ref-to-hash holding the configuration
}
file, which defaults to either the file given by the C<$KOHA_CONF>
environment variable, or F</etc/koha/koha-conf.xml>.
+It saves the koha-conf.xml values in the declared memcached server(s)
+if currently available and uses those values until them expire and
+re-reads them.
+
C<&new> does not set this context as the new default context; for
that, use C<&set_context>.
return undef;
}
}
- # Load the desired config file.
- $self = read_config_file($conf_fname);
- $self->{"config_file"} = $conf_fname;
+ if ($ismemcached) {
+ # retreive from memcached
+ $self = $memcached->get('kohaconf');
+ if (not defined $self) {
+ # not in memcached yet
+ $self = read_config_file($conf_fname);
+ }
+ } else {
+ # non-memcached env, read from file
+ $self = read_config_file($conf_fname);
+ }
+
+ $self->{"config_file"} = $conf_fname;
warn "read_config_file($conf_fname) returned undef" if !defined($self->{"config"});
return undef if !defined($self->{"config"});
sub set_preference {
my $self = shift;
- my $var = shift;
+ my $var = lc(shift);
my $value = shift;
my $dbh = C4::Context->dbh or return 0;
ON DUPLICATE KEY UPDATE value = VALUES(value)
" );
- $sth->execute( $var, $value );
+ if($sth->execute( $var, $value )) {
+ $sysprefs{$var} = $value;
+ }
$sth->finish;
}
return $exit_code;
}
-use constant PRESET_FIELDS => [qw(title author isbn issn itemtype barcode callnumber)];
+use constant PRESET_FIELDS => [qw(title author isbn issn itemtype barcode itemcallnumber)];
sub new {
my $invocant = shift;
my $self = '';
return $prefformat;
}
+sub reset_prefformat { # subroutine to clear the prefformat, called when we change it
+ if (defined $prefformat){
+ $prefformat = C4::Context->preference('dateformat');
+ }
+}
+
our %format_map = (
iso => 'yyyy-mm-dd', # plus " HH:MM:SS"
metric => 'dd/mm/yyyy', # plus " HH:MM:SS"
$self->{'dateformat'} = $dformat = ( scalar(@_) >= 2 ) ? $_[1] : _prefformat();
( $format_map{$dformat} ) or croak "Invalid date format '$dformat' from " . ( ( scalar(@_) >= 2 ) ? 'argument' : 'system preferences' );
$self->{'dmy_arrayref'} = [ ( (@_) ? $self->dmy_map(shift) : localtime ) ];
- if ($debug > 1) { warn "(during init) \@\$self->{'dmy_arrayref'}: " . join( ' ', @{ $self->{'dmy_arrayref'} } ) . "\n"; }
+ if ($debug && $debug > 1) { warn "(during init) \@\$self->{'dmy_arrayref'}: " . join( ' ', @{ $self->{'dmy_arrayref'} } ) . "\n"; }
return $self;
}
package C4::ILSDI::Utility;
# Copyright 2009 SARL Biblibre
+# Copyright 2011 software.coop and MJ Ray
#
# This file is part of Koha.
#
use C4::Items;
use C4::Circulation;
use C4::Biblio;
-use C4::Reserves qw(GetReservesFromBorrowernumber);
+use C4::Reserves qw(GetReservesFromBorrowernumber CanBookBeReserved);
use C4::Context;
use C4::Branch qw/GetBranchName/;
use Digest::MD5 qw(md5_base64);
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(
- &BorrowerExists &CanBookBeReserved &Availability
+ &BorrowerExists &Availability
);
}
return $sth->fetchrow;
}
-=head2 CanBookBeReserved
-
-Checks if a book (at bibliographic level) can be reserved by a borrower.
-
- if ( CanBookBeReserved($borrower, $biblionumber) ) {
- # Do stuff
- }
-
-=cut
-
-sub CanBookBeReserved {
- my ( $borrower, $biblionumber ) = @_;
-
- my $MAXIMUM_NUMBER_OF_RESERVES = C4::Context->preference("maxreserves");
- my $MAXOUTSTANDING = C4::Context->preference("maxoutstanding");
-
- my $out = 1;
-
- if ( $borrower->{'amountoutstanding'} > $MAXOUTSTANDING ) {
- $out = undef;
- }
- if ( $borrower->{gonenoaddress} eq 1 ) {
- $out = undef;
- }
- if ( $borrower->{lost} eq 1 ) {
- $out = undef;
- }
- if ( $borrower->{debarred} ) {
- $out = undef;
- }
- my @reserves = GetReservesFromBorrowernumber( $borrower->{'borrowernumber'} );
- if ( $MAXIMUM_NUMBER_OF_RESERVES && scalar(@reserves) >= $MAXIMUM_NUMBER_OF_RESERVES ) {
- $out = undef;
- }
- foreach my $res (@reserves) {
- if ( $res->{'biblionumber'} == $biblionumber ) {
- $out = undef;
- }
- }
- my $issues = GetPendingIssues( $borrower->{'borrowernumber'} );
- foreach my $issue (@$issues) {
- if ( $issue->{'biblionumber'} == $biblionumber ) {
- $out = undef;
- }
- }
-
- return $out;
-}
-
=head2 Availability
Returns, for an itemnumber, an array containing availability information.
my $stmt = SQL::Statement->new($line, $parser);
my $where = $stmt->where();
if ($where && $where->op() eq '=' && $line =~ /^\s*DELETE/) {
- $line =~ s/frameworkcode='.+?'/frameworkcode='$frameworkcode';/ unless ($_ =~ /frameworkcode='$frameworkcode'/);
+ $line =~ s/frameworkcode='.*?'/frameworkcode='$frameworkcode';/ unless ($_ =~ /frameworkcode='$frameworkcode'/);
} else {
my @arrFields;
my @arrValues;
if ($error) {
$line .= ';' unless ($line =~ /;$/);
if ($line =~ /^\s*DELETE/) {
- $line =~ s/frameworkcode='.+?'/frameworkcode='$frameworkcode'/ unless ($_ =~ /frameworkcode='$frameworkcode'/);
+ $line =~ s/frameworkcode='.*?'/frameworkcode='$frameworkcode'/ unless ($_ =~ /frameworkcode='$frameworkcode'/);
} elsif ($line =~ /^\s*INSERT\s+INTO\s+(.*?)\s+\((.*?frameworkcode.*?)\)\s+VALUES\s+\((.+)\)\s*;\s*$/) {
my $table = $1;
my $fields = $2;
$serial = 1;
}
if ( $datedue eq '' ) {
- my ( $restype, $reserves ) =
+ my ( $restype, $reserves, undef ) =
C4::Reserves::CheckReserves( $data->{'itemnumber'} );
# Previous conditional check with if ($restype) is not needed because a true
# result for one item will result in subsequent items defaulting to this true
if ($onloan){
$error = "book_on_loan"
}
- elsif ( C4::Context->userenv->{flags} & 1 and
+ elsif ( !(C4::Context->userenv->{flags} & 1) and
C4::Context->preference("IndependantBranches") and
(C4::Context->userenv->{branch} ne
$item->{C4::Context->preference("HomeOrHoldingBranch")||'homebranch'}) )
my @imagesets = (); # list of hasrefs of image set data to pass to template
my @subdirectories = _getSubdirectoryNames( $paths->{'staff'}{'filesystem'} );
-warn $paths->{'staff'}{'filesystem'};
foreach my $imagesubdir ( @subdirectories ) {
- warn $imagesubdir;
+ warn $imagesubdir if $DEBUG;
my @imagelist = (); # hashrefs of image info
my @imagenames = _getImagesFromDirectory( File::Spec->catfile( $paths->{'staff'}{'filesystem'}, $imagesubdir ) );
my $imagesetactive = 0;
sub _BAR {
my $self = shift;
- my $barcode_llx = $self->{'llx'} + $self->{'left_text_margin'}; # this places the bottom left of the barcode the left text margin distance to right of the the left edge of the label ($llx)
+ my $barcode_llx = $self->{'llx'} + $self->{'left_text_margin'}; # this places the bottom left of the barcode the left text margin distance to right of the left edge of the label ($llx)
my $barcode_lly = $self->{'lly'} + $self->{'top_text_margin'}; # this places the bottom left of the barcode the top text margin distance above the bottom of the label ($lly)
my $barcode_width = 0.8 * $self->{'width'}; # this scales the barcode width to 80% of the label width
my $barcode_y_scale_factor = 0.01 * $self->{'height'}; # this scales the barcode height to 10% of the label height
sub _BIBBAR {
my $self = shift;
- my $barcode_llx = $self->{'llx'} + $self->{'left_text_margin'}; # this places the bottom left of the barcode the left text margin distance to right of the the left edge of the label ($self->{'llx'})
+ my $barcode_llx = $self->{'llx'} + $self->{'left_text_margin'}; # this places the bottom left of the barcode the left text margin distance to right of the left edge of the label ($self->{'llx'})
my $barcode_lly = $self->{'lly'} + $self->{'top_text_margin'}; # this places the bottom left of the barcode the top text margin distance above the bottom of the label ($lly)
my $barcode_width = 0.8 * $self->{'width'}; # this scales the barcode width to 80% of the label width
my $barcode_y_scale_factor = 0.01 * $self->{'height'}; # this scales the barcode height to 10% of the label height
sub _BARBIB {
my $self = shift;
- my $barcode_llx = $self->{'llx'} + $self->{'left_text_margin'}; # this places the bottom left of the barcode the left text margin distance to right of the the left edge of the label ($self->{'llx'})
+ my $barcode_llx = $self->{'llx'} + $self->{'left_text_margin'}; # this places the bottom left of the barcode the left text margin distance to right of the left edge of the label ($self->{'llx'})
my $barcode_lly = ($self->{'lly'} + $self->{'height'}) - $self->{'top_text_margin'}; # this places the bottom left of the barcode the top text margin distance below the top of the label ($self->{'lly'})
my $barcode_width = 0.8 * $self->{'width'}; # this scales the barcode width to 80% of the label width
my $barcode_y_scale_factor = 0.01 * $self->{'height'}; # this scales the barcode height to 10% of the label height
($table eq 'biblioitems' ) ? "SELECT * FROM $table WHERE biblionumber = ?" :
($table eq 'items' ) ? "SELECT * FROM $table WHERE itemnumber = ?" :
($table eq 'issues' ) ? "SELECT * FROM $table WHERE itemnumber = ?" :
- ($table eq 'suggestions' ) ? "SELECT * FROM $table WHERE borrowernumber = ? and biblionumber = ?" :
($table eq 'reserves' ) ? "SELECT * FROM $table WHERE borrowernumber = ? and biblionumber = ?" :
($table eq 'borrowers' ) ? "SELECT * FROM $table WHERE borrowernumber = ?" :
($table eq 'branches' ) ? "SELECT * FROM $table WHERE branchcode = ?" :
if ( my $bcc = C4::Context->preference('OverdueNoticeBcc') ) {
$sendmail_params{ Bcc } = $bcc;
}
-
+ _update_message_to_address($message->{'message_id'},$to_address) unless $message->{to_address}; #if initial message address was empty, coming here means that a to address was found and queue should be updated
if ( sendmail( %sendmail_params ) ) {
_set_message_status( { message_id => $message->{'message_id'},
status => 'sent' } );
return $success;
}
+sub _update_message_to_address {
+ my ($id, $to)= @_;
+ my $dbh = C4::Context->dbh();
+ $dbh->do('UPDATE message_queue SET to_address=? WHERE message_id=?',undef,($to,$id));
+}
+
sub _set_message_status ($) {
my $params = shift or return undef;
my $query = "INSERT INTO messages ( borrowernumber, branchcode, message_type, message ) VALUES ( ?, ?, ?, ? )";
my $sth = $dbh->prepare($query);
$sth->execute( $borrowernumber, $branchcode, $message_type, $message );
-
+ logaction("MEMBERS", "ADDCIRCMESSAGE", $borrowernumber, $message) if C4::Context->preference("BorrowersLog");
return 1;
}
my ( $message_id ) = @_;
my $dbh = C4::Context->dbh;
-
- my $query = "DELETE FROM messages WHERE message_id = ?";
+ my $query = "SELECT * FROM messages WHERE message_id = ?";
my $sth = $dbh->prepare($query);
$sth->execute( $message_id );
+ my $message = $sth->fetchrow_hashref();
+ $query = "DELETE FROM messages WHERE message_id = ?";
+ $sth = $dbh->prepare($query);
+ $sth->execute( $message_id );
+ logaction("MEMBERS", "DELCIRCMESSAGE", $message->{'borrowernumber'}, $message->{'message'}) if C4::Context->preference("BorrowersLog");
}
END { } # module clean-up code here (global destructor)
$options->{'Content-Style-Type' } = 'text/css';
$options->{'Content-Script-Type'} = 'text/javascript';
}
- # remove SUDOC specific NSB NSE
- $data =~ s/\x{C2}\x{98}|\x{C2}\x{9C}/ /g;
- $data =~ s/\x{C2}\x{88}|\x{C2}\x{89}/ /g;
-
+
# We can't encode here, that will double encode our templates, and xslt
# We need to fix the encoding as it comes out of the database, or when we pass the variables to templates
# to have spaces in them). Or perhaps if $queue eq "" and
# $env->{file} ne "", then that should mean "print to $env->{file}".
if ( $queue eq "" || $queue eq 'nulllp' ) {
- open( PRINTER, ">/tmp/kohaiss" );
+ return;
+ #open( PRINTER, ">/tmp/kohaiss" );
}
else {
}
sub printreserve {
+
+ # FIXME - make useful
+ return;
+
my ( $branchname, $bordata, $itemdata ) = @_;
my $printer = '';
(return) unless ( C4::Context->boolean_preference('printreserveslips') );
#'
sub printslip ($) {
+
+ #FIXME - make useful
+
my $borrowernumber = shift;
my $borrower = GetMemberDetails($borrowernumber);
my $issueslist = GetPendingIssues($borrowernumber);
# Getting the marcfields as an array
my @marcfieldsarray = split('\|', $marcfieldslist);
- # Separating the marcfields from the the user-supplied headers
+ # Separating the marcfields from the user-supplied headers
my @marcfields;
foreach (@marcfieldsarray) {
my @result = split('=', $_);
&ModReserveStatus
&ModReserveCancelAll
&ModReserveMinusPriority
+ &MoveReserve
&CheckReserves
&CanBookBeReserved
my ($itemnumber) = @_;
my $messages;
my $nextreservinfo;
- my ( $restype, $checkreserves ) = CheckReserves($itemnumber);
+ my ( undef, $checkreserves, undef ) = CheckReserves($itemnumber);
if ($checkreserves) {
my $iteminfo = GetItem($itemnumber);
if ( $iteminfo->{'holdingbranch'} ne $checkreserves->{'branchcode'} ) {
=head2 CheckReserves
- ($status, $reserve) = &CheckReserves($itemnumber);
- ($status, $reserve) = &CheckReserves(undef, $barcode);
+ ($status, $reserve, $all_reserves) = &CheckReserves($itemnumber);
+ ($status, $reserve, $all_reserves) = &CheckReserves(undef, $barcode);
Find a book in the reserves.
# note: we get the itemnumber because we might have started w/ just the barcode. Now we know for sure we have it.
my ( $biblio, $bibitem, $notforloan_per_itemtype, $notforloan_per_item, $itemnumber ) = $sth->fetchrow_array;
- return ( 0, 0 ) unless $itemnumber; # bail if we got nothing.
+ return ( '' ) unless $itemnumber; # bail if we got nothing.
# if item is not for loan it cannot be reserved either.....
# execpt where items.notforloan < 0 : This indicates the item is holdable.
- return ( 0, 0 ) if ( $notforloan_per_item > 0 ) or $notforloan_per_itemtype;
+ return ( '' ) if ( $notforloan_per_item > 0 ) or $notforloan_per_itemtype;
# Find this item in the reserves
my @reserves = _Findgroupreserve( $bibitem, $biblio, $itemnumber );
my $priority = 10000000;
foreach my $res (@reserves) {
if ( $res->{'itemnumber'} == $itemnumber && $res->{'priority'} == 0) {
- return ( "Waiting", $res ); # Found it
+ return ( "Waiting", $res, \@reserves ); # Found it
} else {
# See if this item is more important than what we've got so far
if ( $res->{'priority'} && $res->{'priority'} < $priority ) {
# We return the most important (i.e. next) reservation.
if ($highest) {
$highest->{'itemnumber'} = $item;
- return ( "Reserved", $highest );
- }
- else {
- return ( 0, 0 );
+ return ( "Reserved", $highest, \@reserves );
}
+
+ return ( '' );
}
=head2 CancelExpiredReserves
return $new_priority; # so the caller knows what priority they wind up receiving
}
+=head2 MoveReserve
+
+ MoveReserve( $itemnumber, $borrowernumber, $cancelreserve )
+
+Use when checking out an item to handle reserves
+If $cancelreserve boolean is set to true, it will remove existing reserve
+
+=cut
+
+sub MoveReserve {
+ my ( $itemnumber, $borrowernumber, $cancelreserve ) = @_;
+
+ my ( $restype, $res, $all_reserves ) = CheckReserves( $itemnumber );
+ return unless $res;
+
+ my $biblionumber = $res->{biblionumber};
+ my $biblioitemnumber = $res->{biblioitemnumber};
+
+ if ($res->{borrowernumber} == $borrowernumber) {
+ ModReserveFill($res);
+ }
+ else {
+ # warn "Reserved";
+ # The item is reserved by someone else.
+ # Find this item in the reserves
+
+ my $borr_res;
+ foreach (@$all_reserves) {
+ $_->{'borrowernumber'} == $borrowernumber or next;
+ $_->{'biblionumber'} == $biblionumber or next;
+
+ $borr_res = $_;
+ last;
+ }
+
+ if ( $borr_res ) {
+ # The item is reserved by the current patron
+ ModReserveFill($borr_res);
+ }
+
+ if ($cancelreserve) { # cancel reserves on this item
+ CancelReserve(0, $res->{'itemnumber'}, $res->{'borrowernumber'});
+ CancelReserve($res->{'biblionumber'}, 0, $res->{'borrowernumber'});
+ }
+ }
+}
+
=head2 MergeHolds
MergeHolds($dbh,$to_biblio, $from_biblio);
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(getreview savereview updatereview numberofreviews numberofreviewsbybiblionumber
- getreviews getallreviews approvereview deletereview);
+ getreviews getallreviews approvereview unapprovereview deletereview);
}
=head1 NAME
my $review=getreview($biblionumber,$borrowernumber);
savereview($biblionumber,$borrowernumber,$review);
updatereview($biblionumber,$borrowernumber,$review);
- my $count=numberofreviews($biblionumber);
+ my $count=numberofreviews($status);
+ my $count=numberofreviewsbybiblionumber($biblionumber);
my $reviews=getreviews($biblionumber);
my $reviews=getallreviews($status);
}
sub numberofreviews {
+ my ($param) = @_;
+ my $status = (defined($param) ? $param : 1);
my $dbh = C4::Context->dbh;
my $query =
"SELECT count(*) FROM reviews WHERE approved=?";
my $sth = $dbh->prepare($query);
- $sth->execute( 1 );
+ $sth->execute( $status );
return $sth->fetchrow;
}
$sth->execute( 1, $reviewid );
}
+=head2 unapprovereview
+
+ unapprovereview($reviewid);
+
+Takes a reviewid and marks that review as not approved
+
+=cut
+
+sub unapprovereview {
+ my ($reviewid) = @_;
+ my $dbh = C4::Context->dbh();
+ my $query = "UPDATE reviews
+ SET approved=?
+ WHERE reviewid=?";
+ my $sth = $dbh->prepare($query);
+ $sth->execute( 0, $reviewid );
+}
+
=head2 deletereview
deletereview($reviewid);
);
}
$debug and warn "patron fines: $ilspatron{fines} ... amountoutstanding: $kp->{amountoutstanding} ... CHARGES->amount: $flags->{CHARGES}->{amount}";
- for (qw(EXPIRED CHARGES CREDITS GNA LOST DEBARRED NOTES)) {
+ for (qw(EXPIRED CHARGES CREDITS GNA LOST DBARRED NOTES)) {
($flags->{$_}) or next;
if ($_ ne 'NOTES' and $flags->{$_}->{message}) {
$ilspatron{screen_msg} .= " -- " . $flags->{$_}->{message}; # show all but internal NOTES
# If reading or writing fails, then the server's dead,
# so there's no point in continuing.
- if (!write_msg({seqno => $seqno}, $test->{msg}, $sock)) {
- BAIL_OUT("Write failure in $test->{id}");
- } elsif (!($resp = <$sock>)) {
- BAIL_OUT("Read failure in $test->{id}");
+ if ( !write_msg( { seqno => $seqno }, $test->{msg}, $sock ) ) {
+ BAIL_OUT("Write failure in $test->{id}");
+ }
+
+ my $rv = sysread( $sock, $resp, 10000000 ); # 10000000 is a big number
+
+ if ( !$rv ) {
+ BAIL_OUT("Read failure in $test->{id}");
}
chomp($resp);
require Exporter;
use vars qw($VERSION @ISA @EXPORT_OK %EXPORT_TAGS);
+eval {
+ my $servers = C4::Context->config('memcached_servers');
+ if ($servers) {
+ require Memoize::Memcached;
+ import Memoize::Memcached qw(memoize_memcached);
+
+ my $memcached = {
+ servers => [$servers],
+ key_prefix => C4::Context->config('memcached_namespace') || 'koha',
+ };
+
+ memoize_memcached( '_get_columns', memcached => $memcached, expire_time => 600000 ); #cache for 10 minutes
+ memoize_memcached( 'GetPrimaryKeys', memcached => $memcached, expire_time => 600000 ); #cache for 10 minutes
+ }
+};
+
BEGIN {
# set the version for version checking
$VERSION = 0.5;
SearchInTable
UpdateInTable
GetPrimaryKeys
+ clear_columns_cache
);
%EXPORT_TAGS = ( all =>[qw( InsertInTable DeleteInTable SearchInTable UpdateInTable GetPrimaryKeys)]
);
}
+my $tablename;
+my $hashref;
+
=head1 NAME
C4::SQLHelper - Perl Module containing convenience functions for SQL Handling
return grep { $hash_columns->{$_}->{'Key'} =~/PRI/i} keys %$hash_columns;
}
+
+=head2 clear_columns_cache
+
+ C4::SQLHelper->clear_columns_cache();
+
+cleans the internal cache of sysprefs. Please call this method if
+you update a tables structure. Otherwise, your new changes
+will not be seen by this process.
+
+=cut
+
+sub clear_columns_cache {
+ %$hashref = ();
+}
+
+
+
=head2 _get_columns
_get_columns($tablename)
=cut
sub _get_columns($) {
- my ($tablename)=@_;
- my $dbh=C4::Context->dbh;
- my $sth=$dbh->prepare_cached(qq{SHOW COLUMNS FROM $tablename });
- $sth->execute;
- my $columns= $sth->fetchall_hashref(qw(Field));
+ my ($tablename) = @_;
+ unless ( exists( $hashref->{$tablename} ) ) {
+ my $dbh = C4::Context->dbh;
+ my $sth = $dbh->prepare_cached(qq{SHOW COLUMNS FROM $tablename });
+ $sth->execute;
+ my $columns = $sth->fetchall_hashref(qw(Field));
+ $hashref->{$tablename} = $columns;
+ }
+ return $hashref->{$tablename};
}
=head2 _filter_columns
- _filter_columns($tablename,$research, $filtercolumns)
+=over 4
+
+_filter_columns($tablename,$research, $filtercolumns)
+
+=back
Given
- a tablename
my ($transfertfrom, $transfertto);
# is item on the reserve shelf?
- my $reservestatus = 0;
+ my $reservestatus = '';
my $reserveitem;
unless ($item->{wthdrawn}
# should map transit status to record indexed in Zebra.
#
($transfertwhen, $transfertfrom, $transfertto) = C4::Circulation::GetTransfers($item->{itemnumber});
- ($reservestatus, $reserveitem) = C4::Reserves::CheckReserves($item->{itemnumber});
+ ($reservestatus, $reserveitem, undef) = C4::Reserves::CheckReserves($item->{itemnumber});
}
# item is withdrawn, lost, damaged, not for loan, reserved or in transit
my $odd = 1;
while ( my $line = $sth->fetchrow_hashref ) {
- if ( $previousbiblio eq $line->{biblionumber} ) {
- $line->{title} = "";
- $line->{issn} = "";
- } else {
- $previousbiblio = $line->{biblionumber};
- $odd = -$odd;
- }
- $line->{toggle} = 1 if $odd == 1;
$line->{'cannotedit'} =
( C4::Context->preference('IndependantBranches')
&& C4::Context->userenv
&whitelist
&is_approved
&approval_counts
+ &get_count_by_tag_status
&get_filters
);
# %EXPORT_TAGS = ();
return $result;
}
+=head2 get_count_by_tag_status
+
+ get_count_by_tag_status($status);
+
+Takes a status and gets a count of tags with that status
+
+=cut
+
+sub get_count_by_tag_status {
+ my ($status) = @_;
+ my $dbh = C4::Context->dbh;
+ my $query =
+ "SELECT count(*) FROM tags_approval WHERE approved=?";
+ my $sth = $dbh->prepare($query);
+ $sth->execute( $status );
+ return $sth->fetchrow;
+}
+
sub remove_tag ($;$) {
my $tag_id = shift or return undef;
my $user_id = (@_) ? shift : undef;
my $template = Template->new(
{ EVAL_PERL => 1,
ABSOLUTE => 1,
+ PLUGIN_BASE => 'Koha::Template::Plugin',
INCLUDE_PATH => [
"$htdocs/$theme/$lang/includes",
"$htdocs/$theme/en/includes"
($query) or warn "no query in themelanguage";
# Select a language based on cookie, syspref available languages & browser
- my $is_intranet = $interface eq 'intranet';
- my @languages = split(",", C4::Context->preference(
- $is_intranet ? 'language' : 'opaclanguages'));
- my $lang;
- $lang = getlanguagecookie($query);
- unless ($lang) {
- my $http_accept_language = $ENV{ HTTP_ACCEPT_LANGUAGE };
- $lang = accept_language( $http_accept_language,
- getTranslatedLanguages($interface,'prog') );
- }
- # Ignore a lang not selected in sysprefs
- $lang = undef unless first { $_ eq $lang } @languages;
- # Fall back to English if necessary
- $lang = 'en' unless $lang;
+ my $lang = getlanguage($query, $interface);
+ # Select theme
+ my $is_intranet = $interface eq 'intranet';
my @themes = split(" ", C4::Context->preference(
$is_intranet ? "template" : "opacthemes" ));
push @themes, 'prog';
);
}
-sub getlanguagecookie {
- my ($query) = @_;
+
+sub getlanguage {
+ my ($query, $interface) = @_;
+
+ # Select a language based on cookie, syspref available languages & browser
+ my $is_intranet = $interface eq 'intranet';
+ my @languages = split(",", C4::Context->preference(
+ $is_intranet ? 'language' : 'opaclanguages'));
+
my $lang;
- if ($query->cookie('KohaOpacLanguage')){
- $lang = $query->cookie('KohaOpacLanguage') ;
- }else{
- $lang = $ENV{HTTP_ACCEPT_LANGUAGE};
-
+
+ # cookie
+ if ( $query->cookie('KohaOpacLanguage') ) {
+ $lang = $query->cookie('KohaOpacLanguage');
+ $lang =~ s/[^a-zA-Z_-]*//; # sanitize cookie
}
- $lang =~ s/[^a-zA-Z_-]*//; #sanitzie
+
+ # HTTP_ACCEPT_LANGUAGE
+ unless ($lang) {
+ my $http_accept_language = $ENV{ HTTP_ACCEPT_LANGUAGE };
+ $lang = accept_language( $http_accept_language,
+ getTranslatedLanguages($interface,'prog') );
+ }
+
+ # Ignore a lang not selected in sysprefs
+ $lang = undef unless first { $_ eq $lang } @languages;
+
+ # Fall back to English if necessary
+ $lang = 'en' unless $lang;
+
return $lang;
}
$qhash{$_} = $query->param($_) if $query->param($_);
}
( scalar keys %qhash ) and $url .= '?' . join '&', map { "$_=$qhash{$_}" } keys %qhash;
- if ( $shelfnumber ) {
+ if ( $shelfnumber && $totitems ) {
$template->param( pagination_bar => pagination_bar( $url, ( int( $totitems / $shelflimit ) ) + ( ( $totitems % $shelflimit ) > 0 ? 1 : 0 ), $itemoff, "itemoff" ) );
- } else {
+ } elsif ( $totshelves ) {
$template->param(
pagination_bar => pagination_bar( $url, ( int( $totshelves / $shelveslimit ) ) + ( ( $totshelves % $shelveslimit ) > 0 ? 1 : 0 ), $shelfoff, "shelfoff" ) );
}
sub transformMARCXML4XSLT {
my ($biblionumber, $record) = @_;
- my $frameworkcode = GetFrameworkCode($biblionumber);
+ my $frameworkcode = GetFrameworkCode($biblionumber) || '';
my $tagslib = &GetMarcStructure(1,$frameworkcode);
my @fields;
# FIXME: wish there was a better way to handle exceptions
my ( $transfertwhen, $transfertfrom, $transfertto ) = C4::Circulation::GetTransfers($item->{itemnumber});
- my ( $reservestatus, $reserveitem ) = C4::Reserves::CheckReserves($item->{itemnumber});
+ my ( $reservestatus, $reserveitem, undef ) = C4::Reserves::CheckReserves($item->{itemnumber});
if ( $itemtypes->{ $item->{itype} }->{notforloan} || $item->{notforloan} || $item->{onloan} || $item->{wthdrawn} || $item->{itemlost} || $item->{damaged} ||
(defined $transfertwhen && $transfertwhen ne '') || $item->{itemnotforloan} || (defined $reservestatus && $reservestatus eq "Waiting") ){
== Install the Zebra package ==
Zebra is already in the standard repository of openSUSE 11.3, so it seems better to install it.
-In the next chapter a question will be asked wether it is installed, so you better install it; no harm done.
+In the next chapter a question will be asked whether it is installed, so you better install it; no harm done.
Because you may need the documentation, that will also be installed.
Note that the package name is idzebra.
--- /dev/null
+package Koha::Template::Plugin::KohaDates;
+
+# Copyright Catalyst IT 2011
+
+# 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.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+use Template::Plugin::Filter;
+use base qw( Template::Plugin::Filter );
+
+use C4::Dates;
+
+sub filter {
+ my ($self,$text) = @_;
+ my $date = C4::Dates->new( $text, 'iso' );
+ return $date->output("syspref");
+}
+
+1;
\ No newline at end of file
use C4::Context;
use C4::Installer;
+#use Smart::Comments '####';
+
my $query = new CGI;
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
{
$row = [];
}
}
+## ## $table
$template->param( table => $table );
+
+## ------------------------------------------
+## Koha time line code
+
+#get file location
+my $dir = C4::Context->config('intranetdir');
+open( my $file, "<", "$dir" . "/docs/history.txt" );
+my $i = 0;
+
+my @rows2 = ();
+my $row2 = [];
+
+my @lines = <$file>;
+close($file);
+
+shift @lines; #remove header row
+
+foreach (@lines) {
+ my ( $date, $desc, $tag ) = split(/\t/);
+ push(
+ @rows2,
+ {
+ date => $date,
+ desc => $desc,
+ }
+ );
+}
+
+my $table2 = [];
+#foreach my $row2 (@rows2) {
+foreach (@rows2) {
+ push (@$row2, $_);
+ push( @$table2, { row2 => $row2 } );
+ $row2 = [];
+}
+
+$template->param( table2 => $table2 );
+
output_html_with_http_headers $query, $cookie, $template->output;
last;
}
+ my @cancelledorders = GetCancelledOrders($basketno);
+ foreach (@cancelledorders) {
+ $_->{'line_total'} = sprintf("%.2f", $_->{'ecost'} * $_->{'quantity'});
+ }
+
$template->param(
basketno => $basketno,
basketname => $basket->{'basketname'},
name => $bookseller->{'name'},
entrydate => C4::Dates->new($results[0]->{'entrydate'},'iso')->output,
books_loop => \@books_loop,
+ cancelledorders_loop => \@cancelledorders,
gist_rate => sprintf( "%.2f", $gist * 100 ) . '%',
total_rrp_gste => sprintf( "%.2f", $total_rrp_gste ),
total_est_gste => sprintf( "%.2f", $total_est_gste ),
--- /dev/null
+#!/usr/bin/perl
+
+# Copyright 2008 - 2009 BibLibre SARL
+# Copyright 2010,2011 Catalyst IT Limited
+# 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.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+=head1 NAME
+
+ordered.pl
+
+=head1 DESCRIPTION
+
+this script is to show orders ordered but not yet received
+
+=cut
+
+use C4::Context;
+use strict;
+use warnings;
+use CGI;
+use C4::Auth;
+use C4::Output;
+use C4::Dates;
+
+my $dbh = C4::Context->dbh;
+my $input = new CGI;
+my $fund_id = $input->param('fund');
+my $fund_code = $input->param('fund_code');
+
+my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
+ {
+ template_name => "acqui/ordered.tt",
+ query => $input,
+ type => "intranet",
+ authnotrequired => 0,
+ flagsrequired => { acquisition => 1 },
+ debug => 1,
+ }
+);
+
+my $query = <<EOQ;
+SELECT
+ aqorders.basketno, aqorders.ordernumber,
+ quantity-quantityreceived AS tleft,
+ ecost, budgetdate, entrydate,
+ aqbasket.booksellerid,
+ itype,
+ title
+FROM (aqorders, aqbasket)
+LEFT JOIN biblio ON
+ biblio.biblionumber=aqorders.biblionumber
+LEFT JOIN aqorders_items ON
+ aqorders.ordernumber=aqorders_items.ordernumber
+LEFT JOIN items ON
+ items.itemnumber=aqorders_items.itemnumber
+WHERE
+ aqorders.basketno=aqbasket.basketno AND
+ budget_id=? AND
+ (datecancellationprinted IS NULL OR
+ datecancellationprinted='0000-00-00') AND
+ (quantity > quantityreceived OR quantityreceived IS NULL)
+ GROUP BY aqorders.ordernumber
+EOQ
+
+my $sth = $dbh->prepare($query);
+
+$sth->execute($fund_id);
+if ( $sth->err ) {
+ die "Error occurred fetching records: " . $sth->errstr;
+}
+my @ordered;
+
+my $total = 0;
+while ( my $data = $sth->fetchrow_hashref ) {
+ my $left = $data->{'tleft'};
+ if ( !$left || $left eq '' ) {
+ $left = $data->{'quantity'};
+ }
+ if ( $left && $left > 0 ) {
+ my $subtotal = $left * $data->{'ecost'};
+ $data->{subtotal} = sprintf( "%.2f", $subtotal );
+ $data->{'left'} = $left;
+ push @ordered, $data;
+ $total += $subtotal;
+ }
+}
+$total = sprintf( "%.2f", $total );
+
+$template->{VARS}->{'fund'} = $fund_id;
+$template->{VARS}->{'ordered'} = \@ordered;
+$template->{VARS}->{'total'} = $total;
+$template->{VARS}->{'fund_code'} = $fund_code;
+
+$sth->finish;
+
+output_html_with_http_headers $input, $cookie, $template->output;
use C4::Output;
use C4::Dates qw/format_date/;
use C4::Bookseller qw/ GetBookSellerFromId /;
+use C4::Budgets qw/ GetBudget /;
use C4::Members;
use C4::Branch; # GetBranches
use C4::Items;
if ( @$results[0]->{'unitprice'} == 0 ) {
@$results[0]->{'unitprice'} = '';
}
+
+ my $authorisedby = @$results[0]->{'authorisedby'};
+ my $member = GetMember( borrowernumber => $authorisedby );
+
+ my $budget = GetBudget( @$results[0]->{'budget_id'} );
+
$template->param(
count => 1,
biblionumber => @$results[0]->{'biblionumber'},
copyrightdate => @$results[0]->{'copyrightdate'},
isbn => @$results[0]->{'isbn'},
seriestitle => @$results[0]->{'seriestitle'},
- bookfund => @$results[0]->{'bookfundid'},
+ bookfund => $budget->{budget_name},
quantity => @$results[0]->{'quantity'},
quantityreceivedplus1 => @$results[0]->{'quantityreceived'} + 1,
quantityreceived => @$results[0]->{'quantityreceived'},
rrp => @$results[0]->{'rrp'},
ecost => @$results[0]->{'ecost'},
unitprice => @$results[0]->{'unitprice'},
+ memberfirstname => $member->{firstname} || "",
+ membersurname => $member->{surname} || "",
invoice => $invoice,
datereceived => $datereceived->output(),
- datereceived_iso => $datereceived->output('iso'),
- notes => $order->{notes}
+ datereceived_iso => $datereceived->output('iso'),
+ notes => $order->{notes}
);
}
else {
--- /dev/null
+#!/usr/bin/perl
+
+# script to show a breakdown of committed and spent budgets
+
+# Copyright 2002-2009 Katipo Communications Limited
+# Copyright 2010,2011 Catalyst IT Limited
+# 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.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+=head1 NAME
+
+ spent.pl
+
+=head1 DESCRIPTION
+
+this script is designed to show the spent amount in budges
+
+=cut
+
+use C4::Context;
+use C4::Auth;
+use C4::Output;
+use C4::Dates;
+use strict;
+use warnings;
+use CGI;
+
+my $dbh = C4::Context->dbh;
+my $input = new CGI;
+my $bookfund = $input->param('fund');
+my $fund_code = $input->param('fund_code');
+
+my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
+ {
+ template_name => "acqui/spent.tt",
+ query => $input,
+ type => "intranet",
+ authnotrequired => 0,
+ flagsrequired => { acquisition => 1 },
+ debug => 1,
+ }
+);
+
+my $query = <<EOQ;
+SELECT
+ aqorders.basketno, aqorders.ordernumber,
+ quantity-quantityreceived AS tleft,
+ ecost, budgetdate, entrydate,
+ aqbasket.booksellerid,
+ itype,
+ title,
+ aqorders.booksellerinvoicenumber,
+ quantityreceived,
+ unitprice,
+ freight,
+ datereceived,
+ aqorders.biblionumber
+FROM (aqorders, aqbasket)
+LEFT JOIN items ON
+ items.biblioitemnumber=aqorders.biblioitemnumber
+LEFT JOIN biblio ON
+ biblio.biblionumber=aqorders.biblionumber
+LEFT JOIN aqorders_items ON
+ aqorders.ordernumber=aqorders_items.ordernumber
+WHERE
+ aqorders.basketno=aqbasket.basketno AND
+ budget_id=? AND
+ (datecancellationprinted IS NULL OR
+ datecancellationprinted='0000-00-00')
+ GROUP BY aqorders.ordernumber
+EOQ
+my $sth = $dbh->prepare($query);
+$sth->execute($bookfund);
+if ( $sth->err ) {
+ die "An error occurred fetching records: " . $sth->errstr;
+}
+my $total = 0;
+my $toggle;
+my @spent;
+while ( my $data = $sth->fetchrow_hashref ) {
+ my $recv = $data->{'quantityreceived'};
+ if ( $recv > 0 ) {
+ my $subtotal = $recv * ( $data->{'unitprice'} + $data->{'freight'} );
+ $data->{'subtotal'} = sprintf( "%.2f", $subtotal );
+ $data->{'freight'} = sprintf( "%.2f", $data->{'freight'} );
+ $data->{'unitprice'} = sprintf( "%.2f", $data->{'unitprice'} );
+ $total += $subtotal;
+ push @spent, $data;
+ }
+
+}
+$total = sprintf( "%.2f", $total );
+
+$template->{VARS}->{'fund'} = $bookfund;
+$template->{VARS}->{'spent'} = \@spent;
+$template->{VARS}->{'total'} = $total;
+$template->{VARS}->{'fund_code'} = $fund_code;
+$sth->finish;
+
+output_html_with_http_headers $input, $cookie, $template->output;
foreach my $piece ( @$line ) {
if ( ref( $piece ) eq 'HASH' ) {
+ if ( !$piece->{'pref'} ){ next; }
if ( $piece->{'pref'} =~ /^$searchfield$/i ) {
my ( undef, $LINES ) = TransformPrefsToHTML( $data, $searchfield );
sub matches {
my ( $text, $terms ) = @_;
- return !grep( { $text !~ /$_/i } @$terms );
+ if ( $text ) { return !grep( { $text !~ /$_/i } @$terms ); }
}
my $dbh = C4::Context->dbh;
$tabsysprefs{NotifyBorrowerDeparture} = "Patrons";
$tabsysprefs{memberofinstitution} = "Patrons";
$tabsysprefs{BorrowerMandatoryField} = "Patrons";
+$tabsysprefs{BorrowerUnwantedField} = "Patrons";
$tabsysprefs{borrowerRelationship} = "Patrons";
$tabsysprefs{BorrowersTitles} = "Patrons";
$tabsysprefs{patronimages} = "Patrons";
}
elsif ( $tagslib->{$tag}->{$subfield}->{'value_builder'} ) {
- # opening plugin. Just check wether we are on a developper computer on a production one
+ # opening plugin. Just check whether we are on a developer computer on a production one
# (the cgidir differs)
my $cgidir = C4::Context->intranetdir . "/cgi-bin/cataloguing/value_builder";
unless (-r $cgidir and -d $cgidir) {
subscriptiontitle => $subscriptiontitle,
);
}
+my $record = GetMarcBiblio($biblionumber);
$template->param (
ISBD => $res,
biblionumber => $biblionumber,
isbdview => 1,
z3950_search_params => C4::Search::z3950_search_args(GetBiblioData($biblionumber)),
- C4::Search::enabled_staff_search_views
+ ocoins => GetCOinSBiblio($record),
+ C4::Search::enabled_staff_search_views,
);
output_html_with_http_headers $query, $cookie, $template->output;
);
my $record = GetMarcBiblio($biblionumber);
+$template->param( ocoins => GetCOinSBiblio($record) );
if ( not defined $record ) {
# biblionumber invalid -> report and exit
}
$template->param( 'SpineLabelShowPrintOnBibDetails' => C4::Context->preference("SpineLabelShowPrintOnBibDetails") );
+$template->param( ocoins => GetCOinSBiblio($record) );
# some useful variables for enhanced content;
# in each case, we're grabbing the first value we find in
my $authvalcode_items_damaged = GetAuthValCode('items.damaged', $fw);
my $analytics_flag;
+my $materials_flag; # set this if the items have anything in the materials field
foreach my $item (@items) {
$item->{homebranch} = GetBranchName($item->{homebranch});
$analytics_flag=1;
$item->{countanalytics} = $countanalytics;
}
-
+ if ($item->{'materials'} ne ''){
+ $materials_flag = 1;
+ }
push @itemloop, $item;
}
hostrecords => $hostrecords,
analytics_flag => $analytics_flag,
C4::Search::enabled_staff_search_views,
+ materials => $materials_flag,
);
if (C4::Context->preference("AlternateHoldingsField") && scalar @items == 0) {
my $biblionumber = $params->{'biblionumber'};
my $itemnumber = $params->{'itemnumber'};
+if (C4::Context->preference("HidePatronName")) {
+ $template->param(HidePatronName => 1);
+}
+
my ($issues,$biblio,$barcode);
if ($itemnumber){
$issues=GetItemIssues($itemnumber);
my $bi=$query->param('bi');
$bi = $biblionumber unless $bi;
my $itemnumber = $query->param('itemnumber');
-my $data=GetBiblioData($biblionumber);
+my $data = &GetBiblioData($biblionumber);
my $dewey = $data->{'dewey'};
my $showallitems = $query->param('showallitems');
# $dewey=~ s/\.$//;
# $data->{'dewey'}=$dewey;
-my @results;
my $fw = GetFrameworkCode($biblionumber);
my @all_items= GetItemsInfo($biblionumber);
my @items;
push (@items,@hostitems);
}
-
+my $subtitle = GetRecordValue('subtitle', $record, $fw);
my $totalcount=@all_items;
my $showncount=@items;
my $itemtypes = GetItemTypes;
$data->{'itemtypename'} = $itemtypes->{$data->{'itemtype'}}->{'description'};
-$results[0]=$data;
+
+foreach ( keys %{$data} ) {
+ $template->param( "$_" => defined $data->{$_} ? $data->{$_} : '' );
+}
+
($itemnumber) and @items = (grep {$_->{'itemnumber'} == $itemnumber} @items);
foreach my $item (@items){
$item->{itemlostloop}= GetAuthorisedValues(GetAuthValCode('items.itemlost',$fw),$item->{itemlost}) if GetAuthValCode('items.itemlost',$fw);
subscriptiontitle => $data->{title},
C4::Search::enabled_staff_search_views,
);
-$template->param(BIBITEM_DATA => \@results);
-$template->param(ITEM_DATA => \@items);
-$template->param(moredetailview => 1);
-$template->param(loggedinuser => $loggedinuser);
-$template->param(biblionumber => $biblionumber);
-$template->param(biblioitemnumber => $bi);
-$template->param(itemnumber => $itemnumber);
+
+$template->param(
+ ITEM_DATA => \@items,
+ moredetailview => 1,
+ loggedinuser => $loggedinuser,
+ biblionumber => $biblionumber,
+ biblioitemnumber => $bi,
+ itemnumber => $itemnumber,
+ z3950_search_params => C4::Search::z3950_search_args(GetBiblioData($biblionumber)),
+ subtitle => $subtitle,
+);
$template->param(ONLY_ONE => 1) if ( $itemnumber && $showncount != @items );
-$template->param(z3950_search_params => C4::Search::z3950_search_args(GetBiblioData($biblionumber)));
output_html_with_http_headers $query, $cookie, $template->output;
my $languages_limit_loop = getAllLanguages();
$template->param(search_languages_loop => $languages_limit_loop,);
- # use the global setting by default
- if ( C4::Context->preference("expandedSearchOption") == 1) {
- $template->param( expanded_options => C4::Context->preference("expandedSearchOption") );
- }
- # but let the user override it
- if ( ($cgi->param('expanded_options') == 0) || ($cgi->param('expanded_options') == 1 ) ) {
- $template->param( expanded_options => $cgi->param('expanded_options'));
+ # Expanded search options in advanced search:
+ # use the global setting by default, but let the user override it
+ {
+ my $expanded = $cgi->param('expanded_options');
+ $expanded = C4::Context->preference("expandedSearchOption") || 0
+ if !defined($expanded) || $expanded !~ /^0|1$/;
+ $template->param( expanded_options => $expanded );
}
$template->param(virtualshelves => C4::Context->preference("virtualshelves"));
# $ %z3950p will be a hash ref if the indexes are present (advacned search), otherwise undef
my $z3950par;
my $indexes2z3950 = {
- kw=>'title', au=>'author', 'au,phr'=>'author', nb=>'isbn', ns=>'issn',
- 'lcn,phr'=>'dewey', su=>'subject', 'su,phr'=>'subject',
- ti=>'title', 'ti,phr'=>'title', se=>'title'
+ kw=>'title', au=>'author', 'au,phr'=>'author', nb=>'isbn', ns=>'issn',
+ 'lcn,phr'=>'dewey', su=>'subject', 'su,phr'=>'subject',
+ ti=>'title', 'ti,phr'=>'title', se=>'title'
};
for (my $ii = 0; $ii < @operands; ++$ii)
{
- my $name = $indexes2z3950->{$indexes[$ii]};
- if (defined $name && defined $operands[$ii])
- {
- $z3950par ||= {};
- $z3950par->{$name} = $operands[$ii] if !exists $z3950par->{$name};
- }
+ my $name = $indexes2z3950->{$indexes[$ii]};
+ if (defined $name && defined $operands[$ii])
+ {
+ $z3950par ||= {};
+ $z3950par->{$name} = $operands[$ii] if !exists $z3950par->{$name};
+ }
}
my @results;
## I. BUILD THE QUERY
-my $lang = C4::Templates::getlanguagecookie($cgi);
+my $lang = C4::Templates::getlanguage($cgi, 'intranet');
( $error,$query,$simple_query,$query_cgi,$query_desc,$limit,$limit_cgi,$limit_desc,$stopwords_removed,$query_type) = buildQuery(\@operators,\@operands,\@indexes,\@limits,\@sort_by,$scan,$lang);
## parse the query_cgi string and put it into a form suitable for <input>s
my $input_name = $1;
my $input_value = $2;
push @query_inputs, { input_name => $input_name, input_value => $input_value };
- if ($input_name eq 'idx') {
- $scan_index_to_use = $input_value; # unless $scan_index_to_use;
- }
+ if ($input_name eq 'idx') {
+ $scan_index_to_use = $input_value; # unless $scan_index_to_use;
+ }
}
$template->param ( QUERY_INPUTS => \@query_inputs,
scan_index_to_use => $scan_index_to_use );
## If there's just one result, redirect to the detail page
if ($total == 1) {
my $biblionumber = $newresults[0]->{biblionumber};
- my $defaultview = C4::Context->preference('IntranetBiblioDefaultView');
- my $views = { C4::Search::enabled_staff_search_views };
+ my $defaultview = C4::Context->preference('IntranetBiblioDefaultView');
+ my $views = { C4::Search::enabled_staff_search_views };
if ($defaultview eq 'isbd' && $views->{can_view_ISBD}) {
print $cgi->redirect("/cgi-bin/koha/catalogue/ISBDdetail.pl?biblionumber=$biblionumber");
} elsif ($defaultview eq 'marc' && $views->{can_view_MARC}) {
$template->param(limit_desc => $limit_desc);
$template->param(offset => $offset);
$template->param(DisplayMultiPlaceHold => $DisplayMultiPlaceHold);
- $template->param (z3950_search_params => C4::Search::z3950_search_args($query_desc));
+ $template->param (z3950_search_params => C4::Search::z3950_search_args($query_desc));
if ($query_desc || $limit_desc) {
$template->param(searchdesc => 1);
}
$template->param(stopwords_removed => "@$stopwords_removed") if $stopwords_removed;
$template->param(results_per_page => $results_per_page);
+ # must define a value for size if not present in DB
+ # in order to avoid problems generated by the default size value in TT
+ foreach my $line (@newresults) {
+ if ( not exists $line->{'size'} ) { $line->{'size'} = "" }
+ }
$template->param(SEARCH_RESULTS => \@newresults);
-
## FIXME: add a global function for this, it's better than the current global one
## Build the page numbers on the bottom of the page
my @page_numbers;
# no hits
else {
$template->param(searchdesc => 1,query_desc => $query_desc,limit_desc => $limit_desc);
- $template->param (z3950_search_params => C4::Search::z3950_search_args($z3950par || $query_desc));
+ $template->param (z3950_search_params => C4::Search::z3950_search_args($z3950par || $query_desc));
}
} # end of the if local
total => $total,
opacfacets => 1,
facets_loop => $facets,
- displayFacetCount=> C4::Context->preference('displayFacetCount')||0,
+ displayFacetCount=> C4::Context->preference('displayFacetCount')||0,
scan => $scan,
search_error => $error,
);
}
elsif ( $tagslib->{$tag}->{$subfield}->{'value_builder'} ) {
- # opening plugin. Just check wether we are on a developper computer on a production one
+ # opening plugin. Just check whether we are on a developer computer on a production one
# (the cgidir differs)
my $cgidir = C4::Context->intranetdir . "/cgi-bin/cataloguing/value_builder";
unless ( opendir( DIR, "$cgidir" ) ) {
# SimpleSearch() give the results per page we want, so 0 offet here
my $total = @{$marcresults};
my @newresults = searchResults( 'intranet', $query, $total, $results_per_page, 0, 0, @{$marcresults} );
+ foreach my $line (@newresults) {
+ if ( not exists $line->{'size'} ) { $line->{'size'} = "" }
+ }
$template->param(
total => $total_hits,
query => $query,
$nextop="additem";
}
else {
- print $input->redirect("/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=$biblionumber");
+ my $defaultview = C4::Context->preference('IntranetBiblioDefaultView');
+ my $views = { C4::Search::enabled_staff_search_views };
+ if ($defaultview eq 'isbd' && $views->{can_view_ISBD}) {
+ print $input->redirect("/cgi-bin/koha/catalogue/ISBDdetail.pl?biblionumber=$biblionumber");
+ } elsif ($defaultview eq 'marc' && $views->{can_view_MARC}) {
+ print $input->redirect("/cgi-bin/koha/catalogue/MARCdetail.pl?biblionumber=$biblionumber");
+ } elsif ($defaultview eq 'labeled_marc' && $views->{can_view_labeledMARC}) {
+ print $input->redirect("/cgi-bin/koha/catalogue/labeledMARCdetail.pl?biblionumber=$biblionumber");
+ } else {
+ print $input->redirect("/cgi-bin/koha/catalogue/detail.pl?biblionumber=$biblionumber");
+ }
exit;
}
}
my @hostitemnumbers;
-my $analyticfield = '773';
-if ($marcflavour eq 'MARC21' || $marcflavour eq 'NORMARC') {
- $analyticfield = '773';
-} elsif ($marcflavour eq 'UNIMARC') {
- $analyticfield = '461';
-}
-foreach my $hostfield ($temp->field($analyticfield)){
- if ($hostfield->subfield('0')){
- my $hostrecord = GetMarcBiblio($hostfield->subfield('0'), 1);
- my ($itemfield, undef) = GetMarcFromKohaField( 'items.itemnumber', GetFrameworkCode($hostfield->subfield('0')) );
- foreach my $hostitem ($hostrecord->field($itemfield)){
- if ($hostitem->subfield('9') eq $hostfield->subfield('9')){
- push (@fields, $hostitem);
- push (@hostitemnumbers, $hostfield->subfield('9'));
+if ( C4::Context->preference('EasyAnalyticalRecords') ) {
+ my $analyticfield = '773';
+ if ($marcflavour eq 'MARC21' || $marcflavour eq 'NORMARC') {
+ $analyticfield = '773';
+ } elsif ($marcflavour eq 'UNIMARC') {
+ $analyticfield = '461';
+ }
+ foreach my $hostfield ($temp->field($analyticfield)){
+ if ($hostfield->subfield('0')){
+ my $hostrecord = GetMarcBiblio($hostfield->subfield('0'), 1);
+ my ($itemfield, undef) = GetMarcFromKohaField( 'items.itemnumber', GetFrameworkCode($hostfield->subfield('0')) );
+ foreach my $hostitem ($hostrecord->field($itemfield)){
+ if ($hostitem->subfield('9') eq $hostfield->subfield('9')){
+ push (@fields, $hostitem);
+ push (@hostitemnumbers, $hostfield->subfield('9'));
+ }
}
}
}
}
-
foreach my $field (@fields) {
next if ( $field->tag() < 10 );
}
}
$this_row{itemnumber} = $subfieldvalue if ($field->tag() eq $itemtagfield && $subfieldcode eq $itemtagsubfield);
- foreach my $hostitemnumber (@hostitemnumbers){
+
+ if ( C4::Context->preference('EasyAnalyticalRecords') ) {
+ foreach my $hostitemnumber (@hostitemnumbers){
if ($this_row{itemnumber} eq $hostitemnumber){
$this_row{hostitemflag} = 1;
$this_row{hostbiblionumber}= GetBiblionumberFromItemnumber($hostitemnumber);
last;
}
- }
+ }
-# my $countanalytics=GetAnalyticsCount($this_row{itemnumber});
-# if ($countanalytics > 0){
+# my $countanalytics=GetAnalyticsCount($this_row{itemnumber});
+# if ($countanalytics > 0){
# $this_row{countanalytics} = $countanalytics;
-# }
+# }
+ }
}
if (%this_row) {
C4::Context->userenv &&
C4::Context->userenv->{flags}!=1 &&
C4::Context->userenv->{branch};
-my $branch = C4::Context->userenv->{branch};
-if ($frameworkcode eq 'FA'){
- $branch = $input->param('branch');
-}
+my $branch = $input->param('branch') || C4::Context->userenv->{branch};
my $branches = GetBranchesLoop($branch,$onlymine); # build once ahead of time, instead of multiple times later.
# We generate form, from actuel record
next if subfield_is_koha_internal_p($subfieldtag);
next if ($tagslib->{$tag}->{$subfieldtag}->{'tab'} ne "10");
- $subfieldlib->{hidden} = 1
- if $tagslib->{$tag}->{$subfieldtag}->{authorised_value} eq 'LOST';
my $subfield_data = generate_subfield_form($tag, $subfieldtag, $value, $tagslib, $subfieldlib, $branches, $today_iso, $biblionumber, $temp, \@loop_data, $i);
push @fields, "$tag$subfieldtag";
my $input = new CGI;
my $plugin_name="cataloguing/value_builder/".$input->param("plugin_name");
-# opening plugin. Just check wether we are on a developper computer on a production one
+# opening plugin. Just check whether we are on a developer computer on a production one
# (the cgidir differs)
my $cgidir = C4::Context->intranetdir ."/cgi-bin";
my $vbdir = "$cgidir/cataloguing/value_builder";
# with Koha; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-#use strict;
-#use warnings; FIXME - Bug 2505
+use strict;
+use warnings;
use C4::Context;
=head1 plugin_parameters
my $branchcode = C4::Context->userenv->{'branch'};
- $query = "SELECT MAX(CAST(SUBSTRING_INDEX(stocknumber,'_',-1) AS SIGNED))+1 FROM items WHERE homebranch = ? AND stocknumber LIKE ?";
+ my $query = "SELECT MAX(CAST(SUBSTRING_INDEX(stocknumber,'_',-1) AS SIGNED))+1 FROM items WHERE homebranch = ? AND stocknumber LIKE ?";
my $sth=$dbh->prepare($query);
$sth->execute($branchcode,$branchcode."_%");
my ($nextnum) = $sth->fetchrow;
- my $nextnum = $branchcode.'_'.$nextnum;
+ $nextnum = $branchcode.'_'.$nextnum;
my $scr = <<END_OF_JS;
if (\$('#' + id).val() == '' || force) {
# with Koha; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-#use strict;
-#use warnings; FIXME - Bug 2505
+use strict;
+use warnings;
use C4::AuthoritiesMarc;
use C4::Auth;
my $authtypes = getauthtypes;
my @authtypesloop;
foreach my $thisauthtype (keys %$authtypes) {
- my $selected = 1 if $thisauthtype eq $authtypecode;
+ my $selected;
+ if ($thisauthtype eq $authtypecode) {
+ $selected=1;
+ }
my %row =(value => $thisauthtype,
selected => $selected,
authtypetext => $authtypes->{$thisauthtype}{'authtypetext'},
} else {
$to = (($startfrom+1)*$resultsperpage);
}
- my $link="../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_210c.pl&authtypecode=EDITORS&and_or=$and_or&marclist=$marclist&operator=$operator&orderby=$orderby&excluding=$excluding&".join("&",map {"value=".$_} @value)."&op=do_search&type=intranet&index=$index";
+ my $link="../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_210c.pl&authtypecode=EDITORS&".join("&",map {"value=".$_} @value)."&op=do_search&type=intranet&index=$index";
$template->param(result => $results) if $results;
$template->param('index' => $query->param('index'));
$subfield_value_t = $marcrecord->field('500')->subfield("a");
}
- my $subfield_value_u = $marcrecord->field('856')->subfield("u")
- if ( $marcrecord->field('856') );
+ my $subfield_value_u;
+ if ( $marcrecord->field('856') ) {
+ $subfield_value_u = $marcrecord->field('856')->subfield("u");
+ }
my $subfield_value_v;
if ( ( $marcrecord->field('225') )
{
$subfield_value_v = $marcrecord->field('200')->subfield("h");
}
- my $subfield_value_x = $marcrecord->field('011')->subfield("a")
- if (
+ my $subfield_value_x;
+ if (
$marcrecord->field('011')
and not( ( $marcrecord->field('011')->subfield("y") )
- or ( $marcrecord->field('011')->subfield("z") ) )
- );
- my $subfield_value_y = $marcrecord->field('013')->subfield("a")
- if ( $marcrecord->field('013') );
+ or ( $marcrecord->field('011')->subfield("z") ) ) ) {
+ $subfield_value_x = $marcrecord->field('011')->subfield("a");
+ }
+ my $subfield_value_y;
+ if ( $marcrecord->field('013') ) {
+ $subfield_value_y = $marcrecord->field('013')->subfield("a");
+ }
if ( $marcrecord->field('010') ) {
$subfield_value_y = $marcrecord->field('010')->subfield("a");
}
my $record = MARC::Record::new_from_usmarc( $results->[$i] );
my $rechash = TransformMarcToKoha( $dbh, $record );
my $pos;
- my $countitems = 1 if ( $rechash->{itemnumber} );
+ my $countitems;
+ if ( $rechash->{itemnumber} ) {
+ $countitems=1;
+ }
while ( index( $rechash->{itemnumber}, '|', $pos ) > 0 ) {
$countitems += 1;
$pos = index( $rechash->{itemnumber}, '|', $pos ) + 1;
my %item;
my $frbranchcd = C4::Context->userenv->{'branch'};
# if ( not($found) ) {
- $item{'biblionumber'} = $iteminformation->{'biblionumber'};
- $item{'title'} = $iteminformation->{'title'};
- $item{'author'} = $iteminformation->{'author'};
- $item{'itemtype'} = $iteminformation->{'itemtype'};
- $item{'ccode'} = $iteminformation->{'ccode'};
- $item{'frbrname'} = $branches->{$frbranchcd}->{'branchname'};
- $item{'tobrname'} = $branches->{$tobranchcd}->{'branchname'};
+ $item{'biblionumber'} = $iteminformation->{'biblionumber'};
+ $item{'itemnumber'} = $iteminformation->{'itemnumber'};
+ $item{'title'} = $iteminformation->{'title'};
+ $item{'author'} = $iteminformation->{'author'};
+ $item{'itemtype'} = $iteminformation->{'itemtype'};
+ $item{'ccode'} = $iteminformation->{'ccode'};
+ $item{'itemcallnumber'} = $iteminformation->{'itemcallnumber'};
+ $item{'location'} = GetKohaAuthorisedValueLib("LOC",$iteminformation->{'location'});
+ $item{'frbrname'} = $branches->{$frbranchcd}->{'branchname'};
+ $item{'tobrname'} = $branches->{$tobranchcd}->{'branchname'};
# }
$item{counter} = 0;
$item{barcode} = $barcode;
$item{frombrcd} = $frbcd;
$item{tobrcd} = $tobcd;
my ($iteminformation) = GetBiblioFromItemNumber( GetItemnumberFromBarcode($bc) );
- $item{'biblionumber'} = $iteminformation->{'biblionumber'};
- $item{'title'} = $iteminformation->{'title'};
- $item{'author'} = $iteminformation->{'author'};
- $item{'itemtype'} = $iteminformation->{'itemtype'};
- $item{'ccode'} = $iteminformation->{'ccode'};
- $item{'frbrname'} = $branches->{$frbcd}->{'branchname'};
- $item{'tobrname'} = $branches->{$tobcd}->{'branchname'};
+ $item{'biblionumber'} = $iteminformation->{'biblionumber'};
+ $item{'itemnumber'} = $iteminformation->{'itemnumber'};
+ $item{'title'} = $iteminformation->{'title'};
+ $item{'author'} = $iteminformation->{'author'};
+ $item{'itemtype'} = $iteminformation->{'itemtype'};
+ $item{'ccode'} = $iteminformation->{'ccode'};
+ $item{'itemcallnumber'} = $iteminformation->{'itemcallnumber'};
+ $item{'location'} = GetKohaAuthorisedValueLib("LOC",$iteminformation->{'location'});
+ $item{'frbrname'} = $branches->{$frbcd}->{'branchname'};
+ $item{'tobrname'} = $branches->{$tobcd}->{'branchname'};
push( @trsfitemloop, \%item );
}
my @errmsgloop;
foreach my $code ( keys %$messages ) {
- my %err;
- if ( $code eq 'BadBarcode' ) {
- $err{msg} = $messages->{'BadBarcode'};
- $err{errbadcode} = 1;
+ if ( $code ne 'WasTransfered' ) {
+ my %err;
+ if ( $code eq 'BadBarcode' ) {
+ $err{msg} = $messages->{'BadBarcode'};
+ $err{errbadcode} = 1;
+ }
+ elsif ( $code eq "NotAllowed" ) {
+ warn "NotAllowed: $messages->{'NotAllowed'} to " . $branches->{ $messages->{'NotAllowed'} }->{'branchname'};
+ # Do we really want a error log message here? --atz
+ $err{errnotallowed} = 1;
+ my ( $tbr, $typecode ) = split( /::/, $messages->{'NotAllowed'} );
+ $err{tbr} = $branches->{ $tbr }->{'branchname'};
+ $err{code} = $typecode;
+ $err{codeType} = $codeTypeDescription;
+ }
+ elsif ( $code eq 'IsPermanent' ) {
+ $err{errispermanent} = 1;
+ $err{msg} = $branches->{ $messages->{'IsPermanent'} }->{'branchname'};
+ }
+ elsif ( $code eq 'WasReturned' ) {
+ $err{errwasreturned} = 1;
+ $err{borrowernumber} = $messages->{'WasReturned'};
+ my $borrower = GetMember('borrowernumber'=>$messages->{'WasReturned'});
+ $err{title} = $borrower->{'title'};
+ $err{firstname} = $borrower->{'firstname'};
+ $err{surname} = $borrower->{'surname'};
+ $err{cardnumber} = $borrower->{'cardnumber'};
+ }
+ $err{errdesteqholding} = ( $code eq 'DestinationEqualsHolding' );
+ push( @errmsgloop, \%err );
}
- elsif ( $code eq "NotAllowed" ) {
- warn "NotAllowed: $messages->{'NotAllowed'} to " . $branches->{ $messages->{'NotAllowed'} }->{'branchname'};
- # Do we really want a error log message here? --atz
- $err{errnotallowed} = 1;
- my ( $tbr, $typecode ) = split( /::/, $messages->{'NotAllowed'} );
- $err{tbr} = $branches->{ $tbr }->{'branchname'};
- $err{code} = $typecode;
- $err{codeType} = $codeTypeDescription;
- }
- elsif ( $code eq 'IsPermanent' ) {
- $err{errispermanent} = 1;
- $err{msg} = $branches->{ $messages->{'IsPermanent'} }->{'branchname'};
- }
- elsif ( $code eq 'WasReturned' ) {
- $err{errwasreturned} = 1;
- $err{borrowernumber} = $messages->{'WasReturned'};
- my $borrower = GetMember('borrowernumber'=>$messages->{'WasReturned'});
- $err{title} = $borrower->{'title'};
- $err{firstname} = $borrower->{'firstname'};
- $err{surname} = $borrower->{'surname'};
- $err{cardnumber} = $borrower->{'cardnumber'};
- }
- $err{errdesteqholding} = ( $code eq 'DestinationEqualsHolding' );
- push( @errmsgloop, \%err );
}
# use Data::Dumper;
unless($issueconfirmed){
# Get the item title for more information
my $getmessageiteminfo = GetBiblioFromItemNumber(undef,$barcode);
+ $template->{VARS}->{'additional_materials'} = $getmessageiteminfo->{'materials'};
$template->param( itemhomebranch => $getmessageiteminfo->{'homebranch'} );
# pass needsconfirmation to template if issuing is possible and user hasn't yet confirmed.
$it->{'borrowernumber'},$it->{'itemnumber'}
);
$it->{"renew_error_${can_renew_error}"} = 1 if defined $can_renew_error;
- my ( $restype, $reserves ) = CheckReserves( $it->{'itemnumber'} );
+ my ( $restype, $reserves, undef ) = CheckReserves( $it->{'itemnumber'} );
$it->{'can_renew'} = $can_renew;
$it->{'can_confirm'} = !$can_renew && !$restype;
$it->{'renew_error'} = $restype;
{
push @values, $_->{'borrowernumber'};
$labels{ $_->{'borrowernumber'} } =
-"$_->{'surname'}, $_->{'firstname'} ... ($_->{'cardnumber'} - $_->{'categorycode'}) ... $_->{'address'} ";
+"$_->{'surname'}, $_->{'firstname'} ... ($_->{'cardnumber'} - $_->{'categorycode'} - $_->{'branchcode'}) ... $_->{'address'} ";
}
$CGIselectborrower = CGI::scrolling_list(
-name => 'borrowernumber',
circview => 1,
soundon => C4::Context->preference("SoundOn"),
fast_cataloging => $fast_cataloging,
+ CircAutoPrintQuickSlip => C4::Context->preference("CircAutoPrintQuickSlip"),
);
# save stickyduedate to session
my $strsth="SELECT date_due,
borrowers.title as borrowertitle,
- concat(surname,' ', firstname) as borrower,
+ borrowers.surname,
+ borrowers.firstname,
borrowers.streetnumber,
borrowers.streettype,
borrowers.address,
$strsth.=" AND biblioitems.itemtype = '" . $itemtypefilter . "' ";
}
}
- $strsth.=" AND borrowers.flags = '" . $borflagsfilter . "' " if $borflagsfilter;
+ if ( $borflagsfilter eq 'gonenoaddress' ) {
+ $strsth .= " AND borrowers.gonenoaddress <> 0";
+ }
+ elsif ( $borflagsfilter eq 'debarred' ) {
+ $strsth .= " AND borrowers.debarred >= CURDATE()" ;
+ }
+ elsif ( $borflagsfilter eq 'lost') {
+ $strsth .= " AND borrowers.lost <> 0";
+ }
$strsth.=" AND borrowers.branchcode = '" . $branchfilter . "' " if $branchfilter;
$strsth.=" AND date_due < '" . $datedueto . "' " if $datedueto;
$strsth.=" AND date_due > '" . $dateduefrom . "' " if $dateduefrom;
$strsth =~ s/WHERE 1=1/WHERE 1=1 AND borrowers.borrowernumber IN ($bnlist)/ if $bnlist;
$strsth =~ s/WHERE 1=1/WHERE 0=1/ if $have_pattr_filter_data && !$bnlist; # no match if no borrowers matched patron attrs
$strsth.=" ORDER BY " . (
- ($order eq "borrower" or $order eq "borrower desc") ? "$order, date_due" :
- ($order eq "title" or $order eq "title desc") ? "$order, date_due, borrower" :
- ($order eq "barcode" or $order eq "barcode desc") ? "items.$order, date_due, borrower" :
- ($order eq "date_due desc") ? "date_due DESC, borrower" :
- "date_due, borrower" # default sort order
+ ($order eq "borrower") ? "surname, firstname, date_due" :
+ ($order eq "borrower desc") ? "surname desc, firstname desc, date_due" :
+ ($order eq "title" or $order eq "title desc") ? "$order, date_due, surname, firstname" :
+ ($order eq "barcode" or $order eq "barcode desc") ? "items.$order, date_due, surname, firstname" :
+ ($order eq "date_due desc") ? "date_due DESC, surname, firstname" :
+ "date_due, surname, firstname" # default sort order
);
$template->param(sql=>$strsth);
my $sth=$dbh->prepare($strsth);
itemnum => $data->{itemnumber},
issuedate => format_date($data->{issuedate}),
borrowertitle => $data->{borrowertitle},
- name => $data->{borrower},
+ surname => $data->{surname},
+ firstname => $data->{firstname},
streetnumber => $data->{streetnumber},
streettype => $data->{streettype},
address => $data->{address},
itemtype => $biblio->{'itemtype'},
ccode => $biblio->{'ccode'},
itembiblionumber => $biblio->{'biblionumber'},
+ additional_materials => $biblio->{'materials'}
);
my %input = (
--- /dev/null
+Configuracion de Post Instalacion
+==================================
+
+Usted deberia considerar hacer lo siguiente despues de instalar este paquete:
+
+* Instalar mysql-server, para una base de datos local.
+
+* Alternativamente, puede configurar una conexion remota a un servidor MySQL:
+ - rm /etc/mysql/koha-common.cnf
+ - $SUEDITOR /etc/mysql/koha-common.cnf
+
+ [client]
+ host = algun.otro.host
+ user = mysqlusername
+ password = mysqlpassword
+
+* Habilitar la re-escritura del modulo: a2enmod rewrite
+
+* Escuchar en el puerto 8080: $SUEDITOR /etc/apache2/ports.conf
+
+* Alternativamente, puede configurar koha-create, usando /etc/koha/koha-sites.conf
+ (ver /usr/sbin/koha-create para establecer las variables ).
+
+* Despues de esto, usted puede crear una nueva instancia de Koha:
+ - koha-create --create-db name
+
+
+Diseño del sistema de archivo de Koha en Debian
+================================================
+
+El paquete Debian de Koha pone archivos en los siguientes lugares:
+
+* /etc/koha -- archivos de configuración del sistema
+* /etc/cron.hourly/koha-common -- cron job
+* /etc/cron.daily/koha-common -- cron job
+* /etc/cron.d/koha-common -- cron job
+* /usr/share/koha -- archivos compartidos (plantillas HTML, codigo Perl, etc)
+
+Cada instancia de Koha tiene archivos en los siguientes lugares:
+
+* /etc/koha/sites/$name -- archivos de configuración
+* /etc/apache2/sites-available/$name -- Archivo configuración Apache
+* /var/lib/koha/$name -- Bases de datos Zebra
+* /var/log/koha/$name -- archivos log (Apache, Zebra)
+* /var/lock/koha/$name -- run-time lock files
+* /var/run/koha/$name -- run-time sockets etc
+* /var/spool/koha/$name -- dumps bases de datos
+
+
+Koha y MySQL
+==============
+
+El script de post instalacion de Koha-common crea el archivo /etc/mysql/koha-common.cnf,
+y todos los scripts usan esté para acceder a las bases de datos MySQL. Por defecto,
+es un enlace simbólico que apunta a debian.cnf, y sólo trabaja en el servidor local.
+Si usted lo desea, puede crear un archivo /etc/mysql/koha-common.cnf en lugar
+del enlace simbólico, y que apunte a un servidor remoto. En la actualidad no existe
+ninguna herramienta para ayudarle a hacer eso, pero debería ser bastante sencillo.
+
+
--- /dev/null
+debian/docs/LEEME.Debian
<listen id="biblioserver" >unix:/var/run/koha/__KOHASITE__/bibliosocket</listen>
<listen id="authorityserver" >unix:/var/run/koha/__KOHASITE__/authoritysocket</listen>
+<!-- Uncomment the following entry if you want to run the public Z39.50 server.
+ Also uncomment the <server> and <serverinfo> sections for id 'publicserver'
+ under PUBLICSERVER'S BIBLIOGRAPHIC RECORDS title-->
+<!--
+<listen id="publicserver" >tcp:@:__ZEBRA_SRU_BIBLIOS_PORT__</listen>
+-->
+
+<!-- Settings for special biblio server instance for PazPar2.
+ Because PazPar2 only connects to a Z39.50 server using TCP/IP,
+ it cannot use the Unix-domain socket that biblioserver uses.
+ Therefore, a custom server is defined. -->
+<!--
+<listen id="mergeserver">tcp:@:__MERGE_SERVER_PORT__</listen>
+<server id="mergeserver" listenref="mergeserver">
+ <directory>/var/lib/koha/__KOHASITE__/biblios</directory>
+ <config>/var/lib/koha/__KOHASITE__/zebra-biblios.cfg</config>
+ <cql2rpn>/var/lib/koha/__KOHASITE__/pqf.properties</cql2rpn>
+</server>
+-->
+
<!-- BIBLIOGRAPHIC RECORDS -->
-<server id="biblioserver" listenref="biblioserver">
+<server id="biblioserver" listenref="biblioserver">
<directory>/var/lib/koha/__KOHASITE__/biblios</directory>
<config>/etc/koha/sites/__KOHASITE__/zebra-biblios.cfg</config>
<cql2rpn>/etc/koha/zebradb/pqf.properties</cql2rpn>
</backend>
</retrieval>
</retrievalinfo>
+ <!-- The stuff below is used to enable SRU. It's currently disabled
+ until we come up with a good way to make it get magically set up by
+ the packaging system. If you need it, uncomment and set it up
+ manually.
+ <xi:include href="__KOHA_CONF_DIR__/zebradb/explain-biblios.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude">
+ <xi:fallback>
+ <explain xmlns="http://explain.z3950.org/dtd/2.0/">
+ <serverInfo>
+ <host>__ZEBRA_SRU_HOST__</host>
+ <port>__ZEBRA_SRU_BIBLIOS_PORT__</port>
+ <database>biblios</database>
+ </serverInfo>
+ </explain>
+ </xi:fallback>
+ </xi:include> -->
</server>
<serverinfo id="biblioserver">
<ccl2rpn>/etc/koha/zebradb/ccl.properties</ccl2rpn>
- <user>kohauser</user>
+ <user>kohauser</user>
<password>__ZEBRA_PASS__</password>
</serverinfo>
</retrievalinfo>
</xi:fallback>
</xi:include>
+ <!-- The stuff below is used to enable SRU. It's currently disabled
+ until we come up with a good way to make it get magically set up by
+ the packaging system. If you need it, uncomment and set it up
+ manually.
+ <xi:include href="__KOHA_CONF_DIR__/zebradb/explain-authorities.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude">
+ <xi:fallback>
+ <explain xmlns="http://explain.z3950.org/dtd/2.0/">
+ <serverInfo>
+ <host>__ZEBRA_SRU_HOST__</host>
+ <port>__ZEBRA_SRU_AUTHORITIES_PORT__</port>
+ <database>authorities</database>
+ </serverInfo>
+ </explain>
+ </xi:fallback>
+ </xi:include> -->
</server>
<serverinfo id="authorityserver">
<ccl2rpn>/etc/koha/zebradb/ccl.properties</ccl2rpn>
<password>__ZEBRA_PASS__</password>
</serverinfo>
+<!-- PUBLICSERVER'S BIBLIOGRAPHIC RECORDS -->
+<!-- This can be used to set up a public Z39.50/SRU server.
+
+<server id="publicserver" listenref="publicserver">
+ <directory>/var/lib/koha/__KOHASITE__/biblios</directory>
+ <config>/etc/koha/sites/__KOHASITE__/zebra-biblios.cfg</config>
+ <cql2rpn>/etc/koha/zebradb/pqf.properties</cql2rpn>
+ <retrievalinfo>
+ <retrieval syntax="usmarc" name="F"/>
+ <retrieval syntax="usmarc" name="B"/>
+ <retrieval syntax="xml" name="F"/>
+ <retrieval syntax="xml" name="B"/>
+ <retrieval syntax="xml" name="marcxml"
+ identifier="info:srw/schema/1/marcxml-v1.1">
+ <backend syntax="usmarc" name="F">
+ <marc inputformat="marc" outputformat="marcxml"
+ inputcharset="utf-8"/>
+ </backend>
+ </retrieval>
+ <retrieval syntax="xml" name="dc">
+ <backend syntax="usmarc" name="F">
+ <marc inputformat="marc" outputformat="marcxml"
+ inputcharset="utf-8"/>
+ <xslt stylesheet="/usr/share/koha/intranet/htdocs/intranet-tmpl/prog/en/xslt/MARC21slim2DC.xsl"/>
+ </backend>
+ </retrieval>
+ <retrieval syntax="xml" name="mods">
+ <backend syntax="usmarc" name="F">
+ <marc inputformat="marc" outputformat="marcxml"
+ inputcharset="utf-8"/>
+ <xslt stylesheet="/usr/share/koha/intranet/htdocs/intranet-tmpl/prog/en/xslt/MARC21slim2MODS.xsl"/>
+ </backend>
+ </retrieval>
+ <retrieval syntax="xml" name="rdfdc">
+ <backend syntax="usmarc" name="F">
+ <marc inputformat="marc" outputformat="marcxml"
+ inputcharset="utf-8"/>
+ <xslt stylesheet="/usr/share/koha/intranet/htdocs/intranet-tmpl/prog/en/xslt/MARC21slim2RDFDC.xsl"/>
+ </backend>
+ </retrieval>
+ <retrieval syntax="xml" name="rss2">
+ <backend syntax="usmarc" name="F">
+ <marc inputformat="marc" outputformat="marcxml"
+ inputcharset="utf-8"/>
+ <xslt stylesheet="/usr/share/koha/intranet/htdocs/intranet-tmpl/prog/en/xslt/MARC21slim2RSS2.xsl"/>
+ </backend>
+ </retrieval>
+ <retrieval syntax="xml" name="utils">
+ <backend syntax="usmarc" name="F">
+ <marc inputformat="marc" outputformat="marcxml"
+ inputcharset="utf-8"/>
+ <xslt stylesheet="/usr/share/koha/intranet/htdocs/intranet-tmpl/prog/en/xslt/MARC21slimUtils.xsl"/>
+ </backend>
+ </retrieval>
+ </retrievalinfo>
+ <xi:include href="__KOHA_CONF_DIR__/zebradb/explain-biblios.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude">
+ <xi:fallback>
+ <explain xmlns="http://explain.z3950.org/dtd/2.0/">
+ <serverInfo>
+ <host>__ZEBRA_SRU_HOST__</host>
+ <port>__ZEBRA_SRU_BIBLIOS_PORT__</port>
+ <database>biblios</database>
+ </serverInfo>
+ </explain>
+ </xi:fallback>
+ </xi:include>
+</server>
+<serverinfo id="publicserver">
+ <ccl2rpn>/etc/koha/zebradb/ccl.properties</ccl2rpn>
+ <user>kohauser</user>
+ <password>__ZEBRA_PASS__</password>
+</serverinfo>
+-->
+
<config>
<db_scheme>mysql</db_scheme>
<database>__DB_NAME__</database>
<intrahtdocs>/usr/share/koha/intranet/htdocs/intranet-tmpl</intrahtdocs>
<includes>/usr/share/koha/intranet/htdocs/intranet-tmpl/prog/en/includes/</includes>
<logdir>/var/log/koha/__KOHASITE__</logdir>
+ <!-- <pazpar2url>http://__PAZPAR2_HOST__:__PAZPAR2_PORT__/search.pz2</pazpar2url> -->
<install_log>/usr/share/koha/misc/koha-install-log</install_log>
<useldapserver>0</useldapserver><!-- see C4::Auth_with_ldap for extra configs you must add if you want to turn this on -->
<memcached_servers></memcached_servers>
June 25 2010 Koha 3.2 Beta released http://koha-community.org/koha-3-2-beta-released/
July 13 2010 License meeting http://wiki.koha-community.org/wiki/License_Upgrade_Vote_IRC_Meeting,_13_July_2010
August 11 2010 General IRC meeting http://wiki.koha-community.org/wiki/General_IRC_Meeting,_11_August_2010
-August 31 2010 Stéphane Delaune becomes the 116th committer to have a patch accepted
+August 31 2010 Stéphane Delaune becomes the 116th committer to have a patch accepted
September 1 2010 General IRC meeting http://wiki.koha-community.org/wiki/General_IRC_Meeting,_1_September_2010
September 29 2010 Eric Olsen becomes the 117th committer to have a patch accepted
October 6 2010 General IRC meeting http://wiki.koha-community.org/wiki/General_IRC_Meeting,_6_October_2010
December 6 2011 Adrien Saurat becomes the 162th developer to have a patch pushed
December 6 2011 Albert Oller becomes the 163th developer to have a patch pushed
December 7 2011 Jon Aker becomes the 164th developer to have a patch pushed
+December 13 2011 Fabio Tiana becomes the 165th developer to have a patch pushed
+December 15 2011 Duncan Tyler becomes the 166th developer to have a patch pushed
+December 15 2011 Marc Balmer becomes the 167th developer to have a patch pushed
# TransferLog __LOG_DIR__/koha-opac-access_log
SetEnv KOHA_CONF "__KOHA_CONF_DIR__/koha-conf.xml"
SetEnv PERL5LIB "__PERL_MODULE_DIR__"
+ SetEnv MEMCACHED_SERVERS "__MEMCACHED_SERVERS__"
+ SetEnv MEMCACHED_NAMESPACE "__MEMCACHED_NAMESPACE__"
<IfModule mod_gzip.c>
mod_gzip_on yes
# TransferLog __LOG_DIR__/koha-access_log
SetEnv KOHA_CONF "__KOHA_CONF_DIR__/koha-conf.xml"
SetEnv PERL5LIB "__PERL_MODULE_DIR__"
+ SetEnv MEMCACHED_SERVERS "__MEMCACHED_SERVERS__"
+ SetEnv MEMCACHED_NAMESPACE "__MEMCACHED_NAMESPACE__"
Options +FollowSymLinks
ErrorDocument 400 /cgi-bin/koha/errors/400.pl
Title-uniform-see 1=Title-uniform-see
Title-uniform-seealso 1=Title-uniform-seealso
-#Authority-number Koha-Auth-Number The identifier of the the authority
+#Authority-number Koha-Auth-Number The identifier of the authority
# record, stored in 001 in the authority record, and $9/$0 in the
# field that record is linked to in the bib record
Authority-Number 1=Koha-Auth-Number
uppercase {0-9}{A-Z}
# Breaking characters
-space {\001-\040}!"#$%&'\()*+,-./:;<=>?@\[\\]^_`\{|}~’
+space {\001-\040}!"#$%&'\()*+,-./:;<=>?@\[\\]^_`\{|}~’{\x88-\x89}{\x98-\x9C}
# Characters to be considered equivalent for sorting purposes
equivalent aáàãåâăąȧǎȁȃ
map Č c
map ȼ c
map Ȼ c
+map Ċ c
+map ċ c
+map Ĉ c
+map ĉ c
# G
map ǥ g
map Ǥ g
# K
map ḵ k
map Ḵ k
+map Ḱ k
+map ḱ k
# Y
map ý y
map Ý y
map (^\[SD\]) @
map (^\[S\.D\.\]) @
map (\x88.*\x89)) @
-
# Breaking characters
-space {\001-\040}!"#$%&'\()*+,-./:;<=>?@\[\\]^_`\{|}~{\x88-\x89}
+space {\001-\040}!"#$%&'\()*+,-./:;<=>?@\[\\]^_`\{|}~’{\x88-\x89}{\x98-\x9C}
# Characters to be considered equivalent for searching purposes.
equivalent æä(ae)
melm 785 Title,Title:p,Title-later,Related-periodical
melm 787$w Record-control-number
-melm 800$a Name-and-title
+melm 800$a Name-and-title,Title-series:w,Title-series:p
#melm 800$t author,Author-title,Name-and-title,Title,Title-series
-melm 800$t Author-title,Name-and-title,Title,Title-series
+melm 800$t Author-title,Name-and-title,Title,Title-series:w,Title-series:p
melm 800$9 Koha-Auth-Number
melm 800$w Record-control-number
melm 800 Author,Author-name-personal,Name,Personal-name
-melm 810$a Name-and-title
-melm 810$t Author-title,Name-and-title,Title,Title-series
+melm 810$a Name-and-title,Title-series:w,Title-series:p
+melm 810$t Author-title,Name-and-title,Title,Title-series:w,Title-series:p
melm 810$w Record-control-number
melm 810$9 Koha-Auth-Number
melm 810 Author,Corporate-name,Author-name-corporate,Name
-melm 811$a Name-and-title
+melm 811$a Name-and-title,Title-series:w,Title-series:p
melm 811$9 Koha-Auth-Number
#melm 811$t author,Author-title,Name-and-title,Title,Title-series
-melm 811$t Author-title,Name-and-title,Title,Title-series
+melm 811$t Author-title,Name-and-title,Title,Title-series:w,Title-series:p
melm 811$w Record-control-number
melm 811 Author,Author-name-corporate,Name,Conference-name
melm 830$w Record-control-number
melm 830$9 Koha-Auth-Number
-melm 830 Title,Title-series
-melm 840 Title,Title-series
+melm 830 Title,Title-series:w,Title-series:p
+melm 840 Title,Title-series:w,Title-series:p
###############################
# Koha Local-Use Biblio Indexes
C4::Context->_unset_userenv($sessionID);
$sessionID = undef;
$userid = undef;
- open L, ">>/tmp/sessionlog";
- my $time = localtime( time() );
- printf L "%20s from %16s logged out at %30s (manually).\n", $userid,
- $ip, $time;
- close L;
+ # Commented out due to its lack of usefulness
+ # open L, ">>/tmp/sessionlog";
+ # my $time = localtime( time() );
+ # printf L "%20s from %16s logged out at %30s (manually).\n", $userid,
+ # $ip, $time;
+ # close L;
}
}
unless ($userid) {
my ( $return, $cardnumber ) = checkpw( $userid, $password );
if ($return) {
$loggedin = 1;
- open L, ">>/tmp/sessionlog";
- my $time = localtime( time() );
- printf L "%20s from %16s logged in at %30s.\n", $userid,
- $ENV{'REMOTE_ADDR'}, $time;
- close L;
+ # open L, ">>/tmp/sessionlog";
+ # my $time = localtime( time() );
+ # printf L "%20s from %16s logged in at %30s.\n", $userid,
+ # $ENV{'REMOTE_ADDR'}, $time;
+ # close L;
$cookie = $query->cookie( CGISESSID => $sessionID );
if ( $return == 2 ) {
('541', 'Fußnote zur Herkunft', 'Fußnote zur Herkunft', 1, 0, NULL, ''),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, ''),
('544', 'Fußnote zum Standort anderer Archivmaterialien', 'Fußnote zum Standort anderer Archivmaterialien', 1, 0, NULL, ''),
+ ('545', 'Fußnote zu biografischen oder historischen Daten', 'Fußnote zu biografischen oder historischen Daten', 1, 0, NULL, ''),
('546', 'Fußnote zur Sprache', 'Fußnote zur Sprache', 1, 0, NULL, ''),
('547', 'Fußnote zu früheren Titeln', 'Fußnote zu früheren Titeln', 1, 0, NULL, ''),
('550', 'Fußnote zur herausgebenden Körperschaft', 'Fußnote zur herausgebenden Körperschaft', 1, 0, NULL, ''),
('541', 'Fußnote zur Herkunft', 'Fußnote zur Herkunft', 1, 0, NULL, 'BKS'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'BKS'),
('544', 'Fußnote zum Standort anderer Archivmaterialien', 'Fußnote zum Standort anderer Archivmaterialien', 1, 0, NULL, 'BKS'),
+ ('545', 'Fußnote zu biografischen oder historischen Daten', 'Fußnote zu biografischen oder historischen Daten', 1, 0, NULL, 'BKS'),
('546', 'Fußnote zur Sprache', 'Sprache', 1, 0, NULL, 'BKS'),
('547', 'Fußnote zu früheren Titeln', 'Fußnote zu früheren Titeln', 1, 0, NULL, 'BKS'),
('550', 'Fußnote zur herausgebenden Körperschaft', 'Fußnote zur herausgebenden Körperschaft', 1, 0, NULL, 'BKS'),
('541', 'Fußnote zur Herkunft', 'Fußnote zur Herkunft', 1, 0, NULL, 'CF'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'CF'),
('544', 'Fußnote zum Standort anderer Archivmaterialien', 'Fußnote zum Standort anderer Archivmaterialien', 1, 0, NULL, 'CF'),
+ ('545', 'Fußnote zu biografischen oder historischen Daten', 'Fußnote zu biografischen oder historischen Daten', 1, 0, NULL, 'CF'),
('546', 'Fußnote zur Sprache', 'Sprache', 1, 0, NULL, 'CF'),
('547', 'Fußnote zu früheren Titeln', 'Fußnote zu früheren Titeln', 1, 0, NULL, 'CF'),
('550', 'Fußnote zur herausgebenden Körperschaft', 'Fußnote zur herausgebenden Körperschaft', 1, 0, NULL, 'CF'),
('541', 'Fußnote zur Herkunft', 'Fußnote zur Herkunft', 1, 0, NULL, 'SR'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'SR'),
('544', 'Fußnote zum Standort anderer Archivmaterialien', 'Fußnote zum Standort anderer Archivmaterialien', 1, 0, NULL, 'SR'),
+ ('545', 'Fußnote zu biografischen oder historischen Daten', 'Fußnote zu biografischen oder historischen Daten', 1, 0, NULL, 'SR'),
('546', 'Fußnote zur Sprache', 'Sprache', 1, 0, NULL, 'SR'),
('547', 'Fußnote zu früheren Titeln', 'Fußnote zu früheren Titeln', 1, 0, NULL, 'SR'),
('550', 'Fußnote zur herausgebenden Körperschaft', 'Fußnote zur herausgebenden Körperschaft', 1, 0, NULL, 'SR'),
('541', 'Fußnote zur Herkunft', 'Fußnote zur Herkunft', 1, 0, NULL, 'VR'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'VR'),
('544', 'Fußnote zum Standort anderer Archivmaterialien', 'Fußnote zum Standort anderer Archivmaterialien', 1, 0, NULL, 'VR'),
+ ('545', 'Fußnote zu biografischen oder historischen Daten', 'Fußnote zu biografischen oder historischen Daten', 1, 0, NULL, 'VR'),
('546', 'Fußnote zur Sprache', 'Sprache', 1, 0, NULL, 'VR'),
('547', 'Fußnote zu früheren Titeln', 'Fußnote zu früheren Titeln', 1, 0, NULL, 'VR'),
('550', 'Fußnote zur herausgebenden Körperschaft', 'Fußnote zur herausgebenden Körperschaft', 1, 0, NULL, 'VR'),
('541', 'Fußnote zur Herkunft', 'Fußnote zur Herkunft', 1, 0, NULL, 'AR'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'AR'),
('544', 'Fußnote zum Standort anderer Archivmaterialien', 'Fußnote zum Standort anderer Archivmaterialien', 1, 0, NULL, 'AR'),
+ ('545', 'Fußnote zu biografischen oder historischen Daten', 'Fußnote zu biografischen oder historischen Daten', 1, 0, NULL, 'AR'),
('546', 'Fußnote zur Sprache', 'Sprache', 1, 0, NULL, 'AR'),
('547', 'Fußnote zu früheren Titeln', 'Fußnote zu früheren Titeln', 1, 0, NULL, 'AR'),
('550', 'Fußnote zur herausgebenden Körperschaft', 'Fußnote zur herausgebenden Körperschaft', 1, 0, NULL, 'AR'),
('541', 'Fußnote zur Herkunft', 'Fußnote zur Herkunft', 1, 0, NULL, 'KT'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'KT'),
('544', 'Fußnote zum Standort anderer Archivmaterialien', 'Fußnote zum Standort anderer Archivmaterialien', 1, 0, NULL, 'KT'),
+ ('545', 'Fußnote zu biografischen oder historischen Daten', 'Fußnote zu biografischen oder historischen Daten', 1, 0, NULL, 'KT'),
('546', 'Fußnote zur Sprache', 'Sprache', 1, 0, NULL, 'KT'),
('547', 'Fußnote zu früheren Titeln', 'Fußnote zu früheren Titeln', 1, 0, NULL, 'KT'),
('550', 'Fußnote zur herausgebenden Körperschaft', 'Fußnote zur herausgebenden Körperschaft', 1, 0, NULL, 'KT'),
('541', 'Fußnote zur Herkunft', 'Fußnote zur Herkunft', 1, 0, NULL, 'IR'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'IR'),
('544', 'Fußnote zum Standort anderer Archivmaterialien', 'Fußnote zum Standort anderer Archivmaterialien', 1, 0, NULL, 'IR'),
+ ('545', 'Fußnote zu biografischen oder historischen Daten', 'Fußnote zu biografischen oder historischen Daten', 1, 0, NULL, 'IR'),
('546', 'Fußnote zur Sprache', 'Sprache', 1, 0, NULL, 'IR'),
('547', 'Fußnote zu früheren Titeln', 'Fußnote zu früheren Titeln', 1, 0, NULL, 'IR'),
('550', 'Fußnote zur herausgebenden Körperschaft', 'Fußnote zur herausgebenden Körperschaft', 1, 0, NULL, 'IR'),
('541', 'Fußnote zur Herkunft', 'Fußnote zur Herkunft', 1, 0, NULL, 'SER'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'SER'),
('544', 'Fußnote zum Standort anderer Archivmaterialien', 'Fußnote zum Standort anderer Archivmaterialien', 1, 0, NULL, 'SER'),
+ ('545', 'Fußnote zu biografischen oder historischen Daten', 'Fußnote zu biografischen oder historischen Daten', 1, 0, NULL, 'SER'),
('546', 'Fußnote zur Sprache', 'Sprache', 1, 0, NULL, 'SER'),
('547', 'Fußnote zu früheren Titeln', 'Fußnote zu früheren Titeln', 1, 0, NULL, 'SER'),
('550', 'Fußnote zur herausgebenden Körperschaft', 'Fußnote zur herausgebenden Körperschaft', 1, 0, NULL, 'SER'),
INSERT INTO `marc_subfield_structure` (`tagfield`, `tagsubfield`, `liblibrarian`, `libopac`, `repeatable`, `mandatory`, `kohafield`, `tab`, `authorised_value`, `authtypecode`, `value_builder`, `isurl`, `hidden`, `frameworkcode`, `seealso`, `link`, `defaultvalue`) VALUES
('952', '0', 'Withdrawn status', 'Withdrawn status', 0, 0, 'items.wthdrawn', 10, 'WITHDRAWN', '', '', 0, 0, '', '', '', NULL),
- ('952', '1', 'Lost status', 'Lost status', 0, 0, 'items.itemlost', 10, 'LOST', '', '', 0, 0, '', '', '', NULL),
+ ('952', '1', 'Lost status', 'Lost status', 0, 0, 'items.itemlost', 10, 'LOST', '', '', 0, -5, '', '', '', NULL),
('952', '2', 'Source of classification or shelving scheme', 'Source of classification or shelving scheme', 0, 0, 'items.cn_source', 10, 'cn_source', '', '', NULL, 0, '', '', '', NULL),
('952', '3', 'Materials specified (bound volume or other part)', 'Materials specified (bound volume or other part)', 0, 0, 'items.materials', 10, '', '', '', NULL, -1, '', '', '', NULL),
('952', '4', 'Damaged status', 'Damaged status', 0, 0, 'items.damaged', 10, 'DAMAGED', '', '', NULL, 0, '', '', '', NULL),
('541', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, ''),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, ''),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, ''),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, ''),
('546', 'LANGUAGE NOTE', 'LANGUAGE NOTE', 1, 0, NULL, ''),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, ''),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, ''),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'BKS'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'BKS'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'BKS'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'BKS'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'BKS'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'BKS'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'BKS'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'CF'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'CF'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'CF'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'CF'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'CF'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'CF'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'CF'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'SR'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'SR'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'SR'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'SR'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'SR'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'SR'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'SR'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'VR'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'VR'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'VR'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'VR'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'VR'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'VR'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'VR'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'AR'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'AR'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'AR'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'AR'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'AR'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'AR'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'AR'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'KT'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'KT'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'KT'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'KT'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'KT'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'KT'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'KT'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'IR'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'IR'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'IR'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'IR'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'IR'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'IR'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'IR'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'SER'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'SER'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'SER'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'SER'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'SER'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'SER'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'SER'),
('541', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, ''),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, ''),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, ''),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, ''),
('546', 'LANGUAGE NOTE', 'LANGUAGE NOTE', 1, 0, NULL, ''),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, ''),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, ''),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'BKS'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'BKS'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'BKS'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'BKS'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'BKS'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'BKS'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'BKS'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'CF'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'CF'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'CF'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'CF'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'CF'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'CF'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'CF'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'SR'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'SR'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'SR'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'SR'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'SR'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'SR'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'SR'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'VR'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'VR'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'VR'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'VR'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'VR'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'VR'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'VR'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'AR'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'AR'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'AR'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'AR'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'AR'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'AR'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'AR'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'KT'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'KT'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'KT'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'KT'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'KT'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'KT'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'KT'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'IR'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'IR'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'IR'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'IR'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'IR'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'IR'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'IR'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'SER'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'SER'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'SER'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'SER'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'SER'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'SER'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'SER'),
('541', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, ''),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, ''),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, ''),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, ''),
('546', 'LANGUAGE NOTE', 'LANGUAGE NOTE', 1, 0, NULL, ''),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, ''),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, ''),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'BKS'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'BKS'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'BKS'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'BKS'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'BKS'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'BKS'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'BKS'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'CF'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'CF'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'CF'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'CF'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'CF'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'CF'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'CF'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'SR'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'SR'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'SR'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'SR'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'SR'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'SR'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'SR'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'VR'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'VR'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'VR'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'VR'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'VR'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'VR'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'VR'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'AR'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'AR'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'AR'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'AR'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'AR'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'AR'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'AR'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'KT'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'KT'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'KT'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'KT'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'KT'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'KT'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'KT'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'IR'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'IR'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'IR'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'IR'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'IR'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'IR'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'IR'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'SER'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'SER'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'SER'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'SER'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'SER'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'SER'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'SER'),
('541', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, ''),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, ''),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, ''),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, ''),
('546', 'LANGUAGE NOTE', 'LANGUAGE NOTE', 1, 0, NULL, ''),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, ''),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, ''),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'BKS'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'BKS'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'BKS'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'BKS'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'BKS'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'BKS'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'BKS'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'CF'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'CF'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'CF'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'CF'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'CF'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'CF'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'CF'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'SR'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'SR'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'SR'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'SR'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'SR'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'SR'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'SR'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'VR'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'VR'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'VR'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'VR'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'VR'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'VR'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'VR'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'AR'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'AR'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'AR'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'AR'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'AR'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'AR'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'AR'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'KT'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'KT'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'KT'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'KT'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'KT'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'KT'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'KT'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'IR'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'IR'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'IR'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'IR'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'IR'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'IR'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'IR'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'SER'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'SER'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'SER'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'SER'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'SER'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'SER'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'SER'),
/*Fields and subfield of standard Unimarc */
/*Data for the table `marc_tag_structure` [Fields] */
---Inizia il framework Default
+-- Inizia il framework Default
insert into `marc_tag_structure`(`tagfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`authorised_value`,`frameworkcode`) values ('000','Guida (Record label)','',0,1,'','');
insert into `marc_tag_structure`(`tagfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`authorised_value`,`frameworkcode`) values ('001','Identificatore del record','Identificatore del record',0,0,'','');
insert into `marc_tag_structure`(`tagfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`authorised_value`,`frameworkcode`) values ('005','Identificatore di versione','',0,0,'','');
insert into `marc_tag_structure`(`tagfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`authorised_value`,`frameworkcode`) values ('802','Centro ISSN','',1,0,'','');
insert into `marc_tag_structure`(`tagfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`authorised_value`,`frameworkcode`) values ('830','Nota generale del catalogatore','',1,0,'','');
insert into `marc_tag_structure`(`tagfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`authorised_value`,`frameworkcode`) values ('856','Localizzazione e accessi elettronici','',1,0,'','');
----
---- Inizia il framework 'MN'
+--
+-- Inizia il framework 'MN'
insert into `marc_tag_structure`(`tagfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`authorised_value`,`frameworkcode`) values ('000','Guida (Record label)','',0,1,'','MN');
insert into `marc_tag_structure`(`tagfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`authorised_value`,`frameworkcode`) values ('001','Identificatore del record','',0,1,'','MN');
insert into `marc_tag_structure`(`tagfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`authorised_value`,`frameworkcode`) values ('005','Identificatore di versione','',0,0,'','MN');
insert into `marc_tag_structure`(`tagfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`authorised_value`,`frameworkcode`) values ('802','Centro ISSN','',1,0,'','MN');
insert into `marc_tag_structure`(`tagfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`authorised_value`,`frameworkcode`) values ('830','Nota generale del catalogatore','',1,0,'','MN');
insert into `marc_tag_structure`(`tagfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`authorised_value`,`frameworkcode`) values ('856','Localizzazione e accessi elettronici','',1,0,'','MN');
----
---- Inizia il framework 'PR'
+--
+-- Inizia il framework 'PR'
insert into `marc_tag_structure`(`tagfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`authorised_value`,`frameworkcode`) values ('000','Guida (Record label)','',0,1,'','PR');
insert into `marc_tag_structure`(`tagfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`authorised_value`,`frameworkcode`) values ('001','Identificatore del record','',0,1,'','PR');
insert into `marc_tag_structure`(`tagfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`authorised_value`,`frameworkcode`) values ('005','Identificatore di versione','',0,0,'','PR');
insert into `marc_subfield_structure`(`tagfield`,`tagsubfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`kohafield`,`tab`,`authorised_value`,`authtypecode`,`value_builder`,`isurl`,`hidden`,`frameworkcode`,`seealso`,`link`,`defaultvalue`) values ('856','x','Nota non pubblica','',1,0,'',8,'','','',0,-5,'','','',NULL);
insert into `marc_subfield_structure`(`tagfield`,`tagsubfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`kohafield`,`tab`,`authorised_value`,`authtypecode`,`value_builder`,`isurl`,`hidden`,`frameworkcode`,`seealso`,`link`,`defaultvalue`) values ('856','y','Metodo di accesso','',0,0,'',8,'','','',0,-5,'','','',NULL);
insert into `marc_subfield_structure`(`tagfield`,`tagsubfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`kohafield`,`tab`,`authorised_value`,`authtypecode`,`value_builder`,`isurl`,`hidden`,`frameworkcode`,`seealso`,`link`,`defaultvalue`) values ('856','z','Nota pubblica','',1,0,'',8,'','','',0,-5,'','','',NULL);
----
---- Iizia la struttura di 'MN'
+--
+-- Iizia la struttura di 'MN'
insert into `marc_subfield_structure`(`tagfield`,`tagsubfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`kohafield`,`tab`,`authorised_value`,`authtypecode`,`value_builder`,`isurl`,`hidden`,`frameworkcode`,`seealso`,`link`,`defaultvalue`) values ('000','@','Guida (Record label)','',0,1,'',0,'','','unimarc_leader.pl',NULL,0,'MN','',NULL,NULL);
insert into `marc_subfield_structure`(`tagfield`,`tagsubfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`kohafield`,`tab`,`authorised_value`,`authtypecode`,`value_builder`,`isurl`,`hidden`,`frameworkcode`,`seealso`,`link`,`defaultvalue`) values ('001','@','Identificatore del record','',0,0,'biblio.biblionumber',-1,'','','',0,0,'MN',NULL,'','');
insert into `marc_subfield_structure`(`tagfield`,`tagsubfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`kohafield`,`tab`,`authorised_value`,`authtypecode`,`value_builder`,`isurl`,`hidden`,`frameworkcode`,`seealso`,`link`,`defaultvalue`) values ('005','@','Identificatore di versione','',0,0,'',0,'','','marc21_field_005.pl',NULL,0,'MN','',NULL,NULL);
insert into `marc_subfield_structure`(`tagfield`,`tagsubfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`kohafield`,`tab`,`authorised_value`,`authtypecode`,`value_builder`,`isurl`,`hidden`,`frameworkcode`,`seealso`,`link`,`defaultvalue`) values ('856','x','Nota non pubblica','',1,0,'',8,'','','',NULL,-5,'MN','',NULL,NULL);
insert into `marc_subfield_structure`(`tagfield`,`tagsubfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`kohafield`,`tab`,`authorised_value`,`authtypecode`,`value_builder`,`isurl`,`hidden`,`frameworkcode`,`seealso`,`link`,`defaultvalue`) values ('856','y','Metodo di accesso','',0,0,'',8,'','','',NULL,-5,'MN','',NULL,NULL);
insert into `marc_subfield_structure`(`tagfield`,`tagsubfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`kohafield`,`tab`,`authorised_value`,`authtypecode`,`value_builder`,`isurl`,`hidden`,`frameworkcode`,`seealso`,`link`,`defaultvalue`) values ('856','z','Nota pubblica','',1,0,'',8,'','','',NULL,-5,'MN','',NULL,NULL);
----
+--
-- Inizia il framework 'PR'
insert into `marc_subfield_structure`(`tagfield`,`tagsubfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`kohafield`,`tab`,`authorised_value`,`authtypecode`,`value_builder`,`isurl`,`hidden`,`frameworkcode`,`seealso`,`link`,`defaultvalue`) values ('000','@','Guida (Record label)','',0,1,'',0,'','','unimarc_leader.pl',NULL,0,'PR','',NULL,NULL);
insert into `marc_subfield_structure`(`tagfield`,`tagsubfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`kohafield`,`tab`,`authorised_value`,`authtypecode`,`value_builder`,`isurl`,`hidden`,`frameworkcode`,`seealso`,`link`,`defaultvalue`) values ('001','@','Identificatore del record','',0,0,'biblio.biblionumber',-1,'','','',0,0,'PR',NULL,'','');
insert into `marc_tag_structure`(`tagfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`authorised_value`,`frameworkcode`) values
('995','Collocazione e informazioni sulla copia (Koha)','',1,0,'','');
---- MN
+-- MN
insert into `marc_tag_structure`(`tagfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`authorised_value`,`frameworkcode`) values
('090','id koha','',0,0,'','MN');
insert into `marc_tag_structure`(`tagfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`authorised_value`,`frameworkcode`) values
('995','Collocazione e informazioni sulla copia (Koha)','',1,0,'','PR');
---- Sottcampi di Default
+-- Sottcampi di Default
-- 090
insert into `marc_subfield_structure`(`tagfield`,`tagsubfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`kohafield`,`tab`,`authorised_value`,`authtypecode`,`value_builder`,`isurl`,`hidden`,`frameworkcode`,`seealso`,`link`,`defaultvalue`) values ('090','a','valore id','valore id',0,0,'biblioitems.biblioitemnumber',9,'','','',0,-5,'',NULL,'','');
-- 099
insert into `marc_subfield_structure`(`tagfield`,`tagsubfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`kohafield`,`tab`,`authorised_value`,`authtypecode`,`value_builder`,`isurl`,`hidden`,`frameworkcode`,`seealso`,`link`,`defaultvalue`) values ('942','n','Suppress in OPAC','Suppress in OPAC',0,0,'',9,'','','',0,-5,'',NULL,'','');
insert into `marc_subfield_structure`(`tagfield`,`tagsubfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`kohafield`,`tab`,`authorised_value`,`authtypecode`,`value_builder`,`isurl`,`hidden`,`frameworkcode`,`seealso`,`link`,`defaultvalue`) values ('942','s','Serial record flag','Serial record',0,0,'biblio.serial',9,'','','',0,0,'',NULL,'','');
---995
+-- 995
insert into `marc_subfield_structure`(`tagfield`,`tagsubfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`kohafield`,`tab`,`authorised_value`,`authtypecode`,`value_builder`,`isurl`,`hidden`,`frameworkcode`,`seealso`,`link`,`defaultvalue`) values ('995','0','Ritiro della copia','Ritiro della copia',0,0,'items.wthdrawn',10,'WITHDRAWN','','',0,0,'',NULL,'','0');
insert into `marc_subfield_structure`(`tagfield`,`tagsubfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`kohafield`,`tab`,`authorised_value`,`authtypecode`,`value_builder`,`isurl`,`hidden`,`frameworkcode`,`seealso`,`link`,`defaultvalue`) values ('995','1','Codice di sistema (classificazione specifica o altro schema e edizione)','Codice di sistema (classificazione specifica o altro schema e edizione)',0,0,'',10,'','','',0,-5,'',NULL,'','');
insert into `marc_subfield_structure`(`tagfield`,`tagsubfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`kohafield`,`tab`,`authorised_value`,`authtypecode`,`value_builder`,`isurl`,`hidden`,`frameworkcode`,`seealso`,`link`,`defaultvalue`) values ('995','2','Copia smarrita','Copia smarrita',0,0,'items.itemlost',10,'LOST','','',0,0,'',NULL,'','0');
insert into `marc_subfield_structure`(`tagfield`,`tagsubfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`kohafield`,`tab`,`authorised_value`,`authtypecode`,`value_builder`,`isurl`,`hidden`,`frameworkcode`,`seealso`,`link`,`defaultvalue`) values ('995','y','Codice dell\'ente destinatario superiore','',0,0,'',10,'','','',0,-5,'',NULL,'','');
insert into `marc_subfield_structure`(`tagfield`,`tagsubfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`kohafield`,`tab`,`authorised_value`,`authtypecode`,`value_builder`,`isurl`,`hidden`,`frameworkcode`,`seealso`,`link`,`defaultvalue`) values ('995','z','Ente destinatario superiore, testo libero','',0,0,'',10,'','','',0,-5,'',NULL,'','');
---- Sottocampi di MN
+-- Sottocampi di MN
-- 090
insert into `marc_subfield_structure`(`tagfield`,`tagsubfield`,`liblibrarian`,`libopac`,`repeatable`,`mandatory`,`kohafield`,`tab`,`authorised_value`,`authtypecode`,`value_builder`,`isurl`,`hidden`,`frameworkcode`,`seealso`,`link`,`defaultvalue`) values ('090','a','valore id','valore id',0,0,'biblioitems.biblioitemnumber',9,'','','',0,-5,'MN',NULL,'','');
-- 099
SET FOREIGN_KEY_CHECKS=0;
-INSERT INTO `itemtypes` VALUES ('BK', 'Libro',5,0,0,'bridge/book.gif','');
-INSERT INTO `itemtypes` VALUES ('MX', 'Materiale misto',5,0,0,'bridge/kit.gif','');
-INSERT INTO `itemtypes` VALUES ('CF', 'Computer Files',5,0,0,'bridge/computer_file.gif','');
-INSERT INTO `itemtypes` VALUES ('MP', 'Mappe',5,0,0,'bridge/map.gif','');
-INSERT INTO `itemtypes` VALUES ('VM', 'Audiovisivi',5,0,1,'bridge/dvd.gif','');
-INSERT INTO `itemtypes` VALUES ('MU', 'Musica',5,0,0,'bridge/sound.gif','');
-INSERT INTO `itemtypes` VALUES ('CR', 'Periodici',5,0,0,'bridge/periodical.gif','');
-INSERT INTO `itemtypes` VALUES ('REF', 'Reference',0,0,1,'','');
+INSERT INTO `itemtypes` (`itemtype`,`description`,`rentalcharge`,`notforloan`,`imageurl`,`summary`) VALUES ('BK', 'Libro',5,0,'bridge/book.gif','');
+INSERT INTO `itemtypes` (`itemtype`,`description`,`rentalcharge`,`notforloan`,`imageurl`,`summary`) VALUES ('MX', 'Materiale misto',5,0,'bridge/kit.gif','');
+INSERT INTO `itemtypes` (`itemtype`,`description`,`rentalcharge`,`notforloan`,`imageurl`,`summary`) VALUES ('CF', 'Computer Files',5,0,'bridge/computer_file.gif','');
+INSERT INTO `itemtypes` (`itemtype`,`description`,`rentalcharge`,`notforloan`,`imageurl`,`summary`) VALUES ('MP', 'Mappe',5,0,'bridge/map.gif','');
+INSERT INTO `itemtypes` (`itemtype`,`description`,`rentalcharge`,`notforloan`,`imageurl`,`summary`) VALUES ('VM', 'Audiovisivi',5,1,'bridge/dvd.gif','');
+INSERT INTO `itemtypes` (`itemtype`,`description`,`rentalcharge`,`notforloan`,`imageurl`,`summary`) VALUES ('MU', 'Musica',5,0,'bridge/sound.gif','');
+INSERT INTO `itemtypes` (`itemtype`,`description`,`rentalcharge`,`notforloan`,`imageurl`,`summary`) VALUES ('CR', 'Periodici',5,0,'bridge/periodical.gif','');
+INSERT INTO `itemtypes` (`itemtype`,`description`,`rentalcharge`,`notforloan`,`imageurl`,`summary`) VALUES ('REF', 'Reference',0,1,'','');
-SET FOREIGN_KEY_CHECKS=1;
\ No newline at end of file
+SET FOREIGN_KEY_CHECKS=1;
CREATE TABLE `biblio` ( -- table that stores bibliographic information
`biblionumber` int(11) NOT NULL auto_increment, -- unique identifier assigned to each bibliographic record
`frameworkcode` varchar(4) NOT NULL default '', -- foriegn key from the biblio_framework table to identify which framework was used in cataloging this record
- `author` mediumtext, -- statement of responsibility from MARC record (100 in MARC21)
- `title` mediumtext, -- title (without the subtitle) from the MARC record (245 in MARC21)
- `unititle` mediumtext, -- uniform title (without the subtitle) from the MARC record (240 in MARC21)
- `notes` mediumtext, -- values from the general notes field in the MARC record (500 in MARC21) split by bar (|)
+ `author` mediumtext, -- statement of responsibility from MARC record (100$a in MARC21)
+ `title` mediumtext, -- title (without the subtitle) from the MARC record (245$a in MARC21)
+ `unititle` mediumtext, -- uniform title (without the subtitle) from the MARC record (240$a in MARC21)
+ `notes` mediumtext, -- values from the general notes field in the MARC record (500$a in MARC21) split by bar (|)
`serial` tinyint(1) default NULL, -- foreign key, linking to the subscriptionid in the serial table
`seriestitle` mediumtext,
`copyrightdate` smallint(6) default NULL, -- publication or copyright date from the MARC record
`timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, -- date and time this record was last touched
`datecreated` DATE NOT NULL, -- the date this record was added to Koha
- `abstract` mediumtext, -- summary from the MARC record (520 in MARC21)
+ `abstract` mediumtext, -- summary from the MARC record (520$a in MARC21)
PRIMARY KEY (`biblionumber`),
KEY `blbnoidx` (`biblionumber`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
DROP TABLE IF EXISTS `biblioitems`;
-CREATE TABLE `biblioitems` (
- `biblioitemnumber` int(11) NOT NULL auto_increment,
- `biblionumber` int(11) NOT NULL default 0,
+CREATE TABLE `biblioitems` ( -- information related to bibliographic records in Koha
+ `biblioitemnumber` int(11) NOT NULL auto_increment, -- primary key, unique identifier assigned by Koha
+ `biblionumber` int(11) NOT NULL default 0, -- foreign key linking this table to the biblio table
`volume` mediumtext,
`number` mediumtext,
- `itemtype` varchar(10) default NULL,
- `isbn` varchar(30) default NULL,
- `issn` varchar(9) default NULL,
+ `itemtype` varchar(10) default NULL, -- biblio level item type (MARC21 942$c)
+ `isbn` varchar(30) default NULL, -- ISBN (MARC21 020$a)
+ `issn` varchar(9) default NULL, -- ISSN (MARC21 022$a)
`publicationyear` text,
- `publishercode` varchar(255) default NULL,
+ `publishercode` varchar(255) default NULL, -- publisher (MARC21 260$b)
`volumedate` date default NULL,
- `volumedesc` text,
+ `volumedesc` text, -- volume information (MARC21 362$a)
`collectiontitle` mediumtext default NULL,
`collectionissn` text default NULL,
`collectionvolume` mediumtext default NULL,
`editionstatement` text default NULL,
`editionresponsibility` text default NULL,
`timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
- `illus` varchar(255) default NULL,
- `pages` varchar(255) default NULL,
+ `illus` varchar(255) default NULL, -- illustrations (MARC21 300$b)
+ `pages` varchar(255) default NULL, -- number of pages (MARC21 300$c)
`notes` mediumtext,
- `size` varchar(255) default NULL,
- `place` varchar(255) default NULL,
- `lccn` varchar(25) default NULL,
- `marc` longblob,
- `url` varchar(255) default NULL,
- `cn_source` varchar(10) default NULL,
+ `size` varchar(255) default NULL, -- material size (MARC21 300$c)
+ `place` varchar(255) default NULL, -- publication place (MARC21 260$a)
+ `lccn` varchar(25) default NULL, -- library of congress control number (MARC21 010$a)
+ `marc` longblob, -- full bibliographic MARC record
+ `url` varchar(255) default NULL, -- url (MARC21 856$u)
+ `cn_source` varchar(10) default NULL, -- classification source (MARC21 942$2)
`cn_class` varchar(30) default NULL,
`cn_item` varchar(10) default NULL,
`cn_suffix` varchar(10) default NULL,
`cn_sort` varchar(30) default NULL,
`totalissues` int(10),
- `marcxml` longtext NOT NULL,
+ `marcxml` longtext NOT NULL, -- full bibliographic MARC record in MARCXML
PRIMARY KEY (`biblioitemnumber`),
KEY `bibinoidx` (`biblioitemnumber`),
KEY `bibnoidx` (`biblionumber`),
--
DROP TABLE IF EXISTS `categories`;
-CREATE TABLE `categories` (
- `categorycode` varchar(10) NOT NULL default '',
- `description` mediumtext,
- `enrolmentperiod` smallint(6) default NULL,
- `enrolmentperioddate` DATE NULL DEFAULT NULL,
- `upperagelimit` smallint(6) default NULL,
+CREATE TABLE `categories` ( -- this table shows information related to Koha patron categories
+ `categorycode` varchar(10) NOT NULL default '', -- unique primary key used to idenfity the patron category
+ `description` mediumtext, -- description of the patron category
+ `enrolmentperiod` smallint(6) default NULL, -- number of months the patron is enrolled for (will be NULL if enrolmentperioddate is set)
+ `enrolmentperioddate` DATE NULL DEFAULT NULL, -- date the patron is enrolled until (will be NULL if enrolmentperiod is set)
+ `upperagelimit` smallint(6) default NULL, -- age limit for the patron
`dateofbirthrequired` tinyint(1) default NULL,
- `finetype` varchar(30) default NULL,
+ `finetype` varchar(30) default NULL, -- unused in Koha
`bulk` tinyint(1) default NULL,
- `enrolmentfee` decimal(28,6) default NULL,
- `overduenoticerequired` tinyint(1) default NULL,
- `issuelimit` smallint(6) default NULL,
- `reservefee` decimal(28,6) default NULL,
- `hidelostitems` tinyint(1) NOT NULL default '0',
- `category_type` varchar(1) NOT NULL default 'A',
+ `enrolmentfee` decimal(28,6) default NULL, -- enrollment fee for the patron
+ `overduenoticerequired` tinyint(1) default NULL, -- are overdue notices sent to this patron category (1 for yes, 0 for no)
+ `issuelimit` smallint(6) default NULL, -- unused in Koha
+ `reservefee` decimal(28,6) default NULL, -- cost to place holds
+ `hidelostitems` tinyint(1) NOT NULL default '0', -- are lost items shown to this category (1 for yes, 0 for no)
+ `category_type` varchar(1) NOT NULL default 'A', -- type of Koha patron (Adult, Child, Professional, Organizational, Statistical, Staff)
PRIMARY KEY (`categorycode`),
UNIQUE KEY `categorycode` (`categorycode`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `deletedbiblio` ( -- stores information about bibliographic records that have been deleted
`biblionumber` int(11) NOT NULL auto_increment, -- unique identifier assigned to each bibliographic record
`frameworkcode` varchar(4) NOT NULL default '', -- foriegn key from the biblio_framework table to identify which framework was used in cataloging this record
- `author` mediumtext, -- statement of responsibility from MARC record (100 in MARC21)
- `title` mediumtext, -- title (without the subtitle) from the MARC record (245 in MARC21)
- `unititle` mediumtext, -- uniform title (without the subtitle) from the MARC record (240 in MARC21)
- `notes` mediumtext, -- values from the general notes field in the MARC record (500 in MARC21) split by bar (|)
+ `author` mediumtext, -- statement of responsibility from MARC record (100$a in MARC21)
+ `title` mediumtext, -- title (without the subtitle) from the MARC record (245$a in MARC21)
+ `unititle` mediumtext, -- uniform title (without the subtitle) from the MARC record (240$a in MARC21)
+ `notes` mediumtext, -- values from the general notes field in the MARC record (500$a in MARC21) split by bar (|)
`serial` tinyint(1) default NULL, -- foreign key, linking to the subscriptionid in the serial table
`seriestitle` mediumtext,
`copyrightdate` smallint(6) default NULL, -- publication or copyright date from the MARC record
`timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, -- date and time this record was last touched
`datecreated` DATE NOT NULL, -- the date this record was added to Koha
- `abstract` mediumtext, -- summary from the MARC record (520 in MARC21)
+ `abstract` mediumtext, -- summary from the MARC record (520$a in MARC21)
PRIMARY KEY (`biblionumber`),
KEY `blbnoidx` (`biblionumber`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
DROP TABLE IF EXISTS `deletedbiblioitems`;
-CREATE TABLE `deletedbiblioitems` (
- `biblioitemnumber` int(11) NOT NULL default 0,
- `biblionumber` int(11) NOT NULL default 0,
+CREATE TABLE `deletedbiblioitems` ( -- information about bibliographic records that have been deleted
+ `biblioitemnumber` int(11) NOT NULL default 0, -- primary key, unique identifier assigned by Koha
+ `biblionumber` int(11) NOT NULL default 0, -- foreign key linking this table to the biblio table
`volume` mediumtext,
`number` mediumtext,
- `itemtype` varchar(10) default NULL,
- `isbn` varchar(30) default NULL,
- `issn` varchar(9) default NULL,
+ `itemtype` varchar(10) default NULL, -- biblio level item type (MARC21 942$c)
+ `isbn` varchar(30) default NULL, -- ISBN (MARC21 020$a)
+ `issn` varchar(9) default NULL, -- ISSN (MARC21 022$a)
`publicationyear` text,
- `publishercode` varchar(255) default NULL,
+ `publishercode` varchar(255) default NULL, -- publisher (MARC21 260$b)
`volumedate` date default NULL,
- `volumedesc` text,
+ `volumedesc` text, -- volume information (MARC21 362$a)
`collectiontitle` mediumtext default NULL,
`collectionissn` text default NULL,
`collectionvolume` mediumtext default NULL,
`editionstatement` text default NULL,
`editionresponsibility` text default NULL,
`timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
- `illus` varchar(255) default NULL,
- `pages` varchar(255) default NULL,
+ `illus` varchar(255) default NULL, -- illustrations (MARC21 300$b)
+ `pages` varchar(255) default NULL, -- number of pages (MARC21 300$c)
`notes` mediumtext,
- `size` varchar(255) default NULL,
- `place` varchar(255) default NULL,
- `lccn` varchar(25) default NULL,
- `marc` longblob,
- `url` varchar(255) default NULL,
- `cn_source` varchar(10) default NULL,
+ `size` varchar(255) default NULL, -- material size (MARC21 300$c)
+ `place` varchar(255) default NULL, -- publication place (MARC21 260$a)
+ `lccn` varchar(25) default NULL, -- library of congress control number (MARC21 010$a)
+ `marc` longblob, -- full bibliographic MARC record
+ `url` varchar(255) default NULL, -- url (MARC21 856$u)
+ `cn_source` varchar(10) default NULL, -- classification source (MARC21 942$2)
`cn_class` varchar(30) default NULL,
`cn_item` varchar(10) default NULL,
`cn_suffix` varchar(10) default NULL,
`cn_sort` varchar(30) default NULL,
`totalissues` int(10),
- `marcxml` longtext NOT NULL,
+ `marcxml` longtext NOT NULL, -- full bibliographic MARC record in MARCXML
PRIMARY KEY (`biblioitemnumber`),
KEY `bibinoidx` (`biblioitemnumber`),
KEY `bibnoidx` (`biblionumber`),
DROP TABLE IF EXISTS `deleteditems`;
CREATE TABLE `deleteditems` (
- `itemnumber` int(11) NOT NULL default 0,
- `biblionumber` int(11) NOT NULL default 0,
- `biblioitemnumber` int(11) NOT NULL default 0,
- `barcode` varchar(20) default NULL,
- `dateaccessioned` date default NULL,
- `booksellerid` mediumtext default NULL,
- `homebranch` varchar(10) default NULL,
- `price` decimal(8,2) default NULL,
- `replacementprice` decimal(8,2) default NULL,
- `replacementpricedate` date default NULL,
- `datelastborrowed` date default NULL,
- `datelastseen` date default NULL,
+ `itemnumber` int(11) NOT NULL default 0, -- primary key and unique identifier added by Koha
+ `biblionumber` int(11) NOT NULL default 0, -- foreign key from biblio table used to link this item to the right bib record
+ `biblioitemnumber` int(11) NOT NULL default 0, -- foreign key from the biblioitems table to link to item to additional information
+ `barcode` varchar(20) default NULL, -- item barcode (MARC21 952$p)
+ `dateaccessioned` date default NULL, -- date the item was acquired or added to Koha (MARC21 952$d)
+ `booksellerid` mediumtext default NULL, -- where the item was purchased (MARC21 952$e)
+ `homebranch` varchar(10) default NULL, -- foreign key from the branches table for the library that owns this item (MARC21 952$a)
+ `price` decimal(8,2) default NULL, -- purchase price (MARC21 952$g)
+ `replacementprice` decimal(8,2) default NULL, -- cost the library charges to replace the item if it has been marked lost (MARC21 952$v)
+ `replacementpricedate` date default NULL, -- the date the price is effective from (MARC21 952$w)
+ `datelastborrowed` date default NULL, -- the date the item was last checked out
+ `datelastseen` date default NULL, -- the date the item was last see (usually the last time the barcode was scanned or inventory was done)
`stack` tinyint(1) default NULL,
- `notforloan` tinyint(1) NOT NULL default 0,
- `damaged` tinyint(1) NOT NULL default 0,
- `itemlost` tinyint(1) NOT NULL default 0,
- `wthdrawn` tinyint(1) NOT NULL default 0,
- `itemcallnumber` varchar(255) default NULL,
- `issues` smallint(6) default NULL,
- `renewals` smallint(6) default NULL,
- `reserves` smallint(6) default NULL,
- `restricted` tinyint(1) default NULL,
- `itemnotes` mediumtext,
- `holdingbranch` varchar(10) default NULL,
+ `notforloan` tinyint(1) NOT NULL default 0, -- authorized value defining why this item is not for loan (MARC21 952$7)
+ `damaged` tinyint(1) NOT NULL default 0, -- authorized value defining this item as damaged (MARC21 952$4)
+ `itemlost` tinyint(1) NOT NULL default 0, -- authorized value defining this item as lost (MARC21 952$1)
+ `wthdrawn` tinyint(1) NOT NULL default 0, -- authorized value defining this item as withdrawn (MARC21 952$0)
+ `itemcallnumber` varchar(255) default NULL, -- call number for this item (MARC21 952$o)
+ `issues` smallint(6) default NULL, -- number of times this item has been checked out
+ `renewals` smallint(6) default NULL, -- number of times this item has been renewed
+ `reserves` smallint(6) default NULL, -- number of times this item has been placed on hold/reserved
+ `restricted` tinyint(1) default NULL, -- authorized value defining use restrictions for this item (MARC21 952$5)
+ `itemnotes` mediumtext, -- public notes on this item (MARC21 952$x)
+ `holdingbranch` varchar(10) default NULL, -- foreign key from the branches table for the library that is currently in possession item (MARC21 952$b)
`paidfor` mediumtext,
- `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
- `location` varchar(80) default NULL,
- `permanent_location` varchar(80) default NULL,
- `onloan` date default NULL,
- `cn_source` varchar(10) default NULL,
- `cn_sort` varchar(30) default NULL,
- `ccode` varchar(10) default NULL,
- `materials` varchar(10) default NULL,
- `uri` varchar(255) default NULL,
- `itype` varchar(10) default NULL,
- `more_subfields_xml` longtext default NULL,
- `enumchron` text default NULL,
- `copynumber` varchar(32) default NULL,
- `stocknumber` varchar(32) default NULL,
- `marc` longblob,
+ `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, -- date and time this item was last altered
+ `location` varchar(80) default NULL, -- authorized value for the shelving location for this item (MARC21 952$c)
+ `permanent_location` varchar(80) default NULL, -- linked to the CART and PROC temporary locations feature, stores the permanent shelving location
+ `onloan` date default NULL, -- defines if this item is currently checked out (1 for yes, 0 for no)
+ `cn_source` varchar(10) default NULL, -- classification source used on this item (MARC21 952$2)
+ `cn_sort` varchar(30) default NULL, -- normalized form of the call number (MARC21 952$o) used for sorting
+ `ccode` varchar(10) default NULL, -- authorized value for the collection code associated with this item (MARC21 952$8)
+ `materials` varchar(10) default NULL, -- materials specified (MARC21 952$3)
+ `uri` varchar(255) default NULL, -- URL for the item (MARC21 952$u)
+ `itype` varchar(10) default NULL, -- foreign key from the itemtypes table defining the type for this item (MARC21 952$y)
+ `more_subfields_xml` longtext default NULL, -- additional 952 subfields in XML format
+ `enumchron` text default NULL, -- serial enumeration/chronology for the item (MARC21 952$h)
+ `copynumber` varchar(32) default NULL, -- copy number (MARC21 952$t)
+ `stocknumber` varchar(32) default NULL, -- inventory number (MARC21 952$i)
+ `marc` longblob, -- unused in Koha
PRIMARY KEY (`itemnumber`),
KEY `delitembarcodeidx` (`barcode`),
KEY `delitemstocknumberidx` (`stocknumber`),
--
DROP TABLE IF EXISTS `items`;
-CREATE TABLE `items` (
- `itemnumber` int(11) NOT NULL auto_increment,
- `biblionumber` int(11) NOT NULL default 0,
- `biblioitemnumber` int(11) NOT NULL default 0,
- `barcode` varchar(20) default NULL,
- `dateaccessioned` date default NULL,
- `booksellerid` mediumtext default NULL,
- `homebranch` varchar(10) default NULL,
- `price` decimal(8,2) default NULL,
- `replacementprice` decimal(8,2) default NULL,
- `replacementpricedate` date default NULL,
- `datelastborrowed` date default NULL,
- `datelastseen` date default NULL,
+CREATE TABLE `items` ( -- holdings/item information
+ `itemnumber` int(11) NOT NULL auto_increment, -- primary key and unique identifier added by Koha
+ `biblionumber` int(11) NOT NULL default 0, -- foreign key from biblio table used to link this item to the right bib record
+ `biblioitemnumber` int(11) NOT NULL default 0, -- foreign key from the biblioitems table to link to item to additional information
+ `barcode` varchar(20) default NULL, -- item barcode (MARC21 952$p)
+ `dateaccessioned` date default NULL, -- date the item was acquired or added to Koha (MARC21 952$d)
+ `booksellerid` mediumtext default NULL, -- where the item was purchased (MARC21 952$e)
+ `homebranch` varchar(10) default NULL, -- foreign key from the branches table for the library that owns this item (MARC21 952$a)
+ `price` decimal(8,2) default NULL, -- purchase price (MARC21 952$g)
+ `replacementprice` decimal(8,2) default NULL, -- cost the library charges to replace the item if it has been marked lost (MARC21 952$v)
+ `replacementpricedate` date default NULL, -- the date the price is effective from (MARC21 952$w)
+ `datelastborrowed` date default NULL, -- the date the item was last checked out/issued
+ `datelastseen` date default NULL, -- the date the item was last see (usually the last time the barcode was scanned or inventory was done)
`stack` tinyint(1) default NULL,
- `notforloan` tinyint(1) NOT NULL default 0,
- `damaged` tinyint(1) NOT NULL default 0,
- `itemlost` tinyint(1) NOT NULL default 0,
- `wthdrawn` tinyint(1) NOT NULL default 0,
- `itemcallnumber` varchar(255) default NULL,
- `issues` smallint(6) default NULL,
- `renewals` smallint(6) default NULL,
- `reserves` smallint(6) default NULL,
- `restricted` tinyint(1) default NULL,
- `itemnotes` mediumtext,
- `holdingbranch` varchar(10) default NULL,
+ `notforloan` tinyint(1) NOT NULL default 0, -- authorized value defining why this item is not for loan (MARC21 952$7)
+ `damaged` tinyint(1) NOT NULL default 0, -- authorized value defining this item as damaged (MARC21 952$4)
+ `itemlost` tinyint(1) NOT NULL default 0, -- authorized value defining this item as lost (MARC21 952$1)
+ `wthdrawn` tinyint(1) NOT NULL default 0, -- authorized value defining this item as withdrawn (MARC21 952$0)
+ `itemcallnumber` varchar(255) default NULL, -- call number for this item (MARC21 952$o)
+ `issues` smallint(6) default NULL, -- number of times this item has been checked out/issued
+ `renewals` smallint(6) default NULL, -- number of times this item has been renewed
+ `reserves` smallint(6) default NULL, -- number of times this item has been placed on hold/reserved
+ `restricted` tinyint(1) default NULL, -- authorized value defining use restrictions for this item (MARC21 952$5)
+ `itemnotes` mediumtext, -- public notes on this item (MARC21 952$x)
+ `holdingbranch` varchar(10) default NULL, -- foreign key from the branches table for the library that is currently in possession item (MARC21 952$b)
`paidfor` mediumtext,
- `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
- `location` varchar(80) default NULL,
- `permanent_location` varchar(80) default NULL,
- `onloan` date default NULL,
- `cn_source` varchar(10) default NULL,
- `cn_sort` varchar(30) default NULL,
- `ccode` varchar(10) default NULL,
- `materials` varchar(10) default NULL,
- `uri` varchar(255) default NULL,
- `itype` varchar(10) default NULL,
- `more_subfields_xml` longtext default NULL,
- `enumchron` text default NULL,
- `copynumber` varchar(32) default NULL,
- `stocknumber` varchar(32) default NULL,
+ `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, -- date and time this item was last altered
+ `location` varchar(80) default NULL, -- authorized value for the shelving location for this item (MARC21 952$c)
+ `permanent_location` varchar(80) default NULL, -- linked to the CART and PROC temporary locations feature, stores the permanent shelving location
+ `onloan` date default NULL, -- defines if this item is currently checked out (1 for yes, 0 for no)
+ `cn_source` varchar(10) default NULL, -- classification source used on this item (MARC21 952$2)
+ `cn_sort` varchar(30) default NULL, -- normalized form of the call number (MARC21 952$o) used for sorting
+ `ccode` varchar(10) default NULL, -- authorized value for the collection code associated with this item (MARC21 952$8)
+ `materials` text default NULL, -- materials specified (MARC21 952$3)
+ `uri` varchar(255) default NULL, -- URL for the item (MARC21 952$u)
+ `itype` varchar(10) default NULL, -- foreign key from the itemtypes table defining the type for this item (MARC21 952$y)
+ `more_subfields_xml` longtext default NULL, -- additional 952 subfields in XML format
+ `enumchron` text default NULL, -- serial enumeration/chronology for the item (MARC21 952$h)
+ `copynumber` varchar(32) default NULL, -- copy number (MARC21 952$t)
+ `stocknumber` varchar(32) default NULL, -- inventory number (MARC21 952$i)
PRIMARY KEY (`itemnumber`),
UNIQUE KEY `itembarcodeidx` (`barcode`),
KEY `itemstocknumberidx` (`stocknumber`),
--
DROP TABLE IF EXISTS `need_merge_authorities`;
-CREATE TABLE `need_merge_authorities` (
- `id` int NOT NULL auto_increment PRIMARY KEY,
- `authid` bigint NOT NULL,
- `done` tinyint DEFAULT 0
+CREATE TABLE `need_merge_authorities` ( -- keeping track of authority records still to be merged by merge_authority cron job (used only if pref dontmerge is ON)
+ `id` int NOT NULL auto_increment PRIMARY KEY, -- unique id
+ `authid` bigint NOT NULL, -- reference to authority record
+ `done` tinyint DEFAULT 0 -- indication whether merge has been executed (0=not done, 1= done, 2= in progress)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Table structure for table `old_reserves`
--
DROP TABLE IF EXISTS `old_reserves`;
-CREATE TABLE `old_reserves` (
- `borrowernumber` int(11) default NULL,
- `reservedate` date default NULL,
- `biblionumber` int(11) default NULL,
+CREATE TABLE `old_reserves` ( -- this table holds all holds/reserves that have been completed (either filled or cancelled)
+ `borrowernumber` int(11) default NULL, -- foreign key from the borrowers table defining which patron this hold is for
+ `reservedate` date default NULL, -- the date the hold was places
+ `biblionumber` int(11) default NULL, -- foreign key from the biblio table defining which bib record this hold is on
`constrainttype` varchar(1) default NULL,
- `branchcode` varchar(10) default NULL,
- `notificationdate` date default NULL,
- `reminderdate` date default NULL,
- `cancellationdate` date default NULL,
- `reservenotes` mediumtext,
- `priority` smallint(6) default NULL,
- `found` varchar(1) default NULL,
- `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
- `itemnumber` int(11) default NULL,
- `waitingdate` date default NULL,
- `expirationdate` DATE DEFAULT NULL,
+ `branchcode` varchar(10) default NULL, -- foreign key from the branches table defining which branch the patron wishes to pick this hold up at
+ `notificationdate` date default NULL, -- currently unused
+ `reminderdate` date default NULL, -- currently unused
+ `cancellationdate` date default NULL, -- the date this hold was cancelled
+ `reservenotes` mediumtext, -- notes related to this hold
+ `priority` smallint(6) default NULL, -- where in the queue the patron sits
+ `found` varchar(1) default NULL, -- a one letter code defining what the status is of the hold is after it has been confirmed
+ `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, -- the date and time this hold was last updated
+ `itemnumber` int(11) default NULL, -- foreign key from the items table defining the specific item the patron has placed on hold or the item this hold was filled with
+ `waitingdate` date default NULL, -- the date the item was marked as waiting for the patron at the library
+ `expirationdate` DATE DEFAULT NULL, -- the date the hold expires (usually the date entered by the patron to say they don't need the hold after a certain date)
`lowestPriority` tinyint(1) NOT NULL,
KEY `old_reserves_borrowernumber` (`borrowernumber`),
KEY `old_reserves_biblionumber` (`biblionumber`),
--
DROP TABLE IF EXISTS `reserves`;
-CREATE TABLE `reserves` (
- `borrowernumber` int(11) NOT NULL default 0,
- `reservedate` date default NULL,
- `biblionumber` int(11) NOT NULL default 0,
+CREATE TABLE `reserves` ( -- information related to holds/reserves in Koha
+ `borrowernumber` int(11) NOT NULL default 0, -- foreign key from the borrowers table defining which patron this hold is for
+ `reservedate` date default NULL, -- the date the hold was places
+ `biblionumber` int(11) NOT NULL default 0, -- foreign key from the biblio table defining which bib record this hold is on
`constrainttype` varchar(1) default NULL,
- `branchcode` varchar(10) default NULL,
- `notificationdate` date default NULL,
- `reminderdate` date default NULL,
- `cancellationdate` date default NULL,
- `reservenotes` mediumtext,
- `priority` smallint(6) default NULL,
- `found` varchar(1) default NULL,
- `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
- `itemnumber` int(11) default NULL,
- `waitingdate` date default NULL,
- `expirationdate` DATE DEFAULT NULL,
+ `branchcode` varchar(10) default NULL, -- foreign key from the branches table defining which branch the patron wishes to pick this hold up at
+ `notificationdate` date default NULL, -- currently unused
+ `reminderdate` date default NULL, -- currently unused
+ `cancellationdate` date default NULL, -- the date this hold was cancelled
+ `reservenotes` mediumtext, -- notes related to this hold
+ `priority` smallint(6) default NULL, -- where in the queue the patron sits
+ `found` varchar(1) default NULL, -- a one letter code defining what the status is of the hold is after it has been confirmed
+ `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, -- the date and time this hold was last updated
+ `itemnumber` int(11) default NULL, -- foreign key from the items table defining the specific item the patron has placed on hold or the item this hold was filled with
+ `waitingdate` date default NULL, -- the date the item was marked as waiting for the patron at the library
+ `expirationdate` DATE DEFAULT NULL, -- the date the hold expires (usually the date entered by the patron to say they don't need the hold after a certain date)
`lowestPriority` tinyint(1) NOT NULL,
KEY priorityfoundidx (priority,found),
KEY `borrowernumber` (`borrowernumber`),
`isbn` varchar(30) default NULL, -- isbn of the suggested item
`mailoverseeing` smallint(1) default 0,
`biblionumber` int(11) default NULL, -- foreign key linking the suggestion to the biblio table after the suggestion has been ordered
- `reason` text, -- reason for making the suggestion
+ `reason` text, -- reason for accepting or rejecting the suggestion
+ `patronreason` text, -- reason for making the suggestion
budgetid INT(11), -- foreign key linking the suggested budget to the aqbudgets table
branchcode VARCHAR(10) default NULL, -- foreign key linking the suggested branch to the branches table
collectiontitle text default NULL, -- collection name for the suggested item
--
DROP TABLE IF EXISTS `aqbooksellers`;
-CREATE TABLE `aqbooksellers` (
- `id` int(11) NOT NULL auto_increment,
- `name` mediumtext NOT NULL,
- `address1` mediumtext,
- `address2` mediumtext,
- `address3` mediumtext,
- `address4` mediumtext,
- `phone` varchar(30) default NULL,
- `accountnumber` mediumtext,
- `othersupplier` mediumtext,
- `currency` varchar(3) NOT NULL default '',
- `booksellerfax` mediumtext,
- `notes` mediumtext,
- `bookselleremail` mediumtext,
- `booksellerurl` mediumtext,
- `contact` varchar(100) default NULL,
- `postal` mediumtext,
- `url` varchar(255) default NULL,
- `contpos` varchar(100) default NULL,
- `contphone` varchar(100) default NULL,
- `contfax` varchar(100) default NULL,
- `contaltphone` varchar(100) default NULL,
- `contemail` varchar(100) default NULL,
- `contnotes` mediumtext,
- `active` tinyint(4) default NULL,
- `listprice` varchar(10) default NULL,
- `invoiceprice` varchar(10) default NULL,
- `gstreg` tinyint(4) default NULL,
- `listincgst` tinyint(4) default NULL,
- `invoiceincgst` tinyint(4) default NULL,
- `gstrate` decimal(6,4) default NULL,
- `discount` float(6,4) default NULL,
- `fax` varchar(50) default NULL,
+CREATE TABLE `aqbooksellers` ( -- information about the vendors listed in acquisitions
+ `id` int(11) NOT NULL auto_increment, -- primary key and unique identifier assigned by Koha
+ `name` mediumtext NOT NULL, -- vendor name
+ `address1` mediumtext, -- first line of vendor physical address
+ `address2` mediumtext, -- second line of vendor physical address
+ `address3` mediumtext, -- third line of vendor physical address
+ `address4` mediumtext, -- fourth line of vendor physical address
+ `phone` varchar(30) default NULL, -- vendor phone number
+ `accountnumber` mediumtext, -- unused in Koha
+ `othersupplier` mediumtext, -- unused in Koha
+ `currency` varchar(3) NOT NULL default '', -- unused in Koha
+ `booksellerfax` mediumtext, -- vendor fax number
+ `notes` mediumtext, -- order notes
+ `bookselleremail` mediumtext, -- vendor email
+ `booksellerurl` mediumtext, -- unused in Koha
+ `contact` varchar(100) default NULL, -- name of contact at vendor
+ `postal` mediumtext, -- vendor postal address (all lines)
+ `url` varchar(255) default NULL, -- vendor web address
+ `contpos` varchar(100) default NULL, -- contact person's position
+ `contphone` varchar(100) default NULL, -- contact's phone number
+ `contfax` varchar(100) default NULL, -- contact's fax number
+ `contaltphone` varchar(100) default NULL, -- contact's alternate phone number
+ `contemail` varchar(100) default NULL, -- contact's email address
+ `contnotes` mediumtext, -- notes related to the contact
+ `active` tinyint(4) default NULL, -- is this vendor active (1 for yes, 0 for no)
+ `listprice` varchar(10) default NULL, -- currency code for list prices
+ `invoiceprice` varchar(10) default NULL, -- currency code for invoice prices
+ `gstreg` tinyint(4) default NULL, -- is your library charged tax (1 for yes, 0 for no)
+ `listincgst` tinyint(4) default NULL, -- is tax included in list prices (1 for yes, 0 for no)
+ `invoiceincgst` tinyint(4) default NULL, -- is tax included in invoice prices (1 for yes, 0 for no)
+ `gstrate` decimal(6,4) default NULL, -- the tax rate the library is charged
+ `discount` float(6,4) default NULL, -- discount offered on all items ordered from this vendor
+ `fax` varchar(50) default NULL, -- vendor fax number
PRIMARY KEY (`id`),
KEY `listprice` (`listprice`),
KEY `invoiceprice` (`invoiceprice`),
('541', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, ''),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, ''),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, ''),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, ''),
('546', 'LANGUAGE NOTE', 'LANGUAGE NOTE', 1, 0, NULL, ''),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, ''),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, ''),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'BKS'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'BKS'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'BKS'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'BKS'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'BKS'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'BKS'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'BKS'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'CF'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'CF'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'CF'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'CF'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'CF'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'CF'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'CF'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'SR'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'SR'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'SR'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'SR'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'SR'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'SR'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'SR'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'VR'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'VR'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'VR'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'VR'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'VR'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'VR'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'VR'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'AR'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'AR'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'AR'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'AR'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'AR'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'AR'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'AR'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'KT'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'KT'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'KT'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'KT'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'KT'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'KT'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'KT'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'IR'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'IR'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'IR'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'IR'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'IR'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'IR'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'IR'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'SER'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'SER'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'SER'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'SER'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'SER'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'SER'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'SER'),
--- /dev/null
+-- This file is part of Koha.
+--
+-- Copyright 2011 Magnus Enger Libriotech
+--
+-- 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 this program; if not, write to the Free Software Foundation, Inc.,
+-- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+INSERT IGNORE INTO biblio_framework VALUES ( 'FA','Hurtigkatalogisering' );
+
+DELETE FROM marc_tag_structure WHERE frameworkcode='FA';
+INSERT INTO marc_tag_structure (tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,frameworkcode) VALUES ('000','Postens hode','Postens hode','0','1','','FA');
+INSERT INTO marc_tag_structure (tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,frameworkcode) VALUES ('001','Identifikasjonsnummer','Identifikasjonsnummer','0','0','','FA');
+INSERT INTO marc_tag_structure (tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,frameworkcode) VALUES ('008','Informasjonskoder','Informasjonskoder','0','0','','FA');
+INSERT INTO marc_tag_structure (tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,frameworkcode) VALUES ('015','Andre bibliografiske kontrollnummer (R)','Andre bibliografiske kontrollnummer (R)','1','0','','FA');
+INSERT INTO marc_tag_structure (tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,frameworkcode) VALUES ('020','Internasjonalt standard boknummer (ISBN)','Internasjonalt standard boknummer (ISBN)','1','0','','FA');
+INSERT INTO marc_tag_structure (tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,frameworkcode) VALUES ('024','Andre standardnumre','Andre standardnumre','0','0','','FA');
+INSERT INTO marc_tag_structure (tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,frameworkcode) VALUES ('025','Europeisk artikkelnummer (EAN)','Europeisk artikkelnummer (EAN)','0','0','','FA');
+INSERT INTO marc_tag_structure (tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,frameworkcode) VALUES ('100','Hovedordningsord personnavn','Hovedordningsord personnavn','0','0','','FA');
+INSERT INTO marc_tag_structure (tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,frameworkcode) VALUES ('245','Tittel og ansvarsopplysninger','Tittel og ansvarsopplysninger','0','0','','FA');
+INSERT INTO marc_tag_structure (tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,frameworkcode) VALUES ('250','Utgave','Utgave','0','0','','FA');
+INSERT INTO marc_tag_structure (tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,frameworkcode) VALUES ('260','Utgivelse, distribusjon osv','Utgivelse, distribusjon osv','0','0','','FA');
+INSERT INTO marc_tag_structure (tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,frameworkcode) VALUES ('300','Fysisk beskrivelse','Fysisk beskrivelse','0','0','','FA');
+INSERT INTO marc_tag_structure (tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,frameworkcode) VALUES ('500','Generell note (R)','Generell note (R)','1','0','','FA');
+INSERT INTO marc_tag_structure (tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,frameworkcode) VALUES ('942','Andre opplysninger (Koha)','Andre opplysninger (Koha)','0','0','','FA');
+INSERT INTO marc_tag_structure (tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,frameworkcode) VALUES ('952','Eksemplarinformasjon (Koha)','Eksemplarinformasjon (Koha)','1','0','','FA');
+INSERT INTO marc_tag_structure (tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,frameworkcode) VALUES ('999','Kontrollnummer (Koha)','Kontrollnummer (Koha)','1','0','','FA');
+
+
+DELETE FROM marc_subfield_structure WHERE frameworkcode='FA';
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('000','@','Postens hode','Postens hode','0','1','','0','','','normarc_leader.pl','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('001','@','Identifikasjonsnummer','Identifikasjonsnummer','0','0','','0','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('008','@','Informasjonskoder','Informasjonskoder','0','0','','0','','','normarc_field_008.pl','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('015','a','Nummer','Nummer','0','0','0','0','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('015','b','Kilde','Kilde','0','0','0','0','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('020','a','ISBN','ISBN','0','0','biblioitems.isbn','0','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('020','b','Innbindingsinformasjon','Innbindingsinformasjon','0','0','0','0','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('020','c','Leveringsbetingelser','Leveringsbetingelser','0','0','0','0','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('020','g','Andre tilf','Andre tilf','0','0','0','0','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('020','z','Feil ISBN','Feil ISBN','0','0','0','0','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('024','a','Standardnummer','Standardnummer','0','0','0','0','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('024','c','Leveringsbetingelser','Leveringsbetingelser','0','0','0','0','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('024','g','Andre tilføyelser','Andre tilføyelser','0','0','0','0','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('024','z','Feil standardnummer','Feil standardnummer','0','0','0','0','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('025','a','Nummer','Nummer','0','0','0','0','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('100','8','Andre karakteristika forbundet med navn','Andre karakteristika forbundet med navn','0','0','0','1','','','','0','0','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('100','a','Navn','Navn','0','0','biblio.author','1','','','','0','0','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('100','b','Nummer','Nummer','0','0','0','1','','','','0','0','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('100','c','Andre tilføyelser','Andre tilføyelser','0','0','0','1','','','','0','0','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('100','d','Årstall forbundet med navn','Årstall forbundet med navn','0','0','0','1','','','','0','0','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('100','e','Betegnelse for funksjon','Betegnelse for funksjon','0','0','0','1','','','','0','0','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('100','j','Nasjonalitet','Nasjonalitet','0','0','0','1','','','','0','0','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('100','q','Mer fullstendig navneform','Mer fullstendig navneform','0','0','0','1','','','','0','0','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('100','w','Sorteringsdelfelt for delfelt $a','Sorteringsdelfelt for delfelt $a','0','0','0','1','','','','0','0','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('245','a','Tittel','Tittel','0','0','biblio.title','2','','','','0','0','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('245','b','Annen tittelinformasjon','Annen tittelinformasjon','0','0','bibliosubtitle.subtitle','2','','','','0','0','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('245','c','Ansvarsangivelse','Ansvarsangivelse','0','0','0','2','','','','0','0','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('245','h','Generell materialbetegnelse','Generell materialbetegnelse','0','0','0','2','','','','0','0','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('250','a','Utgave, opplag etc','Utgave, opplag etc','0','0','0','2','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('250','b','Ansvarshavende','Ansvarshavende','0','0','0','2','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('260','a','Sted (R)','Sted (R)','1','0','biblioitems.place','2','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('260','b','Navn p','Navn p','0','0','biblioitems.publishercode','2','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('260','c','År','År','0','0','biblio.copyrightdate','2','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('260','e','Trykkested eller produksjonssted','Trykkested eller produksjonssted','0','0','0','2','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('260','f','Trykkeriets eller produsentens navn','Trykkeriets eller produsentens navn','0','0','0','2','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('260','g','Trykkeår eller produksjonsår','Trykkeår eller produksjonsår','0','0','0','2','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('300','a','Omfang','Omfang','0','0','biblioitems.pages','3','','','','0','0','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('300','b','Illustrasjonsmateriale og andre fysiske detaljer','Illustrasjonsmateriale og andre fysiske detaljer','0','0','biblioitems.illus','3','','','','0','0','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('300','c','Format','Format','0','0','biblioitems.size','3','','','','0','0','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('300','e','Bilag','Bilag','0','0','0','3','','','','0','0','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('500','a','Notens tekst','Notens tekst','0','0','biblio.notes','5','','','','0','0','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('942','0','Antall utlån','Antall utlån','0','0','biblioitems.totalissues','9','','','','0','-5','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('942','2','Kilde for klassifikasjon','Kilde for klassifikasjon','0','0','biblioitems.cn_source','9','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('942','6','Koha normalisert klassifikasjon for sortering','Koha normalisert klassifikasjon for sortering','0','0','biblioitems.cn_sort','-1','','','','0','7','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('942','c','Koha [standard] dokumenttype','Koha dokumenttype','0','1','biblioitems.itemtype','9','itemtypes','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('942','e','Utgave','Utgave','0','0','','9','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('942','h','Klassifikasjon del','Klassifikasjon del','0','0','biblioitems.cn_class','9','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('942','i','Eksemplar del','Eksemplar del','1','0','biblioitems.cn_item','9','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('942','k','Hyllesignatur prefiks','Hyllesignatur prefiks','0','0','','9','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('942','m','Hyllesignatur postfiks','Hyllesignatur postfiks','0','0','biblioitems.cn_suffix','9','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('942','n','Skjul i OPAC','Skjul i OPAC','0','0','','9','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('942','s','Periodikamark','Periodikamark','0','0','biblio.serial','9','','','','0','-5','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('952','0','Trukket tilbake','Trukket tilbake','0','0','items.wthdrawn','10','WITHDRAWN','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('952','1','Tapt','Tapt','0','0','items.itemlost','10','LOST','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('952','2','Kilde for klassifikasjon','Kilde for klassifikasjon','0','0','items.cn_source','10','cn_source','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('952','3','Materialespesifikasjon (innbundet ','Materialespesifikasjon (innbundet ','0','0','items.materials','10','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('952','4','Skadet','Skadet','0','0','items.damaged','10','DAMAGED','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('952','5','Begrensninger p','Begrensninger p','0','0','items.restricted','10','RESTRICTED','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('952','6','Koha normalisert klassifikasjon for sortering','Koha normalisert klassifikasjon for sortering','0','0','items.cn_sort','-1','','','','0','7','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('952','7','Ikke til utlån','Ikke til utlån','0','0','items.notforloan','10','NOT_LOAN','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('952','8','Koha samling','Koha samling','0','0','items.ccode','10','CCODE','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('952','9','Koha eksemplarnummer (autogenerert)','Koha eksemplarnummer','0','0','items.itemnumber','-1','','','','0','7','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('952','a','Plassering (eiende filial)','Plassering (eiende filial)','0','0','items.homebranch','10','branches','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('952','b','Annen plassering (midlertidig filial)','Annen plassering (midlertidig filial)','0','0','items.holdingbranch','10','branches','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('952','c','Hylleplassering','Hylleplassering','0','0','items.location','10','LOC','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('952','d','Anskaffelsesdato','Anskaffelsesdato','0','0','items.dateaccessioned','10','','','dateaccessioned.pl','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('952','e','Kilde for anskaffelse','Kilde for anskaffelse','0','0','items.booksellerid','10','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('952','f','Kodet plasseringskvalifikator','Kodet plasseringskvalifikator','0','0','items.coded_location_qualifier','10','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('952','g','Pris (normal innkjøpspris)','Pris (normal innkjøpspris)','0','0','items.price','10','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('952','h','Serienummerering / kronologi','Serienummerering / kronologi','0','0','items.enumchron','10','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('952','j','Samling','Samling','0','0','items.stack','10','STACK','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('952','l','Koha utlån','Koha utlån','0','0','items.issues','10','','','','0','-5','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('952','m','Koha fornyinger','Koha fornyinger','0','0','items.renewals','10','','','','0','-5','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('952','n','Koha reserveringer','Koha reserveringer','0','0','items.reserves','10','','','','0','-5','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('952','o','Koha hyllesignatur','Koha hyllesignatur','0','0','items.itemcallnumber','10','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('952','p','Strekkode','Strekkode','0','0','items.barcode','10','','','barcode.pl','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('952','q','Koha utlånt','Koha utlånt','0','0','items.onloan','10','','','','0','-5','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('952','r','Koha dato sist sett','Koha dato sist sett','0','0','items.datelastseen','10','','','','0','-5','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('952','s','Koha dato sist utlånt','Koha dato sist utlånt','0','0','items.datelastborrowed','10','','','','0','-5','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('952','t','Eksemplarnummer','Eksemplarnummer','0','0','items.copynumber','10','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('952','u','Uniform Resource Identifier (URI)','Uniform Resource Identifier (URI)','0','0','items.uri','10','','','','1','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('952','v','Pris (erstatningspris)','Pris (erstatningspris)','0','0','items.replacementprice','10','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('952','w','Pris gjelder fra','Pris gjelder fra','0','0','items.replacementpricedate','10','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('952','x','Intern note','Intern note','1','0','items.paidfor','10','','','','0','7','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('952','y','Koha dokumenttype','Koha dokumenttype','0','0','items.itype','10','itemtypes','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('952','z','Synlig note','Synlig note','0','0','items.itemnotes','10','','','','0','-1','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('999','c','Koha biblionummer','Koha biblionummer','0','0','biblio.biblionumber','-1','','','','0','-5','FA','','','');
+INSERT INTO marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,isurl,hidden,frameworkcode,seealso,link,defaultvalue) VALUES ('999','d','Koha biblioitemnummer','Koha biblioitemnummer','0','0','biblioitems.biblioitemnumber','-1','','','','0','-5','FA','','','');
--- /dev/null
+Rammeverk for hurtigkatalogisering i NORMARC. Inneholder et begrenset utvalg felter.
('541','ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE','IMMEDIATE SOURCE OF ACQUISITION NOTE',1,0,NULL,''),
('543','SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]','SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]',1,0,NULL,''),
('544','LOCATION OF OTHER ARCHIVAL MATERIALS NOTE','LOCATION OF OTHER ARCHIVAL MATERIALS NOTE',1,0,NULL,''),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, ''),
('546','UWAGA O JĘZYKU','LANGUAGE NOTE',1,0,NULL,''),
('547','ZŁOŻONA UWAGA O POPRZEDNIM TYTULE','FORMER TITLE COMPLEXITY NOTE',1,0,NULL,''),
('550','UWAGA DOTYCZĄCA INSTYTUCJI SPRAWCZEJ','ISSUING BODY NOTE',1,0,NULL,''),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'BKS'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'BKS'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'BKS'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'BKS'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'BKS'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'BKS'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'BKS'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'CF'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'CF'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'CF'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'CF'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'CF'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'CF'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'CF'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'SR'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'SR'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'SR'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'SR'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'SR'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'SR'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'SR'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'VR'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'VR'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'VR'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'VR'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'VR'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'VR'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'VR'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'AR'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'AR'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'AR'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'AR'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'AR'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'AR'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'AR'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'KT'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'KT'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'KT'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'KT'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'KT'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'KT'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'KT'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'IR'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'IR'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'IR'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'IR'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'IR'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'IR'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'IR'),
('541', 'ACQUISITION INFO--IMMEDIATE SOURCE OF ACQUISITION NOTE', 'IMMEDIATE SOURCE OF ACQUISITION NOTE', 1, 0, NULL, 'SER'),
('543', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 'SOLICITATION INFORMATION NOTE (AM) [OBSOLETE]', 1, 0, NULL, 'SER'),
('544', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 'LOCATION OF OTHER ARCHIVAL MATERIALS NOTE', 1, 0, NULL, 'SER'),
+ ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, 'SER'),
('546', 'LANGUAGE/TRANSLATION INFO', 'LANGUAGE NOTE', 1, 0, NULL, 'SER'),
('547', 'FORMER TITLE COMPLEXITY NOTE', 'FORMER TITLE COMPLEXITY NOTE', 1, 0, NULL, 'SER'),
('550', 'ISSUING BODY NOTE', 'ISSUING BODY NOTE', 1, 0, NULL, 'SER'),
INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('OPACFRBRizeEditions',0,'If ON, the OPAC will query one or more ISBN web services for associated ISBNs and display an Editions tab on the details pages','','YesNo');
INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('XISBN',0,'Use with FRBRizeEditions. If ON, Koha will use the OCLC xISBN web service in the Editions tab on the detail pages. See: http://www.worldcat.org/affiliate/webservices/xisbn/app.jsp','','YesNo');
INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('OCLCAffiliateID','','Use with FRBRizeEditions and XISBN. You can sign up for an AffiliateID here: http://www.worldcat.org/wcpa/do/AffiliateUserServices?method=initSelfRegister','','free');
-INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('XISBNDailyLimit',499,'The xISBN Web service is free for non-commercial use when usage does not exceed 500 requests per day','','Integer');
+INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('XISBNDailyLimit',999,'The xISBN Web service is free for non-commercial use when usage does not exceed 1000 requests per day','','Integer');
INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('ThingISBN',0,'Use with FRBRizeEditions. If ON, Koha will use the ThingISBN web service in the Editions tab on the detail pages.','','YesNo');
-- I18N/L10N
-INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('dateformat','us','Define global date format (us mm/dd/yyyy, metric dd/mm/yyy, ISO yyyy/mm/dd)','metric|us|iso','Choice');
+INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('dateformat','us','Define global date format (us mm/dd/yyyy, metric dd/mm/yyy, ISO yyyy-mm-dd)','metric|us|iso','Choice');
INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('opaclanguages','en','Set the default language in the OPAC.',NULL,'Languages');
INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('opaclanguagesdisplay',0,'If ON, enables display of Change Language feature on OPAC','','YesNo');
INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('BorrowersTitles','Mr|Mrs|Miss|Ms','Define appropriate Titles for patrons',NULL,'free');
INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('BasketConfirmations', '1', 'When closing or reopening a basket,', 'always ask for confirmation.|do not ask for confirmation.', 'Choice');
INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('MARCAuthorityControlField008', '|| aca||aabn | a|a d', NULL, NULL, 'Textarea');
INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OpenLibraryCovers',0,'If ON Openlibrary book covers will be show',NULL,'YesNo');
+INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('BorrowerUnwantedField','','Name the fields you don\'t need to store for a patron\'s account',NULL,'free');
INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('OpacKohaUrl','1',"Show 'Powered by Koha' text on OPAC footer.",NULL,NULL);
INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('EasyAnalyticalRecords','0','If on, display in the catalogue screens tools to easily setup analytical record relationships','','YesNo');
INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OpacShowRecentComments',0,'If ON a link to recent comments will appear in the OPAC masthead',NULL,'YesNo');
-
+INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('CircAutoPrintQuickSlip', '1', 'Choose what should happen when an empty barcode field is submitted in circulation: Display a print quick slip window or Clear the screen.',NULL,'YesNo');
SetVersion ($DBversion);
}
-$DBversion = "3.06.00.001";
+$DBversion = "3.07.00.001";
if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
- my $borrowers = $dbh->selectcol_arrayref( "SELECT borrowernumber from borrowers where debarred <>0;", { Columns => [1] } );
+ my $borrowers = $dbh->selectcol_arrayref( "SELECT borrowernumber from borrowers where debarred =1;", { Columns => [1] } );
$dbh->do("ALTER TABLE borrowers MODIFY debarred DATE DEFAULT NULL;");
$dbh->do( "UPDATE borrowers set debarred='9999-12-31' where borrowernumber IN (" . join( ",", @$borrowers ) . ");" ) if ($borrowers and scalar(@$borrowers)>0);
$dbh->do("ALTER TABLE borrowers ADD COLUMN debarredcomment VARCHAR(255) DEFAULT NULL AFTER debarred;");
$dbh->do("ALTER TABLE deletedborrowers MODIFY debarred DATE DEFAULT NULL;");
$dbh->do("ALTER TABLE deletedborrowers ADD COLUMN debarredcomment VARCHAR(255) DEFAULT NULL AFTER debarred;");
print "Upgrade done (Change borrowers.debarred into Date )\n";
-
SetVersion($DBversion);
}
-$DBversion = "3.06.00.002";
+$DBversion = "3.07.00.002";
if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
$dbh->do("UPDATE borrowers SET debarred=NULL WHERE debarred='0000-00-00';");
- print "Setting NULL to debarred where 0000-00-00 is stored (bug 7272)";
+ print "Setting NULL to debarred where 0000-00-00 is stored (bug 7272)\n";
SetVersion($DBversion);
}
-$DBversion = "3.06.02.001";
+$DBversion = "3.07.00.003";
if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
$dbh->do(" UPDATE `message_attributes` SET message_name='Item_Due' WHERE message_name='Item_DUE'");
- print "Updating message_name in message_attributes";
+ print "Updating message_name in message_attributes\n";
+ SetVersion($DBversion);
+}
+
+$DBversion = "3.07.00.004";
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+ $dbh->do("ALTER TABLE `suggestions` ADD `patronreason` TEXT NULL AFTER `reason`");
+ print "Upgrade to $DBversion done (Add column to suggestions table to store patrons' reasons for submitting a suggestion. )\n";
+ SetVersion($DBversion);
+}
+
+$DBversion = "3.07.00.005";
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+ $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('BorrowerUnwantedField','','Name the fields you don''t need to store for a patron''s account',NULL,'free')");
+ print "Upgrade to $DBversion done (BorrowerUnwantedField syspref)\n";
+ SetVersion ($DBversion);
+}
+
+$DBversion = "3.07.00.006";
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+ $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('CircAutoPrintQuickSlip', '1', 'Choose what should happen when an empty barcode field is submitted in circulation: Display a print quick slip window or Clear the screen.',NULL,'YesNo');");
+ print "Upgrade to $DBversion done (Add syspref CircAutoPrintQuickSlip to control what should happen when an empty barcode field is submitted in circulation: Display a print quick slip window (default value, 3.6 behaviour) or clear the screen (previous 3.6 behaviour). )\n";
SetVersion($DBversion);
}
+
+$DBversion = "3.07.00.007";
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+ $dbh->do("ALTER TABLE items MODIFY materials text;");
+ print "Upgrade to $DBversion done alter items.material from varchar(10) to text \n";
+ SetVersion($DBversion);
+}
+
+$DBversion = '3.07.00.008';
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+ if (C4::Context->preference("marcflavour") eq 'MARC21') {
+ if (C4::Context->preference("opaclanguages") eq "de") {
+ $dbh->do("INSERT INTO `marc_tag_structure` (`tagfield`, `liblibrarian`, `libopac`, `repeatable`, `mandatory`, `authorised_value`, `frameworkcode`) VALUES ('545', 'Fußnote zu biografischen oder historischen Daten', 'Fußnote zu biografischen oder historischen Daten', 1, 0, NULL, '');");
+ } else {
+ $dbh->do("INSERT INTO `marc_tag_structure` (`tagfield`, `liblibrarian`, `libopac`, `repeatable`, `mandatory`, `authorised_value`, `frameworkcode`) VALUES ('545', 'BIOGRAPHICAL OR HISTORICAL DATA', 'BIOGRAPHICAL OR HISTORICAL DATA', 1, 0, NULL, '');");
+ }
+ }
+ print "Upgrade to $DBversion done (add MARC21 field 545 to framework)\n";
+ SetVersion ($DBversion);
+}
+
+
=head1 FUNCTIONS
=head2 DropAllForeignKeys($table)
my $version = shift;
# remove the 3 last . to have a Perl number
$version =~ s/(.*\..*)\.(.*)\.(.*)/$1$2$3/;
+ # three X's at the end indicate that you are testing patch with dbrev
+ # change it into 999
+ # prevents error on a < comparison between strings (should be: lt)
+ $version =~ s/XXX$/999/;
return $version;
}
=cut
sub SetVersion {
- my $kohaversion = TransformToNum(shift);
+ return if $_[0]=~ /XXX$/;
+ #you are testing a patch with a db revision; do not change version
+ my $kohaversion = TransformToNum($_[0]);
if (C4::Context->preference('Version')) {
my $finish=$dbh->prepare("UPDATE systempreferences SET value=? WHERE variable='Version'");
$finish->execute($kohaversion);
$template->param( language => 1 );
$template->param( 'checkmodule' => 1 ); # we start with the assumption that there are no problems and set this to 0 if there are
- unless ( $] >= 5.008008 ) { # Bug 4505
+ unless ( $] >= 5.010000 ) { # Bug 7375
$template->param( problems => 1, perlversion => 1, checkmodule => 0 );
}
}
else {
#
- # check wether it's a 1st install or an update
+ # check whether it's a 1st install or an update
#
#Check if there are enough tables.
# Paul has cleaned up tables so reduced the count
.yui-gf .yui-u {
width: 79.2%;
+}
+/* Class to be added to toolbar when it starts being fixed at the top of the screen*/
+.floating {
+ -webkit-box-shadow: 0px 3px 2px 0px rgba(0, 0, 0, .5);
+ box-shadow: 0px 3px 2px 0px rgba(0, 0, 0, .5);
}
\ No newline at end of file
padding : .7em 0;
}
div.yui-b fieldset.brief li.radio label,
+div.yui-b fieldset.brief li.dateinsert label,
+div.yui-b fieldset.brief li.dateinsert span.label,
div.yui-b fieldset.brief li.radio span.label {
display : inline;
}
}
.dialog {
- border: 1px solid #bcbcbc;
+ -moz-border-radius : 2px;
+ border-radius : 2px;
padding : .5em;
margin : 1em auto;
- width: 65%;
- }
-
+ text-align : center;
+ width: 65%;
+}
+
.dialog table {
margin : .5em auto;
}
background-color : #ffc;
}
+div.dialog {
+ border: 1px solid #bcbcbc;
+}
+
div.alert {
- background : #FFC url(../../img/alert-bg.gif) repeat-x left 0;
- text-align : center;
+ background: #fef8d3; /* Old browsers */
+ background: -moz-linear-gradient(top, #fef8d3 0%, #ffec91 9%, #ffed87 89%, #f9dc00 100%); /* FF3.6+ */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#fef8d3), color-stop(9%,#ffec91), color-stop(89%,#ffed87), color-stop(100%,#f9dc00)); /* Chrome,Safari4+ */
+ background: -webkit-linear-gradient(top, #fef8d3 0%,#ffec91 9%,#ffed87 89%,#f9dc00 100%); /* Chrome10+,Safari5.1+ */
+ background: -o-linear-gradient(top, #fef8d3 0%,#ffec91 9%,#ffed87 89%,#f9dc00 100%); /* Opera11.10+ */
+ background: -ms-linear-gradient(top, #fef8d3 0%,#ffec91 9%,#ffed87 89%,#f9dc00 100%); /* IE10+ */
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fef8d3', endColorstr='#f9dc00',GradientType=0 ); /* IE6-9 */
+ background: linear-gradient(top, #fef8d3 0%,#ffec91 9%,#ffed87 89%,#f9dc00 100%); /* W3C */
+ text-align : center;
+ border: 1px solid #E0C726;
}
div.alert strong {
color : #900;
}
-div.dialog {
- background : #FFC url(../../img/dialog-bg.gif) repeat-x left 0;
- text-align : center;
-}
-
a.document {
background-position : left middle;
background-repeat : no-repeat;
}
div.message {
- background : white url("../../img/message-bg.gif") repeat-x left 0;
+ background: #ffffff; /* Old browsers */
+ background: -moz-linear-gradient(top, #ffffff 0%, #f4f6fa 2%, #eaeef5 23%, #e8edf6 94%, #cddbf2 100%); /* FF3.6+ */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(2%,#f4f6fa), color-stop(23%,#eaeef5), color-stop(94%,#e8edf6), color-stop(100%,#cddbf2)); /* Chrome,Safari4+ */
+ background: -webkit-linear-gradient(top, #ffffff 0%,#f4f6fa 2%,#eaeef5 23%,#e8edf6 94%,#cddbf2 100%); /* Chrome10+,Safari5.1+ */
+ background: -o-linear-gradient(top, #ffffff 0%,#f4f6fa 2%,#eaeef5 23%,#e8edf6 94%,#cddbf2 100%); /* Opera11.10+ */
+ background: -ms-linear-gradient(top, #ffffff 0%,#f4f6fa 2%,#eaeef5 23%,#e8edf6 94%,#cddbf2 100%); /* IE10+ */
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#cddbf2',GradientType=0 ); /* IE6-9 */
+ background: linear-gradient(top, #ffffff 0%,#f4f6fa 2%,#eaeef5 23%,#e8edf6 94%,#cddbf2 100%); /* W3C */
border : 1px solid #bcbcbc;
text-align: center;
width : 55%;
div#menu li a {
text-decoration: none;
display: block;
- background : #EEE url(../../img/side-tab-gradient.gif) repeat-y top right;
+ background: #eeeeee; /* Old browsers */
+ background: -moz-linear-gradient(left, #eeeeee 0%, #eeeeee 96%, #e6e6e6 97%, #cccccc 99%, #c1c1c1 100%); /* FF3.6+ */
+ background: -webkit-gradient(linear, left top, right top, color-stop(0%,#eeeeee), color-stop(96%,#eeeeee), color-stop(97%,#e6e6e6), color-stop(99%,#cccccc), color-stop(100%,#c1c1c1)); /* Chrome,Safari4+ */
+ background: -webkit-linear-gradient(left, #eeeeee 0%,#eeeeee 96%,#e6e6e6 97%,#cccccc 99%,#c1c1c1 100%); /* Chrome10+,Safari5.1+ */
+ background: -o-linear-gradient(left, #eeeeee 0%,#eeeeee 96%,#e6e6e6 97%,#cccccc 99%,#c1c1c1 100%); /* Opera11.10+ */
+ background: -ms-linear-gradient(left, #eeeeee 0%,#eeeeee 96%,#e6e6e6 97%,#cccccc 99%,#c1c1c1 100%); /* IE10+ */
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#c1c1c1',GradientType=1 ); /* IE6-9 */
+ background: linear-gradient(left, #eeeeee 0%,#eeeeee 96%,#e6e6e6 97%,#cccccc 99%,#c1c1c1 100%); /* W3C */
+ -moz-border-top-left-radius: 5px;
+ border-top-left-radius: 5px;
+ -moz-border-bottom-left-radius: 5px;
+ border-bottom-left-radius: 5px;
border: 1px solid #000;
font-size: 111%;
margin: .5em 0;
}
div#menu li a:hover {
- background : #E8F0F6 url(../../img/side-tab-gradient-hover.gif) repeat-y top right;
+ background: #e8f0f6; /* Old browsers */
+ background: -moz-linear-gradient(left, #e8f0f6 0%, #e8f0f6 96%, #c1c1c1 100%); /* FF3.6+ */
+ background: -webkit-gradient(linear, left top, right top, color-stop(0%,#e8f0f6), color-stop(96%,#e8f0f6), color-stop(100%,#c1c1c1)); /* Chrome,Safari4+ */
+ background: -webkit-linear-gradient(left, #e8f0f6 0%,#e8f0f6 96%,#c1c1c1 100%); /* Chrome10+,Safari5.1+ */
+ background: -o-linear-gradient(left, #e8f0f6 0%,#e8f0f6 96%,#c1c1c1 100%); /* Opera11.10+ */
+ background: -ms-linear-gradient(left, #e8f0f6 0%,#e8f0f6 96%,#c1c1c1 100%); /* IE10+ */
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#e8f0f6', endColorstr='#c1c1c1',GradientType=1 ); /* IE6-9 */
+ background: linear-gradient(left, #e8f0f6 0%,#e8f0f6 96%,#c1c1c1 100%); /* W3C */
}
div#menu li.active a:hover {
border: 1px outset #999999;
border-top-color: #666;
border-left-color: #666;
+ -moz-border-radius : 2px;
padding: 0.25em;
- background : #E8E8E8 url(../../img/button-bg.gif) top left repeat-x;
+ background: #ffffff; /* Old browsers */
+ background: -moz-linear-gradient(top, #ffffff 0%, #f7f7f7 35%, #e0e0e0 100%); /* FF3.6+ */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(35%,#f7f7f7), color-stop(100%,#e0e0e0)); /* Chrome,Safari4+ */
+ background: -webkit-linear-gradient(top, #ffffff 0%,#f7f7f7 35%,#e0e0e0 100%); /* Chrome10+,Safari5.1+ */
+ background: -o-linear-gradient(top, #ffffff 0%,#f7f7f7 35%,#e0e0e0 100%); /* Opera11.10+ */
+ background: -ms-linear-gradient(top, #ffffff 0%,#f7f7f7 35%,#e0e0e0 100%); /* IE10+ */
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#e0e0e0',GradientType=0 ); /* IE6-9 */
+ background: linear-gradient(top, #ffffff 0%,#f7f7f7 35%,#e0e0e0 100%); /* W3C */
color: #333333;
}
content: "";
}
.holdcount { font-size : 105%; line-height : 200%; }
-.holdcount a { border : 1px solid #a4bedd; background-color : #e4ecf5; font-weight : bold; -moz-border-radius: 4px; padding : .1em .4em; text-decoration : none; }
+.holdcount a {
+ border : 1px solid #a4bedd;
+ background-color : #e4ecf5;
+ font-weight : bold;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ padding : .1em .4em;
+ text-decoration : none;
+}
.holdcount a:hover { background-color : #ebeff7; }
.container {
border : 1px solid #EEE;
location.href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% biblionumber %]";
}
var HoldForButtonMenu = [
- { text: "Place hold", url: "/cgi-bin/koha/reserve/request.pl?biblionumber=[% biblionumber %]" },
- { text: "Place hold for [% holdfor_firstname %] [% holdfor_surname %] ([% holdfor_cardnumber %])", url: "/cgi-bin/koha/reserve/request.pl?biblionumber=[% biblionumber %]&findborrower=[% holdfor_cardnumber %]" }
+ { text: _("Place hold"), url: "/cgi-bin/koha/reserve/request.pl?biblionumber=[% biblionumber %]" },
+ { text: _("Place hold for")+ " [% holdfor_firstname %] [% holdfor_surname %] ([% holdfor_cardnumber %])", url: "/cgi-bin/koha/reserve/request.pl?biblionumber=[% biblionumber %]&findborrower=[% holdfor_cardnumber %]" }
];
// Instantiate a Split Button using the array of YAHOO.widget.MenuItem
var HoldForButton = new YAHOO.widget.Button({
id: "holdfor",
type: "split",
- label: "Place hold",
+ label: _("Place hold"),
name: "holdfor",
menu: HoldForButtonMenu,
container: this,
<li><img src="/intranet-tmpl/prog/img/patron-blank.png" alt="[% firstname %] [% surname %] ([% cardnumber %])" border="0" style="margin: .3em 0 .3em .3em; padding: .2em; border: 1px solid #CCCCCC;" /></li>
[% END %]
[% END %]
- <li>[% IF ( address ) %]
- [% address %]
+ [% IF ( address or address2 ) %]
+ [% IF ( address ) %]
+ <li>[% address %]</li>
+ [% END %]
+ [% IF ( address2 ) %]
+ <li>[% address2 %]</li>
+ [% END %]
[% ELSE %]
- <span class="empty">No address stored.</span>
- [% END %]</li>
- [% IF ( address2 ) %]
- <li>[% address2 %]</li>
- [% END %]<li>
+ <li><span class="empty" id="noadressstored">No address stored.</span></li>
+ [% END %]
[% IF ( city ) %]
[% city %][% IF ( state ) %], [% state %][% END %]
[% zipcode %][% IF ( country ) %], [% country %][% END %]
[% ELSE %]
- <span class="empty">No city stored.</span>
+ <span class="empty" id="nocitystored">No city stored.</span>
[% END %]</li>
<li>[% IF ( phone ) %]
[% phone %]
[% IF ( phonepro ) %]
[% phonepro %]
[% ELSE %]
- <span class="empty">No phone stored.</span>
+ <span class="empty" id="nophonestored">No phone stored.</span>
[% END %]
[% END %]
[% END %]</li>
<li><img src="/intranet-tmpl/prog/img/patron-blank.png" alt="[% borrower.firstname %] [% borrower.surname %] ([% borrower.cardnumber %])" border="0" style="margin: .3em 0 .3em .3em; padding: .2em; border: 1px solid #CCCCCC;" /></li>
[% END %]
[% END %]
- <li>[% IF borrower.address %]
- [% borrower.address %]
+ [% IF ( borrower.address or borrower.address2 ) %]
+ [% IF ( borrower.address ) %]
+ <li>[% borrower.address %]</li>
+ [% END %]
+ [% IF ( borrower.address2 ) %]
+ <li>[% borrower.address2 %]</li>
+ [% END %]
[% ELSE %]
- <span class="empty">No address stored.</span>
- [% END %]</li>
- [% IF borrower.address2 %]
- <li>[% borrower.address2 %]</li>
- [% END %]<li>
+ <li><span class="empty" id="noaddressstored">No address stored.</span></li>
+ [% END %]
+ <li>
[% IF borrower.city %]
[% borrower.city %][% IF borrower.state %], [% borrower.state %][% END %]
[% borrower.zipcode %][% IF ( borrower.country ) %], [% borrower.country %][% END %]
[% ELSE %]
- <span class="empty">No city stored.</span>
+ <span class="empty" id="nocitystored">No city stored.</span>
[% END %]</li>
<li>[% IF borrower.phone %]
[% borrower.phone %]
[% IF borrower.phonepro %]
[% borrower.phonepro %]
[% ELSE %]
- <span class="empty">No phone stored.</span>
+ <span class="empty" id="nophonestored">No phone stored.</span>
[% END %]
[% END %]
[% END %]</li>
-[% IF ( dateformat_us ) %](MM/DD/YYYY)[% ELSIF ( dateformat_metric ) %](DD/MM/YYYY)[% ELSE %](YYYY/MM/DD)[% END %]
\ No newline at end of file
+[% IF ( dateformat_us ) %](MM/DD/YYYY)[% ELSIF ( dateformat_metric ) %](DD/MM/YYYY)[% ELSE %](YYYY-MM-DD)[% END %]
\ No newline at end of file
[% IF ( facets_loo.type_label_Libraries ) %]Libraries[% END %]
<ul>
[% FOREACH facet IN facets_loo.facets %]<li><a href="/cgi-bin/koha/catalogue/search.pl?[% query_cgi |html %][% limit_cgi |html %][% IF ( sort_by ) %]&sort_by=[% sort_by %][% END %]&limit=[% facet.type_link_value %]:[% facet.facet_link_value %]" title="[% facet.facet_title_value %]">[% facet.facet_label_value %]</a> [% IF ( displayFacetCount ) %]([% facet.facet_count %])[% END %]</li>[% END %][% IF ( facets_loo.expandable ) %]
- <li class="showmore"><a href="/cgi-bin/koha/catalogue/search.pl?[% query_cgi |html %][% limit_cgi |html %][% IF ( sort_by ) %]&sort_by=[% sort_by %][% END %]&expand=[% facets_loo.expand %]#[% facets_loo.type_id %]">Show More</a></li>
+ <li class="showmore"><a href="/cgi-bin/koha/catalogue/search.pl?[% query_cgi |html %][% limit_cgi |html %][% IF ( sort_by ) %]&sort_by=[% sort_by %][% END %][% IF ( offset ) %]&offset=[% offset %][% END %]&expand=[% facets_loo.expand %]#[% facets_loo.type_id %]">Show More</a></li>
[% END %]
</ul></li>
[% END %]
label: _("Edit"),
name: "editmenubutton",
menu: editmenu,
- container: "editmenuc",
+ container: "editmenuc"
});
[% END %]
{ text: _("RIS"), url: "/cgi-bin/koha/virtualshelves/downloadshelf.pl?format=ris&shelfid=[% shelfnumber %]" },
{ text: _("BibTex"), url: "/cgi-bin/koha/virtualshelves/downloadshelf.pl?format=bibtex&shelfid=[% shelfnumber %]" },
[% FOREACH csv_profile IN csv_profiles %]
- { text: _("CSV - [% csv_profile.profile %]"), url: "/cgi-bin/koha/virtualshelves/downloadshelf.pl?format=[% csv_profile.export_format_id %]&shelfid=[% csv_profile.shelfnumber %]" },
+ { text: _("CSV - [% csv_profile.profile %]"), url: "/cgi-bin/koha/virtualshelves/downloadshelf.pl?format=[% csv_profile.export_format_id %]&shelfid=[% shelfnumber %]" },
[% END %]
];
[% END %]
</ul>
</div>
-
\ No newline at end of file
if (uls[i].className == "draglist" || uls[i].className == "draglist_alt") {
ddtarget = YAHOO.util.DragDropMgr.getDDById(uls[i].id);
// The yahoo drag and drop is written (broken or not) in such a way, that if an element is subscribed as a target multiple times,
-// it has to be unlinked multiple times, so we need to test wether it is allready a target, otherwise we'll have a problem when closing the group
+// it has to be unlinked multiple times, so we need to test whether it is allready a target, otherwise we'll have a problem when closing the group
if( ! ddtarget ) {
new YAHOO.util.DDTarget(uls[i].id);
}
var children = uls[i].getElementsByTagName('li');
for( j=0; j<children.length; j=j+1) {
// The yahoo drag and drop is (broken or not) in such a way, that if an element is subscribed as a target multiple times,
-// it has to be unlinked multiple times, so we need to test wether it is allready a target, otherwise we'll have a problem when closing the group
+// it has to be unlinked multiple times, so we need to test whether it is allready a target, otherwise we'll have a problem when closing the group
ddtarget = YAHOO.util.DragDropMgr.getDDById(children[j].id);
if( ! ddtarget ) {
new DDList(children[j].id);
Version 2.0.6 (2006-05-03)\r
Added new theme_advanced_source_editor_wrap option, this gives the possibility to force word wrapping.\r
Added new support for using div,blockquote,dt,dd,code,samp as a items in the theme_advanced_blockformats option.\r
- Added new strict_loading_mode option, this switches the loading method from document.write to DOM.\r
- Added new hidden_tab_class, display_tab_class options for resolving the MSIE image dimension bug.\r
- Added new absolute layer support, this was added to a new plugin called layer.\r
- Added new CSS style properties support, this was as a plugin called style.\r
- Fixed bug where TinyMCE was reporting a warning when inserting a image while running on HTTPS.\r
- Fixed bug where pressing the browser back button after submit removed empty paragraphs in MSIE.\r
- Fixed bug where links the the same page as the editor page was converted into a /.\r
- Fixed bug where the getSelectedHTML method was returning undefined when selecting controls in MSIE.\r
- Fixed bug with unterminated string literal errors where reported in some browsers.\r
- Fixed bug where src and href where converted into xsrc and xhref in text.\r
- Fixed bug where two characters where removed by backspace sometimes in Gecko.\r
- Fixed bug where class drop list wasn't visible in some of the table dialogs.\r
- Fixed bug where br elements where incorrectly removed within paragraphs on backspace.\r
+ Added new strict_loading_mode option, this switches the loading method from document.write to DOM.
+ Added new hidden_tab_class, display_tab_class options for resolving the MSIE image dimension bug.
+ Added new absolute layer support, this was added to a new plugin called layer.
+ Added new CSS style properties support, this was as a plugin called style.
+ Fixed bug where TinyMCE was reporting a warning when inserting a image while running on HTTPS.
+ Fixed bug where pressing the browser back button after submit removed empty paragraphs in MSIE.
+ Fixed bug where links the same page as the editor page was converted into a /.
+ Fixed bug where the getSelectedHTML method was returning undefined when selecting controls in MSIE.
+ Fixed bug with unterminated string literal errors where reported in some browsers.
+ Fixed bug where src and href where converted into xsrc and xhref in text.
+ Fixed bug where two characters where removed by backspace sometimes in Gecko.
+ Fixed bug where class drop list wasn't visible in some of the table dialogs.
+ Fixed bug where br elements where incorrectly removed within paragraphs on backspace.
Fixed bug where drag/drop operations failed in MSIE when editor height was set to a % value.\r
Fixed bug where width/height was lost on images if they where placed in hidden tabs in MSIE.\r
Fixed bugs with CSS auto import parsing, contributed by Scott Eade.\r
Fixed stange issue where elements sometimes disappeared in MSIE.\r
Fixed URL convertion problems with onmouseover, onmouseout image urls in advimage plugin.\r
Fixed URL convertion problems with Flash plugin.\r
- Fixed the experimental Safari support, some features work some doesn't.\r
- Fixed bug where multiple a elements where created when updating links on images in FF/Mozilla.\r
- Fixed bug in importCSS function, was having a meaning less if statement.\r
- Fixed so the contextmenu plugin uses images from the configurated theme instead of the advanced theme.\r
- Fixed so the external_link_list_url/external_image_list_url options can use relative or absolute path.\r
- Fixed so the external_link_list_url/external_image_list_url has a random query parameter to prevent it from cache.\r
- Added new mceInsertRawHTML command, this inserts raw as it is HTML code in the the selected position.\r
- Added paste plain text plugin contributed by Ryan Demmer, converted it into a paste plugin.\r
- Added updated paste plugin contributed by speednet, includes paste directly feature for MSIE.\r
- Added split/merge table cells support, to table plugin and context menus.\r
- Added cut/copy/paste table rows functionality to context menu and table plugin.\r
- Added new mceSetContent command, this does the same as the setContent function.\r
- Added new clear all/new document icon to advanced theme.\r
+ Fixed the experimental Safari support, some features work some doesn't.
+ Fixed bug where multiple a elements where created when updating links on images in FF/Mozilla.
+ Fixed bug in importCSS function, was having a meaning less if statement.
+ Fixed so the contextmenu plugin uses images from the configurated theme instead of the advanced theme.
+ Fixed so the external_link_list_url/external_image_list_url options can use relative or absolute path.
+ Fixed so the external_link_list_url/external_image_list_url has a random query parameter to prevent it from cache.
+ Added new mceInsertRawHTML command, this inserts raw as it is HTML code in the selected position.
+ Added paste plain text plugin contributed by Ryan Demmer, converted it into a paste plugin.
+ Added updated paste plugin contributed by speednet, includes paste directly feature for MSIE.
+ Added split/merge table cells support, to table plugin and context menus.
+ Added cut/copy/paste table rows functionality to context menu and table plugin.
+ Added new mceSetContent command, this does the same as the setContent function.
+ Added new clear all/new document icon to advanced theme.
Added new remove formatting and select text color icons.\r
Added new directionality plugin to better support languages that write from right to left.\r
Added new fullscreen plugin, enables users to toggle fullscreen editing mode.\r
-/* This file contains the CSS data for the editable area(iframe) of TinyMCE */\r
-/* You can extend this CSS by adding your own CSS file with the the content_css option */\r
-\r
-body, td, pre {\r
- font-family: Verdana, Arial, Helvetica, sans-serif;\r
- font-size: 10px;\r
-}\r
-\r
+/* This file contains the CSS data for the editable area(iframe) of TinyMCE */
+/* You can extend this CSS by adding your own CSS file with the content_css option */
+
+body, td, pre {
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-size: 10px;
+}
+
body {\r
background-color: #FFFFFF;\r
}\r
--- /dev/null
+/* Source: http://www.webspeaks.in/2011/07/new-gmail-like-floating-toolbar-jquery.html
+ Revision: http://jsfiddle.net/pasmalin/AyjeZ/
+*/
+(function($){
+ $.fn.fixFloat = function(options){
+
+ var defaults = {
+ enabled: true
+ };
+ var options = $.extend(defaults, options);
+
+ var offsetTop; /**Distance of the element from the top of window**/
+ var s; /**Scrolled distance from the top of window through which we have moved**/
+ var fixMe = true;
+ var repositionMe = true;
+
+ var tbh = $(this);
+ var originalOffset = tbh.position().top; /**Get the actual distance of the element from the top mychange:change to position better work**/
+
+ if (tbh.css('position')!='absolute') {
+ var tbhBis = $("<div></div>");
+ tbhBis.css({"display":tbh.css("display"),"visibility":"hidden"});
+ tbhBis.width(tbh.outerWidth(true));
+ tbhBis.height(tbh.outerHeight(true));
+ tbh.after(tbhBis);
+ tbh.width(tbh.width());
+ tbh.css({'position':'absolute'});
+ }
+
+ if(options.enabled){
+ $(window).scroll(function(){
+ var offsetTop = tbh.offset().top; /**Get the current distance of the element from the top **/
+ var s = parseInt($(window).scrollTop(), 10); /**Get the from the top of wondow through which we have scrolled**/
+ var fixMe = true;
+ if(s > offsetTop){
+ fixMe = true;
+ }else{
+ fixMe = false;
+ }
+
+ if(s < originalOffset){
+ repositionMe = true;
+ }else{
+ repositionMe = false;
+ }
+
+ if(fixMe){
+ var cssObj = {
+ 'position' : 'fixed',
+ 'top' : '0px',
+ 'z-index' : '1000'
+ }
+ tbh.css(cssObj);
+ tbh.addClass("floating");
+ }
+ if(repositionMe){
+ var cssObj = {
+ 'position' : 'absolute',
+ 'top' : originalOffset,
+ 'z-index' : '1'
+ }
+ tbh.css(cssObj);
+ tbh.removeClass("floating");
+ }
+ });
+ }
+ };
+})(jQuery);
\ No newline at end of file
* </p>
* <p>
* This property can also be set to an object literal containing configuration properties for the CalendarNavigator UI.
- * The configuration object expects the the following case-sensitive properties, with the "strings" property being a nested object.
+ * The configuration object expects the following case-sensitive properties, with the "strings" property being a nested object.
* Any properties which are not provided will use the default values (defined in the CalendarNavigator class).
* </p>
* <dl>
* </p>
* <p>
* This property can also be set to an object literal containing configuration properties for the CalendarNavigator UI.
- * The configuration object expects the the following case-sensitive properties, with the "strings" property being a nested object.
+ * The configuration object expects the following case-sensitive properties, with the "strings" property being a nested object.
* Any properties which are not provided will use the default values (defined in the CalendarNavigator class).
* </p>
* <dl>
locked: false,
/**
- * Provides additional information about the the current set of
+ * Provides additional information about the current set of
* interactions. Can be accessed from the event handlers. It
* contains the following properties:
*
locked: false,
/**
- * Provides additional information about the the current set of
+ * Provides additional information about the current set of
* interactions. Can be accessed from the event handlers. It
* contains the following properties:
*
/**
* @attribute collapse
- * @description Boolean indicating if the the titlebar should have a collapse button.
+ * @description Boolean indicating if the titlebar should have a collapse button.
* The collapse button will not remove the toolbar, it will minimize it to the titlebar
* @default false
* @type Boolean
/**
* @attribute collapse
- * @description Boolean indicating if the the titlebar should have a collapse button.
+ * @description Boolean indicating if the titlebar should have a collapse button.
* The collapse button will not remove the toolbar, it will minimize it to the titlebar
* @default false
* @type Boolean
/**
* @attribute collapse
- * @description Boolean indicating if the the titlebar should have a collapse button.
+ * @description Boolean indicating if the titlebar should have a collapse button.
* The collapse button will not remove the toolbar, it will minimize it to the titlebar
* @default false
* @type Boolean
/**
* @attribute collapse
- * @description Boolean indicating if the the titlebar should have a collapse button.
+ * @description Boolean indicating if the titlebar should have a collapse button.
* The collapse button will not remove the toolbar, it will minimize it to the titlebar
* @default false
* @type Boolean
TIMEOUT: 2000,
/**
- * Called by the the helper for detecting script load in Safari
+ * Called by the helper for detecting script load in Safari
* @method _finalize
* @param id {string} the transaction id
* @private
TIMEOUT: 2000,
/**
- * Called by the the helper for detecting script load in Safari
+ * Called by the helper for detecting script load in Safari
* @method _finalize
* @param id {string} the transaction id
* @private
/**
* @method _onVisibleChange
-* @description Change event handler for the the menu's "visible" configuration
+* @description Change event handler for the menu's "visible" configuration
* property.
* @private
* @param {String} p_sType String representing the name of the event that
/*
- Only clear the the "width" configuration property if it was set the
+ Only clear the "width" configuration property if it was set the
"_setScrollHeight" method and wasn't changed by some other means after it was set.
*/
/**
* @method _onVisibleChange
-* @description Change event handler for the the menu's "visible" configuration
+* @description Change event handler for the menu's "visible" configuration
* property.
* @private
* @param {String} p_sType String representing the name of the event that
/*
- Only clear the the "width" configuration property if it was set the
+ Only clear the "width" configuration property if it was set the
"_setScrollHeight" method and wasn't changed by some other means after it was set.
*/
* @param {String} cat The log category for the message. Default
* categories are "info", "warn", "error", time".
* Custom categories can be used as well. (opt)
- * @param {String} src The source of the the message (opt)
+ * @param {String} src The source of the message (opt)
* @return {Boolean} True if the log operation was successful.
*/
YAHOO.log = function(msg, cat, src) {
* @param {String} cat The log category for the message. Default
* categories are "info", "warn", "error", time".
* Custom categories can be used as well. (opt)
- * @param {String} src The source of the the message (opt)
+ * @param {String} src The source of the message (opt)
* @return {Boolean} True if the log operation was successful.
*/
YAHOO.log = function(msg, cat, src) {
* @param {String} cat The log category for the message. Default
* categories are "info", "warn", "error", time".
* Custom categories can be used as well. (opt)
- * @param {String} src The source of the the message (opt)
+ * @param {String} src The source of the message (opt)
* @return {Boolean} True if the log operation was successful.
*/
YAHOO.log = function(msg, cat, src) {
TIMEOUT: 2000,
/**
- * Called by the the helper for detecting script load in Safari
+ * Called by the helper for detecting script load in Safari
* @method _finalize
* @param id {string} the transaction id
* @private
this.comboBase = YUI.info.comboBase;
/**
- * If configured, YUI will use the the combo handler on the
+ * If configured, YUI will use the combo handler on the
* Yahoo! CDN to pontentially reduce the number of http requests
* required.
* @property combine
* @param {String} cat The log category for the message. Default
* categories are "info", "warn", "error", time".
* Custom categories can be used as well. (opt)
- * @param {String} src The source of the the message (opt)
+ * @param {String} src The source of the message (opt)
* @return {Boolean} True if the log operation was successful.
*/
YAHOO.log = function(msg, cat, src) {
TIMEOUT: 2000,
/**
- * Called by the the helper for detecting script load in Safari
+ * Called by the helper for detecting script load in Safari
* @method _finalize
* @param id {string} the transaction id
* @private
this.comboBase = YUI.info.comboBase;
/**
- * If configured, YUI will use the the combo handler on the
+ * If configured, YUI will use the combo handler on the
* Yahoo! CDN to pontentially reduce the number of http requests
* required.
* @property combine
<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › About Koha</div>
<div id="doc3" class="yui-t7">
-
+
<div id="bd">
<div id="yui-main">
<div class="yui-g">
<h1>About Koha</h1>
-
+
<div id="abouttabs" class="toptabs numbered">
<ul>
<li><a href="about.pl#about">Server Information</a></li>
<li><a href="about.pl#team">Koha Team</a></li>
<li><a href="about.pl#licenses">Licenses</a></li>
<li><a href="about.pl#translations">Translations</a></li>
+ <li><a href="about.pl#history">Koha Timeline</a></li>
</ul>
-
+
<div id="about">
-
+
<table>
<caption>Server information</caption>
<tr><th scope="row">Koha version: </th><td>[% kohaVersion |html %]</td></tr>
<li>The <strong><a href="http://library.neu.edu.tr">Near East University</a></strong>, Cyprus</li>
<li><strong>OPUS International Consultants</strong>, Wellington, New Zealand (Corporate Serials sponsorship)</li>
<li><strong><a href="http://www.famfamfam.com/">famfamfam.com</a></strong> Birmingham (UK) based developer Mark James for the famfamfam Silk iconset.</li>
- </ul>
-
+ </ul>
+
<h2>Koha Release Team</h2>
<ul>
- <li><strong>Colin Campbell</strong>(Koha 3.4 QA Manager)</li>
+ <li><strong>Colin Campbell</strong> (Koha 3.4 QA Manager)</li>
<li><strong><a href="https://www.ohloh.net/p/koha/contributors/6618544614260">Galen Charlton</a></strong> (Koha 3.2 Release Manager)</li>
<li><strong><a href="https://www.ohloh.net/p/koha/contributors/6618544609030">Chris Cormack</a></strong> (Koha 1.x, 3.4, 3.6 Release Manager, Koha 3.2 Translation Manager)</li>
<li><strong><a href="https://www.ohloh.net/p/koha/contributors/6620692210484">Frédéric Demians</a></strong>(Koha 3.4, 3.6 Translation Manager)</li>
<li><strong>Rachel Hamilton-Williams</strong> (Kaitiaki from 2004 to present)</li>
<li><strong><a href="https://www.ohloh.net/p/koha/contributors/6618544614275">Henri-Damien Laurent</a></strong> (Koha 3.0 Release Maintainer)</li>
<li><strong><a href="https://www.ohloh.net/p/koha/contributors/6618544609147">Owen Leonard</a></strong> (Koha 3.x Interface Design)</li>
- <li><strong><a href="https://www.ohloh.net/p/koha/contributors/6618544615991">Chris Nighswonger</a></strong> (Koha 3.2, 3.4 Release Maintainer)</li>
- <li><strong><a href="https://www.ohloh.net/p/koha/contributors/6618544612249">Paul Poulain</a></strong> (Koha 2.0 Release Manager, Koha 2.2 Release Manager/Maintainer)</li>
+ <li><strong><a href="https://www.ohloh.net/p/koha/contributors/6618544615991">Chris Nighswonger</a></strong> (Koha 3.2, 3.4 Release Maintainer, Koha 3.6 Release Maintainer)</li>
+ <li><strong><a href="https://www.ohloh.net/p/koha/contributors/6618544612249">Paul Poulain</a></strong> (Koha 2.0 Release Manager, Koha 2.2 Release Manager/Maintainer, Koha 3.8 Release Manager)</li>
<li><strong><a href="http://www.ohloh.net/p/koha/contributors/6620692116417">MJ Ray</a></strong> (Koha 2.0 Release Maintainer)</li>
- <li><strong>Ian Walls</strong> Koha 3.6 QA Manager</li>
+ <li><strong>Ian Walls</strong> Koha 3.6 QA Manager, Koha 3.8 QA Manager</li>
</ul>
<h2>Koha Development Team</h2>
<ul>
<li>Mike Mylonas</li>
<li>Joy Nelson</li>
<li><a href="https://www.ohloh.net/accounts/cnighswonger">Chris Nighswonger</a></li>
+ <li>Albert Oller</li>
<li>Eric Olsen</li>
<li>H. Passini</li>
<li>Dobrica Pavlinusic</li>
<li><strong>Katipo Communications</strong>, New Zealand</li>
<li><strong>KohaAloha</strong>, New Zealand</li>
<li><strong>LibLime</strong>, USA</li>
- <li><strong>Libriotech</strong>, Norway</li>
+ <li><strong>Libriotech</strong>, Norway</li>
<li><strong>Nelsonville Public Library</strong>, Ohio, USA</li>
<li><strong>PTFS</strong>, Maryland, USA</li>
<li><strong>PTFS Europe Ltd</strong>, United Kingdom</li>
<li><strong>Tamil</strong>, France</li>
<li><strong>Xercode</strong>, Spain</li>
</ul>
-
+
<h2>Additional Thanks To...</h2>
<ul>
<li>Jo Ransom</li>
<li>Nicolas Morin (French Translation in 2.0)</li>
</ul>
</div>
+
<div id="licenses">
<h2>Koha</h2>
<p>
<h2>YUI</h2>
<p>
<a href="http://developer.yahoo.com/auth/license.txt">BSD License</a>
- </p>
+ </p>
<h2>Famfamfam iconset</h2>
<ul>
<li><a href="http://www.famfamfam.com/lab/icons/silk/">FamFamFam Site</a></li>
by the Bridge Consortium of Carleton College and St. Olaf College.</li>
</ul>
</div>
+
<div id="translations">
<h2>Translation</h2>
<ul>
<li><strong>اردو(Urdu)</strong> Ata ur Rehman</li>
<li><strong>Українська (Ukrainian)</strong> Victor Titarchuk and Serhij Dubyk</li>
</ul>
-
+
+ </div>
+
+ <div id="history">
+ <h2>Koha history timeline</h2>
+ <table style="cursor:pointer">
+ <thead>
+ <tr>
+ <td style="font-weight:bold;" >Date</td>
+ <td style="font-weight:bold;" >Description</td>
+ </tr>
+ </thead>
+ [% FOREACH tabl IN table2 %]
+ <tr class="[% loop.parity %]">
+ [% FOREACH ro IN tabl.row2 %]
+ <td>[% ro.date %]</td>
+ <td>[% ro.desc|html %]</td>
+ [% END %]
+ </tr>
+ [% END %]
+ </table>
</div>
+
</div>
+
</div></div></div>
[% INCLUDE 'intranet-bottom.inc' %]
<td align="center">[% loop_budge.budget_owner %]</td>
<td align="center">[% loop_budge.budget_branchname %]</td>
<td align="right" >[% loop_budge.budget_amount %]</td>
- <td align="right" >[% loop_budge.budget_ordered %]</td>
- <td align="right" >[% loop_budge.budget_spent %]</td>
+ <td align="right" ><a href="ordered.pl?fund=[% loop_budge.budget_id %]&fund_code=[% loop_budge.budget_code %]">[% loop_budge.budget_ordered %]</a></td>
+ <td align="right" ><a href="spent.pl?fund=[% loop_budge.budget_id %]&fund_code=[% loop_budge.budget_code %]">[% loop_budge.budget_spent %]</a></td>
<td align="right" >[% loop_budge.budget_avail %]</td>
</tr>
[% ELSE %]
<td align="center">[% loop_budge.budget_owner %]</td>
<td align="center">[% loop_budge.budget_branchname %]</td>
<td align="right" >[% loop_budge.budget_amount %]</td>
- <td align="right" >[% loop_budge.budget_ordered %]</td>
- <td align="right" >[% loop_budge.budget_spent %]</td>
+ <td align="right" ><a href="ordered.pl?fund=[% loop_budge.budget_id %]&fund_code=[% loop_budge.budget_code %]">[% loop_budge.budget_ordered %]</a></td>
+ <td align="right" ><a href="spent.pl?fund=[% loop_budge.budget_id %]&fund_code=[% loop_budge.budget_code %]">[% loop_budge.budget_spent %]</a></td>
<td align="right" >[% loop_budge.budget_avail %]</td>
[% END %]
[% END %]
[% FOREACH item IN items %]
<div id="outeritemblock">
<div id="itemblock">
- <ol>[% FOREACH iteminformatio IN item.iteminformation %]<li>
- <div class="subfield_line" style="[% iteminformatio.hidden %];" id="subfield[% iteminformatio.serialid %][% iteminformatio.countitems %][% iteminformatio.subfield %][% iteminformatio.random %]">
+ <ol>[% FOREACH iteminformatio IN item.iteminformation %]<li style="[% iteminformatio.hidden %];">
+ <div class="subfield_line" id="subfield[% iteminformatio.serialid %][% iteminformatio.countitems %][% iteminformatio.subfield %][% iteminformatio.random %]">
<label>[% iteminformatio.subfield %] - [% IF ( iteminformatio.mandatory ) %]<b>[% END %][% iteminformatio.marc_lib %][% IF ( iteminformatio.mandatory ) %] *</b>[% END %]</label>
[% iteminformatio.marc_value %]
[% INCLUDE 'doc-head-close.inc' %]
[% UNLESS ( closedate ) %]
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.tablesorter.min.js"></script>
-<script type="text/JavaScript">
+<script type="text/javascript">
//<![CDATA[
$(document).ready(function() {
$("#orders").tablesorter({
10: { sorter: false }
}
});
+ $("#cancelledorderst").tablesorter();
});
function confirm_close() {
var is_confirmed = confirm(_('Are you sure you want to close this basket?'));
window.location = "[% script_name %]?op=close&basketno=[% basketno %]";
}
}
-
function confirm_deletion() {
var is_confirmed = confirm(_('Are you sure you want to delete this basket?'));
if (is_confirmed) {
//]]>
</script>
[% ELSE %]
+<script type="text/javascript">
+//<![CDATA[
+ $(document).ready(function(){
+ $("#basketgroupid").change(function(){
+ if($(this).val() == "new"){
+ location.href="/cgi-bin/koha/acqui/basketgroup.pl?op=add&booksellerid=[% booksellerid %]";
+ }
+ });
+ });
+//]]>
+</script>
[% UNLESS ( grouped ) %]
<script type="text/javascript">
//<![CDATA[
</h2>
[% END %]
[% IF ( basketno ) %]
- <div id="acqui_basket_summary" class="yui-g">
- <h2>Basket details</h2>
- [% IF ( basketnote ) %]<p>Internal note: [% basketnote %]</p>[% END %]
- [% IF ( basketbooksellernote ) %]<p>Vendor note: [% basketbooksellernote %]</p>[% END %]
+ <div id="acqui_basket_summary" class="yui-g">
+ <div class="rows">
+ <div class="yui-u first">
+ <ol>
+ [% IF ( basketnote ) %]<li><span class="label">Internal note:</span> [% basketnote %]</li>[% END %]
+ [% IF ( basketbooksellernote ) %]<li><span class="label">Vendor note:</span> [% basketbooksellernote %]</li>[% END %]
[% IF ( basketcontractno ) %]
- <p>Contract name: <a href="../admin/aqcontract.pl?op=add_form&contractnumber=[% basketcontractno %]&booksellerid=[% booksellerid %]">[% basketcontractname %]</a></p>
+ <li><span class="label">Contract name:</span> <a href="../admin/aqcontract.pl?op=add_form&contractnumber=[% basketcontractno %]&booksellerid=[% booksellerid %]">[% basketcontractname %]</a></li>
[% END %]
- [% IF ( authorisedbyname ) %]<p>Managed by: [% authorisedbyname %]</p>[% END %]
- [% IF ( creationdate ) %]<p>Opened on: [% creationdate %]</p>[% END %]
+ [% IF ( authorisedbyname ) %]<li><span class="label">Managed by:</span> [% authorisedbyname %]</li>[% END %]
+ [% IF ( creationdate ) %]<li><span class="label">Opened on:</span> [% creationdate %]</li>[% END %]
+ [% IF ( closedate ) %]<li><span class="label">Closed on:</span> [% closedate %]</li>[% END %]
+
+ </ol>
+ </div>
[% IF ( closedate ) %]
- <form action="/cgi-bin/koha/acqui/basketgroup.pl" method="post">
- <p>Closed on: [% closedate %]</p>
- [% IF ( basketgroups ) %]
- <p> Basket group: <select id="basketgroupid" name="basketgroupid">
- [% FOREACH basketgroup IN basketgroups %]
- [% IF ( basketgroup.default ) %]
+ <div class="yui-u">
+ <form action="/cgi-bin/koha/acqui/basketgroup.pl" method="post">
+
+ <p><label for="basketgroupid"><strong>Basket group:</strong></label></p>
+ <p><select id="basketgroupid" name="basketgroupid">
+ <option value="new">Add new group</option>
+ [% FOREACH basketgroup IN basketgroups %]
+ [% IF ( basketgroup.default ) %]
<option value="[% basketgroup.id %]" selected="selected">[% basketgroup.name %]</option>
- [% ELSE %]
+ [% ELSE %]
<option value="[% basketgroup.id %]">[% basketgroup.name %]</option>
- [% END %]
- [% END %]
- </select>
- <input type="hidden" id="basketno" value="[% basketno %]" name="basketno" />
+ [% END %]
+ [% END %]
+ </select></p>
+
+ <p><input type="hidden" id="basketno" value="[% basketno %]" name="basketno" />
<input type="hidden" value="mod_basket" name="op" />
<input type="hidden" name="booksellerid" value="[% booksellerid %]" />
- <input type="submit" value="Change basket group" />
- </p>
- </form>
- [% ELSE %]
- <a href="/cgi-bin/koha/acqui/basketgroup.pl?op=add&booksellerid=[% basketgroups %]&basketgroupid=[% id %]">[% name %]</a>
- [% END %]
+ <input type="submit" value="Change basket group" /></p>
+
+ </form>
+ </div>
[% END %]
</div>
+ </div>
[% END %]
[% UNLESS ( delete_confirm ) %]
- <div id="acqui_basket_content">
+ <div id="acqui_basket_content" class="yui-g">
<h2>Order Details</h2>
[% IF ( books_loop ) %]
<table id="orders">
<tfoot>
[% IF ( GST ) %]
<tr>
- <th>Total Tax Exc.</th>
- <th>[% total_rrp_gste %]</th>
- <th> </th>
- <th>[% qty_total %]</th>
- <th>[% total_est_gste %]</th>
+ <th scope="row">Total Tax Exc.</th>
+ <td>[% total_rrp_gste %]</td>
+ <td> </td>
+ <td>[% qty_total %]</td>
+ <td>[% total_est_gste %]</td>
[% IF ( active ) %]
[% IF ( closedate ) %]
<td colspan="1" rowspan="3"> </td>
[% END %]
</tr>
<tr>
- <th>Tax ([% gist_rate %])</th>
- <th>[% gist_rrp %]</th>
- <th> </th>
- <th> </th>
- <th>[% gist_est %]</th>
+ <th scope="row">Tax ([% gist_rate %])</th>
+ <td>[% gist_rrp %]</td>
+ <td> </td>
+ <td> </td>
+ <td>[% gist_est %]</td>
</tr>
<tr>
- <th>Total Tax Inc. ([% currency %])</th>
- <th>[% total_rrp_gsti %]</th>
- <th> </th>
- <th>[% qty_total %]</th>
- <th>[% total_est_gsti %]</th>
+ <th scope="row">Total Tax Inc. ([% currency %])</th>
+ <td>[% total_rrp_gsti %]</td>
+ <td> </td>
+ <td>[% qty_total %]</td>
+ <td>[% total_est_gsti %]</td>
</tr>
[% ELSE %]
<tr>
- <th>Total ([% currency %])</th>
- <th>[% total_rrp_gsti %]</th>
- <th> </th>
- <th>[% qty_total %]</th>
- <th>[% total_est_gsti %]</th>
+ <th scope="row">Total ([% currency %])</th>
+ <td>[% total_rrp_gsti %]</td>
+ <td> </td>
+ <td>[% qty_total %]</td>
+ <td>[% total_est_gsti %]</td>
</tr>
[% END %]
</tfoot>
[% IF ( listincgst ) %]<small class="highlight">** Vendor's listings already include tax.</small>
[% END %]
</div>
+ [% IF (cancelledorders_loop) %]
+ <div id="cancelledorders">
+ <h2>Cancelled orders</h2>
+ <table id="cancelledorderst">
+ <thead>
+ <tr>
+ <th>Order</th>
+ <th>RRP</th>
+ <th>Est.</th>
+ <th>Qty.</th>
+ <th>Total</th>
+ <th>Fund</th>
+ </tr>
+ </thead>
+ <tbody>
+ [% FOREACH order IN cancelledorders_loop %]
+ <tr style="color:grey">
+ <td>
+ <p>
+ [% IF ( order.order_received ) %] (rcvd)[% END %]
+ [% IF (order.title) %]
+ [% order.title |html %] by [% order.author %]<br />
+ [% ELSE %]
+ <em>Deleted bibliographic record, can't find title</em><br />
+ [% END %]
+ [% IF ( order.notes ) %] [% order.notes %][% END %]
+ [% IF ( order.isbn ) %] - [% order.isbn %][% END %]
+ [% IF ( order.issn ) %] - [% order.issn %][% END %]
+ [% IF ( order.publishercode ) %], [% order.publishercode %][% END %]
+ [% IF ( order.publicationyear ) %], [% order.publicationyear %][% END %]
+ </p>
+ </td>
+ <td><p>[% order.rrp %]</p></td>
+ <td><p>[% order.ecost %]</p></td>
+ <td><p>[% order.quantity %]</p></td>
+ <td><p>[% order.line_total %]</p></td>
+ <td><p>[% order.budget_name %]</p></td>
+ </tr>
+ [% END %]
+ </tbody>
+ </table>
+ </div>
+ [% END %]
<br />
[% UNLESS ( closedate ) %]
[% INCLUDE 'acquisitions-add-to-basket.inc' %]
[% INCLUDE 'doc-head-open.inc' %]
-<title>Koha › Basket Grouping for [% booksellername %]</title>
+<title>Koha › Basket Grouping for [% booksellername |html %]</title>
[% INCLUDE 'doc-head-close.inc' %]
-
-<link rel="stylesheet" type="text/css" href="[% yuipath %]/fonts/fonts-min.css" />
+<script type="text/javascript" src="[% themelang %]/js/acq.js"></script>
+[% IF ( grouping ) %]
<script type="text/javascript" src="[% yuipath %]/yahoo-dom-event/yahoo-dom-event.js"></script>
<script type="text/javascript" src="[% yuipath %]/animation/animation-min.js"></script>
<script type="text/javascript" src="[% yuipath %]/dragdrop/dragdrop-min.js"></script>
<script type="text/javascript" src="[% yuipath %]/element/element-min.js"></script>
-<script type="text/javascript" src="[% yuipath %]/tabview/tabview-min.js"></script>
-<script type="text/javascript" src="[% themelang %]/js/acq.js"></script>
-<link rel="stylesheet" type="text/css" href="[% yuipath %]/tabview/assets/skins/sam/tabview.css" />
-
<style type="text/css">
/*margin and padding on body element
can introduce errors in determining
}
div.workarea_alt { padding: 5px; float:left; width: 95%;}
-div.closed { background-color="pink"; padding:10px; float:left; width: 45%;}
-
-ul.closed {
- position: relative;
- background: grey;
- padding-bottom:10;
- border: 1px solid gray;
- list-style: none;
- margin:0;
- padding: 5px;
-}
+div.closed { background-color: pink; padding:10px; float:left; width: 45%;}
ul.draglist {
position: relative;
- background: #f7f7f7;
+ background: #EEE;
padding-bottom:10;
- border: 1px solid gray;
+ border: 1px inset gray;
list-style: none;
margin:0;
padding: 5px;
clear: none;
}
-.basketgroup {
- margin-top: 10px;
- font-size: 1.2em;
- font-weight: bold;
- list-style: none;
- background-color: #D8D4E2;
- display: block;
-}
-.basketgroup li{
- font-size: 0.5em;
- list-style: none;
- display: inline;
-}
-
</style>
-
+ [% END %]
<script type="text/javascript">
//<![CDATA[
YAHOO.util.Event.onDOMReady(DDApp.init, DDApp, true);
- var tabView = new YAHOO.widget.TabView('bgtabs');
-//]]>
-
function submitForm(form) {
if (form.close.checked == true) {
form.appendChild(input);
}
}
+// prepare DOM for YUI Toolbar
+ $(document).ready(function() {
+ // $("#toolbar").empty();
+ yuiToolbar();
+ $("#basket_groups > ul").tabs();
+ });
+
+// YUI Toolbar Functions
+
+function yuiToolbar() {
+ var booksellermenu = [
+ { text: _("Vendor"), url: "/cgi-bin/koha/acqui/supplier.pl?supplierid=[% booksellerid %]" },
+ { text: _("Edit vendor"), url: "/cgi-bin/koha/acqui/booksellers.pl?booksellerid=[% booksellerid %]"},
+ ]
+ var ordersbutton = [
+ { text: _("Manage orders"), url: "/cgi-bin/koha/acqui/booksellers.pl?supplierid=[% booksellerid %]" },
+ { text: _("Edit uncertain prices"), url: "/cgi-bin/koha/acqui/uncertainprice.pl?booksellerid=[% booksellerid %]&owner=1" },
+ ]
+ new YAHOO.widget.Button("newbasketgroup");
+ new YAHOO.widget.Button({
+ type: "menu",
+ label: _("Vendor"),
+ name: "booksellerbutton",
+ menu: booksellermenu,
+ container: "toolbar"
+ });
+
+ new YAHOO.widget.Button({
+ type: "menu",
+ label: _("Orders"),
+ name: "ordersbutton",
+ menu: ordersbutton,
+ container: "toolbar"
+ });
+}
+//]]>
</script>
</head>
<body>
[% INCLUDE 'header.inc' %]
[% INCLUDE 'acquisitions-search.inc' %]
-<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/acqui/acqui-home.pl">Acquisitions</a> › <a href="/cgi-bin/koha/acqui/supplier.pl?supplierid=[% booksellerid %]">[% booksellername %]</a> › Basket Grouping</div>
+<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/acqui/acqui-home.pl">Acquisitions</a> › <a href="/cgi-bin/koha/acqui/supplier.pl?supplierid=[% booksellerid %]">[% booksellername |html %]</a> › Basket Grouping</div>
<div id="doc" class="yui-t7">
<div class="yui-b">
<div id="toolbar">
- <script type="text/javascript">
- //<![CDATA[
-
- // prepare DOM for YUI Toolbar
-
- $(document).ready(function() {
- // $("#toolbar").empty();
- yuiToolbar();
- });
-
- // YUI Toolbar Functions
-
- function yuiToolbar() {
- var booksellermenu = [
- { text: _("Vendor"), url: "/cgi-bin/koha/acqui/supplier.pl?supplierid=[% booksellerid %]" },
- { text: _("Edit vendor"), url: "/cgi-bin/koha/acqui/booksellers.pl?booksellerid=[% booksellerid %]"},
- ]
- var ordersbutton = [
- { text: _("Manage orders"), url: "/cgi-bin/koha/acqui/booksellers.pl?supplierid=[% booksellerid %]" },
- { text: _("Edit uncertain prices"), url: "/cgi-bin/koha/acqui/uncertainprice.pl?booksellerid=[% booksellerid %]&owner=1" },
- ]
- new YAHOO.widget.Button("newbasketgroup");
- new YAHOO.widget.Button({
- type: "menu",
- label: _("Vendor"),
- name: "booksellerbutton",
- menu: booksellermenu,
- container: "toolbar"
- });
-
- new YAHOO.widget.Button({
- type: "menu",
- label: _("Orders"),
- name: "ordersbutton",
- menu: ordersbutton,
- container: "toolbar"
- });
- }
- //]]>
- </script>
<a href="?op=add&booksellerid=[% booksellerid %]" name="newbasketgroup" id="newbasketgroup">New Basket Group</a>
</div>
- <h1>Basket Grouping for <a href="/cgi-bin/koha/acqui/supplier.pl?supplierid=[% booksellerid %]">[% booksellername %]</a></h1>
+ <h1>Basket Grouping for <a href="/cgi-bin/koha/acqui/supplier.pl?supplierid=[% booksellerid %]">[% booksellername |html %]</a></h1>
</div>
[% IF ( grouping ) %]
<div id="bd">
<div class="yui-g">
- <div class="yui-u grouping">
+ <div class="yui-u">
<form action="[% scriptname %]" method="post" name="basketgroups" id="basketgroups">
<div id="groups">
+ <fieldset class="brief">
<div class="workarea_alt" >
<h3>Ungrouped Baskets</h3>
<ul id="ungrouped" class="draglist_alt">
[% END %]
</ul>
</div>
+ </fieldset>
</div>
</form>
<div class="yui-u first">
<form action="" method="post" id="groupingform" onsubmit="return submitForm(this)">
- <fieldset id="various" class='various' >
- <h3><label for="basketgroupname">Basket Group Name:</label></h3>
- <input type="text" name="basketgroupname" id="basketgroupname" value="[% name %]" />
- <h3><label for="billingplace">Billing Place:</label></h3>
- <select name="billingplace" id="billingplace">
- [% FOREACH billingplaceloo IN billingplaceloop %]
- [% IF ( billingplaceloo.selected ) %]<option value="[% billingplaceloo.value %]" selected="selected">[% billingplaceloo.branchname %]</option>
- [% ELSE %]<option value="[% billingplaceloo.value %]">[% billingplaceloo.branchname %]</option>[% END%]
- [% END %]
- </select>
- <h3><label for="deliveryplace">Delivery Place:</label></h3>
- <select name="deliveryplace" id="deliveryplace">
- <option value="">--</option>
- [% FOREACH deliveryplaceloo IN deliveryplaceloop %]
- [% IF ( deliveryplaceloo.selected ) %]<option value="[% deliveryplaceloo.value %]" selected="selected">[% deliveryplaceloo.branchname %]</option>
- [% ELSE %]<option value="[% deliveryplaceloo.value %]">[% deliveryplaceloo.branchname %]</option>[% END %]
- [% END %]
- </select>
- <p>or</p>
- <h3><label for="freedeliveryplace">Delivery Place:</label></h3>
- <textarea cols="26" name="freedeliveryplace" id="freedeliveryplace">[% freedeliveryplace %]</textarea>
- <h3><label for="deliverycomment">Delivery comment:</label></h3>
- <textarea cols="26" name="deliverycomment" id="deliverycomment">[% deliverycomment %]</textarea>
- <div class="workarea">
- <h3>Grouping:</h3>
+ <fieldset id="various" class="brief">
+ <ol>
+ <li><label for="basketgroupname">Basket Group Name:</label>
+ <input type="text" name="basketgroupname" id="basketgroupname" value="[% name %]" /></li>
+ <li><label for="billingplace">Billing Place:</label>
+ <select name="billingplace" id="billingplace" style="width:13em;">
+ [% FOREACH billingplaceloo IN billingplaceloop %]
+ [% IF ( billingplaceloo.selected ) %]<option value="[% billingplaceloo.value %]" selected="selected">[% billingplaceloo.branchname %]</option>
+ [% ELSE %]<option value="[% billingplaceloo.value %]">[% billingplaceloo.branchname %]</option>[% END%]
+ [% END %]
+ </select></li>
+ <li><label for="deliveryplace">Delivery Place:</label>
+ <select name="deliveryplace" id="deliveryplace" style="width:13em;">
+ <option value="">--</option>
+ [% FOREACH deliveryplaceloo IN deliveryplaceloop %]
+ [% IF ( deliveryplaceloo.selected ) %]<option value="[% deliveryplaceloo.value %]" selected="selected">[% deliveryplaceloo.branchname %]</option>
+ [% ELSE %]<option value="[% deliveryplaceloo.value %]">[% deliveryplaceloo.branchname %]</option>[% END %]
+ [% END %]
+ </select></li>
+ <li><p>or</p></li>
+ <li><label for="freedeliveryplace">Delivery Place:</label>
+ <textarea cols="26" rows="3" name="freedeliveryplace" id="freedeliveryplace">[% freedeliveryplace %]</textarea></li>
+ <li><label for="deliverycomment">Delivery comment:</label>
+ <textarea cols="26" rows="3" name="deliverycomment" id="deliverycomment">[% deliverycomment %]</textarea>
+ </li>
+ <li><span class="label">Baskets in this group:</span>
<ul class="draglist" id="bg">
[% FOREACH selectedbasket IN selectedbaskets %]
<li class="grouped" id="b-[% selectedbasket.basketno %]" >
<input type="hidden" class="basket" name="basket" value="[% selectedbasket.basketno %]" />
</li>
[% END %]
-
</ul>
- </div>
- <div><input type="checkbox" name="close"> Close</input></div>
- <input type="hidden" name="booksellerid" value="[% booksellerid %]" />
+ </li>
+ <li><label><input type="checkbox" id="close" name="close" /> Close basket group</label></li>
+ </ol>
+ </fieldset>
+
+ <fieldset class="action"><input type="hidden" name="booksellerid" value="[% booksellerid %]" />
[% IF ( basketgroupid ) %]
<input type="hidden" name="basketgroupid" value="[% basketgroupid %]" />
[% END %]
<input type="hidden" name="op" value="attachbasket" />
<input type="submit" value="Save" />
- </fieldset>
+ </fieldset>
</form>
</div>
</div>
</div>
[% ELSE %]
- <div class="yui-g">
- <div id="bgtabs" class="yui-navset">
- <ul class="yui-nav">
- [% UNLESS ( closed ) %]<li class="selected"><a href="#opened"><em>Opened</em></a></li>
- [% ELSE%]<li><a href="#opened"><em>Opened</em></a></li>[% END %]
- [% IF ( closed ) %]<li class="selected"><a href="#closed"><em>Closed</em></a></li>
- [% ELSE %]<li><a href="#closed"><em>Closed</em></a></li>[% END %]
- </ul>
- <div class="yui-content">
- <div id="opened">
- <ul>
- [% FOREACH basketgroup IN basketgroups %]
- [% UNLESS ( basketgroup.closed ) %]
- <li class="basketgroup">
- [% IF ( basketgroup.name ) %]
- [% basketgroup.name %]
- [% ELSE %]
- Basket Group n°[% basketgroup.id %]
- [% END %]
- <ul>
- <li>
- <span class="yui-button yui-link-button">
- <span class="first-child">
- <a href="javascript:closeandprint([% basketgroup.id %])" class="yui-button yui-link-button">Close & Print</a>
- </span>
- </span>
- </li>
- <li>
- <span class="yui-button yui-link-button">
- <span class="first-child">
- <a href="?op=add&booksellerid=[% basketgroup.booksellerid %]&basketgroupid=[% basketgroup.id %]" class="yui-button yui-link-button" >Edit</a>
- </span>
- </span>
- </li>
- <li>
- <span class="yui-button yui-link-button">
- <span class="first-child">
- <a href="?op=delete&booksellerid=[% basketgroup.booksellerid %]&basketgroupid=[% basketgroup.id %]" class="yui-button yui-link-button" >Delete</a>
- </span>
- </span>
- </li>
-
- </ul>
- </li>
- [% END %]
- [% END %]
- </ul>
- </div>
- <div id="closed">
- <ul>
- [% FOREACH basketgroup IN basketgroups %]
- [% IF ( basketgroup.closed ) %]
- <li class="basketgroup">
- [% IF ( basketgroup.name ) %]
- [% basketgroup.name %]
- [% ELSE %]
- Basket Group n°[% basketgroup.id %]
- [% END %]
- <ul>
- <li>
- <span class="yui-button yui-link-button">
- <span class="first-child">
- <a href="/cgi-bin/koha/acqui/basketgroup.pl?op=reopen&booksellerid=[% basketgroup.booksellerid %]&basketgroupid=[% basketgroup.id %]" class="yui-button yui-link-button">Reopen</a>
- </span>
- </span>
- </li>
- <li>
- <span class="yui-button yui-link-button">
- <span class="first-child">
- <a href="/cgi-bin/koha/acqui/basketgroup.pl?op=print&basketgroupid=[% basketgroup.id %]" class="yui-button yui-link-button">Print</a>
- </span>
- </span>
- </li>
- </ul>
- </li>
- [% END %]
- [% END %]
- </ul>
+ <div class="yui-g">
+ <div id="basket_groups" class="toptabs">
+ <ul class="ui-tabs-nav">
+ [% UNLESS ( closed ) %]<li class="ui-tabs-selected"><a href="#opened">Open</a></li>
+ [% ELSE%]<li><a href="#opened">Open</a></li>[% END %]
+ [% IF ( closed ) %]<li class="ui-tabs-selected"><a href="#closed">Closed</a></li>
+ [% ELSE %]<li><a href="#closed">Closed</a></li>[% END %]
+ </ul>
+ <div id="opened">
+ <table>
+ <thead>
+ <tr>
+ <th>Basket Group</th><th colspan="3">Action</th>
+ </tr>
+ </thead>
+ <tbody>
+ [% FOREACH basketgroup IN basketgroups %]
+ [% UNLESS ( basketgroup.closed ) %]
+ <tr>
+ <td><a href="/cgi-bin/koha/acqui/basketgroup.pl?op=add&booksellerid=[% basketgroup.booksellerid %]&basketgroupid=[% basketgroup.id %]">[% IF ( basketgroup.name ) %]
+ [% basketgroup.name %]
+ [% ELSE %]
+ Basket group no. [% basketgroup.id %]
+ [% END %]</a>
+ </td>
+ <td>
+ <input type="button" onclick="closeandprint([% basketgroup.id %])" value="Close and Print" />
+ </td>
+ <td>
+ <form action="/cgi-bin/koha/acqui/basketgroup.pl" method="get"><input type="hidden" name="op" value="add" /><input type="hidden" name="booksellerid" value="[% basketgroup.booksellerid %]" /><input type="hidden" name="basketgroupid" value="[% basketgroup.id %]" /><input type="submit" value="Edit" /></form>
+ </td>
+ <td>
+ <form action="/cgi-bin/koha/acqui/basketgroup.pl" method="get"><input type="hidden" name="op" value="delete" /><input type="hidden" name="booksellerid" value="[% basketgroup.booksellerid %]" /><input type="hidden" name="basketgroupid" value="[% basketgroup.id %]" /><input type="submit" value="Delete" /></form>
+ </td>
+ </tr>
+ [% END %]
+ [% END %]
+ </tbody>
+ </table>
+ </div>
+ <div id="closed">
+ <table>
+ <thead>
+ <tr>
+ <th>Basket Group</th><th colspan="3">Action</th>
+ </tr>
+ </thead>
+ <tbody>
+ [% FOREACH basketgroup IN basketgroups %]
+ [% IF ( basketgroup.closed ) %]
+ <tr>
+ <td>
+ <a href="/cgi-bin/koha/acqui/basketgroup.pl?op=reopen&booksellerid=[% basketgroup.booksellerid %]&basketgroupid[% basketgroup.id %]">[% IF ( basketgroup.name ) %]
+ [% basketgroup.name %]
+ [% ELSE %]
+ Basket group no. [% basketgroup.id %]
+ [% END %]</a>
+ </td>
+ <td>
+ <form action="/cgi-bin/koha/acqui/basketgroup.pl" method="get"><input type="hidden" name="op" value="reopen" /><input type="hidden" name="booksellerid" value="[% basketgroup.booksellerid %]" /><input type="hidden" name="basketgroupid" value="[% basketgroup.id %]" /><input type="submit" value="Reopen" /></form>
+ </td>
+ <td>
+ <form action="/cgi-bin/koha/acqui/basketgroup.pl" method="get"><input type="hidden" name="op" value="print" /><input type="hidden" name="basketgroupid" value="[% basketgroup.id %]" /><input type="submit" value="Print" /></form>
+ </td>
+ </tr>
+ [% END %]
+ [% END %]
+ </tbody>
+ </table>
</div>
</div>
- </div>
-
- </div>
+ </div>
[% END %]
[% INCLUDE 'intranet-bottom.inc' %]
</li>
<li>
[% IF ( close ) %]
- <span class="label">Fund: </span>
+ <span class="label required">Fund: </span>
<input type="hidden" size="20" name="budget_id" id="budget_id" value="[% budget_id %]" />[% Budget_name %]
[% ELSE %]
- <label for="budget_id">Fund: </label>
+ <label class="required" for="budget_id">Fund: </label>
<select id="budget_id" onchange="fetchSortDropbox(this.form)" size="1" name="budget_id">
+ <option value="">Select a budget</option>
[% FOREACH budget_loo IN budget_loop %]
[% IF ( budget_loo.b_sel ) %]
<option value="[% budget_loo.b_id %]" selected="selected">[% budget_loo.b_txt %]</option>
--- /dev/null
+[% USE KohaDates %]
+[% INCLUDE 'doc-head-open.inc' %]
+<title>Koha › Acquisitions › Ordered</title>
+[% INCLUDE 'doc-head-close.inc' %]
+</head>
+<body>
+[% INCLUDE 'header.inc' %]
+[% INCLUDE 'acquisitions-search.inc' %]
+
+<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/acqui/acqui-home.pl">Acquisitions</a> › Ordered - [% fund_code %]</div>
+
+<div id="doc3" class="yui-t2">
+
+<div id="bd">
+ <div id="yui-main">
+ <div class="yui-b">
+
+<h1>Fund: [% fund_code %]</h1>
+<h2>Ordered</h2>
+
+<table cellspacing="0" cellpadding="0" border="0" id="spent" class="collapse">
+ <thead>
+ <tr>
+ <th> Title </th>
+ <th> Order </th>
+ <th> Vendor </th>
+ <th> Itemtype </th>
+ <th> Left on Order </th>
+ <th> Estimated cost per unit </th>
+ <th> Date Ordered </th>
+ <th> Subtotal </th>
+ </tr>
+ </thead>
+
+[% FOREACH order IN ordered %]
+ [% IF loop.odd %]
+ <tr class="highlight">
+ [% ELSE %]
+ <tr>
+ [% END %]
+ <td class="cell">
+ [% order.title %]
+ </td>
+ <td class="cell">
+ <a href="/cgi-bin/koha/acqui/neworderempty.pl?ordernumber=[% order.ordernumber %]&booksellerid=[% order.booksellerid %]&basketno=[% order.basketno %]">[% order.ordernumber %]</a>
+ </td>
+ <td class="cell">
+ <a href="/cgi-bin/koha/acqui/supplier.pl?supplierid=[% order.booksellerid %]">[% order.booksellerid %]</a>
+ </td>
+ <td class="cell">
+ [% order.itype %]
+ </td>
+ <td class="cell">
+ [% order.left %]
+ </td>
+ <td class="cell" align="right">
+ [% order.ecost %]
+ </td>
+ <td class="cell" align="right">
+ [% order.entrydate | $KohaDates %]
+ </td>
+ <td class="cell" align="right">
+ [% order.subtotal %]
+ </td>
+ </tr>
+[% END %]
+
+ <tfoot>
+ <tr>
+ <td> Total </td>
+ <td> </td>
+ <td> </td>
+ <td> </td>
+ <td> </td>
+ <td> </td>
+ <td> </td>
+ <td align="right">
+ [% total %]
+ </td>
+ </tr>
+ </tfoot>
+
+</table>
+
+</div>
+</div>
+<div class="yui-b">
+[% INCLUDE 'acquisitions-menu.inc' %]
+</div>
+</div>
+[% INCLUDE 'intranet-bottom.inc' %]
<fieldset class="rows">
<legend>Accounting details</legend>
<ol>
- <li><label for="datereceived">Date received: </label><span class="label"> [% datereceived %] </span></li>
+ <li><label for="datereceived">Date received: </label><span> [% datereceived %] </span></li>
+ <li><label for="bookfund">Budget: </label><span> [% bookfund %] </span></li>
+ <li><label for="creator">Created by: </label><span> [% IF ( memberfirstname and membersurname ) %][% IF ( memberfirstname ) %][% memberfirstname %][% END %] [% membersurname %][% ELSE %]No name[% END %]</span></li>
<li><label for="quantityto">Quantity to receive: </label><span class="label">
[% IF ( edit ) %]
<input type="text" name="quantity" value="[% quantity %]" />
--- /dev/null
+[% USE KohaDates %]
+[% INCLUDE 'doc-head-open.inc' %]
+<title>Koha › Acquisitions › Spent</title>
+[% INCLUDE 'doc-head-close.inc' %]
+</head>
+<body>
+[% INCLUDE 'header.inc' %]
+[% INCLUDE 'acquisitions-search.inc' %]
+
+<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/acqui/acqui-home.pl">Acquisitions</a> › Spent - [% fund_code %]</div>
+
+<div id="doc3" class="yui-t2">
+
+<div id="bd">
+ <div id="yui-main">
+ <div class="yui-b">
+
+<h1>Fund: [% fund_code %]</h1>
+<h2>Spent</h2>
+
+
+<table cellspacing="0" cellpadding="0" border="0" id="spent" class="collapse">
+ <thead>
+ <tr>
+ <th> Title </th>
+ <th> Order </th>
+ <th> Vendor </th>
+ <th> Invoice </th>
+ <th> Itemtype </th>
+ <th> Received </th>
+ <th> Unit Price </th>
+ <th> Freight per Item </th>
+ <th> Date Ordered </th>
+ <th> Date Received </th>
+ <th> Subtotal </th>
+ </tr>
+ </thead>
+
+[% FOREACH order IN spent %]
+ [% IF loop.odd %]
+ <tr class="highlight">
+ [% ELSE %]
+ <tr>
+ [% END %]
+
+ <td class="cell">
+ [% order.title %]
+ </td>
+ <td class="cell">
+ <a href="/cgi-bin/koha/acqui/orderreceive.pl?ordernumber=[% order.ordernumber %]&biblio=[% order.biblionumber %]&invoice=[% order.booksellerinvoicenumber %]&supplierid=[% order.booksellerid %]&catview=yes">[% order.ordernumber %]</a>
+ </td>
+ <td class="cell">
+ <a href="/cgi-bin/koha/acqui/supplier.pl?supplierid=[% order.booksellerid %]">[% order.booksellerid %]</a>
+ </td>
+ <td class="cell">
+ <a href="/cgi-bin/koha/acqui/parcel.pl?invoice=[% order.booksellerinvoicenumber %]&supplierid=[% order.booksellerid %]&datereceived=[% order.datereceived %]">[% order.booksellerinvoicenumber %]</a>
+ </td>
+ <td class="cell">
+ [% order.itype %]
+ </td>
+ <td class="cell">
+ [% order.quantityreceived %]
+ </td>
+ <td class="cell" align="right">
+ [% order.unitprice %]
+ </td>
+ <td class="cell" align="right">
+ [% order.freight %]
+ </td>
+ <td class="cell" align="right">
+ [% order.entrydate | $KohaDates %]
+ </td>
+ <td class="cell" align="right">
+ [% order.datereceived | $KohaDates %]
+ </td>
+ <td class="cell" align="right">
+ [% order.subtotal %]
+ </td>
+ </tr>
+[% END %]
+ <tfoot>
+ <tr valign="top">
+ <td> Total </td>
+ <td> </td>
+ <td> </td>
+ <td> </td>
+ <td> </td>
+ <td> </td>
+ <td> </td>
+ <td> </td>
+ <td> </td>
+ <td> </td>
+ <td align="right">
+ [% total %]
+ </td>
+ </tr>
+ </tfoot>
+
+</table>
+
+</div>
+</div>
+<div class="yui-b">
+[% INCLUDE 'acquisitions-menu.inc' %]
+</div>
+</div>
+[% INCLUDE 'intranet-bottom.inc' %]
[% INCLUDE 'doc-head-open.inc' %]
-<title>Koha › Acquisitions › Z39.50 Search Results</title>
+<title>Koha › Acquisitions › [% IF ( opsearch ) %]Order from external source[% ELSE %]Order from external source › Search results[% END %]</title>
[% INCLUDE 'greybox.inc' %]
[% INCLUDE 'doc-head-close.inc' %]
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.checkboxes.min.js"></script>
[% INCLUDE 'header.inc' %]
[% INCLUDE 'acquisitions-search.inc' %]
-<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/acqui/acqui-home.pl">Acquisitions</a> › <a href="/cgi-bin/koha/acqui/supplier.pl?supplierid=[% booksellerid %]">[% name %]</a> › <a href="/cgi-bin/koha/acqui/basket.pl?basketno=[% basketno %]">Basket [% basketno %]</a> › Order from Z39.50 search</div>
+<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/acqui/acqui-home.pl">Acquisitions</a> › <a href="/cgi-bin/koha/acqui/supplier.pl?supplierid=[% booksellerid %]">[% name %]</a> › <a href="/cgi-bin/koha/acqui/basket.pl?basketno=[% basketno %]">Basket [% basketno %]</a> › [% IF ( opsearch ) %]Order from external source[% ELSE %]<a href="/cgi-bin/koha/acqui/z3950_search.pl?booksellerid=[% booksellerid %]&basketno=[% basketno %]">Order from external source</a> › Search results[% END %]</div>
<div id="doc3" class="yui-t7">
<div id="bd">
[% IF ( opsearch ) %]
-<h2>Z39.50 Search Points</h2>
+<h2>Order from external source</h2>
<form method="post" action="z3950_search.pl" name="f" class="checkboxed">
<input type="hidden" name="op" id="op" value="do_search" />
<div class="yui-g">
[% ELSE %]
- <h2>Results</h2>
+ <h2>Search results</h2>
[% IF ( breeding_loop ) %]
<table id="resultst">
<thead> <tr>
</li>
<li class="radio">
- <label for="show_mine">Show my<br /> funds only</label>
+ <label for="show_mine">Show my funds only</label>
[% IF ( show_mine ) %]
<input type="checkbox" id="show_mine" name="show_mine" value="1" checked="checked" />
[% ELSE %]
[% IF ( loop.last ) %]</tbody></table>[% END %]
[% END %]
[% END %]
- <fieldset class="action"><button class="save-all submit" type="submit">Save all [% TAB.tab_title %] preferences</button> <a href="/cgi-bin/koha/admin/preferences.pl?tab=[% TAB.tab %]" class="cancel">Cancel</a></fieldset>
+ <fieldset class="action"><button class="save-all submit" type="submit">Save all [% TAB.tab_title %] preferences</button> <a href="#" onclick="window.location.reload(true);" class="cancel">Cancel</a></fieldset>
</form>
</div>
[% END %]
choices:
yes: "Don't"
no: Do
- - automatically update attached biblios when changing an authority record. If this is off, please ask your administrator to enable the merge_authorities.pl cronjob.
+ - automatically update attached biblios when changing an authority record. If this is off, please ask your administrator to enable the merge_authority.pl cronjob.
-
- Use the following text for the contents of MARC authority control field 008 position 06-39 (fixed length data elements). Do NOT include the date (position 00-05).
- pref: MARCAuthorityControlField008
yes: Record
no: "Don't record"
- local use when an unissued item is checked in.
+ -
+ - When an empty an empty barcode field is submitted in circulation
+ - pref: CircAutoPrintQuickSlip
+ choices:
+ yes: "open a print quick slip window"
+ no: "clear the screen"
+ - .
Checkout Policy:
-
- pref: AllowNotForLoanOverride
choices:
us: mm/dd/yyyy
metric: dd/mm/yyyy
- iso: yyyy/mm/dd
+ iso: yyyy-mm-dd
- .
-
- "Enable the following languages on the staff interface:"
choices:
yes: Send
no: "Don't send"
- - an email to newly created patrons with their account details at their
+ - an email to newly created patrons with their account details.
+ -
+ - "Use"
- pref: AutoEmailPrimaryAddress
default: "OFF"
choices:
emailpro: work
B_email: alternate
"OFF": first valid
- - email address.
+ - "patron email address for sending out emails."
-
- pref: autoMemberNum
choices:
no: "Don't"
- default the card number field on the patron addition screen to the next available card number (for example, if the largest currently used card number is 26345000012941, then this field will default to 26345000012942).
-
- - "The following database columns must be filled in on the patron entry screen:"
+ - "The following <a href='http://schema.koha-community.org/tables/borrowers.html' target='blank'>database columns</a> must be filled in on the patron entry screen:"
- pref: BorrowerMandatoryField
class: multi
- (separate columns with |)
-
+ - "The following <a href='http://schema.koha-community.org/tables/borrowers.html' target='blank'>database columns</a> will not appear on the patron entry screen:"
+ - pref: BorrowerUnwantedField
+ class: multi
+ - (separate columns with |)
+ -
- "Guarantors can be the following of those they guarantee:"
- pref: borrowerRelationship
class: multi
<div id="yui-main">
<div class="yui-b">
[% INCLUDE 'cat-toolbar.inc' %]
-
+ [% IF ( ocoins ) %]
+ <!-- COinS / OpenURL -->
+ <span class="Z3988" title="[% ocoins %]"></span>
+ [% END %]
<div id="catalogue_ISBDdetail">
[% ISBD %]
</div>
[% IF ( frameworkcodeloo.selected ) %]<option value="[% frameworkcodeloo.value %]" selected="selected">[% frameworkcodeloo.frameworktext %]</option>[% ELSE %]<option value="[% frameworkcodeloo.value %]">[% frameworkcodeloo.frameworktext %]</option>[% END %]
[% END %]
</select> </b></p>
+[% IF ( ocoins ) %]
+<!-- COinS / OpenURL -->
+<span class="Z3988" title="[% ocoins %]"></span>
+[% END %]
<div id="bibliotabs" class="toptabs numbered">
<ul>
<div class="yui-b">
[% INCLUDE 'cat-toolbar.inc' %]
+ [% IF ( ocoins ) %]
+ <!-- COinS / OpenURL -->
+ <span class="Z3988" title="[% ocoins %]"></span>
+ [% END %]
+
[% IF ( AmazonEnabled ) %]
[% IF ( XSLTDetailsDisplay ) %]
<div class="yui-gc">
[% IF ( volinfo ) %]<th>Publication Details</th>[% END %]
[% IF ( itemdata_uri ) %]<th>url</th>[% END %]
[% IF ( itemdata_copynumber ) %]<th>Copy No.</th>[% END %]
+ [% IF materials %]<th>Materials Specified</th>[% END %]
[% IF ( itemdata_itemnotes ) %]<th>Public notes</th>[% END %]
[% IF ( SpineLabelShowPrintOnBibDetails ) %]<th>Spine Label</th>[% END %]
[% IF ( hostrecords ) %]<th>Host Records</th>[% END %]
- [% IF ( analyze ) %]<th>Used in</th>[% END %]
- [% IF ( analyze ) %]<th></th>[% END %]
+ [% IF ( analyze ) %]<th>Used in</th><th></th>[% END %]
</tr>
[% FOREACH itemloo IN itemloop %]
<tr>
Item-level hold
[% END %]
[% IF ( canreservefromotherbranches ) %]for <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% itemloo.ReservedForBorrowernumber %]">
- [% IF ( hidepatronname ) %]
+ [% IF ( itemloo.hidepatronname ) %]
[% itemloo.Reservedcardnumber %]
[% ELSE %]
[% itemloo.ReservedForFirstname %] [% itemloo.ReservedForSurname %]
[% IF ( itemdata_copynumber ) %]
<td class="copynumber">[% itemloo.copynumber %]</td>
[% END %]
+ [% IF materials %]
+ <td class="materials"> [% itemloo.materials %] </td>
+ [% END %]
[% IF ( itemdata_itemnotes ) %]<td><div class="itemnotes">[% itemloo.itemnotes %]</div></td>[% END %]
[% IF ( SpineLabelShowPrintOnBibDetails ) %]
<td><a href="/cgi-bin/koha/labels/spinelabel-print.pl?barcode=[% itemloo.barcode %]" >Print Label</a></td>
<tbody>
[% FOREACH issue IN issues %]
[% UNLESS ( loop.odd ) %]<tr class="highlight">[% ELSE %]<tr>[% END %]
- <td><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% issue.borrowernumber %]">[% issue.surname %][% IF ( issue.firstname ) %], [% issue.firstname %][% END %]</a></td>
+ <td><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% issue.borrowernumber %]">[% IF HidePatronName %][% issue.cardnumber %][% ELSE %][% issue.surname %][% IF ( issue.firstname ) %], [% issue.firstname %][% END %][% END %]</a></td>
<td>[% IF ( issue.barcode ) %]
<a href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=[% issue.biblionumber %]&itemnumber=[% issue.itemnumber %]">[% issue.barcode %]</a>
[% ELSE %]
[% INCLUDE 'doc-head-open.inc' %]
-<title>Koha › Catalog › Item details for [% FOREACH BIBITEM_DAT IN BIBITEM_DATA %][% BIBITEM_DAT.title %][% END %]</title>
+<title>Koha › Catalog › Item details for [% title %] [% FOREACH subtitl IN subtitle %] [% subtitl.subfield %][% END %]</title>
[% INCLUDE 'doc-head-close.inc' %]
<style type="text/css">h3{padding-top: 1em; border-top: 2px solid #CCCCCC;}</style>
</head>
[% INCLUDE 'header.inc' %]
[% INCLUDE 'cat-search.inc' %]
-<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/catalogue/search.pl">Catalog</a> › Item Details for <i>[% FOREACH BIBITEM_DAT IN BIBITEM_DATA %][% BIBITEM_DAT.title |html %][% END %]</i></div>
+<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/catalogue/search.pl">Catalog</a> › Item Details for <i>[% title |html %] [% FOREACH subtitl IN subtitle %] [% subtitl.subfield|html %][% END %]</i></div>
<div id="doc3" class="yui-t2">
[% INCLUDE 'cat-toolbar.inc' %]
<div id="catalogue_detail_biblio">
- [% FOREACH BIBITEM_DAT IN BIBITEM_DATA %]
- <h2>[% BIBITEM_DAT.title |html %] [% IF ( BIBITEM_DAT.author ) %], by [% BIBITEM_DAT.author %][% END %]</h2>
+
+ <h2>[% title |html %]</h2>
+ [% IF ( subtitle ) %]<h4>[% FOREACH subtitl IN subtitle %] [% subtitl.subfield|html %][% END %]</h4>[% END %]
+ [% IF ( author ) %]<h4>by [% author %]</h4>[% END %]
<ol class="bibliodetails">
- <li><span class="label">Biblionumber:</span> [% BIBITEM_DAT.biblionumber %] </li>
+ <li><span class="label">Biblionumber:</span> [% biblionumber %] </li>
[% UNLESS ( item_level_itypes ) %]
- <li><span class="label">Item type:</span> [% BIBITEM_DAT.itemtypename %] </li>
+ <li><span class="label">Item type:</span> [% itemtypename %] </li>
[% END %]
- <!-- deprecated? <li><span class="label">Loan length:</span> [% BIBITEM_DAT.loanlength %] </li> -->
- <li><span class="label">Rental charge:</span>[% BIBITEM_DAT.rentalcharge %] </li>
- <li><span class="label">ISBN:</span> [% BIBITEM_DAT.isbn %] </li>
- <li><span class="label">Publisher:</span>[% BIBITEM_DAT.place %] [% BIBITEM_DAT.publishercode |html %] [% BIBITEM_DAT.publicationyear %] </li>
- [% IF ( BIBITEM_DAT.volumeddesc ) %]<li><span class="label">Volume:</span> [% BIBITEM_DAT.volumeddesc %]</li>[% END %]
- <li><span class="label">Physical Details:</span> [% BIBITEM_DAT.pages %] [% BIBITEM_DAT.illus %] [% BIBITEM_DAT.size %] </li>
- [% IF ( BIBITEM_DAT.bnotes ) %]<li><span class="label">Notes:</span> [% BIBITEM_DAT.bnotes %]</li>[% END %]
- <li><span class="label">No. of Items:</span> [% BIBITEM_DAT.count %] [% IF ( BIBITEM_DAT.hiddencount ) %]total ([% BIBITEM_DAT.showncount %] shown / [% BIBITEM_DAT.hiddencount %] hidden)
-<a href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=[% BIBITEM_DAT.biblionumber %]&showallitems=1">Show all items</a>[% END %]</li>
+ [% IF ( rentalcharge ) %]<li><span class="label">Rental charge:</span>[% rentalcharge %] </li>[% END %]
+ <li><span class="label">ISBN:</span> [% isbn %] </li>
+ <li><span class="label">Publisher:</span>[% place %] [% publishercode |html %] [% publicationyear %] </li>
+ [% IF ( volumeddesc ) %]<li><span class="label">Volume:</span> [% volumeddesc %]</li>[% END %]
+ <li><span class="label">Physical Details:</span> [% pages %] [% illus %] [% size %] </li>
+ [% IF ( bnotes ) %]<li><span class="label">Notes:</span> [% bnotes %]</li>[% END %]
+ <li><span class="label">No. of Items:</span> [% count %] [% IF ( hiddencount ) %]total ([% showncount %] shown / [% hiddencount %] hidden)
+<a href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=[% biblionumber %]&showallitems=1">Show all items</a>[% END %]</li>
</ol>
- [% END %]
+
<br clear="all" />
[% IF ( ONLY_ONE ) %]
<div class="dialog message">You are only viewing one item. <a href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=[% biblionumber %]&bi=[% biblioitemnumber %]#item[% itemnumber %]">View All</a></div>
<li><span class="label">Item Callnumber:</span> [% ITEM_DAT.itemcallnumber %] </li>
[% IF ( ITEM_DAT.copyvol ) %]<li><span class="label">Copy / Vol :</span> [% ITEM_DAT.copyvol %] </li> [% END %]
[% IF ( ITEM_DAT.replacementprice ) %]<li><span class="label">Replacement Price:</span> [% ITEM_DAT.replacementprice %] </li> [% END %]
+ [% IF ITEM_DAT.materials %]<li><span class="label">Materials Specified:</span> [% ITEM_DAT.materials %] </li> [% END %]
</ol></div>
<div class="listgroup"><h4>Statuses [% IF ( ITEM_DAT.status_advisory ) %](
[% IF ( ITEM_DAT.notforloantext ) %][% ITEM_DAT.notforloantext %] [% END %]
[% INCLUDE 'doc-head-open.inc' %]
-<title>Koha › Catalog › [% IF ( searchdesc ) %]Results of Search [% IF ( query_desc ) %]for '[% query_desc %]'[% END %][% IF ( limit_desc ) %] with limit(s): '[% limit_desc %]'[% END %][% ELSE %]You did not specify any search criteria[% END %]</title>
+<title>Koha › Catalog › [% IF ( searchdesc ) %]Results of Search [% IF ( query_desc ) %]for '[% query_desc | html %]'[% END %][% IF ( limit_desc ) %] with limit(s): '[% limit_desc | html %]'[% END %][% ELSE %]You did not specify any search criteria[% END %]</title>
[% INCLUDE 'doc-head-close.inc' %]
<script type="text/javascript" src="/intranet-tmpl/prog/en/lib/jquery/plugins/jquery.highlight-3.js"></script>
<script type="text/javascript">
placeHold();
}
var HoldForButtonMenu = [
- { text: "Place hold", onclick: { fn: holdFor }},
- { text: "Place hold for [% holdfor_firstname %] [% holdfor_surname %] ([% holdfor_cardnumber %])", onclick: { fn: holdForPatron }},
- { text: "Forget [% holdfor_firstname %] [% holdfor_surname %] ([% holdfor_cardnumber %])", onclick: { fn: forgetPatron }}];
+ { text: _("Place hold"), onclick: { fn: holdFor }},
+ { text: _("Place hold for") + " [% holdfor_firstname %] [% holdfor_surname %] ([% holdfor_cardnumber %])", onclick: { fn: holdForPatron }},
+ { text: _("Forget") + " [% holdfor_firstname %] [% holdfor_surname %] ([% holdfor_cardnumber %])", onclick: { fn: forgetPatron }}];
var HoldForButton = new YAHOO.widget.Button({
type: "split",
- label: "Place hold",
+ label: _("Place hold"),
name: "holdfor",
menu: HoldForButtonMenu,
container: "placeholdc",
[% END %]
[% IF ( facets_loo.expandable ) %]
<li class="showmore">
- <a href="/cgi-bin/koha/catalogue/search.pl?q=[% facets_loo.searchdesc %]&expand=[% facets_loo.expand %]#[% facets_loo.type_id %]">
+ <a href="/cgi-bin/koha/catalogue/search.pl?q=[% facets_loo.searchdesc %][% IF ( offset ) %]&offset=[% offset %][% END %]&expand=[% facets_loo.expand %]#[% facets_loo.type_id %]">
Show More
</a>
</li>
[% INCLUDE 'biblio-default-view.inc' %]
<b>[% IF ( SEARCH_RESULT.title ) %][% SEARCH_RESULT.title |html %][% ELSE %]No title[% END %]</b>
</a>
- [% FOREACH subtitl IN SEARCH_RESULT.subtitle %] , [% subtitl.subfield %] [% END %]
+ [% FOREACH subtitl IN SEARCH_RESULT.subtitle %], [% subtitl.subfield %][% END %]
[% IF ( SEARCH_RESULT.volume ) %],[% SEARCH_RESULT.volume %][% END %] [% IF ( SEARCH_RESULT.volumeddesc ) %], [% SEARCH_RESULT.volumeddesc %][% END %]
</p>
[% IF ( SEARCH_RESULT.summary ) %]
[% IF ( SEARCH_RESULT.publishercode ) %][% SEARCH_RESULT.publishercode %][% END %] [% IF ( SEARCH_RESULT.publicationyear ) %] [% SEARCH_RESULT.publicationyear %] [% ELSIF ( SEARCH_RESULT.copyrightdate ) %] [% SEARCH_RESULT.copyrightdate %][% END %]</span>
[% IF ( SEARCH_RESULT.edition ) %]<span class="results_edition">Edition: [% SEARCH_RESULT.edition %]</span>[% END %]
<span class="results_physicaldesc">[% IF ( SEARCH_RESULT.pages ) %]: [% SEARCH_RESULT.pages %][% END %]
- [% IF ( SEARCH_RESULT.size ) %] ; [% SEARCH_RESULT.size %][% END %]</span> [% IF ( SEARCH_RESULT.normalized_isbn ) %]<span class="results_isbn">ISBN: [% SEARCH_RESULT.normalized_isbn %]</span>[% END %]
+ [% IF ( SEARCH_RESULT.size ) %] ; [% SEARCH_RESULT.size %][% END %]</span> [% IF ( SEARCH_RESULT.isbn ) %]<span class="results_isbn">ISBN: [% SEARCH_RESULT.isbn | replace('\s\|', ', ')%]</span>[% END %]
<span class="results_itemtype">[% SEARCH_RESULT.description %]</span>
[% IF ( SEARCH_RESULT.timestamp ) %] <i>(modified on [% SEARCH_RESULT.timestamp %])</i>[% END %]
[% IF ( SEARCH_RESULT.cn_class ) %][<a href="/cgi-bin/koha/catalogue/search.pl?idx=callnum&q=[% SEARCH_RESULT.cn_class |url %]">[% SEARCH_RESULT.cn_class %]</a>][% END %]
<span class="noholdstext">No holds allowed</span>
[% ELSE %]
<a id="reserve_[% SEARCH_RESULT.biblionumber %]" href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% SEARCH_RESULT.biblionumber %]">Holds</a>
- [% IF ( holdfor ) %] <span class="holdforlink">| <a href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% SEARCH_RESULT.biblionumber %]&findborrower=[% holdfor_cardnumber %]">Hold for [% holdfor_firstname %] [% holdfor_surname %] ([% holdfor_cardnumber %])</a></span>[% END %]
+ [% IF ( holdfor ) %] <span class="holdforlink">| <a href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% SEARCH_RESULT.biblionumber %]&findborrower=[% holdfor_cardnumber %]">Place hold for [% holdfor_firstname %] [% holdfor_surname %] ([% holdfor_cardnumber %])</a></span>[% END %]
[% END %]
[% IF ( CAN_user_editcatalogue_edit_catalogue ) %]
| <a href="/cgi-bin/koha/cataloguing/addbiblio.pl?biblionumber=[% SEARCH_RESULT.biblionumber %]">Edit record</a>
<title>Koha › Cataloging › [% IF ( biblionumber ) %]Editing [% title |html %] (Record Number [% biblionumber %])[% ELSE %]Add MARC Record[% END %]</title>
[% INCLUDE 'doc-head-close.inc' %]
<script type="text/javascript" src="[% themelang %]/lib/yui/plugins/bubbling-min.js"></script>
+<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.fixFloat.js"></script>
<script type="text/javascript">
//<![CDATA[
// prepare DOM for YUI Toolbar
$(document).ready(function() {
+ $('#toolbar').fixFloat();
$("#z3950searchc").empty();
$("#savebutton").empty();
yuiToolbar();
[% IF ( breeding_loo.breedingid ) %]
<tr id="row[% breeding_loo.breedingid %]">
- <td>[% breeding_loo.server %] <div class="linktools"><a href="/cgi-bin/koha/catalogue/showmarc.pl?importid=[% breeding_loo.breedingid %]" rel="gb_page_center[600,500]">Preview MARC</a> <a href="/cgi-bin/koha/catalogue/showmarc.pl?viewas=card&importid=[% breeding_loo.breedingid %]" rel="gb_page_center[600,500]">Preview Card</a> <a href="#" onclick="Import([% breeding_loo.breedingid %],0); return false">Import</a><a href="#" onclick="closemenu();return false;" title="Close this menu"> X </a></div> </td>
+ <td>[% breeding_loo.server %] <div class="linktools"><a href="/cgi-bin/koha/catalogue/showmarc.pl?importid=[% breeding_loo.breedingid %]" rel="gb_page_center[600,500]">Preview MARC</a> <a href="/cgi-bin/koha/catalogue/showmarc.pl?viewas=card&importid=[% breeding_loo.breedingid %]" rel="gb_page_center[600,500]">Preview Card</a> <a href="#" onclick="Import([% breeding_loo.breedingid %],[% breeding_loo.biblionumber %]); return false">Import</a><a href="#" onclick="closemenu();return false;" title="Close this menu"> X </a></div> </td>
<td>[% breeding_loo.title |html %]</td>
<td>[% breeding_loo.author %]</td>
<td>[% breeding_loo.date %]</td>
</table></div>
[% ELSE %]
-<div class="yui-ge">
- <div class="yui-u first">
+ [% IF ( reqmessage ) %]
+ <div class="dialog message">
+ <ul>
+ [% IF ( cancelled ) %]
+ <li>Reserve cancelled</li>
+ [% END %]
+ [% IF ( setwaiting ) %]
+ <li>Item should now be waiting at library: [% reqbrchname %]</li>
+ [% END %]
+ </ul>
+ </div>
+ [% END %]
+
+ [% IF ( errmsgloop ) %]
+ <div class="dialog message">
+ <ul>
+ [% FOREACH errmsgloo IN errmsgloop %]
+ [% IF ( errmsgloo.errbadcode ) %]
+ <li>No Item with barcode: [% errmsgloo.msg %]</li>
+ [% END %]
+ [% IF ( errmsgloo.errispermanent ) %]
+ <li>Please return item to home library: [% errmsgloo.msg %]</li>
+ [% END %]
+ [% IF ( errmsgloo.errnotallowed ) %]
+ <li>You cannot transfer items of [% errmsgloo.codeType %] <b>[% errmsgloo.code %]</b> to <b>[% errmsgloo.tbr %]</b></li>
+ [% END %]
+ [% IF ( errmsgloo.errdesteqholding ) %]
+ <li>Item is already at destination library.</li>
+ [% END %]
+ [% IF ( errmsgloo.errwasreturned ) %]
+ <li>Item was on loan to <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% errmsgloo.borrowernumber %]">
+ [% errmsgloo.firstname %] [% errmsgloo.surname %]
+ ([% errmsgloo.cardnumber %])</a> and has been returned.</li>
+ [% END %]
+ [% END %]
+ </ul>
+ </div>
+ [% END %]
+
+<div id="branchtransfers">
<form method="post" name="mainform" id="mainform" action="/cgi-bin/koha/circ/branchtransfers.pl">
<fieldset class="brief">
<legend>Transfer</legend>
<input type="hidden" name="tb-[% trsfitemloo.counter %]" value="[% trsfitemloo.tobrcd %]" />
[% END %]
</form></div>
-
- <div class="yui-u"><h4>Messages</h4>
- <ul>
- [% IF ( reqmessage ) %]
- [% IF ( cancelled ) %]
- <li>Reserve Cancelled</li>
- [% END %]
- [% IF ( setwaiting ) %]
- <li>Item should now be waiting at library: [% reqbrchname %]</li>
- [% END %]
- [% END %]
- [% FOREACH errmsgloo IN errmsgloop %]
- [% IF ( errmsgloo.errbadcode ) %]
- <li>No Item with barcode: [% errmsgloo.msg %]</li>
- [% END %]
- [% IF ( errmsgloo.errispermanent ) %]
- <li>Please return item to home library: [% errmsgloo.msg %]</li>
- [% END %]
- [% IF ( errmsgloo.errnotallowed ) %]
- <li>You cannot transfer items of [% errmsgloo.codeType %] <b>[% errmsgloo.code %]</b> to <b>[% errmsgloo.tbr %]</b></li>
- [% END %]
- [% IF ( errmsgloo.errdesteqholding ) %]
- <li>Item is already at destination library.</li>
- [% END %]
- [% IF ( errmsgloo.errwasreturned ) %]
- <li>Item was on loan to <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% errmsgloo.borrowernumber %]">
-[% errmsgloo.firstname %] [% errmsgloo.surname %]
-([% errmsgloo.cardnumber %])</a> and has been returned.</li>
- [% END %]
- [% END %]
- </ul>
- </div><!-- /yui-u -->
-</div><!-- /yui-ge -->
-
+</div>
+
[% IF ( trsfitemloop ) %]
<div class="yui-g">
<table>
<caption>Transferred Items</caption>
<tr>
- <th>Bar Code</th>
<th>Title</th>
+ <th>Author</th>
+ <th>Barcode</th>
+ <th>Shelving location</th>
+ <th>Call number</th>
+ <th>Type</th>
<th>To</th>
</tr>
[% FOREACH trsfitemloo IN trsfitemloop %]
<tr>
- <td>
- <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% trsfitemloo.biblionumber %]">[% trsfitemloo.barcode %]</a>
- </td>
- <td>
- <p>[% trsfitemloo.title |html %] ([% trsfitemloo.author %])</p>
- <p>[% trsfitemloo.ccode %]</p>
- </td>
+ <td><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% trsfitemloo.biblionumber %]">[% trsfitemloo.title |html %]</a></td>
+ <td>[% trsfitemloo.author %]</td>
+ <td><a href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=[% trsfitemloo.biblionumber %]&itemnumber=[% trsfitemloo.itemnumber %]#item[% trsfitemloo.itemnumber %]">[% trsfitemloo.barcode %]</a></td>
+ <td>[% trsfitemloo.location %]</td>
+ <td>[% trsfitemloo.itemcallnumber %]</td>
+ <td>[% trsfitemloo.ccode %]</td>
<td>[% trsfitemloo.tobrname %]</td>
</tr>
[% END %]
$( '.renewals-allowed' ).hide(); $( '.renewals-disabled' ).show();
}
} ).attr( 'checked', false );
- [% END %]
- // listen submit to trigger qslip on empty checkout
- $('#mainform').bind('submit',function() {
- if ($('#barcode').val() == '') {
- return printx_window('qslip'); }
- });
+ [% END %][% IF ( CircAutoPrintQuickSlip ) %]
+ // listen submit to trigger qslip on empty checkout
+ $('#mainform').bind('submit',function() {
+ if ($('#barcode').val() == '') {
+ return printx_window('qslip'); }
+ });[% END %]
var allcheckboxes = $(".checkboxed");
</div>
[% IF ( dateexpiry ) %]<div class="dialog message">Patron's account has been renewed until [% dateexpiry %]</div>[% END %]
+
+[% IF additional_materials %]
+ <div id="materials" class="dialog message">Note about the accompanying materials: <br />
+ [% additional_materials %]
+ </div>
+[% END %]
+
[% IF ( NEEDSCONFIRMATION ) %]
<div class="yui-g">
[% IF ( userdebarred ) %]
<li class="blocker">
- <span class="circ-hlt"> Restricted:</span> Patron's account is restricted [% IF (userdebarreddate ) %] until [% userdebarreddate %] [% END %] [% IF (debarredcomment ) %]([% debarredcomment %])[% END %]
+ <span class="circ-hlt"> Restricted:</span> Patron's account is restricted [% IF (userdebarreddate ) %] until [% userdebarreddate %] [% END %] [% IF (debarredcomment ) %] with the comment "[% debarredcomment %]"[% END %]
<form class="inline compact" action="/cgi-bin/koha/members/setstatus.pl" method="post">
<input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
<input type="hidden" name="destination" value="circ" />
<input type="hidden" name="cardnumber" value="[% cardnumber %]" />
- <input type="submit" value="Lift Debarment" />
+ <input type="submit" value="Lift restriction" />
</form>
</li>[% END %]
<tbody>[% FOREACH overdueloo IN overdueloop %]
<tr>
<td>[% overdueloo.duedate %]</td>
- <td><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% overdueloo.borrowernumber %]">[% overdueloo.name %]</a>
+ <td><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% overdueloo.borrowernumber %]">[% overdueloo.surname %] [% overdueloo.firstname %]</a>
[% IF ( overdueloo.email ) %][<a href="mailto:[% overdueloo.email %]?subject=Overdue: [% overdueloo.title |html %]">email</a>][% END %]
[% IF ( overdueloo.phone ) %]([% overdueloo.phone %])[% ELSIF ( overdueloo.mobile ) %]([% overdueloo.mobile %])[% ELSIF ( overdueloo.phonepro ) %]([% overdueloo.phonepro %])[% END %]</td>
<td>[% overdueloo.branchcode %]</td>
<div class="yui-g">
+[% IF additional_materials %]
+ <div class="dialog message" id="materials">Note about the accompanying materials: <br />
+ [% additional_materials %]
+ </div>
+[% END %]
+
[% IF ( collectionItemNeedsTransferred ) %]
- <div class="dialog message">This item is part of a Rotating Collection and needs to be Transferred to [% collectionBranch %]</div>
+ <div id="rotating-collection" class="dialog message">This item is part of a Rotating Collection and needs to be Transferred to [% collectionBranch %]</div>
[% END %]
<!-- Patron has fines -->
<!-- Patron has waiting holds -->
[% IF ( waiting_holds ) %]
- <div class="dialog message">
+ <div id="awaiting-pickup" class="dialog message">
<h3>[% holdsfirstname %] [% holdssurname %] has [% waiting_holds %] hold(s) waiting for pickup.</h3>
<p><a href="/cgi-bin/koha/circ/circulation.pl?borrowernumber=[% holdsborrowernumber %]">Check out to this patron</a>.</p>
</div>
</div>
[% END %]
<!-- case of a mistake in transfer loop -->
-[% IF ( WrongTransfer ) %]<div class="dialog message"><!-- WrongTransfer --><h3>Please return <a href="/cgi-bin/koha/catalogue/detail.pl?type=intra&biblionumber=[% itembiblionumber %]">[% title |html %]</a> to [% TransferWaitingAt %] or <a href="/cgi-bin/koha/circ/returns.pl?itemnumber=[% itemnumber %]&canceltransfer=1">Cancel Transfer</a></h3>
+[% IF ( WrongTransfer ) %]<div id="return2" class="dialog message"><!-- WrongTransfer --><h3>Please return <a href="/cgi-bin/koha/catalogue/detail.pl?type=intra&biblionumber=[% itembiblionumber %]">[% title |html %]</a> to [% TransferWaitingAt %] or <a href="/cgi-bin/koha/circ/returns.pl?itemnumber=[% itemnumber %]&canceltransfer=1">Cancel Transfer</a></h3>
[% IF ( wborcnum ) %]<h5>Hold for:</h5>
<ul><li><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% borrowernumber %]">
[% borsurname %], [% borfirstname %]</a> ([% borcnum %])</li>
<audio src="/intranet-tmpl/prog/sound/ending.ogg" autoplay="autoplay" autobuffer="autobuffer"></audio>
[% END %]
-<div class="dialog message">
+<div id="hold-found1" class="dialog message">
<h3>Hold Found (item is already waiting): <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% itembiblionumber %]">[% title |html %]</a></h3>
[% IF ( reservenotes ) %]<h4>Notes: [% reservenotes %]</h4>[% END %]
<h4>Hold for:</h4>
[% IF ( soundon ) %]
<audio src="/intranet-tmpl/prog/sound/opening.ogg" autoplay="autoplay" autobuffer="autobuffer"></audio>
[% END %]
- <div class="dialog message">
+ <div id="transfer-needed" class="dialog message">
<h3>Hold needing transfer found: <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% itembiblionumber %]">[% title |html %]</a></h3>
<h4>Hold for: </h4>
<ul>
[% IF ( transfer ) %]
<!-- transfer: item with no reservation, must be returned to its homebranch -->
- <div class="dialog message">
+ <div id="return1" class="dialog message">
<h3>Please return <a href="/cgi-bin/koha/catalogue/detail.pl?type=intra&biblionumber=[% itembiblionumber %]">[% title or "item" |html %]</a> to [% homebranchname %]</h3>
</div>
[% IF ( soundon ) %]
[% IF ( soundon ) %]
<audio src="/intranet-tmpl/prog/sound/opening.ogg" autoplay="autoplay" autobuffer="autobuffer"></audio>
[% END %]
- <div class="dialog message"><h3> This item needs to be transferred to [% homebranchname %]</h3>
+ <div id="item-transfer" class="dialog message"><h3> This item needs to be transferred to [% homebranchname %]</h3>
Transfer Now?<br />
<form method="post" action="returns.pl" name="mainform" id="mainform">
<input type="submit" name="dotransfer" value="Yes" class="submit" />
<audio src="/intranet-tmpl/prog/sound/opening.ogg" autoplay="autoplay" autobuffer="autobuffer"></audio>
[% END %]
- <div class="dialog message">
+ <div id="hold-found2" class="dialog message">
<h3>Hold Found: <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% itembiblionumber %]">[% title |html %]</a></h3>
[% IF ( reservenotes ) %]<h4>Notes: [% reservenotes %]</h4>[% END %]
<h5>Hold for:</h5>
<th class="hq-patron">Patron</th>
<th class="hq-sendto">Send To</th>
<th class="hq-date">Date</th>
+ <th class="hq-notes">Notes</th>
</tr>
</thead>
<tbody>[% FOREACH itemsloo IN itemsloop %]
<td class="hq-patron"><p><a href="/cgi-bin/koha/circ/circulation.pl?findborrower=[% itemsloo.cardnumber %]#reserves">[% itemsloo.surname %], [% itemsloo.firstname %] ([% itemsloo.cardnumber %])</a></p> <p>[% itemsloo.phone %]</p></td>
<td class="hq-sendto">[% itemsloo.pickbranch %]</td>
<td class="hq-date">[% itemsloo.reservedate %]</td>
+ <td class="hq-notes">[% itemsloo.notes %]</td>
</tr>
[% END %]</tbody>
</table>
<li>Enter the identifying information regarding your patron
<ul>
<li>Required fields are defined in the BorrowerMandatoryField system preference</li>
+ <li>Unwanted fields are defined in the BorrowerUnwantedField system preference</li>
<li>Salutation is populated by the BorrowersTitles system preference</li>
</ul>
</li>
</li>
</ul>
-<p><strong>See the full documentation for the the Managing Staged MARC Records in the <a href="http://manual.koha-community.org/3.6/en/managestaged.html">manual</a> (online).</strong></p>
+<p><strong>See the full documentation for the Managing Staged MARC Records in the <a href="http://manual.koha-community.org/3.6/en/managestaged.html">manual</a> (online).</strong></p>
[% INCLUDE 'help-bottom.inc' %]
<p>Sincerely, Library Staff</p>
-<p><strong>See the full documentation for the the Overdue Notice/Status Triggers in the <a href="http://manual.koha-community.org/3.6/en/noticetriggers.html">manual</a> (online).</strong></p>
+<p><strong>See the full documentation for the Overdue Notice/Status Triggers in the <a href="http://manual.koha-community.org/3.6/en/noticetriggers.html">manual</a> (online).</strong></p>
[% INCLUDE 'help-bottom.inc' %]
<p style="color:#990000;">Important: There is a limit of 520K on the size of the picture uploaded and it is recommended that the image be 200x300 pixels, but smaller images will work as well.</p>
-<p><strong>See the full documentation for the the Patron Image Uploader in the <a href="http://manual.koha-community.org/3.6/en/uploadpatronimages.html">manual</a> (online).</strong></p>
+<p><strong>See the full documentation for the Patron Image Uploader in the <a href="http://manual.koha-community.org/3.6/en/uploadpatronimages.html">manual</a> (online).</strong></p>
-[% INCLUDE 'help-bottom.inc' %]
\ No newline at end of file
+[% INCLUDE 'help-bottom.inc' %]
<p>Task scheduler will not work if the user the web server runs as doesn't have the permission to use it. To find out if the right user has the permissions necessary, check /etc/at.allow to see what users are in it. If you don't have that file, check etc/at.deny. If at.deny exists but is blank, then every user can use it. Talk to your system admin about adding the user to the right place to make the task scheduler work.</p>
-<p><strong>See the full documentation for the the Task Scheduler in the <a href="http://manual.koha-community.org/3.6/en/taskscheduler.html">manual</a> (online).</strong></p>
+<p><strong>See the full documentation for the Task Scheduler in the <a href="http://manual.koha-community.org/3.6/en/taskscheduler.html">manual</a> (online).</strong></p>
-[% INCLUDE 'help-bottom.inc' %]
\ No newline at end of file
+[% INCLUDE 'help-bottom.inc' %]
<p>I encountered some problems.</p>
<ul>
[% IF ( perlversion ) %]
- <li>Your perl version seems to be obsolete.
- Please upgrade to a newer version of Perl (at least Version 5.006001).</li>
+ <li>Your Perl version seems to be obsolete.
+ Please upgrade to a newer version of Perl (at least Version 5.10).</li>
[% END %]
</ul>
[% END %]
[% END %]
[% IF ( CAN_user_acquisition ) %]
<h3><a href="/cgi-bin/koha/acqui/acqui-home.pl">Acquisitions</a></h3>
+ [% IF ( pendingsuggestions ) %]<ul><li><a href="/cgi-bin/koha/suggestion/suggestion.pl">Suggestions pending approval</a>: <span class="holdcount"><a href="/cgi-bin/koha/suggestion/suggestion.pl">[% pendingsuggestions %]</a></span></li></ul>[% END %]
[% END %]
[% IF ( CAN_user_reports ) %]
<h3><a href="/cgi-bin/koha/reports/reports-home.pl">Reports</a></h3>
[% END %]
[% IF ( CAN_user_tools ) %]
<h3><a href="/cgi-bin/koha/tools/tools-home.pl">Tools</a></h3>
+ [% IF ( CAN_user_tools_moderate_comments && pendingcomments ) || ( CAN_user_tools_moderate_tags && pendingtags ) %]
+ <ul>
+ [% IF ( CAN_user_tools_moderate_comments && pendingcomments ) %]<li><a href="/cgi-bin/koha/reviews/reviewswaiting.pl">Comments pending approval</a>: <span class="holdcount"><a href="/cgi-bin/koha/reviews/reviewswaiting.pl">[% pendingcomments %]</a></span></li>[% END %]
+ [% IF ( CAN_user_tools_moderate_tags && pendingtags ) %]<li><a href="/cgi-bin/koha/tags/review.pl">Tags pending approval</a>: <span class="holdcount"><a href="/cgi-bin/koha/tags/review.pl">[% pendingtags %]</a></span></li>[% END %]
+ </ul>
+ [% END %]
[% END %]
<h3><a href="/cgi-bin/koha/about.pl">About Koha</a></h3>
</div>
</div><!-- /koha-news -->
</div>
[% END %]
-
+
</div>
+
[% INCLUDE 'intranet-bottom.inc' %]
</div>
</div>
-<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.tablesorter.min.js"></script>
-<script type="text/javascript">//<![CDATA[
-$(document).ready(function() {
- $("#memberresultst").tablesorter({
- sortList: [[1,0]],
- widgets: ['zebra']
- });
-});
-//]]>
-</script>
[% INCLUDE 'intranet-bottom.inc' %]
[% END %]
[% IF ( step_1 ) %]
+[%UNLESS notitle && nosurname && nofirstname && nodateofbirth && noinitials && noothernames &&nosex %]
<fieldset class="rows" id="memberentry_identity">
<legend>[% IF ( I ) %]Organization [% ELSE %]Patron [% END %]identity</legend>
<ol>
[% UNLESS ( I ) %]
+ [% UNLESS notitle %]
[% IF ( title_cgipopup ) %]
<li>
[% IF ( mandatorytitle ) %]
</li>
[% END %]
[% END %]
+ [% END %]
+ [% UNLESS nosurname %]
<li>
[% IF ( mandatorysurname ) %]
<label for="surname" class="required">
[% END %]
[% IF ( mandatorysurname ) %]<span class="required">Required</span>[% END %]
</li>
+ [% END %]
[% UNLESS ( I ) %]
+ [% UNLESS nofirstname %]
<li>
[% IF ( mandatoryfirstname ) %]
<label for="firstname" class="required">
<input type="text" id="firstname" name="firstname" size="20" value="[% IF ( opduplicate ) %][% ELSE %][% firstname %][% END %]" />
[% IF ( mandatoryfirstname ) %]<span class="required">Required</span>[% END %]
</li>
+ [% END %]
+ [% UNLESS nodateofbirth %]
<li>
[% IF ( mandatorydateofbirth ) %]
<label for="dateofbirth" class="required">
[% IF ( ERROR_dateofbirth ) %]<span class="required">(Error)</span>[% END %]
<div class="hint">[% INCLUDE 'date-format.inc' %]</div>
</li>
+ [% END %]
+ [% UNLESS noinitials %]
<li>
[% IF ( mandatoryinitials ) %]
<label for="initials" class="required">
[% IF ( mandatoryinitials ) %]<span class="required">Required</span>[% END %]
</li>
[% END %]
+ [% END %]
+ [% UNLESS noothernames %]
<li>
[% IF ( mandatoryothernames ) %]
<label for="othernames" class="required">
[% IF ( mandatoryothernames ) %]<span class="required">Required</span>[% END %]
[% IF ( I ) %]<input type="hidden" name="sex" value="N" />[% END %]
</li>
+ [% END %]
[% UNLESS ( I ) %]
+ [% UNLESS nosex %]
<li class="radio">
[% IF ( female ) %]
<label for="sex-none">N/A </label><input type="radio" name="sex" id="sex-none" value="" />
[% END %]
</li>
+ [% END %]
[% END %]
</ol>
</fieldset>
+[% END # hide fieldset %]
[% IF ( showguarantor ) %]<input type="hidden" id="guarantorid" name="guarantorid" value="[% guarantorid %]" />
<fieldset class="rows">
[% END %]
<span class="label">Patron #:</span> [% IF ( guarantorid ) %] <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% guarantorid %]" target="blank">[% guarantorid %]</a>[% END %]
</li>
+ [% UNLESS nocontactname %]
<li>
<label for="contactname">Surname: </label>
[% IF ( guarantorid ) %]
[% END %]
[% END %]
</li>
+ [% END %]
+ [% UNLESS nocontactfirstname %]
<li>
<label for="contactfirstname">First name: </label>
[% IF ( guarantorid ) %]
[% END %]
[% END %]
</li>
+ [% END %]
[% IF ( relshiploop ) %]
<li>
<label for="relationship">Relationship: </label>
</fieldset>
[% END %]
+[% UNLESS noaddress && noaddress2 && nocity && nostate && nozipcode && nocountry %]
<fieldset class="rows">
<legend>Main address</legend><ol>
+ [% UNLESS nostreetnumber %]
<li>
[% IF ( mandatorystreetnumber ) %]
<label for="streetnumber" class="required">
[% END %]
[% IF ( mandatorystreetnumber ) %]<span class="required">Required</span>[% END %]
</li>
+ [% END %]
+ [% UNLESS nostreettype %]
[% IF ( road_cgipopup ) %]
<li>
[% IF ( mandatorystreettype ) %]
[% IF ( mandatorystreettype ) %]<span class="required">Required</span>[% END %]
</li>
[% END %]
+ [% END %]
+ [% UNLESS noaddress %]
<li>
[% IF ( mandatoryaddress ) %]
<label for="address" class="required">
[% END %]
[% IF ( mandatoryaddress ) %]<span class="required">Required</span>[% END %]
</li>
+ [% END %]
+ [% UNLESS noaddress2 %]
<li>
[% IF ( mandatoryaddress2 ) %]
<label for="address2" class="required">
[% END %]
[% IF ( mandatoryaddress2 ) %]<span class="required">Required</span>[% END %]
</li>
+ [% END %]
+ [% UNLESS nocity %]
<li>
[% IF ( mandatorycity ) %]
<label for="city" class="required">
[% END %]
[% IF ( mandatorycity ) %]<span class="required">Required</span>[% END %]
</li>
+ [% END %]
+ [% UNLESS nostate %]
<li>
[% IF ( mandatorystate ) %]
<label for="state" class="required">
<input type="text" name="state" id="state" size="20" value="[% state %]" />
[% IF ( mandatorystate ) %]<span class="required">Required</span>[% END %]
</li>
+ [% END %]
+ [% UNLESS nozipcode %]
<li>
[% IF ( mandatoryzipcode ) %]
<label for="zipcode" class="required">
[% END %]
[% IF ( mandatoryzipcode ) %]<span class="required">Required</span>[% END %]
</li>
-
+ [% END %]
+ [% UNLESS nocountry %]
<li>
[% IF ( mandatorycountry ) %]
<label for="country" class="required">
[% END %]
[% IF ( mandatorycountry ) %]<span class="required">Required</span>[% END %]
</li>
-
+ [% END %]
</ol>
</fieldset>
+[% END # nostreet && nocity etc group%]
+
+[% UNLESS nophone && nophonepro && nomobile && noemail && noemailpro && nofax %]
<fieldset class="rows" id="memberentry_contact">
<legend>Contact</legend><ol>
+ [% UNLESS nophone %]
<li>
[% IF ( mandatoryphone ) %]
<label for="phone" class="required">
[% IF ( mandatoryphone ) %]<span class="required">Required</span>[% END %]<div class="hint">Shows on transit slips</div>
</li>
+ [% END %]
+ [% UNLESS nophonepro %]
<li>
[% IF ( mandatoryphonepro ) %]
<label for="phonepro" class="required">
[% END %]
[% IF ( mandatoryphonepro ) %]<span class="required">Required</span>[% END %]
</li>
+ [% END %]
+ [% UNLESS nomobile %]
<li>
[% IF ( mandatorymobile ) %]
<label for="mobile" class="required">
[% END %]
[% IF ( mandatorymobile ) %]<span class="required">Required</span>[% END %]
</li>
+ [% END %]
+ [% UNLESS noemail %]
<li>
[% IF ( mandatoryemail ) %]
<label for="email" class="required">
[% IF ( mandatoryemail ) %]<span class="required">Required</span>[% END %]<div class="hint">Shows on transit slips</div>
</li>
+ [% END %]
+ [% UNLESS noemailpro %]
<li>
[% IF ( mandatoryemailpro ) %]
<label for="emailpro" class="required">
[% END %]
[% IF ( mandatoryemailpro ) %]<span class="required">Required</span>[% END %]
</li>
+ [% END %]
+ [% UNLESS nofax %]
<li>
[% IF ( mandatoryfax ) %]
<label for="fax" class="required">
[% END %]
[% IF ( mandatoryfax ) %]<span class="required">Required</span>[% END %]
</li>
+ [% END %]
</ol>
</fieldset>
-
+[%END # hide fieldset %]
<!-- ************************ STEP_1 *********************** -->
[% END %]
[% IF ( step_6 ) %]
+ [% UNLESS noB_address && noB_address2 && noB_city && noB_zipcode && noB_state && noB_country &&nocontactnote && noB_phone && noB_email %]
<fieldset class="rows" id="memberentry_address">
<legend>Alternate address</legend><ol>
+ [% UNLESS noB_address %]
<li>
[% IF ( mandatoryB_address ) %]
<label for="B_address" class="required">
[% END %]
[% IF ( mandatoryB_address ) %]<span class="required">Required</span>[% END %]
</li>
+ [% END %]
+ [% UNLESS noB_address2 %]
<li>
[% IF ( mandatoryB_address2 ) %]
<label for="B_address2" class="required">
[% END %]
[% IF ( mandatoryB_address2 ) %]<span class="required">Required</span>[% END %]
</li>
+ [% END %]
+ [% UNLESS noB_city %]
<li>
[% IF ( mandatoryB_city ) %]
<label for="B_city" class="required" >
<input type="text" id="B_city" name="B_city" size="20" value="[% B_city %]" />
[% IF ( mandatoryB_city ) %]<span class="required">Required</span>[% END %]
</li>
+ [% END %]
+ [% UNLESS noB_state %]
<li>
[% IF ( mandatoryB_state ) %]
<label for="B_state" class="required" >
<input type="text" id="B_state" name="B_state" size="20" value="[% B_state %]" />
[% IF ( mandatoryB_state ) %]<span class="required">Required</span>[% END %]
</li>
+ [% END %]
+ [% UNLESS noB_zipcode %]
<li>
[% IF ( mandatoryB_zipcode ) %]
<label for="B_zipcode" class="required">
[% END %]
[% IF ( mandatoryB_zipcode ) %]<span class="required">Required</span>[% END %]
</li>
+ [% END %]
+ [% UNLESS noB_country %]
<li>
[% IF ( mandatoryB_country ) %]
<label for="B_country" class="required">
[% END %]
[% IF ( mandatoryB_country ) %]<span class="required">Required</span>[% END %]
</li>
+ [% END %]
+ [% UNLESS noB_phone %]
<li>
[% IF ( mandatoryB_phone ) %]
<label for="B_phone" class="required">
[% END %]
[% IF ( mandatoryB_phone ) %]<span class="required">Required</span>[% END %]
</li>
+ [% END %]
+ [% UNLESS noB_email %]
<li>
[% IF ( mandatoryB_email ) %]
<label for="B_email" class="required">
<input type="text" id="B_email" name="B_email" size="45" value="[% B_email %]" />
[% END %]
[% IF ( mandatoryB_email ) %]<span class="required">Required</span>[% END %] </li>
+ [% END %]
+ [% UNLESS nocontactnote %]
<li>
[% IF ( mandatorycontactnote ) %]
<label for="contactnote" class="required">
<textarea id="contactnote" name="contactnote" cols="40" rows="2">[% contactnote %]</textarea>
[% IF ( mandatorycontactnote ) %]<span class="required">Required</span>[% END %]
</li>
+ [% END %]
</ol>
</fieldset>
+ [% END # UNLESS noB_address && noB_city && noB_state && noB_phone && noB_email %]
[% END %]
[% IF ( step_2 ) %]
+ [% UNLESS noaltcontactsurname && noaltcontactfirstname && noaltcontactaddress1 && noaltcontactaddress2 && noaltcontactaddress3 && noaltcontactstate && noaltcontactzipcode && noaltcontactcountry && noaltcontactphone %]
<fieldset class="rows" id="memberentry_altaddress">
<legend>Alternate Contact</legend><ol>
+ [% UNLESS noaltcontactsurname %]
<li>
[% IF ( mandatoryaltcontactsurname ) %]
<label for="altcontactsurname" class="required">
[% END %]
[% IF ( mandatoryaltcontactsurname ) %]<span class="required">Required</span>[% END %]
</li>
+ [% END %]
+ [% UNLESS noaltcontactfirstname %]
<li>
[% IF ( mandatoryaltcontactfirstname ) %]
<label for="altcontactfirstname" class="required">
[% END %]
[% IF ( mandatoryaltcontactfirstname ) %]<span class="required">Required</span>[% END %]
</li>
+ [% END %]
+ [% UNLESS noaltcontactaddress1 %]
<li>
[% IF ( mandatoryaltcontactaddress1 ) %]
<label for="altcontactaddress1" class="required">
[% END %]
[% IF ( mandatoryaltcontactaddress1 ) %]<span class="required">Required</span>[% END %]
</li>
+ [% END %]
+ [% UNLESS noaltcontactaddress2 %]
<li>
[% IF ( mandatoryaltcontactaddress2 ) %]
<label for="altcontactaddress2" class="required">
[% END %]
[% IF ( mandatoryaltcontactaddress2 ) %]<span class="required">Required</span>[% END %]
</li>
+ [% END %]
+ [% UNLESS noaltcontactaddress3 %]
<li>
[% IF ( mandatoryaltcontactaddress3 ) %]
<label for="altcontactaddress3" class="required">
<input type="text" name="altcontactaddress3" id="altcontactaddress3" value="[% altcontactaddress3 %]" size="20" />
[% IF ( mandatoryaltcontactaddress3 ) %]<span class="required">Required</span>[% END %]
</li>
+ [% END %]
+ [% UNLESS noaltcontactstate %]
<li>
[% IF ( mandatoryaltcontactstate ) %]
<label for="altcontactstate" class="required">
<input type="text" name="altcontactstate" id="altcontactstate" value="[% altcontactstate %]" size="20" />
[% IF ( mandatoryaltcontactstate ) %]<span class="required">Required</span>[% END %]
</li>
+ [% END %]
+ [% UNLESS noaltcontactzipcode %]
<li>
[% IF ( mandatoryaltcontactzipcode ) %]
<label for="altcontactzipcode" class="required">
[% END %]
[% IF ( mandatoryaltcontactzipcode ) %]<span class="required">Required</span>[% END %]
</li>
+ [% END %]
+ [% UNLESS noaltcontactcountry %]
<li>
[% IF ( mandatoryaltcontactcountry ) %]
<label for="altcontactcountry" class="required">
[% END %]
[% IF ( mandatoryaltcontactcountry ) %]<span class="required">Required</span>[% END %]
</li>
+ [% END %]
+ [% UNLESS noaltcontactphone %]
<li>
[% IF ( mandatoryaltcontactphone ) %]
<label for="altcontactphone" class="required">
[% END %]
[% IF ( mandatoryaltcontactphone ) %]<span class="required">Required</span>[% END %]
</li>
+ [% END %]
</ol>
</fieldset>
+ [% END # UNLESS noaltcontactsurname && noaltcontactfirstname etc %]
[% END %]
[% IF ( step_3 ) %]
<fieldset class="rows" id="memberentry_library_management">
<legend>Library Management</legend><ol>
+ [% UNLESS nocardnumber %]
<li> [% IF ( mandatorycardnumber ) %]
<label for="cardnumber" class="required">
[% ELSE %]
<input type="text" id="cardnumber" name="cardnumber" size="20" value="[% cardnumber %]" />
[% END %]
[% IF ( mandatorycardnumber ) %]<span class="required">Required</span>[% END %]</li>
+ [% END %]
+ [% UNLESS nobranchcode %]
<li>
[% IF ( mandatorybranchcode ) %]
<label for="branchcode" class="required">
[% CGIbranch %]
[% IF ( mandatorybranchcode ) %]<span class="required">Required</span>[% END %]
</li>
+ [% END %]
<li>
<label for="categorycode">Category: </label>
<select id="categorycode" name="categorycode">
[% END %]
</select>
</li>
+ [% UNLESS nosort1 %]
<li>
[% IF ( mandatorysort1 ) %]
<label for="sort1" class="required">
[% IF ( mandatorysort1 ) %]<span class="required">Required</span>[% END %]
[% END %]
</li>
+ [% END %]
+ [% UNLESS nosort2 %]
<li>
[% IF ( mandatorysort2 ) %]
<label for="sort2" class="required">
[% IF ( mandatorysort2 ) %]<span class="required">Required</span>[% END %]
[% END %]
</li>
+ [% END %]
</ol>
</fieldset>
+ [% UNLESS nodateenrolled && nodateexpiry && noopacnote && noborrowernotes %]
<fieldset class="rows" id="memberentry_subscription">
<legend>Library set-up</legend><ol>
+ [% UNLESS nodateenrolled %]
<li>
[% IF ( mandatorydateenrolled ) %]
<label for="dateenrolled" class="required">
[% IF ( ERROR_dateenrolled ) %]<span class="required">(Error)</span>[% END %]
<div class="hint">[% INCLUDE 'date-format.inc' %]</div>
</li>
+ [% END %]
+ [% UNLESS nodateexpiry %]
<li>
[% IF ( mandatorydateexpiry ) %]
<label for="dateexpiry" class="required">
[% IF ( ERROR_dateexpiry ) %]<span class="required">(Error)</span>[% END %]
<div class="hint">[% INCLUDE 'date-format.inc' %]</div>
</li>
+ [% END %]
+ [% UNLESS noopacnote %]
<li>
[% IF ( mandatoryopacnote ) %]
<label for="opacnote" class="required">
<div class="hint">This message appears on this patron's user page in the OPAC</div>
[% IF ( mandatoryopacnote ) %]<span class="required">Required</span>[% END %]
</li>
+ [% END %]
+ [% UNLESS noborrowernotes %]
<li>
[% IF ( mandatoryborrowernotes ) %]
<label for="borrowernotes" class="required">
<div class="hint">This message displays when checking out to this patron</div>
[% IF ( mandatoryborrowernotes ) %]<span class="required">Required</span>[% END %]
</li>
+ [% END %]
</ol>
</fieldset>
+ [% END # hide fieldset %]
+
+ [% UNLESS nouserid && nopassword %]
<fieldset class="rows" id="memberentry_userid">
<legend>OPAC/Staff Login</legend><ol>
+ [% UNLESS nouserid %]
<li>
[% IF ( mandatoryuserid ) %]
<label for="userid" class="required">
[% IF ( mandatoryuserid ) %]<span class="required">Required</span>[% END %]
</li>
+ [%END %]
+ [% UNLESS nopassword %]
<li>
[% IF ( mandatorypassword ) %]
<label for="password" class="required">
[% END %]
[% IF ( mandatorypassword ) %]<span class="required">Required</span>[% END %][% IF ( ERROR_short_password ) %]<span class="required">Password is too short</span>[% END %]
[% IF ( minPasswordLength ) %]<div class="hint">Minimum password length: [% minPasswordLength %]</div>[% END %]
- </li></ol>
+ </li>
+ [% END %]
+ </ol>
</fieldset>
+ [% END # hide fieldset %]
<!--this zones are not necessary in modif mode -->
[% UNLESS ( opadd ) %]
<fieldset class="rows">
</li>
[% END %]
<li>
- <label for="yesdebarred" class="radio">Debarred: </label>
+ <label for="yesdebarred" class="radio">Restricted: </label>
[% IF ( debarred ) %]
<label for="yesdebarred">Yes </label>
<input type="radio" id="yesdebarred" name="debarred" value="1" checked="checked"/>
<li>Patron is restricted[% IF ( userdebarreddate ) %] until [% userdebarreddate%] [% IF (debarredcomment ) %]([% debarredcomment %])[% END %][% END %]
<form class="inline compact" action="/cgi-bin/koha/members/setdebar.pl" method="post">
<input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
- <input type="submit" value="Lift Debarment" />
+ <input type="submit" value="Lift Restriction" />
</form>
</li>
[% END %]
[% IF ( email ) %]<li><span class="label">Primary email:</span><a href="mailto:[% email %]">[% email %]</a></li>[% END %]
[% IF ( emailpro ) %]<li><span class="label">Secondary email: </span><a href="mailto:[% emailpro %]">[% emailpro %]</a></li>[% END %]
[% END %]
- <li><span class="label">Initials: </span>[% initials %]</li>
- <li><span class="label">Date of birth:</span>[% dateofbirth %]</li>
- <li><span class="label">Gender:</span>
+ [% IF ( initials ) %]<li><span class="label">Initials: </span>[% initials %]</li>[% END %]
+ [% IF ( dateofbirth ) %]<li><span class="label">Date of birth:</span>[% dateofbirth %]</li>[% END %]
+ [% IF ( sex ) %]<li><span class="label">Gender:</span>
[% IF ( sex == 'F' ) %]Female[% ELSIF ( sex == 'M' ) %]Male[% ELSE %][% sex %][% END %]
- </li>[% END %]
+ </li>[% END %][% END %]
[% IF ( printethnicityline ) %]
<li><span class="label">Ethnicity:</span>[% ethnicity %]</li>
<li><span class="label">Ethnicity notes: </span>[% ethnotes %]</li>
<li><span class="label">City: </span>[% B_city %]</li>
[% IF ( B_state ) %]<li><span class="label">State: </span>[% B_state %]</li>[% END %]
<li><span class="label">Zip/Postal Code: </span>[% B_zipcode %]</li>
- <li><span class="label">Country: </span>[% B_country %]</li>
+ [% IF ( B_country ) %]<li><span class="label">Country: </span>[% B_country %]</li>[% END %]
[% IF ( B_phone ) %]<li><span class="label">Phone: </span>[% B_phone %]</li>[% END %]
- [% IF ( B_email ) %]<li><span class="label">Email: </span>[% B_email %]</li>[% END %]</ol></div>
+ [% IF ( B_email ) %]<li><span class="label">Email: </span><a href="mailto:[% B_email %]">[% email %]</a></li>[% END %]</ol></div>
</div>
<div class="action"><a href="memberentry.pl?op=modify&borrowernumber=[% borrowernumber %]&step=6">Edit</a></div>
[% END %]
<li><span class="label">Address: </span>[% altcontactaddress1 %]</li>
<li><span class="label">Address 2: </span>[% altcontactaddress2 %]</li>
<li><span class="label">City: </span>[% altcontactaddress3 %]</li>
- [% IF ( altcontactstate ) %]<li><span class="label">State: </span>[% altcontactstate %]</li>[% END %]
+ [% IF ( altcontactstate ) %]<li><span class="label">State: </span>[% altcontactstate %]</li>[% END %]
<li><span class="label">Zip/Postal Code: </span>[% altcontactzipcode %]</li>
- <li><span class="label">Country: </span>[% altcontactcountry %]</li>
- <li><span class="label">Phone: </span>[% altcontactphone %]</li></ol></div>
+ [% IF ( altcontactcountry ) %]<li><span class="label">Country: </span>[% altcontactcountry %]</li>[% END %]
+ [% IF ( altcontactphone ) %]<li><span class="label">Phone: </span>[% altcontactphone %]</li>[% END %]
+ </ol></div>
</div>
<div class="action"><a href="memberentry.pl?op=modify&borrowernumber=[% borrowernumber %]&step=2">Edit</a></div>
[% INCLUDE 'doc-head-open.inc' %]
-<title>Koha › Reports › Item Types</title>
+<title>Koha › Reports › Catalog by Item Types</title>
[% INCLUDE 'doc-head-close.inc' %]
+<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.tablesorter.min.js"></script>
+<script type="text/javascript">
+//<![CDATA[
+$(document).ready(function() {
+ $("#itemtypest").tablesorter();
+});
+//]]>
+</script>
</head>
<body>
[% INCLUDE 'header.inc' %]
[% INCLUDE 'cat-search.inc' %]
-<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/reports/reports-home.pl">Reports</a>[% IF ( do_it ) %] › <a href="/cgi-bin/koha/reports/manager.pl?report_name=itemtypes">Item Types</a> › Results[% ELSE %] › Item Types[% END %]</div>
+<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/reports/reports-home.pl">Reports</a>[% IF ( do_it ) %] › <a href="/cgi-bin/koha/reports/manager.pl?report_name=itemtypes">Catalog by Item Type</a> › Results[% ELSE %] › Catalog by Item Type[% END %]</div>
<div id="doc3" class="yui-t2">
[% IF ( do_it ) %]
[% FOREACH mainloo IN mainloop %]
- <h1>Reports on item types [% IF ( mainloo.branch ) %] for branch = [% mainloo.branch %][% END %]</h1>
- <table>
+ <h1>Reports on item types [% IF ( mainloo.branchname ) %] held at [% mainloo.branchname %][% END %]</h1>
+ <table id="itemtypest">
+ <thead>
<tr>
<th>Item type</th>
- <th>count</th>
+ <th>Count</th>
</tr>
+ </thead>
+ <tfoot>
+ <tr>
+ <th>TOTAL</th>
+ <th>[% mainloo.total %]</th>
+ </tr>
+ </tfoot>
+ <tbody>
[% FOREACH loopitemtyp IN mainloo.loopitemtype %]
<tr>
<td>[% loopitemtyp.itemtype %]</td>
<td>[% loopitemtyp.count %]</td>
</tr>
[% END %]
- <tr>
- <th>TOTAL</th>
- <th>[% mainloo.total %]</th>
- </tr>
+ </tbody>
</table>
[% END %]
[% ELSE %]
-
+ <h3>View a count of items held at your library grouped by item type</h3>
<form method="post" action="/cgi-bin/koha/reports/manager.pl?report_name=itemtypes">
- <fieldset class="rows"><legend>View catalog group by item types</legend><ol><li><label for="value">Select a branch</label> [% CGIbranch %]
- <span class="tip">Select none to see all branches</span></li></ol></fieldset>
+ <fieldset class="rows"><ol><li><label for="value">Select a library</label> [% CGIbranch %]
+ <span class="tip">Select none to see all libraries</span></li></ol></fieldset>
<fieldset class="action"><input type="submit" value="Submit" />
<input type="hidden" name="report_name" value="[% report_name %]" />
<input type="hidden" name="do_it" value="1" /></fieldset>
[% INCLUDE 'doc-head-open.inc' %]
-<title>Koha › Tools › Comments waiting for Approval</title>
+<title>Koha › Tools › Comments › [% IF ( status ) %] Approved comments[% ELSE %] Comments awaiting moderation[% END %]</title>
[% INCLUDE 'doc-head-close.inc' %]
-<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.tablesorter.min.js"></script>
-<script type="text/javascript">//<![CDATA[
-$(document).ready(function() {
-$.tablesorter.addParser({
- id: 'articles',
- is: function(s) {return false; },
- format: function(s) { return s.toLowerCase().replace(/^(the|an|a) /,''); },
- type: 'text'
-});
- $("#commentst").tablesorter({
- sortList: [[0,0]],
- headers: { 1: {sorter: 'articles'},2: { sorter: false },3: { sorter: false }}
- });
-});
-//]]>
-</script>
</head>
<body>
[% INCLUDE 'header.inc' %]
[% INCLUDE 'cat-search.inc' %]
<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/tools/tools-home.pl">Tools</a>
-› Comments Awaiting Moderation</div>
+› <a href="/cgi-bin/koha/reviews/reviewswaiting.pl">Comments</a> ›[% IF ( status ) %] Approved comments[% ELSE %] Comments awaiting moderation[% END %]</div>
<div id="doc3" class="yui-t2">
<h1>Comments</h1>
+<!-- The manual invoice and credit buttons -->
+<div class="toptabs">
+<ul class="ui-tabs-nav">
+ [% IF ( status ) %]<li class="ui-tabs-selected">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/reviews/reviewswaiting.pl?status=1">Approved comments</a></li>
+ [% IF ( status ) %]<li>[% ELSE %]<li class="ui-tabs-selected">[% END %]<a href="/cgi-bin/koha/reviews/reviewswaiting.pl" >Comments awaiting moderation</a></li>
+</ul>
+<div class="tabs-container">
+
[% IF ( reviews ) %]
<table id="commentst">
<thead><tr>
[% review.review |html %]
</td>
<td>
- <a href="/cgi-bin/koha/reviews/reviewswaiting.pl?op=approve&reviewid=[% review.reviewid %]">Approve</a> |
+ [% IF ( status ) %]<a href="/cgi-bin/koha/reviews/reviewswaiting.pl?op=unapprove&reviewid=[% review.reviewid %]">Unapprove</a>[% ELSE %]<a href="/cgi-bin/koha/reviews/reviewswaiting.pl?op=approve&reviewid=[% review.reviewid %]">Approve</a>[% END %] |
<a href="/cgi-bin/koha/reviews/reviewswaiting.pl?op=delete&reviewid=[% review.reviewid %]">Delete</a>
</td>
</tr>
[% END %]</tbody>
</table>
+ <div class="pages">[% pagination_bar %]</div>
[% ELSE %]
-<b>No comments to moderate</b>
+[% IF ( status ) %]<p><b>No comments have been approved.</b></p>[% ELSE %]<p><b>No comments to moderate.</b></p>[% END %]
[% END %]
+</div>
+</div>
</div>
</div>
[% IF ( subscriptions ) %]
<table>
-[% IF ( onesubscription ) %]
+[% IF ( subscriptions.size == 1 ) %]
<caption> Subscription Summary</caption>
[% ELSE %]
<caption> Subscription Summaries</caption>
</tr>
[% END %]
[% IF ( subscr ) %]
-[% UNLESS ( onesubscription ) %]
-<tr ><td colspan="7"> <a href="serials-collection.pl?biblionumber=[% biblionumber %]">See any subscription attached to this biblio</a></td>
-</tr>[% END %]
+[% IF ( subscriptioncount > 1 ) %]
+<tr ><td colspan="8"> <a href="serials-collection.pl?biblionumber=[% biblionumber %]">See any subscription attached to this biblio</a></td>
+</tr>
+[% END %]
[% END %]
</table>
[% END %]
<div id="subscription-year-[% year.year %]">
<table>
<tr>
-[% UNLESS ( year.onesubscription ) %]
+[% IF ( subscriptions.size > 1 ) %]
<th># Subs</th>
[% END %]
<th>Date published
</tr>
[% FOREACH serial IN year.serials %]
[% UNLESS ( loop.odd ) %]<tr class="highlight">[% ELSE %]<tr>[% END %]
-[% UNLESS ( serial.onesubscription ) %]
+[% IF ( subscriptions.size > 1 ) %]
<td><a href="serials-collection.pl?subscriptionid=[% serial.subscriptionid %]">[% serial.subscriptionid %]</a></td>
[% END %]
<td>
[% IF ( subscription.issn ) %][% subscription.issn %]
[% END %]
</td>
- <td><a href="/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=[% subscription.subscriptionid %]" class="button" title="subscription detail">[% IF ( subscription.title ) %][% subscription.title |html %][% ELSE %]
- ---
- [% END %]</a>
+ <td><a href="/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=[% subscription.subscriptionid %]" class="button" title="subscription detail">[% subscription.title |html %]</a>
</td>
<td>[% IF ( subscription.notes ) %][% subscription.notes %][% END %]
[% IF ( subscription.internalnotes ) %]([% subscription.internalnotes %])[% END %]
<li>
<label for="acqui_date"> First issue publication date:</label>
[% UNLESS ( modify ) %]<img src="[% themelang %]/lib/calendar/cal.gif" id="acqui_button" style="cursor: pointer;" alt="Show Calendar" title="Show Calendar" />[% END %]
- [% IF ( modify ) %]<input type="text" name="firstacquidate" value="[% firstacquidate %]" size="13" maxlength="10" id="acqui_date" disabled="disabled" style="border-width: 0px;" />
- [% ELSE %]<input type="text" name="firstacquidate" value="[% firstacquidate %]" size="13" maxlength="10" id="acqui_date" style="border-width: 0px;" />[% END %]
+ [% IF ( modify ) %]<input type="text" name="firstacquidate" value="[% firstacquidate %]" size="13" maxlength="10" id="acqui_date" disabled="disabled" />
+ [% ELSE %]<input type="text" name="firstacquidate" value="[% firstacquidate %]" size="13" maxlength="10" id="acqui_date" />[% END %]
</li>
[% IF ( modify ) %]<li><label for="next_acqui_date"> Next issue publication date:</label>
<img src="[% themelang %]/lib/calendar/cal.gif" id="next_acqui_button" style="cursor: pointer;" alt="Show Calendar" title="Show Calendar" />
- <input type="text" name="nextacquidate" value="[% nextacquidate %]" size="13" maxlength="10" id="next_acqui_date" style="border-width: 0px;" />
+ <input type="text" name="nextacquidate" value="[% nextacquidate %]" size="13" maxlength="10" id="next_acqui_date" />
</li>[% END %]
<li><!-- both scripts for calendar must follow the input field -->
<label for="beginning_date" class="required"> Subscription start date:</label>
<img src="[% themelang %]/lib/calendar/cal.gif" id="button1" style="cursor: pointer;" alt="Show Calendar" title="Show Calendar" />
- <input type="text" name="startdate" value="[% startdate %]" size="13" maxlength="10" id="beginning_date" style="border-width: 0px;" />
+ <input type="text" name="startdate" value="[% startdate %]" size="13" maxlength="10" id="beginning_date" />
<!-- both scripts for calendar must follow the input field -->
<script type="text/javascript">
Calendar.setup({
<label for="ending_date"> Subscription end date:</label>
<img src="[% themelang %]/lib/calendar/cal.gif" id="buttonend1" style="cursor: pointer;" alt="Show Calendar" title="Show Calendar" />
- <input type="text" name="enddate" value="[% enddate %]" size="13" maxlength="10" id="ending_date" style="border-width: 0px;" />
+ <input type="text" name="enddate" value="[% enddate %]" size="13" maxlength="10" id="ending_date" />
<!-- both scripts for calendar must follow the input field -->
<script type="text/javascript">
Calendar.setup({
$("a.helptext").click(function(){
$(this).parent().find(".hint").toggle(); return false;
});
+ $("#dateofrange").each(function () { this.value = "" });
});
//]]>
</script>
<input type="hidden" id="newBranchName" name="newBranchName" />
</li>
<li>
- <strong>Date:</strong>
+ <strong>From Date:</strong>
<span id="newDaynameOutput"></span>,
[% IF ( dateformat_us ) %]<span id="newMonthOutput"></span>/<span id="newDayOutput"></span>/<span id="newYearOutput"></span>[% ELSIF ( dateformat_metric ) %]<span id="newDayOutput"></span>/<span id="newMonthOutput"></span>/<span id="newYearOutput"></span>[% ELSE %]<span id="newYearOutput"></span>/<span id="newMonthOutput"></span>/<span id="newDayOutput"></span>[% END %]
<input type="hidden" id="newMonth" name="newMonth" />
<input type="hidden" id="newYear" name="newYear" />
</li>
+ <li class="dateinsert">
+ <b>To Date : </b>
+ <input type="text" id="dateofrange" name="dateofrange" size="20" value="[% dateofrange %]" />
+ <img src="[% themelang %]/lib/calendar/cal.gif" id="dateofrange_button" alt="Show Calendar" />
+ <script language="JavaScript" type="text/javascript">
+ Calendar.setup(
+ {
+ inputField : "dateofrange",
+ ifFormat : "[% DHTMLcalendar_dateformat %]",
+ button : "dateofrange_button"
+ }
+ );
+ </script>
+ </li>
<li><label for="title">Title: </label><input type="text" name="newTitle" id="title" size="35" /></li>
<li><label for="newDescription">Description:</label>
<textarea rows="2" cols="40" id="newDescription" name="newDescription"></textarea>
<a href="#" class="helptext">[?]</a>
<div class="hint">This will take this day and month as a reference to make it a holiday. Through this option, you can repeat this rule for every year. For example, selecting August 1st will make August 1st a holiday every year.</div>
</li>
+ <li class="radio"><input type="radio" name="newOperation" id="newOperationField" value="holidayrange" />
+ <label for="newOperationField">Holidays on a range</label>.
+ <a href="#" class="helptext">[?]</a>
+ <div class="hint">Make a single holiday on a range. For example, selecting August 1st, 2012 and August 10st, 2012 will make all days between 1st and 10st holiday, but will not affect August 1st-10st in other years.</div>
+ </li>
+ <li class="radio"><input type="radio" name="newOperation" id="newOperationFieldyear" value="holidayrangerepeat" />
+ <label for="newOperationFieldyear">Holidays repeated yearly on a range</label>.
+ <a href="#" class="helptext">[?]</a>
+ <div class="hint">Make a single holiday on a range repeated yearly. For example, selecting August 1st, 2012 and August 10st, 2012 will make all days between 1st and 10st holiday, and will affect August 1st-10st in other years.</div>
+ </li>
<li class="radio">
<input type="checkbox" name="allBranches" id="allBranches" />
<label for="allBranches">Copy to all libraries</label>.
var day_month_holidays = new Array();
var hola= "[% code %]";
[% FOREACH WEEK_DAYS_LOO IN WEEK_DAYS_LOOP %]
- week_days["[% WEEK_DAYS_LOO.KEY %]"] = {title:"[% WEEK_DAYS_LOO.TITLE %]", description:"[% WEEK_DAYS_LOO.DESCRIPTION %]"};
+ week_days["[% WEEK_DAYS_LOO.KEY %]"] = {title:"[% WEEK_DAYS_LOO.TITLE | replace('"','\"') %]", description:"[% WEEK_DAYS_LOO.DESCRIPTION | replace('"','\"') %]"};
[% END %]
[% FOREACH HOLIDAYS_LOO IN HOLIDAYS_LOOP %]
- holidays["[% HOLIDAYS_LOO.KEY %]"] = {title:"[% HOLIDAYS_LOO.TITLE %]", description:"[% HOLIDAYS_LOO.DESCRIPTION %]"};
+ holidays["[% HOLIDAYS_LOO.KEY %]"] = {title:"[% HOLIDAYS_LOO.TITLE | replace('"','\"') %]", description:"[% HOLIDAYS_LOO.DESCRIPTION | replace('"','\"') %]"};
[% END %]
[% FOREACH EXCEPTION_HOLIDAYS_LOO IN EXCEPTION_HOLIDAYS_LOOP %]
- exception_holidays["[% EXCEPTION_HOLIDAYS_LOO.KEY %]"] = {title:"[% EXCEPTION_HOLIDAYS_LOO.TITLE %]", description:"[% EXCEPTION_HOLIDAYS_LOO.DESCRIPTION %]"};
+ exception_holidays["[% EXCEPTION_HOLIDAYS_LOO.KEY %]"] = {title:"[% EXCEPTION_HOLIDAYS_LOO.TITLE | replace('"','\"') %]", description:"[% EXCEPTION_HOLIDAYS_LOO.DESCRIPTION | replace('"','\"') %]"};
[% END %]
[% FOREACH DAY_MONTH_HOLIDAYS_LOO IN DAY_MONTH_HOLIDAYS_LOOP %]
- day_month_holidays["[% DAY_MONTH_HOLIDAYS_LOO.KEY %]"] = {title:"[% DAY_MONTH_HOLIDAYS_LOO.TITLE %]", description:"[% DAY_MONTH_HOLIDAYS_LOO.DESCRIPTION %]"};
+ day_month_holidays["[% DAY_MONTH_HOLIDAYS_LOO.KEY %]"] = {title:"[% DAY_MONTH_HOLIDAYS_LOO.TITLE | replace('"','\"') %]", description:"[% DAY_MONTH_HOLIDAYS_LOO.DESCRIPTION | replace('"','\"') %]"};
[% END %]
/* This function gives css clases to each kind of day */
</li>
<li>
<label for="encoding">Character encoding: </label>
- <select name="encoding" id="encoding"><option value="" selected="selected">Default</option><option value="utf8">UTF-8</option><option value="MARC-8">MARC 8</option><option value="ISO_5426">ISO 5426</option><option value="ISO_6937">ISO 6937</option><option value=ISO_8859-1">ISO 8859-1</option><option value="EUC-KR">EUC-KR</option></select>
+ <select name="encoding" id="encoding"><option value="utf8" selected="selected">UTF-8 (Default)</option><option value="MARC-8">MARC 8</option><option value="ISO_5426">ISO 5426</option><option value="ISO_6937">ISO 6937</option><option value=ISO_8859-1">ISO 8859-1</option><option value="EUC-KR">EUC-KR</option></select>
</li>
</ol></fieldset>
<fieldset class="rows">
<h3>Patrons and circulation</h3>
<dl>
[% IF ( CAN_user_tools_moderate_comments ) %]
- <dt><a href="/cgi-bin/koha/reviews/reviewswaiting.pl">Comments</a></dt>
- <dd>Moderate patron comments</dd>
+ <dt><a href="/cgi-bin/koha/reviews/reviewswaiting.pl">Comments</a> [% IF ( pendingcomments ) %]<span class="holdcount"><a href="/cgi-bin/koha/reviews/reviewswaiting.pl">[% pendingcomments %]</a></span>[% END %]</dt>
+ <dd>Moderate patron comments. </dd>
[% END %]
[% IF ( CAN_user_tools_import_patrons ) %]
[% END %]
[% IF ( CAN_user_tools_moderate_tags ) %]
- <dt><a href="/cgi-bin/koha/tags/review.pl">Tags</a></dt>
+ <dt><a href="/cgi-bin/koha/tags/review.pl">Tags</a> [% IF ( pendingtags ) %]<span class="holdcount"><a href="/cgi-bin/koha/tags/review.pl">[% pendingtags %]</a></span>[% END %]</dt>
<dd>Moderate patron tags</dd>
[% END %]
var _alertString="";
var alertString2;
- if(f.addshelf.value.length ==0){
+ if($("#shelfname").val() == ""){
_alertString += _("- You must enter a List Name") + "\n";
}
</td>
[% END %]
[% UNLESS ( item_level_itypes ) %]<td>
- [% UNLESS ( noItemTypeImages ) %]<img src="[% itemsloo.imageurl %]" alt="[% itemsloo.description %]" title="[% itemsloo.description %]" />[% END %][% itemsloo.description %]
+ [% UNLESS ( noItemTypeImages || !itemsloo.imageurl ) %]<img src="[% itemsloo.imageurl %]" alt="[% itemsloo.description %]" title="[% itemsloo.description %]" />[% END %][% itemsloo.description %]
</td>[% END %]
<td>
[% INCLUDE 'biblio-default-view.inc' biblionumber = itemsloo.biblionumber %]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE stylesheet [<!ENTITY nbsp " " >]>
<xsl:stylesheet version="1.0" xmlns="http://www.loc.gov/mods/v3" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:marc="http://www.loc.gov/MARC21/slim" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="xlink marc">
- <xsl:include href="http://www.loc.gov/marcxml/xslt/MARC21slimUtils.xsl"/>
+ <xsl:include href="MARC21slimUtils-MODS31.xsl"/>
<xsl:output method="xml" indent="yes" encoding="UTF-8"/>
<!--
<span class="results_summary series"><span class="label">Series: </span>
<!-- 440 -->
<xsl:for-each select="marc:datafield[@tag=440]">
- <a href="/cgi-bin/koha/catalogue/search.pl?q=se:{marc:subfield[@code='a']}">
+ <a><xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=se,phr:"<xsl:value-of select="marc:subfield[@code='a']"/>"</xsl:attribute>
<xsl:call-template name="chopPunctuation">
<xsl:with-param name="chopString">
<xsl:call-template name="subfieldSelect">
<!-- 490 Series not traced, Ind1 = 0 -->
<xsl:for-each select="marc:datafield[@tag=490][@ind1!=1]">
- <a href="/cgi-bin/koha/catalogue/search.pl?q=se:{marc:subfield[@code='a']}">
+ <a><xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=se,phr:"<xsl:value-of select="marc:subfield[@code='a']"/>"</xsl:attribute>
<xsl:call-template name="chopPunctuation">
<xsl:with-param name="chopString">
<xsl:call-template name="subfieldSelect">
<xsl:if test="marc:datafield[@tag=490][@ind1=1]">
<xsl:for-each select="marc:datafield[@tag=800 or @tag=810 or @tag=811 or @tag=830]">
<xsl:choose>
- <xsl:when test="marc:subfield[@code='w']">
+ <xsl:when test="$UseControlNumber = '1' and marc:subfield[@code='w']">
<a href="/cgi-bin/koha/catalogue/search.pl?q=rcn:{marc:subfield[@code='w']}">
<xsl:call-template name="chopPunctuation">
<xsl:with-param name="chopString">
<xsl:call-template name="subfieldSelect">
- <xsl:with-param name="codes">at</xsl:with-param>
+ <xsl:with-param name="codes">a_t</xsl:with-param>
</xsl:call-template>
</xsl:with-param>
</xsl:call-template>
</a>
</xsl:when>
<xsl:otherwise>
- <a href="/cgi-bin/koha/catalogue/search.pl?q=se:{marc:subfield[@code='a']}">
+ <a><xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=se,phr:"<xsl:value-of select="marc:subfield[@code='a']"/>"</xsl:attribute>
<xsl:call-template name="chopPunctuation">
<xsl:with-param name="chopString">
<xsl:call-template name="subfieldSelect">
- <xsl:with-param name="codes">at</xsl:with-param>
+ <xsl:with-param name="codes">a_t</xsl:with-param>
</xsl:call-template>
</xsl:with-param>
</xsl:call-template>
</span>
</xsl:if>
+ <xsl:if test="marc:datafield[@tag=242]">
+ <span class="results_summary translated_title"><span class="label">Title translated: </span>
+ <xsl:for-each select="marc:datafield[@tag=242]">
+ <xsl:call-template name="chopPunctuation">
+ <xsl:with-param name="chopString">
+ <xsl:call-template name="subfieldSelect">
+ <xsl:with-param name="codes">abchnp</xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
+ </xsl:for-each>
+ </span>
+ </xsl:if>
+
<!-- Uniform Title Statement: Alternate Graphic Representation (MARC 880) -->
<xsl:if test="$display880">
<xsl:call-template name="m880Select">
</xsl:for-each>
</xsl:if>
+ <!-- 866 textual holdings -->
+ <xsl:if test="marc:datafield[@tag=866]">
+ <span class="results_summary holdings_note"><span class="label">Holdings Note: </span>
+ <xsl:for-each select="marc:datafield[@tag=866]">
+ <xsl:call-template name="subfieldSelect">
+ <xsl:with-param name="codes">axz</xsl:with-param>
+ </xsl:call-template>
+ <xsl:choose><xsl:when test="position()=last()"><xsl:text></xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
+ </xsl:for-each>
+ </span>
+ </xsl:if>
+
<!-- 775 Other Edition -->
<xsl:if test="marc:datafield[@tag=775]">
<span class="results_summary other_editions"><span class="label">Other Editions: </span>
--- /dev/null
+<?xml version='1.0'?>
+<!DOCTYPE stylesheet [<!ENTITY nbsp " " >]>
+<xsl:stylesheet version="1.0" xmlns:marc="http://www.loc.gov/MARC21/slim"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+ <!-- 08/08/08: tmee added corrected chopPunctuation templates for 260c -->
+ <!-- 08/19/04: ntra added "marc:" prefix to datafield element -->
+ <!-- 12/14/07: ntra added url encoding template -->
+ <!-- url encoding -->
+
+ <xsl:variable name="ascii">
+ <xsl:text> !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~</xsl:text>
+ </xsl:variable>
+
+ <xsl:variable name="latin1">
+ <xsl:text> ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ</xsl:text>
+ </xsl:variable>
+ <!-- Characters that usually don't need to be escaped -->
+ <xsl:variable name="safe">
+ <xsl:text>!'()*-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~</xsl:text>
+ </xsl:variable>
+
+ <xsl:variable name="hex">0123456789ABCDEF</xsl:variable>
+
+
+ <xsl:template name="datafield">
+ <xsl:param name="tag"/>
+ <xsl:param name="ind1">
+ <xsl:text> </xsl:text>
+ </xsl:param>
+ <xsl:param name="ind2">
+ <xsl:text> </xsl:text>
+ </xsl:param>
+ <xsl:param name="subfields"/>
+ <xsl:element name="marc:datafield">
+ <xsl:attribute name="tag">
+ <xsl:value-of select="$tag"/>
+ </xsl:attribute>
+ <xsl:attribute name="ind1">
+ <xsl:value-of select="$ind1"/>
+ </xsl:attribute>
+ <xsl:attribute name="ind2">
+ <xsl:value-of select="$ind2"/>
+ </xsl:attribute>
+ <xsl:copy-of select="$subfields"/>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template name="subfieldSelect">
+ <xsl:param name="codes">abcdefghijklmnopqrstuvwxyz</xsl:param>
+ <xsl:param name="delimeter">
+ <xsl:text> </xsl:text>
+ </xsl:param>
+ <xsl:variable name="str">
+ <xsl:for-each select="marc:subfield">
+ <xsl:if test="contains($codes, @code)">
+ <xsl:value-of select="text()"/>
+ <xsl:value-of select="$delimeter"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:value-of select="substring($str,1,string-length($str)-string-length($delimeter))"/>
+ </xsl:template>
+
+ <xsl:template name="buildSpaces">
+ <xsl:param name="spaces"/>
+ <xsl:param name="char">
+ <xsl:text> </xsl:text>
+ </xsl:param>
+ <xsl:if test="$spaces>0">
+ <xsl:value-of select="$char"/>
+ <xsl:call-template name="buildSpaces">
+ <xsl:with-param name="spaces" select="$spaces - 1"/>
+ <xsl:with-param name="char" select="$char"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="chopPunctuation">
+ <xsl:param name="chopString"/>
+ <xsl:param name="punctuation">
+ <xsl:text>.:,;/ </xsl:text>
+ </xsl:param>
+ <xsl:variable name="length" select="string-length($chopString)"/>
+ <xsl:choose>
+ <xsl:when test="$length=0"/>
+ <xsl:when test="contains($punctuation, substring($chopString,$length,1))">
+ <xsl:call-template name="chopPunctuation">
+ <xsl:with-param name="chopString" select="substring($chopString,1,$length - 1)"/>
+ <xsl:with-param name="punctuation" select="$punctuation"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="not($chopString)"/>
+ <xsl:otherwise>
+ <xsl:value-of select="$chopString"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="chopPunctuationFront">
+ <xsl:param name="chopString"/>
+ <xsl:variable name="length" select="string-length($chopString)"/>
+ <xsl:choose>
+ <xsl:when test="$length=0"/>
+ <xsl:when test="contains('.:,;/[ ', substring($chopString,1,1))">
+ <xsl:call-template name="chopPunctuationFront">
+ <xsl:with-param name="chopString" select="substring($chopString,2,$length - 1)"
+ />
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="not($chopString)"/>
+ <xsl:otherwise>
+ <xsl:value-of select="$chopString"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="chopPunctuationBack">
+ <xsl:param name="chopString"/>
+ <xsl:param name="punctuation">
+ <xsl:text>.:,;/] </xsl:text>
+ </xsl:param>
+ <xsl:variable name="length" select="string-length($chopString)"/>
+ <xsl:choose>
+ <xsl:when test="$length=0"/>
+ <xsl:when test="contains($punctuation, substring($chopString,$length,1))">
+ <xsl:call-template name="chopPunctuation">
+ <xsl:with-param name="chopString" select="substring($chopString,1,$length - 1)"/>
+ <xsl:with-param name="punctuation" select="$punctuation"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="not($chopString)"/>
+ <xsl:otherwise>
+ <xsl:value-of select="$chopString"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- nate added 12/14/2007 for lccn.loc.gov: url encode ampersand, etc. -->
+ <xsl:template name="url-encode">
+
+ <xsl:param name="str"/>
+
+ <xsl:if test="$str">
+ <xsl:variable name="first-char" select="substring($str,1,1)"/>
+ <xsl:choose>
+ <xsl:when test="contains($safe,$first-char)">
+ <xsl:value-of select="$first-char"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="codepoint">
+ <xsl:choose>
+ <xsl:when test="contains($ascii,$first-char)">
+ <xsl:value-of
+ select="string-length(substring-before($ascii,$first-char)) + 32"
+ />
+ </xsl:when>
+ <xsl:when test="contains($latin1,$first-char)">
+ <xsl:value-of
+ select="string-length(substring-before($latin1,$first-char)) + 160"/>
+ <!-- was 160 -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="no">Warning: string contains a character
+ that is out of range! Substituting "?".</xsl:message>
+ <xsl:text>63</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="hex-digit1"
+ select="substring($hex,floor($codepoint div 16) + 1,1)"/>
+ <xsl:variable name="hex-digit2" select="substring($hex,$codepoint mod 16 + 1,1)"/>
+ <!-- <xsl:value-of select="concat('%',$hex-digit2)"/> -->
+ <xsl:value-of select="concat('%',$hex-digit1,$hex-digit2)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="string-length($str) > 1">
+ <xsl:call-template name="url-encode">
+ <xsl:with-param name="str" select="substring($str,2)"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ </xsl:template>
+</xsl:stylesheet>
+<!-- Stylus Studio meta-information - (c)1998-2002 eXcelon Corp.
+<metaInformation>
+<scenarios/><MapperInfo srcSchemaPath="" srcSchemaRoot="" srcSchemaPathIsRelative="yes" srcSchemaInterpretAsXML="no" destSchemaPath="" destSchemaRoot="" destSchemaPathIsRelative="yes" destSchemaInterpretAsXML="no"/>
+</metaInformation>
+-->
+
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id: MARC21slim2DC.xsl,v 1.1 2003/01/06 08:20:27 adam Exp $ -->
+<xsl:stylesheet version="1.0"
+ xmlns:marc="http://www.loc.gov/MARC21/slim"
+ xmlns:items="http://www.koha-community.org/items"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ exclude-result-prefixes="marc items">
+ <xsl:import href="NORMARCslimUtils.xsl"/>
+ <xsl:output method = "xml" indent="yes" omit-xml-declaration = "yes" />
+ <xsl:template match="/">
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <xsl:template match="marc:record">
+
+ <!-- Sysprefs -->
+ <xsl:variable name="OPACBaseURL" select="marc:sysprefs/marc:syspref[@name='OPACBaseURL']"/>
+
+ <xsl:variable name="leader" select="marc:leader"/>
+ <xsl:variable name="leader6" select="substring($leader,7,1)"/>
+ <xsl:variable name="leader7" select="substring($leader,8,1)"/>
+ <xsl:variable name="controlField008" select="marc:controlfield[@tag=008]"/>
+ <xsl:variable name="field019b" select="marc:datafield[@tag=019]/marc:subfield[@code='b']"/>
+ <xsl:variable name="biblionumber" select="marc:datafield[@tag=999]/marc:subfield[@code='c']"/>
+ <xsl:variable name="materialTypeCode">
+ <xsl:choose>
+ <xsl:when test="$field019b='b' or $field019b='k' or $field019b='l' or $leader6='b'">Mon</xsl:when>
+ <xsl:when test="$field019b='e' or contains($field019b,'ec') or contains($field019b,'ed') or contains($field019b,'ee') or contains($field019b,'ef') or $leader6='g'">FV</xsl:when>
+ <xsl:when test="$field019b='c' or $field019b='d' or contains($field019b,'da') or contains($field019b,'db') or contains($field019b,'dc') or contains($field019b,'dd') or contains($field019b,'dg') or contains($field019b,'dh') or contains($field019b,'di') or contains($field019b,'dj') or contains($field019b,'dk') or $leader6='c' or $leader6='d' or $leader6='i' or $leader6='j'">Mus</xsl:when>
+ <xsl:when test="$field019b='a' or contains($field019b,'ab') or contains($field019b,'aj') or $leader6='e' or $leader6='f'">Kar</xsl:when>
+ <xsl:when test="$field019b='f' or $field019b='i' or contains($field019b,'ib') or contains($field019b,'ic') or contains($field019b,'fd') or contains($field019b,'ff') or contains($field019b,'fi') or $leader6='k'">gra</xsl:when>
+ <xsl:when test="$field019b='g' or contains($field019b,'gb') or contains($field019b,'gd') or contains($field019b,'ge') or $leader6='m'">Fil</xsl:when>
+ <xsl:when test="$leader6='o'">kom</xsl:when>
+ <xsl:when test="$field019b='h' or $leader6='r'">trd</xsl:when>
+ <xsl:when test="$field019b='j' or $leader6='a'">
+ <xsl:choose>
+ <xsl:when test="$leader7='a' or $leader7='c' or $leader7='m' or $leader7='p'">Mon</xsl:when>
+ <xsl:when test="$field019b='j' or $leader7='b' or $leader7='s'">Per</xsl:when>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="materialTypeLabel">
+ <xsl:choose>
+ <xsl:when test="$field019b='b' or $field019b='k' or $field019b='l' or $leader6='b'">Bok</xsl:when>
+ <xsl:when test="$field019b='e' or contains($field019b,'ec') or contains($field019b,'ed') or contains($field019b,'ee') or contains($field019b,'ef') or $leader6='g'">Film og video</xsl:when>
+ <xsl:when test="$field019b='c' or $field019b='d' or contains($field019b,'da') or contains($field019b,'db') or contains($field019b,'dc') or contains($field019b,'dd') or contains($field019b,'dg') or contains($field019b,'dh') or contains($field019b,'di') or contains($field019b,'dj') or contains($field019b,'dk') or $leader6='c' or $leader6='d' or $leader6='i' or $leader6='j'">Musikalier</xsl:when>
+ <xsl:when test="$field019b='a' or contains($field019b,'ab') or contains($field019b,'aj') or $leader6='e' or $leader6='f'">Kart</xsl:when>
+ <xsl:when test="$field019b='f' or $field019b='i' or contains($field019b,'ib') or contains($field019b,'ic') or contains($field019b,'fd') or contains($field019b,'ff') or contains($field019b,'fi') or $leader6='k'">Grafisk materiale</xsl:when>
+ <xsl:when test="$field019b='g' or contains($field019b,'gb') or contains($field019b,'gd') or contains($field019b,'ge') or $leader6='m'">Fil</xsl:when>
+ <xsl:when test="$leader6='o'">Kombidokument</xsl:when>
+ <xsl:when test="$field019b='h' or $leader6='r'">Tredimensjonal gjenstand</xsl:when>
+ <xsl:when test="$field019b='j' or $leader6='a'">
+ <xsl:choose>
+ <xsl:when test="$leader7='a' or $leader7='c' or $leader7='m' or $leader7='p'">Bok</xsl:when>
+ <xsl:when test="$field019b='j' or $leader7='b' or $leader7='s'">Periodikum</xsl:when>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+
+ </xsl:variable>
+
+ <!-- Tittel og ansvarsopplysninger -->
+ <xsl:if test="marc:datafield[@tag=245]">
+ <h1>
+ <xsl:for-each select="marc:datafield[@tag=245]">
+ <xsl:call-template name="subfieldSelect">
+ <xsl:with-param name="codes">a</xsl:with-param>
+ </xsl:call-template>
+ <xsl:if test="marc:subfield[@code='b']">
+ <xsl:text> : </xsl:text>
+ <xsl:call-template name="subfieldSelect">
+ <xsl:with-param name="codes">b</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="marc:subfield[@code='h']">
+ <xsl:text> </xsl:text>
+ (<xsl:call-template name="subfieldSelect">
+ <xsl:with-param name="codes">h</xsl:with-param>
+ </xsl:call-template>)
+ </xsl:if>
+ <xsl:text> </xsl:text>
+ <xsl:call-template name="subfieldSelect">
+ <xsl:with-param name="codes">np</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </h1>
+ </xsl:if>
+
+ <!-- Author Statement -->
+ <!-- 245$9 is Koha authority number -->
+ <xsl:choose>
+ <xsl:when test="marc:datafield[@tag=100] or marc:datafield[@tag=110] or marc:datafield[@tag=111] or marc:datafield[@tag=700] or marc:datafield[@tag=710] or marc:datafield[@tag=711]">
+ <h5 class="author">av
+ <xsl:for-each select="marc:datafield[@tag=100 or @tag=700]">
+ <a>
+ <xsl:choose>
+ <xsl:when test="marc:subfield[@code=9]">
+ <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=an:<xsl:value-of select="marc:subfield[@code=9]"/></xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=au:<xsl:value-of select="marc:subfield[@code='a']"/></xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="nameABCDQ"/></a>
+ <xsl:choose>
+ <xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
+ </xsl:for-each>
+
+ <xsl:for-each select="marc:datafield[@tag=110 or @tag=710]">
+ <a>
+ <xsl:choose>
+ <xsl:when test="marc:subfield[@code=9]">
+ <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=an:<xsl:value-of select="marc:subfield[@code=9]"/></xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=au:<xsl:value-of select="marc:subfield[@code='a']"/></xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="nameABCDN"/></a>
+ <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
+ </xsl:for-each>
+
+ <xsl:for-each select="marc:datafield[@tag=111 or @tag=711]">
+ <a>
+ <xsl:choose>
+ <xsl:when test="marc:subfield[@code=9]">
+ <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=an:<xsl:value-of select="marc:subfield[@code=9]"/></xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=au:<xsl:value-of select="marc:subfield[@code='a']"/></xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="nameACDEQ"/></a>
+ <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
+
+ </xsl:for-each>
+ </h5>
+ </xsl:when>
+ </xsl:choose>
+
+
+ <xsl:if test="$materialTypeCode!=''">
+ <span class="results_summary"><span class="label">Materialtype: </span>
+ <xsl:element name="img"><xsl:attribute name="src">/opac-tmpl/prog/famfamfam/<xsl:value-of select="$materialTypeCode"/>.png</xsl:attribute><xsl:attribute name="alt"></xsl:attribute></xsl:element>
+ <xsl:value-of select="$materialTypeLabel"/>
+ </span>
+ </xsl:if>
+
+ <!--Series -->
+ <xsl:if test="marc:datafield[@tag=440 or @tag=490]">
+ <span class="results_summary"><span class="label">Series: </span>
+ <xsl:for-each select="marc:datafield[@tag=440]">
+ <a href="/cgi-bin/koha/catalogue/search.pl?q=se:{marc:subfield[@code='a']}">
+ <xsl:call-template name="chopPunctuation">
+ <xsl:with-param name="chopString">
+ <xsl:call-template name="subfieldSelect">
+ <xsl:with-param name="codes">av</xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </a>
+ <xsl:text> </xsl:text><xsl:call-template name="part"/>
+ <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
+ </xsl:for-each>
+
+ <xsl:for-each select="marc:datafield[@tag=490][@ind1=0]">
+ <a href="/cgi-bin/koha/catalogue/search.pl?q=se:{marc:subfield[@code='a']}">
+ <xsl:call-template name="chopPunctuation">
+ <xsl:with-param name="chopString">
+ <xsl:call-template name="subfieldSelect">
+ <xsl:with-param name="codes">av</xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </a>
+ <xsl:call-template name="part"/>
+ <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
+ </xsl:for-each>
+ </span>
+ </xsl:if>
+
+ <!-- Publisher Statement -->
+
+ <xsl:if test="marc:datafield[@tag=260]">
+ <span class="results_summary"><span class="label">Utgiver: </span>
+ <xsl:for-each select="marc:datafield[@tag=260]">
+ <xsl:call-template name="chopPunctuation">
+ <xsl:with-param name="chopString">
+ <xsl:call-template name="subfieldSelect">
+ <xsl:with-param name="codes">bcg</xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
+ </xsl:for-each>
+ </span>
+ </xsl:if>
+
+ <!-- Edition Statement -->
+
+ <xsl:if test="marc:datafield[@tag=250]">
+ <span class="results_summary"><span class="label">Utgave: </span>
+ <xsl:for-each select="marc:datafield[@tag=250]">
+ <xsl:call-template name="chopPunctuation">
+ <xsl:with-param name="chopString">
+ <xsl:call-template name="subfieldSelect">
+ <xsl:with-param name="codes">ab</xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
+ </xsl:for-each>
+ </span>
+ </xsl:if>
+
+ <!-- Description -->
+
+ <xsl:if test="marc:datafield[@tag=300]">
+ <span class="results_summary"><span class="label">Beskrivelse: </span>
+ <xsl:for-each select="marc:datafield[@tag=300]">
+ <xsl:call-template name="chopPunctuation">
+ <xsl:with-param name="chopString">
+ <xsl:call-template name="subfieldSelect">
+ <xsl:with-param name="codes">abceg</xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
+ </xsl:for-each>
+ </span>
+ </xsl:if>
+
+ <abbr class="unapi-id" title="koha:biblionumber:{marc:datafield[@tag=999]/marc:subfield[@code='c']}" ><!-- unAPI --></abbr>
+
+ <xsl:if test="marc:datafield[@tag=020]">
+ <span class="results_summary"><span class="label">ISBN: </span>
+ <xsl:for-each select="marc:datafield[@tag=020]">
+ <xsl:variable name="isbn" select="marc:subfield[@code='a']"/>
+ <xsl:value-of select="marc:subfield[@code='a']"/>
+ <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
+ </xsl:for-each>
+ </span>
+ </xsl:if>
+
+ <xsl:if test="marc:datafield[@tag=022]">
+ <span class="results_summary"><span class="label">ISSN: </span>
+ <xsl:for-each select="marc:datafield[@tag=022]">
+ <xsl:value-of select="marc:subfield[@code='a']"/>
+ <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
+ </xsl:for-each>
+ </span>
+ </xsl:if>
+
+ <!-- Other Title Statement -->
+
+ <xsl:if test="marc:datafield[@tag=246]">
+ <span class="results_summary"><span class="label">Parallelltittel: </span>
+ <xsl:for-each select="marc:datafield[@tag=246]">
+ <xsl:call-template name="chopPunctuation">
+ <xsl:with-param name="chopString">
+ <xsl:call-template name="subfieldSelect">
+ <xsl:with-param name="codes">abhfgnp</xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
+ </xsl:for-each>
+ </span>
+ </xsl:if>
+
+ <!-- Uniform Title Statement -->
+
+ <xsl:if test="marc:datafield[@tag=130]|marc:datafield[@tag=240]|marc:datafield[@tag=730][@ind2!=2]">
+ <span class="results_summary"><span class="label">Standardtittel: </span>
+ <xsl:for-each select="marc:datafield[@tag=130]|marc:datafield[@tag=240]|marc:datafield[@tag=730][@ind2!=2]">
+ <xsl:variable name="str">
+ <xsl:for-each select="marc:subfield">
+ <xsl:if test="(contains('adfklmor',@code) and (not(../marc:subfield[@code='n' or @code='p']) or (following-sibling::marc:subfield[@code='n' or @code='p'])))">
+ <xsl:value-of select="text()"/>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:call-template name="chopPunctuation">
+ <xsl:with-param name="chopString">
+ <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
+
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
+ </xsl:for-each>
+ </span>
+ </xsl:if>
+
+ <xsl:if test="marc:datafield[substring(@tag, 1, 1) = '6']">
+ <span class="results_summary"><span class="label">Emner: </span>
+ <xsl:for-each select="marc:datafield[substring(@tag, 1, 1) = '6']">
+ <a>
+ <xsl:choose>
+ <xsl:when test="marc:subfield[@code=9]">
+ <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=an:<xsl:value-of select="marc:subfield[@code=9]"/></xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=su:<xsl:value-of select="marc:subfield[@code='a']"/></xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="chopPunctuation">
+ <xsl:with-param name="chopString">
+ <xsl:call-template name="subfieldSelect">
+ <xsl:with-param name="codes">abcdvxyz</xsl:with-param>
+ <xsl:with-param name="subdivCodes">vxyz</xsl:with-param>
+ <xsl:with-param name="subdivDelimiter">-- </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template></a>
+ <xsl:choose>
+ <xsl:when test="position()=last()"></xsl:when>
+ <xsl:otherwise> | </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:for-each>
+ </span>
+ </xsl:if>
+
+ <xsl:if test="marc:datafield[@tag=856]">
+ <span class="results_summary"><span class="label">Nettbasert ressurs: </span>
+ <xsl:for-each select="marc:datafield[@tag=856]">
+ <a><xsl:attribute name="href"><xsl:value-of select="marc:subfield[@code='u']"/></xsl:attribute>
+ <xsl:choose>
+ <xsl:when test="marc:subfield[@code='y' or @code='3' or @code='z']">
+ <xsl:call-template name="subfieldSelect">
+ <xsl:with-param name="codes">y3z</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="not(marc:subfield[@code='y']) and not(marc:subfield[@code='3']) and not(marc:subfield[@code='z'])">
+ Klikk her for tilgang
+ </xsl:when>
+ </xsl:choose>
+ </a>
+ <xsl:choose>
+ <xsl:when test="position()=last()"></xsl:when>
+ <xsl:otherwise> | </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </span>
+ </xsl:if>
+
+ <!-- NORMARC does not define indicators for 505
+ <xsl:if test="marc:datafield[@tag=505]">
+ <xsl:for-each select="marc:datafield[@tag=505]">
+ <span class="results_summary"><span class="label">
+ <xsl:choose>
+ <xsl:when test="@ind1=0">
+ Contents:
+ </xsl:when>
+ <xsl:when test="@ind1=1">
+ Incomplete contents:
+ </xsl:when>
+ <xsl:when test="@ind1=1">
+ Partial contents:
+ </xsl:when>
+ </xsl:choose>
+ </span>
+ <xsl:choose>
+ <xsl:when test="@ind2=0">
+ <xsl:for-each select="marc:subfield[@code='t']">
+ <xsl:value-of select="marc:subfield[@code=t]"/> <xsl:value-of select="marc:subfield[@code=r]"/>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="subfieldSelect">
+ <xsl:with-param name="codes">au</xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </span>
+ </xsl:for-each>
+ </xsl:if>
+ -->
+ <xsl:if test="marc:datafield[@tag=505]">
+ <xsl:call-template name="subfieldSelect">
+ <xsl:with-param name="codes">a</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+
+ <!-- 780 -->
+ <xsl:if test="marc:datafield[@tag=780]">
+ <xsl:for-each select="marc:datafield[@tag=780]">
+ <span class="results_summary"><span class="label">
+ <xsl:choose>
+ <xsl:when test="@ind2=0">
+ Fortsettelse av:
+ </xsl:when>
+ <xsl:when test="@ind2=1">
+ Delvis fortsettelse av:
+ </xsl:when>
+ <xsl:when test="@ind2=2">
+ Avløser:
+ </xsl:when>
+ <xsl:when test="@ind2=3">
+ Avløser delvis:
+ </xsl:when>
+ <xsl:when test="@ind2=4">
+ Sammenslåing av: ... ; og ...
+ </xsl:when>
+ <xsl:when test="@ind2=5">
+ Har tatt opp:
+ </xsl:when>
+ <xsl:when test="@ind2=6">
+ Har delvis tatt opp:
+ </xsl:when>
+ <xsl:when test="@ind2=7">
+ Utskilt fra:
+ </xsl:when>
+ </xsl:choose>
+ </span>
+ <xsl:variable name="f780">
+ <xsl:call-template name="subfieldSelect">
+ <xsl:with-param name="codes">a_t</xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+ <a><xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=<xsl:value-of select="translate($f780, '()', '')"/></xsl:attribute>
+ <xsl:value-of select="translate($f780, '()', '')"/>
+ </a>
+ </span>
+
+ <xsl:choose>
+ <xsl:when test="@ind1=0">
+ <span class="results_summary"><xsl:value-of select="marc:subfield[@code='n']"/></span>
+ </xsl:when>
+ </xsl:choose>
+
+ </xsl:for-each>
+ </xsl:if>
+
+ <!-- 785 -->
+ <xsl:if test="marc:datafield[@tag=785]">
+ <xsl:for-each select="marc:datafield[@tag=785]">
+ <span class="results_summary"><span class="label">
+ <xsl:choose>
+ <xsl:when test="@ind2=0">
+ Fortsettelse i:
+ </xsl:when>
+ <xsl:when test="@ind2=1">
+ Fortsettes delvis i:
+ </xsl:when>
+ <xsl:when test="@ind2=2">
+ Avløst av:
+ </xsl:when>
+ <xsl:when test="@ind2=3">
+ Delvis avløst av:
+ </xsl:when>
+ <xsl:when test="@ind2=4">
+ Gått inn i:
+ </xsl:when>
+ <xsl:when test="@ind2=5">
+ Delvis gått inn i:
+ </xsl:when>
+ <xsl:when test="@ind2=6">
+ Fortsettes av: ...; og ...
+ </xsl:when>
+ <xsl:when test="@ind2=7">
+ Slått sammen med: .., til: ...
+ </xsl:when>
+ </xsl:choose>
+ </span>
+ <xsl:variable name="f785">
+ <xsl:call-template name="subfieldSelect">
+ <xsl:with-param name="codes">a_t</xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <a><xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=<xsl:value-of select="translate($f785, '()', '')"/></xsl:attribute>
+ <xsl:value-of select="translate($f785, '()', '')"/>
+ </a>
+
+ </span>
+ </xsl:for-each>
+ </xsl:if>
+
+ <!-- This will only work if the OPACBaseURL syspref is set. -->
+ <xsl:if test="string-length($OPACBaseURL) > 0">
+ <p>OPAC View: <a>
+ <xsl:attribute name="href">http://<xsl:value-of select="$OPACBaseURL"/>/cgi-bin/koha/opac-detail.pl?biblionumber=<xsl:value-of select="$biblionumber"/></xsl:attribute>
+ <xsl:attribute name="target">_blank</xsl:attribute>
+ Open in new window
+ </a></p>
+ </xsl:if>
+
+ </xsl:template>
+
+ <xsl:template name="part">
+ <xsl:variable name="partNumber">
+ <xsl:call-template name="specialSubfieldSelect">
+ <xsl:with-param name="axis">n</xsl:with-param>
+ <xsl:with-param name="anyCodes">n</xsl:with-param>
+ <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="partName">
+ <xsl:call-template name="specialSubfieldSelect">
+ <xsl:with-param name="axis">p</xsl:with-param>
+ <xsl:with-param name="anyCodes">p</xsl:with-param>
+ <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="string-length(normalize-space($partNumber))">
+ <xsl:call-template name="chopPunctuation">
+ <xsl:with-param name="chopString" select="$partNumber"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="string-length(normalize-space($partName))">
+ <xsl:call-template name="chopPunctuation">
+ <xsl:with-param name="chopString" select="$partName"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="specialSubfieldSelect">
+ <xsl:param name="anyCodes"/>
+ <xsl:param name="axis"/>
+ <xsl:param name="beforeCodes"/>
+ <xsl:param name="afterCodes"/>
+ <xsl:variable name="str">
+ <xsl:for-each select="marc:subfield">
+ <xsl:if test="contains($anyCodes, @code) or (contains($beforeCodes,@code) and following-sibling::marc:subfield[@code=$axis]) or (contains($afterCodes,@code) and preceding-sibling::marc:subfield[@code=$axis])">
+ <xsl:value-of select="text()"/>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
+ </xsl:template>
+</xsl:stylesheet>
--- /dev/null
+<?xml version='1.0'?>
+<xsl:stylesheet version="1.0" xmlns:marc="http://www.loc.gov/MARC21/slim" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:template name="datafield">
+ <xsl:param name="tag"/>
+ <xsl:param name="ind1"><xsl:text> </xsl:text></xsl:param>
+ <xsl:param name="ind2"><xsl:text> </xsl:text></xsl:param>
+ <xsl:param name="subfields"/>
+ <xsl:element name="datafield">
+ <xsl:attribute name="tag">
+ <xsl:value-of select="$tag"/>
+ </xsl:attribute>
+ <xsl:attribute name="ind1">
+ <xsl:value-of select="$ind1"/>
+ </xsl:attribute>
+ <xsl:attribute name="ind2">
+ <xsl:value-of select="$ind2"/>
+ </xsl:attribute>
+ <xsl:copy-of select="$subfields"/>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template name="subfieldSelect">
+ <xsl:param name="codes"/>
+ <xsl:param name="delimeter"><xsl:text> </xsl:text></xsl:param>
+ <xsl:param name="subdivCodes"/>
+ <xsl:param name="subdivDelimiter"/>
+ <xsl:variable name="str">
+ <xsl:for-each select="marc:subfield">
+ <xsl:if test="contains($codes, @code)">
+ <xsl:if test="contains($subdivCodes, @code)">
+ <xsl:value-of select="$subdivDelimiter"/>
+ </xsl:if>
+ <xsl:value-of select="text()"/><xsl:value-of select="$delimeter"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:value-of select="substring($str,1,string-length($str)-string-length($delimeter))"/>
+ </xsl:template>
+
+ <xsl:template name="buildSpaces">
+ <xsl:param name="spaces"/>
+ <xsl:param name="char"><xsl:text> </xsl:text></xsl:param>
+ <xsl:if test="$spaces>0">
+ <xsl:value-of select="$char"/>
+ <xsl:call-template name="buildSpaces">
+ <xsl:with-param name="spaces" select="$spaces - 1"/>
+ <xsl:with-param name="char" select="$char"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="chopPunctuation">
+ <xsl:param name="chopString"/>
+ <xsl:variable name="length" select="string-length($chopString)"/>
+ <xsl:choose>
+ <xsl:when test="$length=0"/>
+ <xsl:when test="contains('.:,;/ ', substring($chopString,$length,1))">
+ <xsl:call-template name="chopPunctuation">
+ <xsl:with-param name="chopString" select="substring($chopString,1,$length - 1)"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="not($chopString)"/>
+ <xsl:otherwise><xsl:value-of select="$chopString"/></xsl:otherwise>
+ </xsl:choose>
+<xsl:text> </xsl:text>
+ </xsl:template>
+
+<xsl:template name="nameABCDQ">
+<xsl:call-template name="chopPunctuation">
+<xsl:with-param name="chopString">
+<xsl:call-template name="subfieldSelect">
+<xsl:with-param name="codes">aq</xsl:with-param>
+</xsl:call-template>
+</xsl:with-param>
+<xsl:with-param name="punctuation">
+<xsl:text>:,;/ </xsl:text>
+</xsl:with-param>
+</xsl:call-template>
+<xsl:call-template name="termsOfAddress"/>
+</xsl:template>
+
+<xsl:template name="nameABCDN">
+<xsl:for-each select="marc:subfield[@code='a']">
+<xsl:call-template name="chopPunctuation">
+<xsl:with-param name="chopString" select="."/>
+</xsl:call-template>
+</xsl:for-each>
+<xsl:for-each select="marc:subfield[@code='b']">
+<xsl:value-of select="."/>
+</xsl:for-each>
+<xsl:if test="marc:subfield[@code='c'] or marc:subfield[@code='d'] or marc:subfield[@code='n']">
+<xsl:call-template name="subfieldSelect">
+<xsl:with-param name="codes">cdn</xsl:with-param>
+</xsl:call-template>
+</xsl:if>
+</xsl:template>
+
+<xsl:template name="nameACDEQ">
+<xsl:call-template name="subfieldSelect">
+<xsl:with-param name="codes">acdeq</xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<xsl:template name="termsOfAddress">
+<xsl:if test="marc:subfield[@code='b' or @code='c']">
+<xsl:call-template name="chopPunctuation">
+<xsl:with-param name="chopString">
+<xsl:call-template name="subfieldSelect">
+<xsl:with-param name="codes">bc</xsl:with-param>
+</xsl:call-template>
+</xsl:with-param>
+</xsl:call-template>
+</xsl:if>
+</xsl:template>
+
+ <!-- Function m880Select: Display Alternate Graphic Representation (MARC 880) for selected latin "base"tags
+ - should be called immediately before the corresonding latin tags are processed
+ - tags in right-to-left languages are displayed floating right
+ * Parameter:
+ + basetags: display these tags if found in linkage section ( subfield 6) of tag 880
+ + codes: display these subfields codes
+ * Options:
+ - class: wrap output in <span class="$class">...</span>
+ - label: prefix each(!) tag with label $label
+ - bibno: link to biblionumber $bibno
+ - index: build a search link using index $index with subfield $a as key; if subfield $9 is present use index 'an' with key $9 instead.
+ * Limitations:
+ - displays every field on a separate line (to switch between rtl and ltr)
+ * Pitfalls:
+ (!) output might be empty
+ -->
+ <xsl:template name="m880Select">
+ <xsl:param name="basetags"/> <!-- e.g. 100,700,110,710 -->
+ <xsl:param name="codes"/> <!-- e.g. abc -->
+ <xsl:param name="class"/> <!-- e.g. results_summary -->
+ <xsl:param name="label"/> <!-- e.g. Edition -->
+ <xsl:param name="bibno"/>
+ <xsl:param name="index"/> <!-- e.g. au -->
+
+ <xsl:for-each select="marc:datafield[@tag=880]">
+ <xsl:variable name="code6" select="marc:subfield[@code=6]"/>
+ <xsl:if test="contains(string($basetags), substring($code6,1,3))">
+ <span>
+ <xsl:if test="boolean($class)">
+ <xsl:attribute name="class"><xsl:value-of select="$class"/></xsl:attribute>
+ </xsl:if>
+ <xsl:choose>
+ <!-- display right-to-left tags floating right of their left-to-right counterparts -->
+ <xsl:when test="substring($code6,10,2) ='/r'">
+ <xsl:attribute name="style">display:block; text-align:right; float:right; width:50%; padding-left:20px</xsl:attribute>
+ <xsl:attribute name="dir">rtl</xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="style">display:block; </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="boolean($label)">
+ <span class="label">
+ <xsl:value-of select="$label"/>
+ </span>
+ </xsl:if>
+ <xsl:variable name="str">
+ <xsl:for-each select="marc:subfield">
+ <xsl:if test="contains($codes, @code)">
+ <xsl:value-of select="text()"/>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="boolean($bibno)">
+ <a>
+ <xsl:attribute name="href">/cgi-bin/koha/opac-detail.pl?biblionumber=<xsl:value-of select="$bibno"/></xsl:attribute>
+ <xsl:value-of select="$str"/>
+ </a>
+ </xsl:when>
+ <xsl:when test="boolean($index) and boolean(marc:subfield[@code=9])">
+ <a>
+ <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=an:<xsl:value-of select="marc:subfield[@code=9]"/></xsl:attribute>
+ <xsl:value-of select="$str"/>
+ </a>
+ </xsl:when>
+ <xsl:when test="boolean($index)">
+ <a>
+ <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=<xsl:value-of select="$index"/>:<xsl:value-of select="marc:subfield[@code='a']"/></xsl:attribute>
+ <xsl:value-of select="$str"/>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$str"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </span>
+ </xsl:if>
+ </xsl:for-each>
+
+ </xsl:template>
+
+</xsl:stylesheet>
+
+<!-- Stylus Studio meta-information - (c)1998-2002 eXcelon Corp.
+<metaInformation>
+<scenarios/><MapperInfo srcSchemaPath="" srcSchemaRoot="" srcSchemaPathIsRelative="yes" srcSchemaInterpretAsXML="no" destSchemaPath="" destSchemaRoot="" destSchemaPathIsRelative="yes" destSchemaInterpretAsXML="no"/>
+</metaInformation>
+-->
<xsl:stylesheet version="1.0"
xmlns:marc="http://www.loc.gov/MARC21/slim"
xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="marc">
- <xsl:import href="MARC21slimUtils.xsl"/>
- <xsl:output method="xml" indent="yes"/>
- <xsl:template match="/">
- <xsl:if test="marc:collection">
- <oai_dc:dcCollection xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
- <xsl:for-each select="marc:collection">
- <xsl:for-each select="marc:record">
- <oai_dc:dc>
- <xsl:apply-templates select="."/>
- </oai_dc:dc>
- </xsl:for-each>
- </xsl:for-each>
- </oai_dc:dcCollection>
- </xsl:if>
- <xsl:if test="marc:record">
- <oai_dc:dc
- xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
- <xsl:apply-templates/>
- </oai_dc:dc>
- </xsl:if>
- </xsl:template>
- <xsl:template match="marc:record">
- <xsl:variable name="leader" select="marc:leader"/>
- <xsl:variable name="leader6" select="substring($leader,7,1)"/>
- <xsl:variable name="leader7" select="substring($leader,8,1)"/>
- <xsl:variable name="controlField008" select="marc:controlfield[@tag=008]"/>
-
- <xsl:for-each select="marc:datafield[@tag=200]">
- <dc:title>
- <xsl:call-template name="subfieldSelect">
- <xsl:with-param name="codes">a</xsl:with-param>
- </xsl:call-template>
- </dc:title>
- </xsl:for-each>
- <xsl:for-each select="marc:datafield[@tag=700]|marc:datafield[@tag=701]|marc:datafield[@tag=702]|marc:datafield[@tag=710]|marc:datafield[@tag=711]|marc:datafield[@tag=712]">
- <dc:creator>
- <xsl:value-of select="marc:subfield[@code='a']"/>
- <xsl:if test="marc:subfield[@code='b']">,
- <xsl:value-of select="marc:subfield[@code='b']"/>
- </xsl:if>
- <xsl:choose>
- <xsl:when test="marc:subfield[@code='4']='010'">, adapter</xsl:when>
- <xsl:when test="marc:subfield[@code='4']='020'">, annotator</xsl:when>
- <xsl:when test="marc:subfield[@code='4']='075'">, author of afterword</xsl:when>
- <xsl:when test="marc:subfield[@code='4']='080'">, prefacer</xsl:when>
- <xsl:when test="marc:subfield[@code='4']='100'">, bibliographic antecedent</xsl:when>
- <xsl:when test="marc:subfield[@code='4']='205'">, collaborator</xsl:when>
- <xsl:when test="marc:subfield[@code='4']='212'">, commentator</xsl:when>
- <xsl:when test="marc:subfield[@code='4']='220'">, compiler</xsl:when>
- <xsl:when test="marc:subfield[@code='4']='230'">, composer</xsl:when>
- <xsl:when test="marc:subfield[@code='4']='245'">, conceptor</xsl:when>
- <xsl:when test="marc:subfield[@code='4']='295'">, degree-grantor</xsl:when>
- <xsl:when test="marc:subfield[@code='4']='340'">, editor</xsl:when>
- <xsl:when test="marc:subfield[@code='4']='370'">, film editor</xsl:when>
- <xsl:when test="marc:subfield[@code='4']='395'">, founder</xsl:when>
- <xsl:when test="marc:subfield[@code='4']='440'">, illustrator</xsl:when>
- <xsl:when test="marc:subfield[@code='4']='520'">, lyricist</xsl:when>
- <xsl:when test="marc:subfield[@code='4']='557'">, organiser of meeting</xsl:when>
- <xsl:when test="marc:subfield[@code='4']='570'">, other</xsl:when>
- <xsl:when test="marc:subfield[@code='4']='600'">, photographer</xsl:when>
- <xsl:when test="marc:subfield[@code='4']='605'">, presenter</xsl:when>
- <xsl:when test="marc:subfield[@code='4']='650'">, publisher</xsl:when>
- <xsl:when test="marc:subfield[@code='4']='651'">, publishing director</xsl:when>
- <xsl:when test="marc:subfield[@code='4']='673'">, research team head</xsl:when>
- <xsl:when test="marc:subfield[@code='4']='675'">, reviewer</xsl:when>
- <xsl:when test="marc:subfield[@code='4']='710'">, redactor</xsl:when>
- <xsl:when test="marc:subfield[@code='4']='723'">, sponsor</xsl:when>
- <xsl:when test="marc:subfield[@code='4']='727'">, thesis advisor</xsl:when>
- <xsl:when test="marc:subfield[@code='4']='730'">, translator</xsl:when>
- </xsl:choose>
- </dc:creator>
- </xsl:for-each>
- <dc:type>
- <xsl:value-of select="marc:datafield[@tag=200]/marc:subfield[@code='b']"/>
- </dc:type>
- <xsl:for-each select="marc:datafield[@tag=210]/marc:subfield[@code='c']">
- <dc:publisher>
- <xsl:value-of select="."/>
- </dc:publisher>
- </xsl:for-each>
- <xsl:for-each select="marc:datafield[@tag=210]/marc:subfield[@code='d']">
- <dc:date>
- <xsl:value-of select="."/>
- </dc:date>
- </xsl:for-each>
- <xsl:for-each select="marc:datafield[@tag=101]/marc:subfield[@code='a']">
- <dc:language>
- <xsl:value-of select="."/>
- </dc:language>
- </xsl:for-each>
- <xsl:for-each select="marc:datafield[@tag=856]/marc:subfield[@code='q']">
- <dc:format>
- <xsl:value-of select="."/>
- </dc:format>
- </xsl:for-each>
- <xsl:for-each select="marc:datafield[@tag=520]">
- <dc:description>
- <xsl:value-of select="marc:subfield[@code='a']"/>
- </dc:description>
- </xsl:for-each>
- <xsl:for-each select="marc:datafield[@tag=521]">
- <dc:description>
- <xsl:value-of select="marc:subfield[@code='a']"/>
- </dc:description>
- </xsl:for-each>
- <xsl:for-each select="marc:datafield[300<@tag][@tag<=345]">
- <dc:description>
- <xsl:value-of select="marc:subfield[@code='a']"/>
- </dc:description>
- </xsl:for-each>
- <xsl:for-each select="marc:datafield[@tag=600]|marc:datafield[@tag=601]|marc:datafield[@tag=602]|marc:datafield[@tag=604]|marc:datafield[@tag=605]|marc:datafield[@tag=606]">
- <dc:subject>
- <xsl:call-template name="subfieldSelect">
- <xsl:with-param name="codes">abcdq</xsl:with-param>
- </xsl:call-template>
- </dc:subject>
- </xsl:for-each>
- <xsl:for-each select="marc:datafield[@tag=752]">
- <dc:coverage>
- <xsl:call-template name="subfieldSelect">
- <xsl:with-param name="codes">abcd</xsl:with-param>
- </xsl:call-template>
- </dc:coverage>
- </xsl:for-each>
- <xsl:for-each select="marc:datafield[@tag=530]">
- <dc:relation type="original">
- <xsl:call-template name="subfieldSelect">
- <xsl:with-param name="codes">abcdu</xsl:with-param>
- </xsl:call-template>
- </dc:relation>
- </xsl:for-each>
- <xsl:for-each select="marc:datafield[@tag=461]|marc:datafield[@tag=464]">
- <dc:relation>
- <xsl:call-template name="subfieldSelect">
- <xsl:with-param name="codes">t</xsl:with-param>
- </xsl:call-template>
- </dc:relation>
- </xsl:for-each>
- <xsl:for-each select="marc:datafield[@tag=856]">
- <dc:identifier>
- <xsl:value-of select="marc:subfield[@code='u']"/>
- </dc:identifier>
- </xsl:for-each>
- <xsl:for-each select="marc:datafield[@tag=010]">
- <dc:identifier>
- <xsl:text>URN:ISBN:</xsl:text>
- <xsl:value-of select="marc:subfield[@code='a']"/>
- </dc:identifier>
- </xsl:for-each>
- <xsl:for-each select="marc:datafield[@tag=011]">
- <dc:identifier>
- <xsl:text>URN:ISSN:</xsl:text>
- <xsl:value-of select="marc:subfield[@code='a']"/>
- </dc:identifier>
- </xsl:for-each>
- <xsl:for-each select="marc:datafield[@tag=090]">
- <dc:identifier>
- <xsl:text>http://opac.mylibrary.org/bib/</xsl:text>
- <xsl:value-of select="marc:subfield[@code='a']"/>
- </dc:identifier>
- </xsl:for-each>
- <xsl:for-each select="marc:datafield[@tag=995]">
- <dc:identifier>
- <xsl:text>LOC:</xsl:text>
- <xsl:choose>
- <xsl:when test="marc:subfield[@code='c']='MAIN'">Main Branch</xsl:when>
- <xsl:when test="marc:subfield[@code='c']='BIB2'">Library 2</xsl:when>
- </xsl:choose>
- <xsl:foreach select="marc:subfield[@code='k']">
- <xsl:text>:</xsl:text>
- <xsl:value-of select="."/>
- </xsl:foreach>
- </dc:identifier>
- </xsl:for-each>
- </xsl:template>
+ <xsl:import href="MARC21slimUtils.xsl"/>
+ <xsl:output method="xml" indent="yes"/>
+ <xsl:template match="/">
+ <xsl:if test="marc:collection">
+ <oai_dc:dcCollection xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
+ <xsl:for-each select="marc:collection">
+ <xsl:for-each select="marc:record">
+ <oai_dc:dc>
+ <xsl:apply-templates select="."/>
+ </oai_dc:dc>
+ </xsl:for-each>
+ </xsl:for-each>
+ </oai_dc:dcCollection>
+ </xsl:if>
+ <xsl:if test="marc:record">
+ <oai_dc:dc
+ xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
+ <xsl:apply-templates/>
+ </oai_dc:dc>
+ </xsl:if>
+ </xsl:template>
+ <xsl:template match="marc:record">
+ <xsl:for-each select="marc:datafield[@tag=200]">
+ <dc:title>
+ <xsl:call-template name="subfieldSelect">
+ <xsl:with-param name="codes">a</xsl:with-param>
+ </xsl:call-template>
+ </dc:title>
+ </xsl:for-each>
+ <xsl:for-each select="marc:datafield[@tag=700]|marc:datafield[@tag=701]|marc:datafield[@tag=702]|marc:datafield[@tag=710]|marc:datafield[@tag=711]|marc:datafield[@tag=712]">
+ <dc:creator>
+ <xsl:value-of select="marc:subfield[@code='a']"/>
+ <xsl:if test="marc:subfield[@code='b']">
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="marc:subfield[@code='b']"/>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="marc:subfield[@code='4']='010'">, adapter</xsl:when>
+ <xsl:when test="marc:subfield[@code='4']='020'">, annotator</xsl:when>
+ <xsl:when test="marc:subfield[@code='4']='075'">, author of afterword</xsl:when>
+ <xsl:when test="marc:subfield[@code='4']='080'">, prefacer</xsl:when>
+ <xsl:when test="marc:subfield[@code='4']='100'">, bibliographic antecedent</xsl:when>
+ <xsl:when test="marc:subfield[@code='4']='205'">, collaborator</xsl:when>
+ <xsl:when test="marc:subfield[@code='4']='212'">, commentator</xsl:when>
+ <xsl:when test="marc:subfield[@code='4']='220'">, compiler</xsl:when>
+ <xsl:when test="marc:subfield[@code='4']='230'">, composer</xsl:when>
+ <xsl:when test="marc:subfield[@code='4']='245'">, conceptor</xsl:when>
+ <xsl:when test="marc:subfield[@code='4']='295'">, degree-grantor</xsl:when>
+ <xsl:when test="marc:subfield[@code='4']='340'">, editor</xsl:when>
+ <xsl:when test="marc:subfield[@code='4']='370'">, film editor</xsl:when>
+ <xsl:when test="marc:subfield[@code='4']='395'">, founder</xsl:when>
+ <xsl:when test="marc:subfield[@code='4']='440'">, illustrator</xsl:when>
+ <xsl:when test="marc:subfield[@code='4']='520'">, lyricist</xsl:when>
+ <xsl:when test="marc:subfield[@code='4']='557'">, organiser of meeting</xsl:when>
+ <xsl:when test="marc:subfield[@code='4']='570'">, other</xsl:when>
+ <xsl:when test="marc:subfield[@code='4']='600'">, photographer</xsl:when>
+ <xsl:when test="marc:subfield[@code='4']='605'">, presenter</xsl:when>
+ <xsl:when test="marc:subfield[@code='4']='650'">, publisher</xsl:when>
+ <xsl:when test="marc:subfield[@code='4']='651'">, publishing director</xsl:when>
+ <xsl:when test="marc:subfield[@code='4']='673'">, research team head</xsl:when>
+ <xsl:when test="marc:subfield[@code='4']='675'">, reviewer</xsl:when>
+ <xsl:when test="marc:subfield[@code='4']='710'">, redactor</xsl:when>
+ <xsl:when test="marc:subfield[@code='4']='723'">, sponsor</xsl:when>
+ <xsl:when test="marc:subfield[@code='4']='727'">, thesis advisor</xsl:when>
+ <xsl:when test="marc:subfield[@code='4']='730'">, translator</xsl:when>
+ </xsl:choose>
+ </dc:creator>
+ </xsl:for-each>
+ <dc:type>
+ <xsl:value-of select="marc:datafield[@tag=200]/marc:subfield[@code='b']"/>
+ </dc:type>
+ <xsl:for-each select="marc:datafield[@tag=210]/marc:subfield[@code='c']">
+ <dc:publisher>
+ <xsl:value-of select="."/>
+ </dc:publisher>
+ </xsl:for-each>
+ <xsl:for-each select="marc:datafield[@tag=210]/marc:subfield[@code='d']">
+ <dc:date>
+ <xsl:value-of select="."/>
+ </dc:date>
+ </xsl:for-each>
+ <xsl:for-each select="marc:datafield[@tag=101]/marc:subfield[@code='a']">
+ <dc:language>
+ <xsl:value-of select="."/>
+ </dc:language>
+ </xsl:for-each>
+ <xsl:for-each select="marc:datafield[@tag=856]/marc:subfield[@code='q']">
+ <dc:format>
+ <xsl:value-of select="."/>
+ </dc:format>
+ </xsl:for-each>
+ <xsl:for-each select="marc:datafield[@tag=520]">
+ <dc:description>
+ <xsl:value-of select="marc:subfield[@code='a']"/>
+ </dc:description>
+ </xsl:for-each>
+ <xsl:for-each select="marc:datafield[@tag=521]">
+ <dc:description>
+ <xsl:value-of select="marc:subfield[@code='a']"/>
+ </dc:description>
+ </xsl:for-each>
+ <xsl:for-each select="marc:datafield[300<@tag][@tag<=345]">
+ <dc:description>
+ <xsl:value-of select="marc:subfield[@code='a']"/>
+ </dc:description>
+ </xsl:for-each>
+ <xsl:for-each select="marc:datafield[@tag=600]|marc:datafield[@tag=601]|marc:datafield[@tag=602]|marc:datafield[@tag=604]|marc:datafield[@tag=605]|marc:datafield[@tag=606]">
+ <dc:subject>
+ <xsl:call-template name="subfieldSelect">
+ <xsl:with-param name="codes">abcdq</xsl:with-param>
+ </xsl:call-template>
+ </dc:subject>
+ </xsl:for-each>
+ <xsl:for-each select="marc:datafield[@tag=752]">
+ <dc:coverage>
+ <xsl:call-template name="subfieldSelect">
+ <xsl:with-param name="codes">abcd</xsl:with-param>
+ </xsl:call-template>
+ </dc:coverage>
+ </xsl:for-each>
+ <xsl:for-each select="marc:datafield[@tag=530]">
+ <dc:relation type="original">
+ <xsl:call-template name="subfieldSelect">
+ <xsl:with-param name="codes">abcdu</xsl:with-param>
+ </xsl:call-template>
+ </dc:relation>
+ </xsl:for-each>
+ <xsl:for-each select="marc:datafield[@tag=461]|marc:datafield[@tag=464]">
+ <dc:relation>
+ <xsl:call-template name="subfieldSelect">
+ <xsl:with-param name="codes">t</xsl:with-param>
+ </xsl:call-template>
+ </dc:relation>
+ </xsl:for-each>
+ <xsl:for-each select="marc:datafield[@tag=856]">
+ <dc:identifier>
+ <xsl:value-of select="marc:subfield[@code='u']"/>
+ </dc:identifier>
+ </xsl:for-each>
+ <xsl:for-each select="marc:datafield[@tag=010]">
+ <dc:identifier>
+ <xsl:text>URN:ISBN:</xsl:text>
+ <xsl:value-of select="marc:subfield[@code='a']"/>
+ </dc:identifier>
+ </xsl:for-each>
+ <xsl:for-each select="marc:datafield[@tag=011]">
+ <dc:identifier>
+ <xsl:text>URN:ISSN:</xsl:text>
+ <xsl:value-of select="marc:subfield[@code='a']"/>
+ </dc:identifier>
+ </xsl:for-each>
+ <xsl:for-each select="marc:datafield[@tag=090]">
+ <dc:identifier>
+ <xsl:text>http://opac.mylibrary.org/bib/</xsl:text>
+ <xsl:value-of select="marc:subfield[@code='a']"/>
+ </dc:identifier>
+ </xsl:for-each>
+ <xsl:for-each select="marc:datafield[@tag=995]">
+ <dc:identifier>
+ <xsl:text>LOC:</xsl:text>
+ <xsl:choose>
+ <xsl:when test="marc:subfield[@code='c']='MAIN'">Main Branch</xsl:when>
+ <xsl:when test="marc:subfield[@code='c']='BIB2'">Library 2</xsl:when>
+ </xsl:choose>
+ <xsl:foreach select="marc:subfield[@code='k']">
+ <xsl:text>:</xsl:text>
+ <xsl:value-of select="."/>
+ </xsl:foreach>
+ </dc:identifier>
+ </xsl:for-each>
+ </xsl:template>
</xsl:stylesheet>
font-size : 100%;
}
-input[type=submit], input[type=button], input[type=reset] {
- background : #b8d0e6 url(../../images/submit-bg.gif) repeat-x 0 0;
- background-color : #b8d0e6;
+input[type=submit],
+input[type=button],
+input[type=reset],
+fieldset.brief input[type=submit],
+fieldset.brief input[type=button],
+fieldset.brief input[type=reset]
+{
+ background: #f4f9fc; /* Old browsers */
+ background: -moz-linear-gradient(top, #f4f9fc 0%, #dfeefa 4%, #bfd5ea 93%, #a1c4e2 97%, #b8d0e6 100%); /* FF3.6+ */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f4f9fc), color-stop(4%,#dfeefa), color-stop(93%,#bfd5ea), color-stop(97%,#a1c4e2), color-stop(100%,#b8d0e6)); /* Chrome,Safari4+ */
+ background: -webkit-linear-gradient(top, #f4f9fc 0%,#dfeefa 4%,#bfd5ea 93%,#a1c4e2 97%,#b8d0e6 100%); /* Chrome10+,Safari5.1+ */
+ background: -o-linear-gradient(top, #f4f9fc 0%,#dfeefa 4%,#bfd5ea 93%,#a1c4e2 97%,#b8d0e6 100%); /* Opera11.10+ */
+ background: -ms-linear-gradient(top, #f4f9fc 0%,#dfeefa 4%,#bfd5ea 93%,#a1c4e2 97%,#b8d0e6 100%); /* IE10+ */
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f4f9fc', endColorstr='#b8d0e6',GradientType=0 ); /* IE6-9 */
+ background: linear-gradient(top, #f4f9fc 0%,#dfeefa 4%,#bfd5ea 93%,#a1c4e2 97%,#b8d0e6 100%); /* W3C */
border-top: 1px solid #cccccc;
border-left: 1px solid #cccccc;
border-right: 1px solid #eeeeee;
padding : 4px;
}
-input[type=submit]:active, input[type=button], input[type=reset] {
+input[type=submit]:active, input[type=button]:active, input[type=reset]:active {
border: 1px inset #666666;
}
}
#opac-main-search {
- background-image : url( ../../images/menu-background.gif);
- background-repeat : repeat-x;
- background-color : #739ACF;
- background-position : -10px top;
+ background: #8fb4e8; /* Old browsers */
+ background: -moz-linear-gradient(top, #8fb4e8 0%, #8cb1e5 19%, #80a8dc 48%, #7da5d8 52%, #7198cf 83%, #618ac0 100%); /* FF3.6+ */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#8fb4e8), color-stop(19%,#8cb1e5), color-stop(48%,#80a8dc), color-stop(52%,#7da5d8), color-stop(83%,#7198cf), color-stop(100%,#618ac0)); /* Chrome,Safari4+ */
+ background: -webkit-linear-gradient(top, #8fb4e8 0%,#8cb1e5 19%,#80a8dc 48%,#7da5d8 52%,#7198cf 83%,#618ac0 100%); /* Chrome10+,Safari5.1+ */
+ background: -o-linear-gradient(top, #8fb4e8 0%,#8cb1e5 19%,#80a8dc 48%,#7da5d8 52%,#7198cf 83%,#618ac0 100%); /* Opera 11.10+ */
+ background: -ms-linear-gradient(top, #8fb4e8 0%,#8cb1e5 19%,#80a8dc 48%,#7da5d8 52%,#7198cf 83%,#618ac0 100%); /* IE10+ */
+ background: linear-gradient(top, #8fb4e8 0%,#8cb1e5 19%,#80a8dc 48%,#7da5d8 52%,#7198cf 83%,#618ac0 100%); /* W3C */
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#8fb4e8', endColorstr='#618ac0',GradientType=0 ); /* IE6-9 */
border-top : 1px solid #335599;
border-bottom : 1px solid #335599;
margin-left : -10px;
}
div.alert {
- background : #FFC url(../../images/alert-bg.gif) repeat-x left 0;
- text-align : center;
+ background: #fef8d3; /* Old browsers */
+ background: -moz-linear-gradient(top, #fef8d3 0%, #ffec91 9%, #ffed87 89%, #f9dc00 100%); /* FF3.6+ */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#fef8d3), color-stop(9%,#ffec91), color-stop(89%,#ffed87), color-stop(100%,#f9dc00)); /* Chrome,Safari4+ */
+ background: -webkit-linear-gradient(top, #fef8d3 0%,#ffec91 9%,#ffed87 89%,#f9dc00 100%); /* Chrome10+,Safari5.1+ */
+ background: -o-linear-gradient(top, #fef8d3 0%,#ffec91 9%,#ffed87 89%,#f9dc00 100%); /* Opera11.10+ */
+ background: -ms-linear-gradient(top, #fef8d3 0%,#ffec91 9%,#ffed87 89%,#f9dc00 100%); /* IE10+ */
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fef8d3', endColorstr='#f9dc00',GradientType=0 ); /* IE6-9 */
+ background: linear-gradient(top, #fef8d3 0%,#ffec91 9%,#ffed87 89%,#f9dc00 100%); /* W3C */
+ text-align : center;
}
div.alert strong {
}
div.message {
- background : white url("../../images/message-bg.gif") repeat-x left 0;
- border : 1px solid #bcbcbc;
+ background: #ffffff; /* Old browsers */
+ background: -moz-linear-gradient(top, #ffffff 0%, #f4f6fa 2%, #eaeef5 23%, #e8edf6 94%, #cddbf2 100%); /* FF3.6+ */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(2%,#f4f6fa), color-stop(23%,#eaeef5), color-stop(94%,#e8edf6), color-stop(100%,#cddbf2)); /* Chrome,Safari4+ */
+ background: -webkit-linear-gradient(top, #ffffff 0%,#f4f6fa 2%,#eaeef5 23%,#e8edf6 94%,#cddbf2 100%); /* Chrome10+,Safari5.1+ */
+ background: -o-linear-gradient(top, #ffffff 0%,#f4f6fa 2%,#eaeef5 23%,#e8edf6 94%,#cddbf2 100%); /* Opera11.10+ */
+ background: -ms-linear-gradient(top, #ffffff 0%,#f4f6fa 2%,#eaeef5 23%,#e8edf6 94%,#cddbf2 100%); /* IE10+ */
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#cddbf2',GradientType=0 ); /* IE6-9 */
+ background: linear-gradient(top, #ffffff 0%,#f4f6fa 2%,#eaeef5 23%,#e8edf6 94%,#cddbf2 100%); /* W3C */
+ border : 1px solid #bcbcbc;
width : 55%;
}
}
#opac-main-search #listsmenu .bd {
- background-color : #f3f3f3;
+ background: #eef4fe; /* Old browsers */
+ background: -moz-linear-gradient(left, #eef4fe 0%, #eef4fe 88%, #f6f9fe 98%, #ffffff 99%, #a5c2f6 99%, #e6eefe 100%, #cbdefe 100%); /* FF3.6+ */
+ background: -webkit-gradient(linear, left top, right top, color-stop(0%,#eef4fe), color-stop(88%,#eef4fe), color-stop(98%,#f6f9fe), color-stop(99%,#ffffff), color-stop(99%,#a5c2f6), color-stop(100%,#e6eefe), color-stop(100%,#cbdefe)); /* Chrome,Safari4+ */
+ background: -webkit-linear-gradient(left, #eef4fe 0%,#eef4fe 88%,#f6f9fe 98%,#ffffff 99%,#a5c2f6 99%,#e6eefe 100%,#cbdefe 100%); /* Chrome10+,Safari5.1+ */
+ background: -o-linear-gradient(left, #eef4fe 0%,#eef4fe 88%,#f6f9fe 98%,#ffffff 99%,#a5c2f6 99%,#e6eefe 100%,#cbdefe 100%); /* Opera11.10+ */
+ background: -ms-linear-gradient(left, #eef4fe 0%,#eef4fe 88%,#f6f9fe 98%,#ffffff 99%,#a5c2f6 99%,#e6eefe 100%,#cbdefe 100%); /* IE10+ */
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eef4fe', endColorstr='#cbdefe',GradientType=1 ); /* IE6-9 */
+ background: linear-gradient(left, #eef4fe 0%,#eef4fe 88%,#f6f9fe 98%,#ffffff 99%,#a5c2f6 99%,#e6eefe 100%,#cbdefe 100%); /* W3C */
border : 1px solid #739acf;
- background-image : url("../../images/listmenu-container-bg.gif");
- background-position : top right;
- background-repeat : repeat-y;
padding : .3em 1em 0 0;
}
}
#opac-main-search input.submit {
- background : #b8d0e6 url(../../images/submit-bg.gif) repeat-x 0 0;
- background-color : #b8d0e6;
- border-top: 1px solid #cccccc;
- border-left: 1px solid #cccccc;
- border-right: 1px solid #eeeeee;
- border-bottom: 1px solid #eeeeee;
+ background: #e6f3fe; /* Old browsers */
+ background: -moz-linear-gradient(top, #e6f3fe 0%, #dfeefa 8%, #bfd5ea 49%, #b8d0e6 52%, #b8d0e6 100%); /* FF3.6+ */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#e6f3fe), color-stop(8%,#dfeefa), color-stop(49%,#bfd5ea), color-stop(52%,#b8d0e6), color-stop(100%,#b8d0e6)); /* Chrome,Safari4+ */
+ background: -webkit-linear-gradient(top, #e6f3fe 0%,#dfeefa 8%,#bfd5ea 49%,#b8d0e6 52%,#b8d0e6 100%); /* Chrome10+,Safari5.1+ */
+ background: -o-linear-gradient(top, #e6f3fe 0%,#dfeefa 8%,#bfd5ea 49%,#b8d0e6 52%,#b8d0e6 100%); /* Opera11.10+ */
+ background: -ms-linear-gradient(top, #e6f3fe 0%,#dfeefa 8%,#bfd5ea 49%,#b8d0e6 52%,#b8d0e6 100%); /* IE10+ */
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#e6f3fe', endColorstr='#b8d0e6',GradientType=0 ); /* IE6-9 */
+ background: linear-gradient(top, #e6f3fe 0%,#dfeefa 8%,#bfd5ea 49%,#b8d0e6 52%,#b8d0e6 100%); /* W3C */
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ -webkit-box-shadow: 1px 1px 1px 1px , , .3);
+ -moz-box-shadow: 1px 1px 1px 1px , , .3);
+ box-shadow: 1px 1px 1px 1px , , .3);
+
color : #333;
font-weight : normal;
font-size : 80%;
}
div#menu li a {
+ background: #eeeeee; /* Old browsers */
+ background: -moz-linear-gradient(left, #eeeeee 0%, #eeeeee 96%, #e6e6e6 97%, #cccccc 99%, #c1c1c1 100%); /* FF3.6+ */
+ background: -webkit-gradient(linear, left top, right top, color-stop(0%,#eeeeee), color-stop(96%,#eeeeee), color-stop(97%,#e6e6e6), color-stop(99%,#cccccc), color-stop(100%,#c1c1c1)); /* Chrome,Safari4+ */
+ background: -webkit-linear-gradient(left, #eeeeee 0%,#eeeeee 96%,#e6e6e6 97%,#cccccc 99%,#c1c1c1 100%); /* Chrome10+,Safari5.1+ */
+ background: -o-linear-gradient(left, #eeeeee 0%,#eeeeee 96%,#e6e6e6 97%,#cccccc 99%,#c1c1c1 100%); /* Opera 11.10+ */
+ background: -ms-linear-gradient(left, #eeeeee 0%,#eeeeee 96%,#e6e6e6 97%,#cccccc 99%,#c1c1c1 100%); /* IE10+ */
+ background: linear-gradient(left, #eeeeee 0%,#eeeeee 96%,#e6e6e6 97%,#cccccc 99%,#c1c1c1 100%); /* W3C */
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#c1c1c1',GradientType=1 ); /* IE6-9 */
text-decoration : none;
display : block;
- background : #EEE url(../../images/side-tab-gradient.gif) repeat-y top right;
border : 1px solid #979797;
font-size : 111%;
margin : .5em 0;
}
div#menu li a:hover {
- background : #E8F0F6 url(../../images/side-tab-gradient-hover.gif) repeat-y top right;
+ background: #eaeef5; /* Old browsers */
+ background: -moz-linear-gradient(left, #eaeef5 0%, #dee6f4 96%, #c4d5ef 98%, #a2bee8 100%); /* FF3.6+ */
+ background: -webkit-gradient(linear, left top, right top, color-stop(0%,#eaeef5), color-stop(96%,#dee6f4), color-stop(98%,#c4d5ef), color-stop(100%,#a2bee8)); /* Chrome,Safari4+ */
+ background: -webkit-linear-gradient(left, #eaeef5 0%,#dee6f4 96%,#c4d5ef 98%,#a2bee8 100%); /* Chrome10+,Safari5.1+ */
+ background: -o-linear-gradient(left, #eaeef5 0%,#dee6f4 96%,#c4d5ef 98%,#a2bee8 100%); /* Opera 11.10+ */
+ background: -ms-linear-gradient(left, #eaeef5 0%,#dee6f4 96%,#c4d5ef 98%,#a2bee8 100%); /* IE10+ */
+ background: linear-gradient(left, #eaeef5 0%,#dee6f4 96%,#c4d5ef 98%,#a2bee8 100%); /* W3C */
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eaeef5', endColorstr='#a2bee8',GradientType=1 ); /* IE6-9 */
}
div#menu li.active a:hover {
background-color:#D9D9D9;
}
.nav_results ul.pg_menu {
- height:25px;
border-top: 1px solid #D0D0D0;
+ white-space : nowrap;
}
.nav_results ul.pg_menu li {
color:#B2B2B2;
- display:block;
- float:left;
- padding:5px 0;
+ display:inline;
list-style:none;
- text-align:center;
+ margin: 0;
}
-.nav_results ul.pg_menu li.back_results {
- padding:5px 0px;
- width:45%;
+.nav_results ul.pg_menu li.back_results a {
border-left: 1px solid #D0D0D0;
border-right: 1px solid #D0D0D0;
}
-.nav_results ul.pg_menu li a {
+.nav_results ul.pg_menu li a,
+.nav_results ul.pg_menu li span {
+ background-color: #F3F3F3;
+ display : block;
+ float:left;
+ padding:.4em .5em;
text-decoration:none;
font-weight:normal;
- color:#4D4D4D;
+ text-align:center;
}
-.nav_results ul.pg_menu li a:hover {
- color:#006699;
+
+.nav_results ul.pg_menu li span {
+ color : #B2B2B2;
}
-.nav_results ul.pg_menu li.left_results {
- margin-right:10px;
+
+.nav_results ul.pg_menu li.left_results a {
+ padding-left : 0;
}
-.nav_results ul.pg_menu li.right_results {
- margin-left:10px;
+
+.nav_results ul.pg_menu li a:hover {
}
.nav_results #listResults{
<link rel="stylesheet" type="text/css" href="[% themelang %]/lib/calendar/calendar-system.css"/>
<script type="text/javascript" src="[% themelang %]/lib/calendar/calendar.js"></script>
-<script type="text/javascript" src="[% themelang %]/lib/calendar/calendar-en.js"></script>
+<script type="text/javascript">
+// full day names
+Calendar._DN = new Array(_("Sunday"),_("Monday"),_("Tuesday"),_("Wednesday"),_("Thursday"),_("Friday"),_("Saturday"),_("Sunday"));
+// short day names
+Calendar._SDN = new Array(_("Sun"),_("Mon"),_("Tue"),_("Wed"),_("Thu"),_("Fri"),_("Sat"),_("Sun"));
+// First day of the week. "0" means display Sunday first, "1" means display
+// Monday first, etc.
+Calendar._FD = 1;
+// full month names
+Calendar._MN = new Array(_("January"),_("February"),_("March"),_("April"),_("May"),_("June"),_("July"),_("August"),_("September"),_("October"),_("November"),_("December"));
+// short month names
+Calendar._SMN = new Array(_("Jan"),_("Feb"),_("Mar"),_("Apr"),_("May"),_("Jun"),_("Jul"),_("Aug"),_("Sep"),_("Oct"),_("Nov"),_("Dec"));
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = _("About the calendar");
+
+Calendar._TT["ABOUT"] =
+_("Dhtml Date/Time Selector")+"\n" +
+"(c) dynarch.com 2002-2003\n" + // don't translate this this ;-)
+_("For latest version visit: http://dynarch.com/mishoo/calendar.epl")+"\n" +
+_("Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details.") +
+"\n\n" +
+_("Date selection:")+"\n" +
+_("- Use the \xab, \xbb buttons to select year")+"\n" +
+_("- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month")+"\n" +
+_("- Hold mouse button on any of the above buttons for faster selection.");
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+_("Time selection:")+"\n" +
+_("- Click on any of the time parts to increase it")+"\n" +
+_("- or Shift-click to decrease it")+"\n" +
+_("- or click and drag for faster selection.");
+
+Calendar._TT["PREV_YEAR"] = _("Prev. year (hold for menu)");
+Calendar._TT["PREV_MONTH"] = _("Prev. month (hold for menu)");
+Calendar._TT["GO_TODAY"] = _("Go to Today");
+Calendar._TT["NEXT_MONTH"] = _("Next month (hold for menu)");
+Calendar._TT["NEXT_YEAR"] = _("Next year (hold for menu)");
+Calendar._TT["SEL_DATE"] = _("Select date");
+Calendar._TT["DRAG_TO_MOVE"] = _("Drag to move");
+Calendar._TT["PART_TODAY"] = _(" (today)");
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = _("Display %s first");
+
+// This may be locale-dependent. It specifies the week-end days, as an array
+// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = _("Close");
+Calendar._TT["TODAY"] = _("Today");
+Calendar._TT["TIME_PART"] = _("(Shift-)Click or drag to change value");
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
+
+Calendar._TT["WK"] = _("wk");
+Calendar._TT["TIME"] = _("Time:");
+</script>
<script type="text/javascript" src="[% themelang %]/lib/calendar/calendar-setup.js"></script>
<script type="text/javascript">
//<![CDATA[
<div id="changelanguage" class="ft">
[% IF ( languages_loop && opaclanguagesdisplay ) %]
[% UNLESS ( one_language_enabled ) %]
- <div class="lang"><strong>Languages: </strong></div>
+ <div class="lang"><strong>Languages: </strong></div>
[% FOREACH languages_loo IN languages_loop %]
<div class="lang">
[% IF ( languages_loo.group_enabled ) %]
[% END %]
<ul>
[% FOREACH facet IN facets_loo.facets %]<li><a href="/cgi-bin/koha/opac-search.pl?[% query_cgi |html %][% limit_cgi |html %][% IF ( sort_by ) %]&sort_by=[% sort_by %][% END %]&limit=[% facet.type_link_value %]:[% facet.facet_link_value %]" title="[% facet.facet_title_value |html %]">[% facet.facet_label_value %]</a> [% IF ( displayFacetCount ) %]([% facet.facet_count %])[% END %]</li>[% END %][% IF ( facets_loo.expandable ) %]
- <li class="showmore"><a href="/cgi-bin/koha/opac-search.pl?[% query_cgi |html %][% limit_cgi |html %][% IF ( sort_by ) %]&sort_by=[% sort_by %][% END %]&offset=[% facets_loo.offset %]&expand=[% facets_loo.expand %]#[% facets_loo.type_id %]">Show More</a></li>
+ <li class="showmore"><a href="/cgi-bin/koha/opac-search.pl?[% query_cgi |html %][% limit_cgi |html %][% IF ( sort_by ) %]&sort_by=[% sort_by %][% END %][% IF ( offset ) %]&offset=[% offset %][% END %]&expand=[% facets_loo.expand %]#[% facets_loo.type_id %]">Show More</a></li>
[% END %]
</ul></li>
[% END %]
-[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha Online[% END %] Catalog › Details for: [% title |html %][% FOREACH subtitl IN subtitle %], [% subtitl.subfield %][% END %]
+[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha Online[% END %] Catalog › Details for: [% title |html %][% FOREACH subtitl IN subtitle %], [% subtitl.subfield |html %][% END %]
[% INCLUDE 'doc-head-close.inc' %]
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.tablesorter.min.js"></script>
<script type="text/JavaScript" language="JavaScript">
[% IF ( OPACXSLTDetailsDisplay ) %]
[% XSLTBloc %]
[% ELSE %]
- <h1 class="title">[% title |html %][% IF ( subtitle ) %] <span class="subtitle">[% FOREACH subtitl IN subtitle %][% subtitl.subfield %] [% END %]</span>[% END %]</h1>
+ <h1 class="title">[% title |html %][% IF ( subtitle ) %] <span class="subtitle">[% FOREACH subtitl IN subtitle %][% subtitl.subfield |html %] [% END %]</span>[% END %]</h1>
[% IF ( author ) %]<h5 class="author">by <a href="/cgi-bin/koha/opac-search.pl?q=au:[% author |url %]">[% author |html %]</a></h5>[% END %]
<span class="results_summary">[% UNLESS ( item_level_itypes ) %]
[% IF ( review.your_comment ) %]
<div class="commentline yours" id="c[% review.reviewid %]">
[% IF ( review.avatarurl ) %]
- <img class="avatar" src="[% review.avatarurl %]" height="80" width="80"/>
+ <img class="avatar" src="[% review.avatarurl %]" height="80" width="80" alt="" />
[% END %]
<h5>
Your Comment
</h5>
<small>[% review.datereviewed %]</small>
<p>
- [% review.review %]
+ [% FILTER html_break %]
+ [% review.review |html %]
+ [% END %]
<a href="#" onclick="Dopop('/cgi-bin/koha/opac-review.pl?biblionumber=[% review.biblionumber %]&reviewid=[% review.reviewid %]');">Edit</a>
</p></div>
[% ELSE %]
<div class="commentline">
[% IF ( ShowReviewer ) %]
[% IF ( review.avatarurl ) %]
- <img class="avatar" src="[% review.avatarurl %]" height="80" width="80"/>
+ <img class="avatar" src="[% review.avatarurl %]" height="80" width="80" alt="" />
[% END %]
<h5>
Comment by
[% END %]
<small>[% review.datereviewed %]</small>
<p>
- [% review.review %]
+ [% FILTER html_break %]
+ [% review.review |html %]
+ [% END %]
</p></div>
[% END %]
[% END %]
<div id="ulactioncontainer" class="container">
[% IF ( busc ) %]
<div class="nav_results">
- <div class="l_Results">[% IF ( listResults ) %]<a href="#" id="a_listResults" title="Show pagination list ([% indexPag %]-[% indexPagEnd %] / [% totalPag %])">Browse results</a>[% ELSE %]Browse results[% END %]</div>
- <ul class="pg_menu">
- <li class="left_results">[% IF ( previous ) %]<a href="[% previous %]" title="See: [% IF ( previousTitle ) %][% previousTitle |html %][% ELSE %]previous biblio[% END %]">« Previous</a>[% ELSE %]Previous[% END %]</li>
+ <div class="l_Results">[% IF ( listResults ) %]<a href="#" id="a_listResults" title="Show pagination list ([% indexPag %]-[% indexPagEnd %] / [% totalPag %])">Browse results</a>[% ELSE %]<span>Browse results</span>[% END %]</div>
+ <ul class="pg_menu clearfix">
+ <li class="left_results">[% IF ( previous ) %]<a href="[% previous %]" title="See: [% IF ( previousTitle ) %][% previousTitle |html %][% ELSE %]previous biblio[% END %]">« Previous</a>[% ELSE %]<span>Previous</span>[% END %]</li>
<li class="back_results"><a href="opac-search.pl?[% busc %]" title="Back to the results search list">Back to results</a></li>
- <li class="right_results">[% IF ( next ) %]<a href="[% next %]" title="See: [% IF ( nextTitle ) %][% nextTitle |html %][% ELSE %]next biblio[% END %]">Next »</a>[% ELSE %]Next[% END %]</li>
+ <li class="right_results">[% IF ( next ) %]<a href="[% next %]" title="See: [% IF ( nextTitle ) %][% nextTitle |html %][% ELSE %]next biblio[% END %]">Next »</a>[% ELSE %]<span>Next</span>[% END %]</li>
</ul>
[% IF ( listResults ) %]
<div class="pagination">
[% IF ( rss2 ) %]
<rss version="2.0"
xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title><![CDATA[[% LibraryName |html %] Search [% IF ( query_desc ) %]for '[% query_desc |html %]'[% END %][% IF ( limit_desc ) %] with limit(s): '[% limit_desc |html %]'[% END %]]]></title>
<link>[% OPACBaseURL %]/cgi-bin/koha/opac-search.pl?[% query_cgi |html %][% limit_cgi |html %]&format=rss2</link>
- <atom:link rel="self" type="application/rss+xml" href="[% OPACBaseURL %]/cgi-bin/koha/opac-search.pl?[% query_cgi |html %][% limit_cgi |html %]&format=rss2" />
+ <atom:link rel="self" type="application/rss+xml" href="[% OPACBaseurl %]/cgi-bin/koha/opac-search.pl?[% query_cgi |html %][% limit_cgi |html %]&sort_by=[% sort_by |html %]&format=rss2"/>
<description><![CDATA[ Search results [% IF ( query_desc ) %]for '[% query_desc |html %]'[% END %][% IF ( limit_desc ) %] with limit(s): '[% limit_desc |html %]'[% END %] at [% LibraryName |html %]]]></description>
<opensearch:totalResults>[% total %]</opensearch:totalResults>
<opensearch:startIndex>[% offset %]</opensearch:startIndex>
[% ELSE %]
<opensearch:itemsPerPage>20</opensearch:itemsPerPage>
[% END %]
- <atom:link rel="search" type="application/opensearchdescription+xml" href="[% OPACBaseURL %]/cgi-bin/koha/opac-search.pl?format=opensearchdescription"/>
- <opensearch:Query role="request" searchTerms="[% query_desc |html %] [% limit_desc |html %]" startPage="[% page %]" />
[% FOREACH SEARCH_RESULT IN SEARCH_RESULTS %]
+ <atom:link rel="search" type="application/opensearchdescription+xml" href="[% SEARCH_RESULT.OPACBaseurl %]/cgi-bin/koha/opac-search.pl?[% SEARCH_RESULT.query_cgi |html %][% SEARCH_RESULT.limit_cgi |html %]&sort_by=[% SEARCH_RESULT.sort_by |html %]&format=opensearchdescription"/>
+ <opensearch:Query role="request" searchTerms="[% SEARCH_RESULT.query_desc |url %][% SEARCH_RESULT.limit_desc |url %]" startPage="[% SEARCH_RESULT.page %]" />
<item>
<title>[% SEARCH_RESULT.title |html %] [% FOREACH subtitl IN SEARCH_RESULT.subtitle %], [% subtitl.subfield |html %][% END %]</title>
- <isbn>[% SEARCH_RESULT.isbn |html %]</isbn>
+ <dc:identifier>ISBN [% SEARCH_RESULT.isbn |html %]</dc:identifier>
<link>[% IF ( SEARCH_RESULT.BiblioDefaultViewmarc ) %][% OPACBaseURL %]/cgi-bin/koha/opac-MARCdetail.pl?biblionumber=[% SEARCH_RESULT.biblionumber %][% ELSE %][% IF ( SEARCH_RESULT.BiblioDefaultViewisbd ) %][% OPACBaseURL %]/cgi-bin/koha/opac-ISBDdetail.pl?biblionumber=[% SEARCH_RESULT.biblionumber %][% ELSE %][% OPACBaseURL %]/cgi-bin/koha/opac-detail.pl?biblionumber=[% SEARCH_RESULT.biblionumber %][% END %][% END %]</link>
<description><![CDATA[
[% IF ( OPACAmazonEnabled ) %][% IF ( OPACAmazonCoverImages ) %][% IF ( SEARCH_RESULT.normalized_isbn ) %]<img src="http://images.amazon.com/images/P/[% SEARCH_RESULT.normalized_isbn %].01.TZZZZZZZ.jpg" alt="" />[% END %][% END %][% END %]
-
-[% IF ( SyndeticsEnabled ) %][% IF ( SyndeticsCoverImages ) %][% IF ( SEARCH_RESULT.content_identifier_exists ) %][% IF ( using_https ) %]<img src="https://secure.syndetics.com/index.aspx?isbn=[% SEARCH_RESULT.normalized_isbn %]/SC.GIF&client=[% SyndeticsClientCode %]&type=xw10&upc=[% SEARCH_RESULT.normalized_upc %]&oclc=[% SEARCH_RESULT.normalized_oclc %]" alt="" />
+[% IF ( SyndeticsEnabled ) %][% IF ( SyndeticsCoverImages ) %][% IF ( SEARCH_RESULT.content_identifier_exists ) %]<img src="http://www.syndetics.com/index.aspx?isbn=[% SEARCH_RESULT.normalized_isbn %]/SC.GIF&client=[% SEARCH_RESULT.SyndeticsClientCode %]&type=xw10[% IF ( SEARCH_RESULT.normalized_upc ) %]&upc=[% SEARCH_RESULT.normalized_upc %][% END %][% IF ( SEARCH_RESULT.normalized_oclc ) %]&oclc=[% SEARCH_RESULT.normalized_oclc %][% END %]" alt="" />
[% ELSE %]
<img src="http://www.syndetics.com/index.aspx?isbn=[% SEARCH_RESULT.normalized_isbn %]/SC.GIF&client=[% SyndeticsClientCode %]&type=xw10&upc=[% SEARCH_RESULT.normalized_upc %]&oclc=[% SEARCH_RESULT.normalized_oclc %]" alt="" />
-[% END %][% END %][% END %][% END %]
+[% END %][% END %][% END %]
[% IF ( BakerTaylorEnabled ) %][% IF ( SEARCH_RESULT.normalized_isbn ) %]<a href="https://[% BakerTaylorBookstoreURL |html %][% SEARCH_RESULT.normalized_isbn %]"><img alt="See Baker & Taylor" src="[% BakerTaylorImageURL |html %][% SEARCH_RESULT.normalized_isbn %]" /></a>[% END %][% END %]
<p>[% IF ( SEARCH_RESULT.author ) %]By [% SEARCH_RESULT.author |html %]. [% END %]
[% IF ( SEARCH_RESULT.size ) %] [% SEARCH_RESULT.size |html %]. [% END %]
[% IF ( SEARCH_RESULT.isbn ) %] [% SEARCH_RESULT.isbn |html %][% END %] </p><p>
[% IF ( RequestOnOpac ) %]
-<a href="[% OPACBaseURL %]/cgi-bin/koha/opac-reserve.pl?biblionumber=[% SEARCH_RESULT.biblionumber %]">Place Hold on <i>[% SEARCH_RESULT.title |html %]</i></a></p>
+<a href="[% SEARCH_RESULT.OPACBaseurl %]/cgi-bin/koha/opac-reserve.pl?biblionumber=[% SEARCH_RESULT.biblionumber %]">Place Hold on <i>[% SEARCH_RESULT.title %]</i></a></p>
[% END %]
]]></description>
<guid>[% OPACBaseURL %]/cgi-bin/koha/opac-detail.pl?biblionumber=[% SEARCH_RESULT.biblionumber %]</guid>
<opensearch:itemsPerPage>20</opensearch:itemsPerPage>
[% END %]
<opensearch:Query role="request" searchTerms="[% query_desc |html %] [% limit_desc |html %]" startPage="[% page |html %]" />
- <link rel="alternate" href="[% OPACBaseURL %]/cgi-bin/koha/opac-search.pl?[% query_cgi |html %][% limit_cgi |html %]pw=[% page %]" type="text/html"/>
+ <link rel="alternate" href="[% OPACBaseurl %]/cgi-bin/koha/opac-search.pl?[% query_cgi %][% limit_cgi %]pw=[% page %]&format=atom" type="application/atom+xml"/>
<link rel="self" href="[% OPACBaseURL %]/cgi-bin/koha/opac-search.pl?[% query_cgi %][% limit_cgi %]&format=atom" type="application/atom+xml"/>
<link rel="first" href="[% OPACBaseURL %]/cgi-bin/koha/opac-search.pl?[% query_cgi %][% limit_cgi %]pw=1&format=atom" type="application/atom+xml"/>
<link rel="previous" href="[% OPACBaseURL %]/cgi-bin/koha/opac-search.pl?[% query_cgi %][% limit_cgi %]pw=2&format=atom" type="application/atom+xml"/>
<link rel="next" href="[% OPACBaseURL %]/cgi-bin/koha/opac-search.pl?[% query_cgi %][% limit_cgi %]pw=4&format=atom" type="application/atom+xml"/>
- <link rel="last" href="[% OPACBaseURL %]/cgi-bin/koha/opac-search.pl?[% query_cgi |html %][% limit_cgi |html %]pw=42299&format=atom" type="application/atom+xml"/>
+ <link rel="last" href="[% OPACBaseurl %]/cgi-bin/koha/opac-search.pl?[% query_cgi %][% limit_cgi %]pw=42299&format=atom" type="application/atom+xml"/>
<link rel="search" type="application/opensearchdescription+xml" href="[% OPACBaseURL %]/cgi-bin/koha/opac-search.pl?format=opensearchdescription"/>
[% FOREACH SEARCH_RESULT IN SEARCH_RESULTS %]
[% INCLUDE 'doc-head-open.inc' %]
[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha Online[% END %] Catalog ›
[% IF ( searchdesc ) %]
- Results of Search [% IF ( query_desc ) %]for '[% query_desc %]'[% END %][% IF ( limit_desc ) %] with limit(s): '[% limit_desc %]'[% END %]
+ Results of Search [% IF ( query_desc ) %]for '[% query_desc | html %]'[% END %][% IF ( limit_desc ) %] with limit(s): '[% limit_desc | html %]'[% END %]
[% ELSE %]
You did not specify any search criteria.
[% END %]
[% INCLUDE 'doc-head-open.inc' %]
[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha Online[% END %] Catalog ›
[% IF ( searchdesc ) %]
- Results of Search [% IF ( query_desc ) %]for '[% query_desc %]'[% END %][% IF ( limit_desc ) %] with limit(s): '[% limit_desc %]'[% END %]
+ Results of Search [% IF ( query_desc ) %]for '[% query_desc | html%]'[% END %][% IF ( limit_desc ) %] with limit(s): '[% limit_desc | html %]'[% END %]
[% ELSE %]
You did not specify any search criteria.
[% END %]
[% ELSE %]<a class="title" href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% SEARCH_RESULT.biblionumber |url %]" title="View details for this title">
[% END %]
[% END %]
- [% IF ( SEARCH_RESULT.title ) %][% SEARCH_RESULT.title |html %][% ELSE %]No title[% END %] [% FOREACH subtitl IN SEARCH_RESULT.subtitle %][% subtitl.subfield %][% END %]</a>
+ [% IF ( SEARCH_RESULT.title ) %][% SEARCH_RESULT.title |html %][% ELSE %]No title[% END %] [% FOREACH subtitl IN SEARCH_RESULT.subtitle %], [% subtitl.subfield %][% END %]</a>
[% IF ( SEARCH_RESULT.author ) %]by <a href="/cgi-bin/koha/opac-search.pl?q=au:[% SEARCH_RESULT.author |url %]" title="Search for works by this author" class="author">[% SEARCH_RESULT.author %]</a>
[% ELSE %]
[% END %]
$("#addtags").html("<a id=\"tagsel_tag\" href=\"#\">"+_("Tag")+"<\/a> |");
$(".tagbutton").click(KOHA.Tags.add_tag_button);
- [% IF ( TagsInputOnList ) %]
[% IF ( loggedinusername ) %]
$("#tagsel_tag").click(function(){
tagSelected();
return false;
});
[% END %]
- [% END %]
[% END %][% END %][% END %]
[% IF ( GoogleJackets ) %]KOHA.Google.GetCoverFromIsbn();[% END %]
});
[% END %][% ELSE %]This record has no items.[% END %]</span>
[% END %]
[% IF ( TagsEnabled ) %]
- [% IF ( TagsShowOnList ) %]
- [% IF ( itemsloo.TagLoop ) %]
- <div class="results_summary">
- <span class="label">Tags:</span>
- <ul style="display: inline; list-style: none;">[% FOREACH TagLoo IN itemsloo.TagLoop %]<li style="display: inline; list-style: none;"><a href="/cgi-bin/koha/opac-search.pl?tag=[% TagLoo.term |url %]&q=[% TagLoo.term |url %]">[% TagLoo.term %]</a> <span class="weight">([% TagLoo.weight_total %])</span></li>
- [% END %]
- </ul>
- [% END %]
+ [% IF ( TagsShowOnList ) %]
+ [% IF ( itemsloo.TagLoop.size ) %]
+ <div class="results_summary">
+ <span class="label">Tags:</span>
+ <ul style="display: inline; list-style: none;">[% FOREACH TagLoo IN itemsloo.TagLoop %]<li style="display: inline; list-style: none;"><a href="/cgi-bin/koha/opac-search.pl?tag=[% TagLoo.term |url %]&q=[% TagLoo.term |url %]">[% TagLoo.term %]</a> <span class="weight">([% TagLoo.weight_total %])</span></li>
+ [% END %]
+ </ul>
+ </div>
+ [% END %]
+ [% END %]
[% IF ( TagsInputOnList ) %]
[% IF ( loggedinusername ) %]
<form name="tagform[% itemsloo.biblionumber %]" method="post" action="/cgi-bin/koha/opac-tags.pl">
[% ELSIF ( loop.first ) %]<span class="tagstatus" id="login4tags">Log in to add tags.</span>
[% END %]
[% END %]
- [% IF ( itemsloo.TagLoop ) %]
- </div>[% END %]
+ [% IF ( loggedinusername ) %]
+ <span id="newtag[% itemsloo.biblionumber %]_status" class="tagstatus" style="display:none;">Tag status here.</span>
+ [% END %]
[% END %]
- [% END %]
<span class="results_summary actions"><span class="label">Actions:</span>
[% IF ( RequestOnOpac ) %]
<div id="bd">
[% INCLUDE 'masthead.inc' %]
<div id="yui-main">
- <div class="yui-b"><div id="usershowreviews" class="container">
+ <div id="usershowreviews" class="container">
<div id="recentcomments" class="searchresults">
<h3>Recent comments</h3>
<table>
[% ELSE %]<a class="title" href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% review.biblionumber |url %]#comments" title="View details for this title">
[% END %]
[% END %]
- [% IF ( review.title ) %][% review.title |html %][% ELSE %]No title[% END %] [% FOREACH subtitl IN review.subtitle %] [% subtitl.subfield %][% END %]</a>
+ [% IF ( review.title ) %][% review.title %][% ELSE %]No title[% END %] [% FOREACH subtitl IN review.subtitle %] [% subtitl.subfield |html %][% END %]</a>
[% IF ( review.author ) %]by <a href="/cgi-bin/koha/opac-search.pl?q=au:[% review.author |url %]" title="Search for works by this author" class="author">[% review.author %]</a></p>
[% END %]
<p>
<p class="commentline[% IF ( review.your_comment ) %] yours[% END %]">
[% IF ( review.avatarurl ) %]
- <img class="avatar" src="[% review.avatarurl %]" height="40" width="40"/>
+ <img class="avatar" src="[% review.avatarurl %]" height="40" width="40" alt="" />
[% END %]
+ [% FILTER html_break %]
[% review.review |html %]
+ [% END %]
<span style="font-size:87%;font-color:#CCC;">Added [% review.datereviewed %] [% IF ( review.your_comment ) %] by <strong>you</strong>[% ELSE %]
[% IF ( ShowReviewer ) %] by
[% review.firstname %] [% review.surname %][% END %][% END %]</span></p>
</td>
<td>
- <a class="p1" href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% review.biblionumber %]">
-
[% IF ( review.BiblioDefaultViewmarc ) %]<a class="title" href="/cgi-bin/koha/opac-MARCdetail.pl?biblionumber=[% review.biblionumber |url %]" title="View details for this title">
[% ELSE %]
[% IF ( review.BiblioDefaultViewisbd ) %]<a class="title" href="/cgi-bin/koha/opac-ISBDdetail.pl?biblionumber=[% review.biblionumber |url %]" title="View details for this title">
</div>
</div>
</div>
-</div>
[% IF ( OpacNav ) %]
<div class="yui-b"><div id="leftmenus" class="container">
[% INCLUDE 'navigation.inc' %]
});
$("#overduest").tablesorter();
[% IF ( GoogleJackets ) %]KOHA.Google.GetCoverFromIsbn();[% END %]
- [% IF ( OpacRenewalAllowed ) %][% IF ( canrenew ) %]$("#renewselected").submit(function(){
+ [% IF ( OpacRenewalAllowed && canrenew && !userdebarred ) %]$("#renewselected").submit(function(){
valid = false;
$("input[type=checkbox]").each(function(){
if($(this).is(':checked')){
$("#renewall_link").live('click',function(){
$("#renewall").submit();
});
- $("#checkoutst caption").append("<div id=\"renewcontrols\"><a id=\"renewselected_link\" href=\"#\">"+_("Renew selected")+"</a> <a id=\"renewall_link\" href=\"#\">"+_("Renew all")+"</a></div>");[% END %][% END %]
+ $("#checkoutst caption").append("<div id=\"renewcontrols\"><a id=\"renewselected_link\" href=\"#\">"+_("Renew selected")+"</a> <a id=\"renewall_link\" href=\"#\">"+_("Renew all")+"</a></div>");[% END %]
});
//]]>
</script>
[% IF ( BORROWER_INF.flagged ) %]
<div class="dialog alert">
<ul>
- [% IF ( BORROWER_INF.debarred ) %]
- <li><strong>Please note:</strong> Your account has been frozen until [% BORROWER_INF.debarred %] - [% BORROWER_INF.debarredcomment %]. Usually the reason for freezing an account is old overdues or damage fees.If <a href="/cgi-bin/koha/opac-user.pl">your account page</a> shows your account to be clear, please contact the library.</li>
+ [% IF ( userdebarred ) %]
+ <li><strong>Please note:</strong> Your account has been frozen[% IF ( BORROWER_INF.userdebarreddate ) %] until [% BORROWER_INF.userdebarreddate %][% END %][% IF ( BORROWER_INF.debarredcomment ) %] with the comment "[% BORROWER_INF.debarredcomment %]"[% END %]. Usually the reason for freezing an account is old overdues or damage fees. If <a href="/cgi-bin/koha/opac-user.pl">your account page</a> shows your account to be clear, please contact the library.</li>
[% END %]
[% IF ( BORROWER_INF.gonenoaddress ) %]
<li><strong>Please note:</strong> According to our records, we don't have up-to-date [% UNLESS ( BORROWER_INF.OPACPatronDetails ) %]<a href="/cgi-bin/koha/opac-userupdate.pl">contact information</a>[% ELSE %]contact information[% END %] on file. Please contact the library[% IF ( BORROWER_INF.OPACPatronDetails ) %] or use the <a href="/cgi-bin/koha/opac-userupdate.pl">online update form</a> to submit current information (<em>Please note:</em> there may be a delay in restoring your account if you submit online)[% END %].</li>
</tr>
[% END %]</tbody>
</table>
- [% IF ( canrenew ) %]
- [% IF ( OpacRenewalAllowed ) %]
+ [% IF ( canrenew && !userdebarred && OpacRenewalAllowed ) %]
<input type="submit" value="Renew Selected" />
[% END %]
- [% END %]
</form>
- [% IF ( OpacRenewalAllowed ) %]
- [% IF ( canrenew ) %]
+ [% IF ( canrenew && !userdebarred && OpacRenewalAllowed ) %]
<form id="renewall" action="/cgi-bin/koha/opac-renew.pl" method="post">
<input type="hidden" name="from" value="opac_user" />
<input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
[% UNLESS patron_flagged %]<input type="submit" value="Renew All" />[% END %]
</form>
[% END %]
- [% END %]
[% ELSE %]
<table>
<tr><td>You have nothing checked out</td></tr>
<span class="results_summary series"><span class="label">Series: </span>
<!-- 440 -->
<xsl:for-each select="marc:datafield[@tag=440]">
- <a href="/cgi-bin/koha/opac-search.pl?q=se:{marc:subfield[@code='a']}">
+ <a><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=se,phr:"<xsl:value-of select="marc:subfield[@code='a']"/>"</xsl:attribute>
<xsl:call-template name="chopPunctuation">
<xsl:with-param name="chopString">
<xsl:call-template name="subfieldSelect">
<!-- 490 Series not traced, Ind1 = 0 -->
<xsl:for-each select="marc:datafield[@tag=490][@ind1!=1]">
- <a href="/cgi-bin/koha/opac-search.pl?q=se:{marc:subfield[@code='a']}">
+ <a><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=se,phr:"<xsl:value-of select="marc:subfield[@code='a']"/>"</xsl:attribute>
<xsl:call-template name="chopPunctuation">
<xsl:with-param name="chopString">
<xsl:call-template name="subfieldSelect">
<xsl:if test="marc:datafield[@tag=490][@ind1=1]">
<xsl:for-each select="marc:datafield[@tag=800 or @tag=810 or @tag=811 or @tag=830]">
<xsl:choose>
- <xsl:when test="marc:subfield[@code='w']">
+ <xsl:when test="$UseControlNumber = '1' and marc:subfield[@code='w']">
<a href="/cgi-bin/koha/opac-search.pl?q=rcn:{marc:subfield[@code='w']}">
<xsl:call-template name="chopPunctuation">
<xsl:with-param name="chopString">
</a>
</xsl:when>
<xsl:otherwise>
- <a href="/cgi-bin/koha/opac-search.pl?q=se:{marc:subfield[@code='a']}">
+ <a><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=se,phr:"<xsl:value-of select="marc:subfield[@code='a']"/>"</xsl:attribute>
<xsl:call-template name="chopPunctuation">
<xsl:with-param name="chopString">
<xsl:call-template name="subfieldSelect">
</span>
</xsl:if>
+
+ <xsl:if test="marc:datafield[@tag=242]">
+ <span class="results_summary translated_title"><span class="label">Title translated: </span>
+ <xsl:for-each select="marc:datafield[@tag=242]">
+ <xsl:call-template name="chopPunctuation">
+ <xsl:with-param name="chopString">
+ <xsl:call-template name="subfieldSelect">
+ <xsl:with-param name="codes">abchnp</xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
+ </xsl:for-each>
+ </span>
+ </xsl:if>
+
<!-- Uniform Title Statement: Alternate Graphic Representation (MARC 880) -->
<xsl:if test="$display880">
<xsl:call-template name="m880Select">
</span>
</xsl:for-each>
- <!-- 866 holdings public note -->
+ <!-- 866 textual holdings -->
<xsl:if test="marc:datafield[@tag=866]">
- <span class="results_summary holdings_note"><span class="label">Holdings Note: </span>
- <xsl:for-each select="marc:datafield[@tag=866]">
- <xsl:value-of select="marc:subfield[@code='z']"/>
- <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
- </xsl:for-each>
- </span>
+ <span class="results_summary holdings_note"><span class="label">Holdings Note: </span>
+ <xsl:for-each select="marc:datafield[@tag=866]">
+ <xsl:call-template name="subfieldSelect">
+ <xsl:with-param name="codes">az</xsl:with-param>
+ </xsl:call-template>
+ <xsl:choose><xsl:when test="position()=last()"><xsl:text></xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
+ </xsl:for-each>
+ </span>
</xsl:if>
<!-- 775 Other Edition -->
</xsl:for-each>
</span>
</xsl:if>
+ <xsl:if test="marc:datafield[@tag=242]">
+ <span class="results_summary">
+ <span class="label">Title translated: </span>
+ <xsl:for-each select="marc:datafield[@tag=242]">
+ <xsl:call-template name="subfieldSelect">
+ <xsl:with-param name="codes">abh</xsl:with-param>
+ </xsl:call-template>
+ <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
+ </xsl:for-each>
+ </span>
+ </xsl:if>
<xsl:if test="marc:datafield[@tag=856]">
<span class="results_summary">
<span class="label">Online Access: </span>
the kohaversion is divided in 4 parts :
- #1 : the major number. 3 atm
- - #2 : the functionnal release. 00 atm
+ - #2 : the functional release. 00 atm
- #3 : the subnumber, moves only on a public release
- #4 : the developer version. The 4th number is the database subversion.
used by developers when the database changes. updatedatabase take care of the changes itself
use strict;
sub kohaversion {
- our $VERSION = '3.06.02.001';
+ our $VERSION = '3.07.00.008';
# version needs to be set this way
# so that it can be picked up by Makefile.PL
# during install
use C4::AuthoritiesMarc;
use C4::Koha;
use C4::NewsChannels;
+use C4::Review qw/numberofreviews/;
+use C4::Suggestions qw/CountSuggestion/;
+use C4::Tags qw/get_count_by_tag_status/;
my $query = new CGI;
my $authtypes = getauthtypes;
my @authtypesloop;
koha_news_count => $koha_news_count
);
+my $pendingcomments = numberofreviews(0);
+my $pendingtags = get_count_by_tag_status(0);
+my $pendingsuggestions = CountSuggestion("ASKED");
+
+$template->param(
+ pendingcomments => $pendingcomments,
+ pendingtags => $pendingtags,
+ pendingsuggestions => $pendingsuggestions
+);
+
output_html_with_http_headers $query, $cookie, $template->output;
foreach (@field_check) {
$template->param( "mandatory$_" => 1);
}
+# function to designate unwanted fields
+my $check_BorrowerUnwantedField=C4::Context->preference("BorrowerUnwantedField");
+@field_check=split(/\|/,$check_BorrowerUnwantedField);
+foreach (@field_check) {
+ next unless m/\w/o;
+ $template->param( "no$_" => 1);
+}
$template->param( "add" => 1 ) if ( $op eq 'add' );
$template->param( "duplicate" => 1 ) if ( $op eq 'duplicate' );
$template->param( "checked" => 1 ) if ( defined($nodouble) && $nodouble eq 1 );
}
$data{debarred} = C4::Overdues::CheckBorrowerDebarred($borrowernumber);
-$data{datedebarred} = $data{debarred} if ( $data{debarred} ne "9999-12-31" );
+$data{datedebarred} = $data{debarred} if ( $data{debarred} && $data{debarred} ne "9999-12-31" );
foreach (qw(dateenrolled dateexpiry dateofbirth datedebarred)) {
$data{$_} = format_date($data{$_}); # back to syspref for display
$template->param( $_ => $data{$_});
use strict;
use warnings;
-BEGIN {
+use constant DEFAULT_ZEBRAQ_PURGEDAYS => 30;
+use constant DEFAULT_IMPORT_PURGEDAYS => 60;
+use constant DEFAULT_LOGS_PURGEDAYS => 180;
+BEGIN {
# find Koha's Perl modules
# test carefully before changing this
use FindBin;
use C4::Context;
use C4::Dates;
-#use C4::Debug;
-#use C4::Letters;
-#use File::Spec;
use Getopt::Long;
sub usage {
print STDERR <<USAGE;
-Usage: $0 [-h|--help] [--sessions] [--sessdays DAYS] [-v|--verbose] [--zebraqueue DAYS] [-m|--mail] [--merged]
+Usage: $0 [-h|--help] [--sessions] [--sessdays DAYS] [-v|--verbose] [--zebraqueue DAYS] [-m|--mail] [--merged] [--import DAYS] [--logs DAYS]
-h --help prints this help message, and exits, ignoring all
other options
--sessdays DAYS purge only sessions older than DAYS days.
-v --verbose will cause the script to give you a bit more information
about the run.
- --zebraqueue DAYS purge completed entries from the zebraqueue from
- more than DAYS days ago.
+ --zebraqueue DAYS purge completed zebraqueue entries older than DAYS days.
+ Defaults to 30 days if no days specified.
-m --mail purge the mail queue.
--merged purged completed entries from need_merge_authorities.
+ --import DAYS purge records from import tables older than DAYS days.
+ Defaults to 60 days if no days specified.
+ --logs DAYS purge entries from action_logs older than DAYS days.
+ Defaults to 180 days if no days specified.
USAGE
exit $_[0];
}
-my ( $help, $sessions, $sess_days, $verbose, $zebraqueue_days, $mail, $purge_merged);
+my ( $help, $sessions, $sess_days, $verbose, $zebraqueue_days, $mail, $purge_merged, $pImport, $pLogs);
GetOptions(
'h|help' => \$help,
'm|mail' => \$mail,
'zebraqueue:i' => \$zebraqueue_days,
'merged' => \$purge_merged,
+ 'import:i' => \$pImport,
+ 'logs:i' => \$pLogs,
) || usage(1);
+
$sessions=1 if $sess_days && $sess_days>0;
+# if --import, --logs or --zebraqueue were passed without number of days,
+# use defaults
+$pImport= DEFAULT_IMPORT_PURGEDAYS if defined($pImport) && $pImport==0;
+$pLogs= DEFAULT_LOGS_PURGEDAYS if defined($pLogs) && $pLogs==0;
+$zebraqueue_days= DEFAULT_ZEBRAQ_PURGEDAYS if defined($zebraqueue_days) && $zebraqueue_days==0;
if ($help) {
usage(0);
}
-if ( !( $sessions || $zebraqueue_days || $mail || $purge_merged) ) {
+if ( !( $sessions || $zebraqueue_days || $mail || $purge_merged || $pImport || $pLogs) ) {
print "You did not specify any cleanup work for the script to do.\n\n";
usage(1);
}
print "Done with purging need_merge_authorities.\n" if $verbose;
}
+if($pImport) {
+ print "Purging records from import tables.\n" if $verbose;
+ PurgeImportTables();
+ print "Done with purging import tables.\n" if $verbose;
+}
+
+if($pLogs) {
+ print "Purging records from action_logs.\n" if $verbose;
+ $sth = $dbh->prepare("DELETE FROM action_logs WHERE timestamp < date_sub(curdate(), interval ? DAY)");
+ $sth->execute($pLogs) or die $dbh->errstr;
+ print "Done with purging action_logs.\n" if $verbose;
+}
+
exit(0);
sub RemoveOldSessions {
print "$count sessions were deleted.\n";
}
}
+
+sub PurgeImportTables {
+ #First purge import_records
+ #Delete cascades to import_biblios, import_items and import_record_matches
+ $sth = $dbh->prepare("DELETE FROM import_records WHERE upload_timestamp < date_sub(curdate(), interval ? DAY)");
+ $sth->execute($pImport) or die $dbh->errstr;
+
+ # Now purge import_batches
+ # Timestamp cannot be used here without care, because records are added
+ # continuously to batches without updating timestamp (z3950 search).
+ # So we only delete older empty batches.
+ # This delete will therefore not have a cascading effect.
+ $sth = $dbh->prepare("DELETE ba
+ FROM import_batches ba
+ LEFT JOIN import_records re ON re.import_batch_id=ba.import_batch_id
+ WHERE re.import_record_id IS NULL AND
+ ba.upload_timestamp < date_sub(curdate(), interval ? DAY)");
+ $sth->execute($pImport) or die $dbh->errstr;
+}
}
use C4::Context;
use C4::Items;
+use C4::Circulation qw/LostItem/;
use Getopt::Long;
my $lost; # key=lost value, value=num days.
my ($charge, $verbose, $confirm, $quiet);
-my $endrange = 366; # FIXME hardcoded - don't deal with anything overdue by more than this num days.
+my $endrange = 366;
GetOptions(
'lost=s%' => \$lost,
'confirm' => \$confirm,
'verbose' => \$verbose,
'quiet' => \$quiet,
+ 'maxdays=s' => \$endrange
);
my $usage = << 'ENDUSAGE';
--confirm confirm. without this option, the script will report the number of affected items and
return without modifying any records.
+ --quiet suppress summary output.
+
+ --maxdays Specifies the end of the range of overdue days to deal with (defaults to 366). This
+ value is universal to all lost num days overdue passed.
+
examples :
$PERL5LIB/misc/cronjobs/longoverdue.pl --lost 30=1
Would set LOST=1 after 30 days (up to one year), but not charge the account.
@branches = grep { $seen{$_} } @overduebranches;
- if (@overduebranches) {
+ if (@branches) {
my $branch_word = scalar @branches > 1 ? 'branches' : 'branch';
$verbose and warn "$branch_word @branches have overdue rules\n";
my $mindays = $overdue_rules->{"delay$i"}; # the notice will be sent after mindays days (grace period)
my $maxdays = (
$overdue_rules->{ "delay" . ( $i + 1 ) }
- ? $overdue_rules->{ "delay" . ( $i + 1 ) }
+ ? $overdue_rules->{ "delay" . ( $i + 1 ) } - 1
: ($MAX)
); # issues being more than maxdays late are managed somewhere else. (borrower probably suspended)
# <date> <itemcount> <firstname> <lastname> <address1> <address2> <address3> <city> <postcode>
my $borrower_sql = <<'END_SQL';
-SELECT COUNT(*), issues.borrowernumber, firstname, surname, address, address2, city, zipcode, country, email, MIN(date_due) as longest_issue
+SELECT distinct(issues.borrowernumber), firstname, surname, address, address2, city, zipcode, country, email
FROM issues,borrowers,categories
WHERE issues.borrowernumber=borrowers.borrowernumber
AND borrowers.categorycode=categories.categorycode
$borrower_sql .= ' AND borrowers.categorycode=? ';
push @borrower_parameters, $overdue_rules->{categorycode};
}
- $borrower_sql .= ' AND categories.overduenoticerequired=1
- GROUP BY issues.borrowernumber ';
+ $borrower_sql .= ' AND categories.overduenoticerequired=1 ';
if($triggered) {
- $borrower_sql .= ' HAVING TO_DAYS(NOW())-TO_DAYS(longest_issue) = ?';
+ $borrower_sql .= ' AND TO_DAYS(NOW())-TO_DAYS(date_due) = ?';
push @borrower_parameters, $mindays;
} else {
- $borrower_sql .= ' HAVING TO_DAYS(NOW())-TO_DAYS(longest_issue) BETWEEN ? and ? ' ;
+ $borrower_sql .= ' AND TO_DAYS(NOW())-TO_DAYS(date_due) BETWEEN ? and ? ' ;
push @borrower_parameters, $mindays, $maxdays;
}
$sth->execute(@borrower_parameters);
$verbose and warn $borrower_sql . "\n $branchcode | " . $overdue_rules->{'categorycode'} . "\n ($mindays, $maxdays)\nreturns " . $sth->rows . " rows";
- while ( my ($itemcount, $borrowernumber, $firstname, $lastname,
- $address1, $address2, $city, $postcode, $country, $email,
- $longest_issue ) = $sth->fetchrow )
+ while ( my ( $borrowernumber, $firstname, $lastname,
+ $address1, $address2, $city, $postcode, $country, $email
+ ) = $sth->fetchrow )
{
- $verbose and warn "borrower $firstname, $lastname ($borrowernumber) has $itemcount items triggering level $i.";
+ $verbose and warn "borrower $firstname, $lastname ($borrowernumber) has items triggering level $i.";
my $letter = C4::Letters::getletter( 'circulation', $overdue_rules->{"letter$i"} );
$params->{'letter'} = C4::Letters::parseletter( $params->{'letter'}, 'biblio', $item->{'biblionumber'} );
$params->{'letter'} = C4::Letters::parseletter( $params->{'letter'}, 'biblioitems', $item->{'biblionumber'} );
$params->{'letter'} = C4::Letters::parseletter( $params->{'letter'}, 'items', $item->{'itemnumber'} );
+ $params->{'letter'} = C4::Letters::parseletter( $params->{'letter'}, 'issues', $item->{'itemnumber'} );
$params->{'letter'}->{'content'} =~ s/(<item>.*<\/item>)/$1\n$item_format/ if scalar(@{$params->{'items'}} > 0);
}
}
}
if ($#x >4) {
- # too many $x, not handled, warn the developper that tries to migrate
+ # too many $x, not handled, warn the developer that tries to migrate
print "warning there is ".$#x.'$x values';
}
}
my $as_xml;
my $process_zebraqueue;
my $do_not_clear_zebraqueue;
-my $verbose_logging;
+my $verbose_logging = 0;
my $zebraidx_log_opt = " -v none,fatal,warn ";
my $result = GetOptions(
'd:s' => \$directory,
'x' => \$as_xml,
'y' => \$do_not_clear_zebraqueue,
'z' => \$process_zebraqueue,
- 'v' => \$verbose_logging,
+ 'v+' => \$verbose_logging,
);
# -v is for verbose, which seems backwards here because of how logging is set
# on the CLI of zebraidx. It works this way. The default is to not log much
-if ($verbose_logging) {
- $zebraidx_log_opt = '';
+if ($verbose_logging >= 2) {
+ $zebraidx_log_opt = '-v none,fatal,warn,all';
}
my $use_tempdir = 0;
-v increase the amount of logging. Normally only
warnings and errors from the indexing are shown.
+ Use log level 2 (-v -v) to include all Zebra logs.
-munge-config Deprecated option to try
to fix Zebra config files.
If you test it and let us know about any we haven't seen yet, it will help us to fix them.
The 2.0.x series version is "feature freezed". Only bugs or minor changes will be made in this branch.
-The koha team is already working on the 2.2.x version. In CVS (HEAD branch), developpers can already get 1st draft of a working z3950 server.
+The koha team is already working on the 2.2.x version. In CVS (HEAD branch), developers can already get 1st draft of a working z3950 server.
INSTALLATION
If you test it and let us know about any we haven't seen yet, it will help us to fix them.
The 2.0.x series version is "feature freezed". Only bugs or minor changes will be made in this branch.
-The koha team is already working on the 2.2.x version. In CVS (HEAD branch), developpers can already get 1st draft of a working z3950 server.
+The koha team is already working on the 2.2.x version. In CVS (HEAD branch), developers can already get 1st draft of a working z3950 server.
INSTALLATION
1 Auto installer
****************
If you install koha with ./install -i /path/to/auto_install_file, then Koha will be installed almost without question.
-A very usefull feature for developpers that want to install/uninstall Koha quite often.
+A very usefull feature for developers that want to install/uninstall Koha quite often.
A sample of auto_install_file is provided in misc/auto_install_file.
2 Uninstaller
You can define rules like : "up to 2 CDROM, up to 10 books, max 10 items".
* circulation works now like this (internally) :
- get borrower cardnumber & item number
-- check "can book be issued". This sub (canbookbeissued) checks everything. For each problem, 2 arrays can be set up : MUSTCONFIRM and IMPOSSIBLE. MUSTCONFIRM entries needs a librarian confirmation before effective issuing. IMPOSSIBLE entries makes the issue impossible. It's now very easy to alter issuing rules for a given library (with a developper), as every test is heavily documented & in a single sub.
+- check "can book be issued". This sub (canbookbeissued) checks everything. For each problem, 2 arrays can be set up : MUSTCONFIRM and IMPOSSIBLE. MUSTCONFIRM entries needs a librarian confirmation before effective issuing. IMPOSSIBLE entries makes the issue impossible. It's now very easy to alter issuing rules for a given library (with a developer), as every test is heavily documented & in a single sub.
- if >=1 IMPOSSIBLE entry : issuing is impossible, show why.
- if >=1 MUSTCONFIRM : show problems, and ask for confirmation.
- if both are empty : issue.
==============
HELP NEEDED
==============
-We alway accept new developpers wanting to code or test features of the Roadmap.
+We alway accept new developers wanting to code or test features of the Roadmap.
We still can accept features not in the RoadMap if :
- strongly supported/coded by someone.
- compatible with other features.
Same as for MARC21 frameworks. Except we don't have authority structure for MARC21 (we have for UNIMARC in french, thanks to ENSMP)
* provide ISBD for MARC21
-(ISBD for UNIMARC is being done, thanks to doXulting)
\ No newline at end of file
+(ISBD for UNIMARC is being done, thanks to doXulting)
It should contains :
* bugfixes.
* some new code for a better LDAP handling (automatic creation of the borrower if it does not exist, getting informations from LDAP directory)
-* a barcode generator ! it's a new feature that should be commited by a new developper coming from south america (argentina). I've seen the code, it's clean & nice. Just a new dependencay, for PDF generating. Should be non mandatory for ppl that don't want to print barcodes.
+* a barcode generator ! it's a new feature that should be commited by a new developer coming from south america (argentina). I've seen the code, it's clean & nice. Just a new dependencay, for PDF generating. Should be non mandatory for ppl that don't want to print barcodes.
Koha is the 1st Open-Source Integrated Library System.
Released at first in New zealand, in 2000 januaray, it is maintained by a team of volunteers from around the globe, the Koha system is a full catalogue, opac, circulation and acquisitions system.
-Koha 2.2 is more than 247 000 lines of code, developped by more than 30 differents developpers (excluding translators).
+Koha 2.2 is more than 247 000 lines of code, developped by more than 30 differents developers (excluding translators).
With the 2.2 version, Koha is now a mature product, with a lot of nice features. It's used in more than 50 libraries, from all kinds (public, schools, search, religious...), of all size (from 1 to 8 branches, from 1000 to 300 000 items).
* (almost) complete rewrite of librarian GUI : now Koha uses CSS, and is easier to use. However, users of Koha 2.0.0 won't be lost, as the general organisation of the product has not changed.
* Online Help : an online help is available everywhere in the librarian interface. It's complete in the parameters section of Koha and for new features. It will be completed for the rest of the product.
* Better LDAP suport : Koha 2.2 can be "connected" to a LDAP server and get all borrower informations from there (including borrower category where applicable). However, to avoid problems for libraries without LDAP server, the LDAP features have been stored in modules/C4/Auth_with_ldap.pm file. The standard Auth.pm don't use it. If you want LDAP, just perldoc Auth_with_ldap.pm and manually tune your Auth package !
-* Auto installer : if you install koha with ./install -i /path/to/auto_install_file, then Koha will be installed almost without question. A very usefull feature for developpers that want to install/uninstall Koha quite often. A sample of auto_install_file is provided in misc/auto_install_file.
+* Auto installer : if you install koha with ./install -i /path/to/auto_install_file, then Koha will be installed almost without question. A very usefull feature for developers that want to install/uninstall Koha quite often. A sample of auto_install_file is provided in misc/auto_install_file.
* Uninstaller : run misc/uninstall.pl, provide the mysql root password. that's all. Koha is completely deleted and can be reinstalled. With the previous feature, it's a very nice solution for test platform.
* mod_perl : Koha should now work under mod_perl, that gives a big performance boost (Release Manager don't use mod_perl. fixes comes from A. Tarallo, Argentina, that ensure Koha works fine with mod_perl with the patches applied)
* Nelsonville have shared their templates. They are available as NPL theme.
Koha is the 1st Open-Source Integrated Library System.
Released at first in New zealand, in 2000 januaray, it is maintained by a team of volunteers from around the globe, the Koha system is a full catalogue, opac, circulation and acquisitions system.
-Koha 2.2 is more than 247 000 lines of code, developped by more than 30 differents developpers (excluding translators).
+Koha 2.2 is more than 247 000 lines of code, developped by more than 30 differents developers (excluding translators).
With the 2.2 version, Koha is now a mature product, with a lot of nice features. It's used in more than 50 libraries, from all kinds (public, schools, search, religious...), of all size (from 1 to 8 branches, from 1000 to 300 000 items).
* (almost) complete rewrite of librarian GUI : now Koha uses CSS, and is easier to use. However, users of Koha 2.0.0 won't be lost, as the general organisation of the product has not changed.
* Online Help : an online help is available everywhere in the librarian interface. It's complete in the parameters section of Koha and for new features. It will be completed for the rest of the product.
* Better LDAP suport : Koha 2.2 can be "connected" to a LDAP server and get all borrower informations from there (including borrower category where applicable). However, to avoid problems for libraries without LDAP server, the LDAP features have been stored in modules/C4/Auth_with_ldap.pm file. The standard Auth.pm don't use it. If you want LDAP, just perldoc Auth_with_ldap.pm and manually tune your Auth package !
-* Auto installer : if you install koha with ./install -i /path/to/auto_install_file, then Koha will be installed almost without question. A very usefull feature for developpers that want to install/uninstall Koha quite often. A sample of auto_install_file is provided in misc/auto_install_file.
+* Auto installer : if you install koha with ./install -i /path/to/auto_install_file, then Koha will be installed almost without question. A very usefull feature for developers that want to install/uninstall Koha quite often. A sample of auto_install_file is provided in misc/auto_install_file.
* Uninstaller : run misc/uninstall.pl, provide the mysql root password. that's all. Koha is completely deleted and can be reinstalled. With the previous feature, it's a very nice solution for test platform.
* mod_perl : Koha should now work under mod_perl, that gives a big performance boost (Release Manager don't use mod_perl. fixes comes from A. Tarallo, Argentina, that ensure Koha works fine with mod_perl with the patches applied)
* Nelsonville have shared their templates. They are available as NPL theme.
Koha is the 1st Open-Source Integrated Library System.
Released at first in New zealand, in 2000 januaray, it is maintained by a team of volunteers from around the globe, the Koha system is a full catalogue, opac, circulation and acquisitions system.
-Koha 2.2 is more than 247 000 lines of code, developped by more than 30 differents developpers (excluding translators).
+Koha 2.2 is more than 247 000 lines of code, developped by more than 30 differents developers (excluding translators).
With the 2.2 version, Koha is now a mature product, with a lot of nice features. It's used in more than 50 libraries, from all kinds (public, schools, search, religious...), of all size (from 1 to 8 branches, from 1000 to 300 000 items).
* (almost) complete rewrite of librarian GUI : now Koha uses CSS, and is easier to use. However, users of Koha 2.0.0 won't be lost, as the general organisation of the product has not changed.
* Online Help : an online help is available everywhere in the librarian interface. It's complete in the parameters section of Koha and for new features. It will be completed for the rest of the product.
* Better LDAP suport : Koha 2.2 can be "connected" to a LDAP server and get all borrower informations from there (including borrower category where applicable). However, to avoid problems for libraries without LDAP server, the LDAP features have been stored in modules/C4/Auth_with_ldap.pm file. The standard Auth.pm don't use it. If you want LDAP, just perldoc Auth_with_ldap.pm and manually tune your Auth package !
-* Auto installer : if you install koha with ./install -i /path/to/auto_install_file, then Koha will be installed almost without question. A very usefull feature for developpers that want to install/uninstall Koha quite often. A sample of auto_install_file is provided in misc/auto_install_file.
+* Auto installer : if you install koha with ./install -i /path/to/auto_install_file, then Koha will be installed almost without question. A very usefull feature for developers that want to install/uninstall Koha quite often. A sample of auto_install_file is provided in misc/auto_install_file.
* Uninstaller : run misc/uninstall.pl, provide the mysql root password. that's all. Koha is completely deleted and can be reinstalled. With the previous feature, it's a very nice solution for test platform.
* mod_perl : Koha should now work under mod_perl, that gives a big performance boost (Release Manager don't use mod_perl. fixes comes from A. Tarallo, Argentina, that ensure Koha works fine with mod_perl with the patches applied)
* Nelsonville have shared their templates. They are available as NPL theme.
Koha is the 1st Open-Source Integrated Library System.
Released at first in New zealand, in 2000 januaray, it is maintained by a team of volunteers from around the globe, the Koha system is a full catalogue, opac, circulation and acquisitions system.
-Koha 2.2 is more than 247 000 lines of code, developped by more than 30 differents developpers (excluding translators).
+Koha 2.2 is more than 247 000 lines of code, developped by more than 30 differents developers (excluding translators).
With the 2.2 version, Koha is now a mature product, with a lot of nice features. It's used in more than 50 libraries, from all kinds (public, schools, search, religious...), of all size (from 1 to 8 branches, from 1000 to 300 000 items).
* (almost) complete rewrite of librarian GUI : now Koha uses CSS, and is easier to use. However, users of Koha 2.0.0 won't be lost, as the general organisation of the product has not changed.
* Online Help : an online help is available everywhere in the librarian interface. It's complete in the parameters section of Koha and for new features. It will be completed for the rest of the product.
* Better LDAP suport : Koha 2.2 can be "connected" to a LDAP server and get all borrower informations from there (including borrower category where applicable). However, to avoid problems for libraries without LDAP server, the LDAP features have been stored in modules/C4/Auth_with_ldap.pm file. The standard Auth.pm don't use it. If you want LDAP, just perldoc Auth_with_ldap.pm and manually tune your Auth package !
-* Auto installer : if you install koha with ./install -i /path/to/auto_install_file, then Koha will be installed almost without question. A very usefull feature for developpers that want to install/uninstall Koha quite often. A sample of auto_install_file is provided in misc/auto_install_file.
+* Auto installer : if you install koha with ./install -i /path/to/auto_install_file, then Koha will be installed almost without question. A very usefull feature for developers that want to install/uninstall Koha quite often. A sample of auto_install_file is provided in misc/auto_install_file.
* Uninstaller : run misc/uninstall.pl, provide the mysql root password. that's all. Koha is completely deleted and can be reinstalled. With the previous feature, it's a very nice solution for test platform.
* mod_perl : Koha should now work under mod_perl, that gives a big performance boost (Release Manager don't use mod_perl. fixes comes from A. Tarallo, Argentina, that ensure Koha works fine with mod_perl with the patches applied)
* Nelsonville have shared their templates. They are available as NPL theme.
Koha is the 1st Open-Source Integrated Library System.
Released at first in New zealand, in 2000 januaray, it is maintained by a team of volunteers from around the globe, the Koha system is a full catalogue, opac, circulation and acquisitions system.
-Koha 2.2 is more than 247 000 lines of code, developped by more than 30 differents developpers (excluding translators !).
+Koha 2.2 is more than 247 000 lines of code, developped by more than 30 differents developers (excluding translators !).
With the 2.2 version, Koha is now a mature product, with a lot of nice features. It's used in more than 50 libraries, from all kinds (public, schools, search, religious...), of all size (from 1 to 8 branches, from 1000 to 300 000 items).
Koha is the 1st Open-Source Integrated Library System.
Released at first in New zealand, in 2000 januaray, it is maintained by a team of volunteers from around the globe, the Koha system is a full catalogue, opac, circulation and acquisitions system.
-Koha 2.2 is more than 247 000 lines of code, developped by more than 30 differents developpers (excluding translators !).
+Koha 2.2 is more than 247 000 lines of code, developped by more than 30 differents developers (excluding translators !).
With the 2.2 version, Koha is now a mature product, with a lot of nice features. It's used in more than 50 libraries, from all kinds (public, schools, search, religious...), of all size (from 1 to 8 branches, from 1000 to 300 000 items).
Koha is the 1st Open-Source Integrated Library System.
Released at first in New zealand, in 2000 januaray, it is maintained by a team of volunteers from around the globe, the Koha system is a full catalogue, opac, circulation and acquisitions system.
-Koha 2.2 is more than 247 000 lines of code, developped by more than 30 differents developpers (excluding translators !).
+Koha 2.2 is more than 247 000 lines of code, developped by more than 30 differents developers (excluding translators !).
With the 2.2 version, Koha is now a mature product, with a lot of nice features. It's used in more than 50 libraries, from all kinds (public, schools, search, religious...), of all size (from 1 to 8 branches, from 1000 to 300 000 items).
Koha is the 1st Open-Source Integrated Library System.
Released at first in New zealand, in 2000 januaray, it is maintained by a team of volunteers from around the globe, the Koha system is a full catalogue, opac, circulation and acquisitions system.
-Koha 2.2 is more than 247 000 lines of code, developped by more than 30 differents developpers (excluding translators).
+Koha 2.2 is more than 247 000 lines of code, developped by more than 30 differents developers (excluding translators).
With the 2.2 version, Koha is now a mature product, with a lot of nice features. It's used in more than 50 libraries, from all kinds (public, schools, search, religious...), of all size (from 1 to 8 branches, from 1000 to 300 000 items).
Koha is the 1st Open-Source Integrated Library System.
Released at first in New zealand, in 2000 januaray, it is maintained by a team of volunteers from around the globe, the Koha system is a full catalogue, opac, circulation and acquisitions system.
-Koha 2.2 is more than 247 000 lines of code, developped by more than 30 differents developpers (excluding translators).
+Koha 2.2 is more than 247 000 lines of code, developped by more than 30 differents developers (excluding translators).
With the 2.2 version, Koha is now a mature product, with a lot of nice features. It's used in more than 50 libraries, from all kinds (public, schools, search, religious...), of all size (from 1 to 8 branches, from 1000 to 300 000 items).
Documentation Manager: Nicole C Engard <nengard@gmail.com>
Translation Manager: Frédéric Demians <frederic@tamil.fr>
QA Manager: Ian Walls <ian.walls@bywatersolutions.com>
-Bug Wranglers: MJ Ray, Marcel Roy, Paul Poulain, Mason James
+Bug Wranglers: MJ Ray, Marcel de Rooy, Paul Poulain, Mason James
Release Maintainer (3.4.x):
Chris Nighswonger <cnighswonger@foundations.edu>
$cmd = lc $cmd;
if ( $cmd =~ /create|install|update/ ) {
my $installer = LangInstaller->new( $lang, $pref );
+ if ( $cmd !~ /create/ && $lang && not $lang ~~ $installer->{langs} ) {
+ print "Unsupported language: $lang\n";
+ exit;
+ }
if ( $all ) {
usage() if $cmd eq 'create';
for my $lang ( @{$installer->{langs}} ) {
my $biblionumber = $query->param('biblionumber') || $query->param('bib');
+my $record = GetMarcBiblio($biblionumber);
+if ( ! $record ) {
+ print $query->redirect("/cgi-bin/koha/errors/404.pl"); # escape early
+ exit;
+}
+$template->param( biblionumber => $biblionumber );
+
+
+SetUTF8Flag($record);
+
+# XSLT processing of some stuff
+if (C4::Context->preference("OPACXSLTDetailsDisplay") ) {
+ $template->param( 'XSLTBloc' => XSLTParse4Display($biblionumber, $record, 'Detail', 'opac') );
+}
+
+
# We look for the busc param to build the simple paging from the search
my $session = get_session($query->cookie("CGISESSID"));
my %paging = (previous => {}, next => {});
$template->param( 'AllowOnShelfHolds' => C4::Context->preference('AllowOnShelfHolds') );
$template->param( 'ItemsIssued' => CountItemsIssued( $biblionumber ) );
-my $record = GetMarcBiblio($biblionumber);
-if ( ! $record ) {
- print $query->redirect("/cgi-bin/koha/errors/404.pl");
- exit;
-}
-$template->param( biblionumber => $biblionumber );
-SetUTF8Flag($record);
-
-# XSLT processing of some stuff
-if (C4::Context->preference("OPACXSLTDetailsDisplay") ) {
- $template->param( 'XSLTBloc' => XSLTParse4Display($biblionumber, $record, 'Detail', 'opac') );
-}
$template->param('OPACShowCheckoutName' => C4::Context->preference("OPACShowCheckoutName") );
# change back when ive fixed request.pl
my $cgi = new CGI;
BEGIN {
- if (C4::Context->preference('BakerTaylorEnabled')) {
- require C4::External::BakerTaylor;
- import C4::External::BakerTaylor qw(&image_url &link_url);
- }
+ if (C4::Context->preference('BakerTaylorEnabled')) {
+ require C4::External::BakerTaylor;
+ import C4::External::BakerTaylor qw(&image_url &link_url);
+ }
}
my ($template,$borrowernumber,$cookie);
my $format = $cgi->param("format") || '';
my $build_grouped_results = C4::Context->preference('OPACGroupResults');
if ($format =~ /(rss|atom|opensearchdescription)/) {
- $template_name = 'opac-opensearch.tmpl';
+ $template_name = 'opac-opensearch.tmpl';
}
elsif (@params && $build_grouped_results) {
$template_name = 'opac-results-grouped.tmpl';
}
elsif ((@params>=1) || ($cgi->param("q")) || ($cgi->param('multibranchlimit')) || ($cgi->param('limit-yr')) ) {
- $template_name = 'opac-results.tmpl';
+ $template_name = 'opac-results.tmpl';
}
else {
$template_name = 'opac-advsearch.tmpl';
}
if ($format eq 'rss2' or $format eq 'opensearchdescription' or $format eq 'atom') {
- $template->param($format => 1);
+ $template->param($format => 1);
$template->param(timestamp => strftime("%Y-%m-%dT%H:%M:%S-00:00", gmtime)) if ($format eq 'atom');
# FIXME - the timestamp is a hack - the biblio update timestamp should be used for each
# entry, but not sure if that's worth an extra database query for each bib
$template->param( 'OPACNoResultsFound' => C4::Context->preference('OPACNoResultsFound') );
if (C4::Context->preference('BakerTaylorEnabled')) {
- $template->param(
- BakerTaylorEnabled => 1,
- BakerTaylorImageURL => &image_url(),
- BakerTaylorLinkURL => &link_url(),
- BakerTaylorBookstoreURL => C4::Context->preference('BakerTaylorBookstoreURL'),
- );
+ $template->param(
+ BakerTaylorEnabled => 1,
+ BakerTaylorImageURL => &image_url(),
+ BakerTaylorLinkURL => &link_url(),
+ BakerTaylorBookstoreURL => C4::Context->preference('BakerTaylorBookstoreURL'),
+ );
}
if (C4::Context->preference('TagsEnabled')) {
- $template->param(TagsEnabled => 1);
- foreach (qw(TagsShowOnList TagsInputOnList)) {
- C4::Context->preference($_) and $template->param($_ => 1);
- }
+ $template->param(TagsEnabled => 1);
+ foreach (qw(TagsShowOnList TagsInputOnList)) {
+ C4::Context->preference($_) and $template->param($_ => 1);
+ }
}
## URI Re-Writing
my $advanced_search_types = C4::Context->preference("AdvancedSearchTypes");
if (!$advanced_search_types or $advanced_search_types eq 'itemtypes') {
- foreach my $thisitemtype ( sort {$itemtypes->{$a}->{'description'} cmp $itemtypes->{$b}->{'description'} } keys %$itemtypes ) {
- my %row =( number=>$cnt++,
- ccl => "$itype_or_itemtype,phr",
+ foreach my $thisitemtype ( sort {$itemtypes->{$a}->{'description'} cmp $itemtypes->{$b}->{'description'} } keys %$itemtypes ) {
+ my %row =( number=>$cnt++,
+ ccl => "$itype_or_itemtype,phr",
code => $thisitemtype,
selected => $selected,
description => $itemtypes->{$thisitemtype}->{'description'},
count5 => $cnt % 4,
imageurl=> getitemtypeimagelocation( 'opac', $itemtypes->{$thisitemtype}->{'imageurl'} ),
);
- $selected = 0; # set to zero after first pass through
- push @itemtypesloop, \%row;
- }
+ $selected = 0; # set to zero after first pass through
+ push @itemtypesloop, \%row;
+ }
} else {
my $advsearchtypes = GetAuthorisedValues($advanced_search_types, '', 'opac');
- for my $thisitemtype (@$advsearchtypes) {
- my %row =(
- number=>$cnt++,
- ccl => $advanced_search_types,
+ for my $thisitemtype (@$advsearchtypes) {
+ my %row =(
+ number=>$cnt++,
+ ccl => $advanced_search_types,
code => $thisitemtype->{authorised_value},
selected => $selected,
description => $thisitemtype->{'lib'},
count5 => $cnt % 4,
imageurl=> getitemtypeimagelocation( 'opac', $thisitemtype->{'imageurl'} ),
);
- push @itemtypesloop, \%row;
- }
+ push @itemtypesloop, \%row;
+ }
}
$template->param(itemtypeloop => \@itemtypesloop);
}
}
- $template->param(uc(C4::Context->preference("marcflavour")) => 1, # we already did this for UNIMARC
- advsearch => 1,
- search_boxes_loop => \@search_boxes_array);
-
-# use the global setting by default
- if ( C4::Context->preference("expandedSearchOption") == 1 ) {
- $template->param( expanded_options => C4::Context->preference("expandedSearchOption") );
- }
- # but let the user override it
- if (defined $cgi->param('expanded_options')) {
- if ( ($cgi->param('expanded_options') == 0) || ($cgi->param('expanded_options') == 1 ) ) {
- $template->param( expanded_options => $cgi->param('expanded_options'));
- }
+ $template->param(uc( C4::Context->preference("marcflavour")) => 1, # we already did this for UNIMARC
+ advsearch => 1,
+ search_boxes_loop => \@search_boxes_array);
+
+ # use the global setting by default
+ if ( C4::Context->preference("expandedSearchOption") == 1 ) {
+ $template->param( expanded_options => C4::Context->preference("expandedSearchOption") );
+ }
+ # but let the user override it
+ if (defined $cgi->param('expanded_options')) {
+ if ( ($cgi->param('expanded_options') == 0) || ($cgi->param('expanded_options') == 1 ) ) {
+ $template->param( expanded_options => $cgi->param('expanded_options'));
}
+ }
output_html_with_http_headers $cgi, $cookie, $template->output;
exit;
}
$j++;
}
}
-#
-
# Params that can have more than one value
# sort by is used to sort the query
my @results;
## I. BUILD THE QUERY
-my $lang = C4::Templates::getlanguagecookie($cgi);
+my $lang = C4::Templates::getlanguage($cgi, 'opac');
( $error,$query,$simple_query,$query_cgi,$query_desc,$limit,$limit_cgi,$limit_desc,$stopwords_removed,$query_type) = buildQuery(\@operators,\@operands,\@indexes,\@limits,\@sort_by, 0, $lang);
sub _input_cgi_parse ($) {
my @coins;
if ($tag) {
- $query_cgi = "tag=" .$tag . "&" . $query_cgi;
- my $taglist = get_tags({term=>$tag, approved=>1});
- $results_hashref->{biblioserver}->{hits} = scalar (@$taglist);
- my @biblist = (map {GetBiblioData($_->{biblionumber})} @$taglist);
- my @marclist = (map {$_->{marc}} @biblist );
- $DEBUG and printf STDERR "taglist (%s biblionumber)\nmarclist (%s records)\n", scalar(@$taglist), scalar(@marclist);
- $results_hashref->{biblioserver}->{RECORDS} = \@marclist;
- # FIXME: tag search and standard search should work together, not exclusively
- # FIXME: No facets for tags search.
+ $query_cgi = "tag=" .$tag . "&" . $query_cgi;
+ my $taglist = get_tags({term=>$tag, approved=>1});
+ $results_hashref->{biblioserver}->{hits} = scalar (@$taglist);
+ my @biblist = (map {GetBiblioData($_->{biblionumber})} @$taglist);
+ my @marclist = (map {$_->{marc}} @biblist );
+ $DEBUG and printf STDERR "taglist (%s biblionumber)\nmarclist (%s records)\n", scalar(@$taglist), scalar(@marclist);
+ $results_hashref->{biblioserver}->{RECORDS} = \@marclist;
+ # FIXME: tag search and standard search should work together, not exclusively
+ # FIXME: No facets for tags search.
}
elsif (C4::Context->preference('NoZebra')) {
eval {
@newresults = searchResults('opac', $query_desc, $hits, $results_per_page, $offset, $scan,
@{$results_hashref->{$server}->{"RECORDS"}},, C4::Context->preference('hidelostitems'));
}
- my $tag_quantity;
- if (C4::Context->preference('TagsEnabled') and
- $tag_quantity = C4::Context->preference('TagsShowOnList')) {
- foreach (@newresults) {
- my $bibnum = $_->{biblionumber} or next;
- $_->{itemsissued} = CountItemsIssued( $bibnum );
- $_ ->{'TagLoop'} = get_tags({biblionumber=>$bibnum, approved=>1, 'sort'=>'-weight',
- limit=>$tag_quantity });
- }
- }
- if (C4::Context->preference('COinSinOPACResults')) {
- foreach (@newresults) {
- my $record = GetMarcBiblio($_->{'biblionumber'});
- $_->{coins} = GetCOinSBiblio($record);
- }
- }
+
+ # must define a value for size if not present in DB
+ # in order to avoid problems generated by the default size value in TT
+ foreach my $line (@newresults) {
+ if ( not exists $line->{'size'} ) { $line->{'size'} = "" }
+ }
+
+ my $tag_quantity;
+ if (C4::Context->preference('TagsEnabled') and
+ $tag_quantity = C4::Context->preference('TagsShowOnList')) {
+ foreach (@newresults) {
+ my $bibnum = $_->{biblionumber} or next;
+ $_->{itemsissued} = CountItemsIssued( $bibnum );
+ $_ ->{'TagLoop'} = get_tags({biblionumber=>$bibnum, approved=>1, 'sort'=>'-weight',
+ limit=>$tag_quantity });
+ }
+ }
+ if (C4::Context->preference('COinSinOPACResults')) {
+ foreach (@newresults) {
+ my $record = GetMarcBiblio($_->{'biblionumber'});
+ $_->{coins} = GetCOinSBiblio($record);
+ }
+ }
- if ($results_hashref->{$server}->{"hits"}){
- $total = $total + $results_hashref->{$server}->{"hits"};
- }
- # Opac search history
- my $newsearchcookie;
- if (C4::Context->preference('EnableOpacSearchHistory')) {
- my @recentSearches;
-
- # Getting the (maybe) already sent cookie
- my $searchcookie = $cgi->cookie('KohaOpacRecentSearches');
- if ($searchcookie){
- $searchcookie = uri_unescape($searchcookie);
- if (thaw($searchcookie)) {
- @recentSearches = @{thaw($searchcookie)};
- }
- }
-
- # Adding the new search if needed
- if (!$borrowernumber || $borrowernumber eq '') {
- # To a cookie (the user is not logged in)
-
- if (($params->{'offset'}||'') eq '') {
-
- push @recentSearches, {
- "query_desc" => $query_desc || "unknown",
- "query_cgi" => $query_cgi || "unknown",
- "time" => time(),
- "total" => $total
- };
- $template->param(ShowOpacRecentSearchLink => 1);
- }
-
- shift @recentSearches if (@recentSearches > 15);
- # Pushing the cookie back
- $newsearchcookie = $cgi->cookie(
- -name => 'KohaOpacRecentSearches',
- # We uri_escape the whole freezed structure so we're sure we won't have any encoding problems
- -value => uri_escape(freeze(\@recentSearches)),
- -expires => ''
- );
- $cookie = [$cookie, $newsearchcookie];
- }
- else {
- # To the session (the user is logged in)
- if (($params->{'offset'}||'') eq '') {
- AddSearchHistory($borrowernumber, $cgi->cookie("CGISESSID"), $query_desc, $query_cgi, $total);
- $template->param(ShowOpacRecentSearchLink => 1);
- }
- }
- }
- ## If there's just one result, redirect to the detail page
+ if ($results_hashref->{$server}->{"hits"}){
+ $total = $total + $results_hashref->{$server}->{"hits"};
+ }
+
+ # Opac search history
+ my $newsearchcookie;
+ if (C4::Context->preference('EnableOpacSearchHistory')) {
+ my @recentSearches;
+
+ # Getting the (maybe) already sent cookie
+ my $searchcookie = $cgi->cookie('KohaOpacRecentSearches');
+ if ($searchcookie){
+ $searchcookie = uri_unescape($searchcookie);
+ if (thaw($searchcookie)) {
+ @recentSearches = @{thaw($searchcookie)};
+ }
+ }
+
+ # Adding the new search if needed
+ if (!$borrowernumber || $borrowernumber eq '') {
+ # To a cookie (the user is not logged in)
+ if (($params->{'offset'}||'') eq '') {
+ push @recentSearches, {
+ "query_desc" => $query_desc || "unknown",
+ "query_cgi" => $query_cgi || "unknown",
+ "time" => time(),
+ "total" => $total
+ };
+ $template->param(ShowOpacRecentSearchLink => 1);
+ }
+
+ shift @recentSearches if (@recentSearches > 15);
+ # Pushing the cookie back
+ $newsearchcookie = $cgi->cookie(
+ -name => 'KohaOpacRecentSearches',
+ # We uri_escape the whole freezed structure so we're sure we won't have any encoding problems
+ -value => uri_escape(freeze(\@recentSearches)),
+ -expires => ''
+ );
+ $cookie = [$cookie, $newsearchcookie];
+ }
+ else {
+ # To the session (the user is logged in)
+ if (($params->{'offset'}||'') eq '') {
+ AddSearchHistory($borrowernumber, $cgi->cookie("CGISESSID"), $query_desc, $query_cgi, $total);
+ $template->param(ShowOpacRecentSearchLink => 1);
+ }
+ }
+ }
+ ## If there's just one result, redirect to the detail page
if ($total == 1 && $format ne 'rss2'
- && $format ne 'opensearchdescription' && $format ne 'atom') {
+ && $format ne 'opensearchdescription' && $format ne 'atom') {
my $biblionumber=$newresults[0]->{biblionumber};
if (C4::Context->preference('BiblioDefaultView') eq 'isbd') {
print $cgi->redirect("/cgi-bin/koha/opac-ISBDdetail.pl?biblionumber=$biblionumber");
$template->param( PAGE_NUMBERS => \@page_numbers,
previous_page_offset => $previous_page_offset) unless $pages < 2;
$template->param(next_page_offset => $next_page_offset) unless $pages eq $current_page_number;
- }
+ }
# no hits
else {
$template->param(searchdesc => 1,query_desc => $query_desc,limit_desc => $limit_desc);
total => $total,
opacfacets => 1,
facets_loop => $facets,
- displayFacetCount=> C4::Context->preference('displayFacetCount')||0,
+ displayFacetCount=> C4::Context->preference('displayFacetCount')||0,
scan => $scan,
search_error => $error,
);
my $pubshelves = $session->param('pubshelves');
my $barshelves = $session->param('barshelves');
foreach my $shelf (@$pubshelves) {
- next if ( ($shelf->{'owner'} != ($borrowernumber ? $borrowernumber : -1)) && ($shelf->{'category'} < 3) );
- push (@addpubshelves, $shelf);
+ next if ( ($shelf->{'owner'} != ($borrowernumber ? $borrowernumber : -1)) && ($shelf->{'category'} < 3) );
+ push (@addpubshelves, $shelf);
}
if (@addpubshelves) {
- $template->param( addpubshelves => scalar (@addpubshelves));
- $template->param( addpubshelvesloop => \@addpubshelves);
+ $template->param( addpubshelves => scalar (@addpubshelves));
+ $template->param( addpubshelvesloop => \@addpubshelves);
}
if (defined $barshelves) {
- $template->param( addbarshelves => scalar (@$barshelves));
- $template->param( addbarshelvesloop => $barshelves);
+ $template->param( addbarshelves => scalar (@$barshelves));
+ $template->param( addbarshelvesloop => $barshelves);
}
my $content_type = ($format eq 'rss' or $format eq 'atom') ? $format : 'html';
template_name => "opac-sendbasketform.tmpl",
query => $query,
type => "opac",
- authnotrequired => ( C4::Context->preference("OpacPublic") ? 1 : 0 ),
+ authnotrequired => 0,
flagsrequired => { borrow => 1 },
}
);
template_name => "opac-sendshelfform.tmpl",
query => $query,
type => "opac",
- authnotrequired => 1,
+ authnotrequired => 0,
flagsrequired => { borrow => 1 },
}
);
my $reviews = getallreviews(1,$offset,$results_per_page);
my $marcflavour = C4::Context->preference("marcflavour");
-my $hits = numberofreviews();
+my $hits = numberofreviews(1);
my $i = 0;
my $latest_comment_date;
for my $result (@$reviews){
# Copyright 2000-2002 Katipo Communications
+# Parts Copyright Catalyst IT 2011
#
# This file is part of Koha.
#
";
$template->param(ccodesearch => 1);
}else{
- $whereclause .= ' AND biblioitems.itemtype='.$dbh->quote($itemtype) if $itemtype;
+ if ($itemtype){
+ if (C4::Context->preference('item-level_itypes')){
+ $whereclause .= ' AND items.itype = ' . $dbh->quote($itemtype);
+ }
+ else {
+ $whereclause .= ' AND biblioitems.itemtype='.$dbh->quote($itemtype);
+ }
+ }
$query = "SELECT datecreated, biblio.biblionumber, title,
author, sum( items.issues ) AS tot, biblioitems.itemtype,
biblioitems.publishercode,biblioitems.publicationyear,
use C4::Members::AttributeTypes;
use C4::Members::Attributes qw/GetBorrowerAttributeValue/;
use C4::Output;
+use C4::Overdues qw/CheckBorrowerDebarred/;
use C4::Biblio;
use C4::Items;
use C4::Dates qw/format_date/;
}
$borr->{'ethnicity'} = fixEthnicity( $borr->{'ethnicity'} );
-if ( $borr->{'debarred'} || $borr->{'gonenoaddress'} || $borr->{'lost'} ) {
+my $debar = CheckBorrowerDebarred($borrowernumber);
+my $userdebarred;
+
+if ($debar) {
+ $userdebarred = 1;
+ $template->param( 'userdebarred' => $userdebarred );
+ if ( $debar ne "9999-12-31" ) {
+ $borr->{'userdebarreddate'} = C4::Dates::format_date($debar);
+ }
+}
+
+if ( $userdebarred || $borr->{'gonenoaddress'} || $borr->{'lost'} ) {
$borr->{'flagged'} = 1;
}
}
$borr->{'amountoutstanding'} = sprintf "%.02f", $borr->{'amountoutstanding'};
-$borr->{'debarred'} = C4::Dates->new($borr->{'debarred'},'iso')->output;
my @bordat;
$bordat[0] = $borr;
OPACMySummaryHTML => (C4::Context->preference("OPACMySummaryHTML")) ? 1 : 0,
surname => $borr->{surname},
showname => $borr->{showname},
+
);
#get issued items ....
if ($issues){
foreach my $issue ( sort { $b->{'date_due'} cmp $a->{'date_due'} } @$issues ) {
# check for reserves
- my ( $restype, $res ) = CheckReserves( $issue->{'itemnumber'} );
+ my ( $restype, $res, undef ) = CheckReserves( $issue->{'itemnumber'} );
if ( $restype ) {
$issue->{'reserved'} = 1;
}
template_name => "opac-userupdate.tmpl",
query => $query,
type => "opac",
- authnotrequired => ( C4::Context->preference("OpacPublic") ? 1 : 0 ),
+ authnotrequired => 0,
flagsrequired => { borrow => 1 },
debug => 1,
}
# get all the fields:
my $message = <<"EOF";
-Patron $borr->{'cardnumber'}
+Patron $borr->{'cardnumber'} has requested to change her/his personal details.
+Please check these new details and make the changes to these fields:
-has requested to change her/his personal details.
-Please check these new details and make the changes:
EOF
my $streetnumber = $borr->{'streetnumber'} || '';
$borrowerfield = format_date( $borr->{'dateofbirth'} ) || '';
}
- if($borrowerfield eq $newfield) {
- $message .= "$field : $borrowerfield --> $newfield\n";
- } else {
- $message .= uc($field) . " : $borrowerfield --> $newfield\n";
+ if($borrowerfield ne $newfield) {
+ $message .= $field . " : $borrowerfield --> $newfield\n";
}
}
+
+ $message .= "\nEdit this patron's record: http://".C4::Context->preference('staffClientBaseURL ')."/cgi-bin/koha/members/memberentry.pl?op=modify&borrowernumber=".$borr->{'borrowernumber'}."&categorycode=".$borr->{'categorycode'} if C4::Context->preference('staffClientBaseURL ');
+
$message .= "\n\nThanks,\nKoha\n\n";
my %mail = (
To => $updateemailaddress,
my $line = $input->param("Line");
my $column = $input->param("Column");
my @filters = $input->param("Filter");
-$filters[0]= (($line =~ /closedate/ || $column =~ /closedate/) ? format_date_in_iso($filters[0]) : undef);
-$filters[1]= (($line =~ /closedate/ || $column =~ /closedate/) ? format_date_in_iso($filters[1]) : undef);
-$filters[2]= (($line =~ /delivery/ || $column =~ /delivery/) ? format_date_in_iso($filters[2]) : undef);
-$filters[3]= (($line =~ /delivery/ || $column =~ /delivery/) ? format_date_in_iso($filters[3]) : undef);
+$filters[0]= format_date_in_iso($filters[0]);
+$filters[1]= format_date_in_iso($filters[1]);
+$filters[2]= format_date_in_iso($filters[2]);
+$filters[3]= format_date_in_iso($filters[3]);
my $podsp = $input->param("PlacedOnDisplay");
my $rodsp = $input->param("ReceivedOnDisplay");
my $aodsp = $input->param("AcquiredOnDisplay"); ##added by mason.
my $dbh = C4::Context->dbh;
my $branches=GetBranches();
my @branches;
+ my $default;
my @select_branch;
my %select_branches;
push @select_branch,"";
$select_branches{""} = "";
- foreach my $branch (keys %$branches) {
+ for my $branch (sort { $branches->{$a}->{branchname} cmp $branches->{$b}->{branchname} } keys %$branches) {
push @select_branch, $branch;
$select_branches{$branch} = $branches->{$branch}->{'branchname'};
+ $default = C4::Context->userenv->{'branch'} if (C4::Context->userenv && C4::Context->userenv->{'branch'});
}
my $CGIbranch=CGI::scrolling_list( -name => 'value',
-id => 'value',
-values => \@select_branch,
-labels => \%select_branches,
-size => 1,
- -multiple => 0 );
+ -multiple => 0,
+ -default => $default, );
$template->param(CGIbranch => $CGIbranch);
return $template;
}
FROM itemtypes,items
WHERE items.itype=itemtypes.itemtype
AND items.holdingbranch=?
- GROUP BY items.itype");
+ GROUP BY items.itype
+ ORDER BY itemtypes.description");
}
else {
WHERE biblioitems.itemtype=itemtypes.itemtype
AND items.biblioitemnumber=biblioitems.biblioitemnumber
AND items.holdingbranch=?
- GROUP BY biblioitems.itemtype");
+ GROUP BY biblioitems.itemtype
+ ORDER BY itemtypes.description");
}
$sth->execute($branch);
} else {
SELECT description,items.itype AS itemtype, COUNT(*) AS total
FROM itemtypes,items
WHERE items.itype=itemtypes.itemtype
- GROUP BY items.itype");
+ GROUP BY items.itype
+ ORDER BY itemtypes.description");
}
else {
$sth = $dbh->prepare("SELECT description, biblioitems.itemtype, COUNT(*) AS total
FROM itemtypes, biblioitems,items
WHERE biblioitems.itemtype=itemtypes.itemtype
AND biblioitems.biblioitemnumber = items.biblioitemnumber
- GROUP BY biblioitems.itemtype");
+ GROUP BY biblioitems.itemtype
+ ORDER BY itemtypes.description");
}
$sth->execute;
}
$globalline{loopitemtype} = \@results;
$globalline{total} = $grantotal;
$globalline{branch} = $branch;
+ $globalline{branchname} = GetBranchName($branch);
push @mainloop,\%globalline;
return \@mainloop;
}
);
my $op = $query->param('op') || '';
+my $status = $query->param('status') || 0;
my $reviewid = $query->param('reviewid');
+my $offset = $query->param('offset') || 0;
+my $count = C4::Context->preference('numSearchResults') || 20;
+my $total = numberofreviews($status);
if ( $op eq 'approve' ) {
approvereview($reviewid);
}
+elsif ( $op eq 'unapprove' ) {
+ unapprovereview($reviewid);
+}
elsif ( $op eq 'delete' ) {
deletereview($reviewid);
}
-my $reviews = getallreviews(0);
+my $reviews = getallreviews($status,$offset,$count);
foreach ( @$reviews ) {
my $borrowernumber = $_->{borrowernumber};
$_->{firstname} = $borrowerData->{'firstname'};
}
-$template->param( reviews => $reviews );
+my $url = "/cgi-bin/koha/reviews/reviewswaiting.pl?status=$status";
+
+$template->param(
+ status => $status,
+ reviews => $reviews,
+ pagination_bar => pagination_bar( $url, ( int( $total / $count ) ) + ( ( $total % $count ) > 0 ? 1 : 0 ), $offset, "offset" )
+);
output_html_with_http_headers $query, $cookie, $template->output;
print $query->redirect('/cgi-bin/koha/serials/serials-collection.pl?subscriptionid='.$subscriptionid);
}
+my $subscriptioncount;
my ($location, $callnumber);
if (@subscriptionid){
my @subscriptioninformation=();
@subscriptioninformation=(@$tmpsubscription,@subscriptioninformation);
}
$subscriptions=PrepareSerialsData(\@subscriptioninformation);
+ $subscriptioncount = CountSubscriptionFromBiblionumber($subscriptiondescs->[0]{'biblionumber'});
} else {
$subscriptiondescs = GetSubscriptionsFromBiblionumber($biblionumber) ;
my $subscriptioninformation = GetFullSubscriptionsFromBiblionumber($biblionumber);
chop $subscriptionidlist;
$template->param(
- onesubscription => (scalar(@$subscriptiondescs)==1),
subscriptionidlist => $subscriptionidlist,
biblionumber => $biblionumber,
subscriptions => $subscriptiondescs,
suggestion => C4::Context->preference("suggestion"),
virtualshelves => C4::Context->preference("virtualshelves"),
subscr=>$query->param('subscriptionid'),
+ subscriptioncount => $subscriptioncount,
location => $locationlib,
callnumber => $callnumber,
);
--- /dev/null
+# Copyright 2010 Chris Cormack
+#
+# 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.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+use strict;
+use warnings;
+
+use Test::More;
+use File::Spec;
+use File::Find;
+use IO::File;
+
+my @files =('kohaversion.pl','installer/data/mysql/updatedatabase.pl');
+
+foreach my $file (@files){
+ next unless -f $file;
+ my @name_parts = File::Spec->splitpath($file);
+ my %dirs = map { $_ => 1 } File::Spec->splitdir($name_parts[1]);
+ next if exists $dirs{'.git'};
+
+ my $fh = IO::File->new($file, 'r');
+ my $xxx_found = 0;
+ my $line = 0;
+ while (<$fh>) {
+ $line++;
+ if (/XXX/i) {
+ #two lines are an exception for updatedatabase (routine SetVersion and TransferToNum)
+ next if $file=~ /updatedatabase/ && ( /s\/XXX\$\/999\/;/ || /\$_\[0\]=~ \/XXX\$\/;/ );
+ $xxx_found = 1;
+ last;
+ }
+ }
+ close $fh;
+ if ($xxx_found) {
+ fail("$file has no XXX in it");
+ diag("XXX found in line $line");
+ } else {
+ pass("$file has no XXX in it");
+ }
+}
+
+done_testing();
use_ok($m) || BAIL_OUT("***** PROBLEMS LOADING FILE '$m'");
},
}, $lib);
+
+$lib = File::Spec->rel2abs('Koha');
+find(
+ {
+ bydepth => 1,
+ no_chdir => 1,
+ wanted => sub {
+ my $m = $_;
+ return unless $m =~ s/[.]pm$//;
+ $m =~ s{^.*/Koha/}{Koha/};
+ $m =~ s{/}{::}g;
+ use_ok($m) || BAIL_OUT("***** PROBLEMS LOADING FILE '$m'");
+ },
+ },
+ $lib
+);
+
+
done_testing();
use strict;
use warnings;
-use Test::More tests => 1;
+use Test::More tests => 2;
BEGIN {
use_ok('C4::AuthoritiesMarc::UNIMARC');
}
+my @test = C4::AuthoritiesMarc::UNIMARC::default_auth_type_location();
+ok(($test[0] == 152) && ($test[1] eq 'b'), "correct variables being returned");
use strict;
use warnings;
-use Test::More tests => 12;
+use Test::More tests => 13;
BEGIN { use_ok( 'C4::Boolean', qw( true_p ) ); }
is( true_p(undef), undef, 'recognizes undefined as not boolean' );
is( true_p('foo'), undef, 'recognizes \'foo\' as not boolean' );
+is( true_p([]), undef, 'recognizes a reference as not a boolean' );
use strict;
use warnings;
-use Test::More tests => 1;
+use Test::More tests => 6;
BEGIN {
use_ok('C4::ClassSortRoutine::Dewey');
}
+my $cn_sort = C4::ClassSortRoutine::Dewey::get_class_sort_key(undef, undef );
+is($cn_sort,"","testing whitespace");
+
+$cn_sort = C4::ClassSortRoutine::Dewey::get_class_sort_key("....",".....");
+is($cn_sort,"","testing fullstops");
+
+$cn_sort = C4::ClassSortRoutine::Dewey::get_class_sort_key("123","456");
+is($cn_sort,"123_456000000000000","testing numbers");
+
+$cn_sort = C4::ClassSortRoutine::Dewey::get_class_sort_key("abc123","456");
+is($cn_sort,"ABC_123_456000000000000","testing alphanumeric");
+
+$cn_sort = C4::ClassSortRoutine::Dewey::get_class_sort_key("ab c123","45 6");
+is($cn_sort,"AB_C123_45_600000000000000","testing middle whitespace");
use strict;
use warnings;
-use Test::More tests => 1;
+use Test::More tests => 3;
BEGIN {
use_ok('C4::ClassSortRoutine::Generic');
}
+my $cn_class = "My class ";
+my $cn_item = " hellO";
+
+my $cn_sort = C4::ClassSortRoutine::Generic::get_class_sort_key($cn_class, $cn_item);
+
+is($cn_sort,"MY_CLASS_HELLO","testing cnsort");
+
+$cn_sort = C4::ClassSortRoutine::Generic::get_class_sort_key(undef, undef);
+
+is($cn_sort,"","Testing blank cnsort");
--- /dev/null
+#!/usr/bin/perl
+#
+
+use strict;
+use warnings;
+use C4::Context;
+use C4::Dates;
+use Test::More tests => 5;
+
+BEGIN {
+ use_ok('Koha::Template::Plugin::KohaDates');
+}
+
+my $date = "1973-05-21";
+my $context = C4::Context->new();
+my $dateobj = C4::Dates->new();
+
+my $filter = Koha::Template::Plugin::KohaDates->new();
+ok ($filter, "new()");
+
+
+$context->set_preference( "dateformat", 'iso' );
+$context->clear_syspref_cache();
+$dateobj->reset_prefformat;
+
+my $filtered_date = $filter->filter($date);
+is ($filtered_date,$date, "iso conversion") or diag ("iso conversion fails");
+
+#$filter = Koha::Template::Plugin::KohaDates->new();
+$context->set_preference( "dateformat", 'us' );
+$context->clear_syspref_cache();
+$dateobj->reset_prefformat;
+
+$filtered_date = $filter->filter($date);
+is ($filtered_date,'05/21/1973', "us conversion") or diag ("us conversion fails $filtered_date");
+
+$context->set_preference( "dateformat", 'metric' );
+$context->clear_syspref_cache();
+$dateobj->reset_prefformat;
+
+$filtered_date = $filter->filter($date);
+is ($filtered_date,'21/05/1973', "metric conversion") or diag ("metric conversion fails $filtered_date");
use strict;
use warnings;
-use Test::More tests => 1;
+use Test::More tests => 2;
BEGIN {
use_ok('C4::Reports');
}
+
+ok(GetDelimiterChoices(),"Testing getting delimeter choices"); #Not testing the value of the output just that it returns something.
+++ /dev/null
-#!/usr/bin/perl
-#
-# This Koha test module is a stub!
-# Add more tests here!!!
-
-use strict;
-use warnings;
-
-use Test::More tests => 1;
-
-BEGIN {
- use FindBin;
- use lib "$FindBin::Bin/../C4/SIP";
- use_ok('C4::SIP::ILS');
-}
-
use strict;
use warnings;
-use Test::More tests => 4;
+use Test::More tests => 8;
BEGIN {
use FindBin;
$date_time = Sip::timestamp('2011-01-12');
ok( $date_time eq '20110112 235900', 'Timestamp iso date string');
+my $myChecksum = Sip::Checksum::checksum("12345");
+my $checker = 65281;
+my $stringChecksum = Sip::Checksum::checksum("teststring");
+my $stringChecker = 64425;
+
+is( $myChecksum, $checker, "Checksum: $myChecksum matches expected output");
+is( $stringChecksum, $stringChecker, "Checksum: $stringChecksum matches expected output");
+
+my $testdata = "abcdAZ";
+my $something = Sip::Checksum::checksum($testdata);
+
+$something = sprintf("%4X", $something);
+ok( Sip::Checksum::verify_cksum($testdata.$something), "Checksum: $something is valid.");
+
+my $invalidTest = Sip::Checksum::verify_cksum("1234567");
+is($invalidTest, 0, "Checksum: 1234567 is invalid as expected");
use strict;
use warnings;
-use Test::More tests => 11;
+use Test::More tests => 19;
BEGIN {
use FindBin;
use lib $FindBin::Bin;
my ($scrubber,$html,$result,@types,$collapse);
$collapse = 1;
-@types = qw(comment tag);
+@types = qw(default comment tag staff);
$html = q|
<![CDATA[selfdestruct]]]>
<?php echo(" EVIL EVIL EVIL "); ?> <!-- COMMENT -->
print pretty_line('default'), $result, "\n", pretty_line();
foreach(@types) {
- ok($scrubber = C4::Scrubber->new($_), "Constructor: C4::Scrubber->new($_)");
+ ok($scrubber = C4::Scrubber->new($_), "testing Constructor: C4::Scrubber->new($_)");
ok(printf("# scrubber settings: default %s, comment %s, process %s\n",
$scrubber->default(),$scrubber->comment(),$scrubber->process()),
"Outputting settings from scrubber object (type: $_)"
$collapse and $result =~ s/\s*\n\s*/\n/g;
print pretty_line($_), $result, "\n", pretty_line();
}
+
+print "\n\n######################################################\nStart of invalid tests\n";
+
+#Test for invalid new entry
+eval{
+ C4::Scrubber->new("");
+ fail("test should fail on entry of ''\n");
+};
+pass("Test should have failed on entry of '' (empty string) and it did. YAY!\n");
+
+eval{
+ C4::Scrubber->new("Client");
+ fail("test should fail on entry of 'Client'\n");
+};
+pass("Test should have failed on entry of 'Client' and it did. YAY!\n");
+
+print "######################################################\n";
+
diag "done.\n";
use warnings;
use C4::Auth;
use CGI;
-use Test::More tests => 10;
+use Test::More tests => 11;
BEGIN {
use_ok('C4::BackgroundJob');
#my ($sessionID, $job_name, $job_invoker, $num_work_units) = @_;
my $background;
diag $sessionID;
-ok ($background=C4::BackgroundJob->new($sessionID));
-ok ($background->id);
+ok ($background=C4::BackgroundJob->new($sessionID), "making job");
+ok ($background->id, "fetching id number");
$background->name("George");
is ($background->name, "George", "testing name");
$background->progress("testing");
is ($background->progress, "testing", "testing progress");
-ok ($background->status);
+ok ($background->status, "testing status");
$background->size("56");
is ($background->size, "56", "testing size");
+ok (!$background->fetch($sessionID, $background->id), "testing fetch");
+
+
$background->finish("finished");
is ($background->status,'completed', "testing finished");
-ok ($background->results); # Will return undef unless finished
\ No newline at end of file
+ok ($background->results); #Will return undef unless finished
font_size => 3,
callnum_split => 0,
text_justify => 'L',
- format_string => 'title, author, isbn, issn, itemtype, barcode, callnumber',
+ format_string => 'title, author, isbn, issn, itemtype, barcode, itemcallnumber',
};
my $layout;
my $FIRSTNAME = 'Marie';
my $SURNAME = 'Mcknight';
my $CATEGORYCODE = 'S';
-my $BRANCHCODE = 's';
+my $BRANCHCODE = 'CPL';
my $CHANGED_FIRSTNAME = "Marry Ann";
my $EMAIL = "Marie\@email.com";
$constraint, $bibitems, $priority, $notes,
$title, $checkitem, $found);
-my ($status, $reserve) = CheckReserves($itemnumber, $barcode);
+my ($status, $reserve, $all_reserves) = CheckReserves($itemnumber, $barcode);
ok($status eq "Reserved", "CheckReserves Test 1");
-($status, $reserve) = CheckReserves($itemnumber);
+($status, $reserve, $all_reserves) = CheckReserves($itemnumber);
ok($status eq "Reserved", "CheckReserves Test 2");
-($status, $reserve) = CheckReserves(undef, $barcode);
+($status, $reserve, $all_reserves) = CheckReserves(undef, $barcode);
ok($status eq "Reserved", "CheckReserves Test 3");
--- /dev/null
+#!/usr/bin/perl
+#
+# This Koha test module is a stub!
+# Add more tests here!!!
+
+use strict;
+use warnings;
+
+use Test::More tests => 4;
+
+BEGIN {
+ use FindBin;
+ use lib "$FindBin::Bin/../../C4/SIP";
+ use_ok('C4::SIP::ILS');
+};
+
+my $transaction = ILS::Transaction::RenewAll->new();
+
+$transaction->patron(my $patron = ILS::Patron->new(23529000120056));
+
+ok(defined $patron, "patron code: 23529000120056 is valid");
+
+my $transaction2 = ILS::Transaction::RenewAll->new();
+$transaction2->patron(my $patron2 = ILS::Patron->new("ABCDE12345"));
+
+#This test assumes that the patron code ABCDE12345 is invalid
+ok(!defined $patron2, "patron code: ABCDE12345 is invalid");
+
+ok($transaction->do_renew_all(), "items renewed correctly");
ok($results[0] eq $string,"$string is not modified");
}
-foreach my $string ("Les chaussettes de l'archiduchesse") {
+foreach my $string ("A book about the stars") {
my @results=C4::Search::_remove_stopwords($string,"kw");
$debug && warn "$string ",Dump(@results);
ok($results[0] ne $string,"$results[0] from $string");
GetFrameworkCode
GetPublisherNameFromIsbn
TransformKohaToMarc
- TransformKohaToMarcOneField
TransformHtmlToXml
TransformHtmlToMarc
TransformMarcToKoha
ModReserveAffect
ModReserveCancelAll
ModReserveMinusPriority
+ MoveReserve
GetReserveInfo
_FixPriority
_Findgroupreserve
--- /dev/null
+#!/usr/bin/perl
+
+use Modern::Perl;
+use Test::More tests => 2;
+use C4::Context;
+
+my $opacheader = C4::Context->preference('opacheader');
+my $newopacheader = "newopacheader";
+
+C4::Context->set_preference('OPACHEADER', $newopacheader);
+ok(C4::Context->preference('opacheader') eq $newopacheader);
+
+C4::Context->set_preference('opacheader', $opacheader);
+ok(C4::Context->preference('OPACHEADER') eq $opacheader);
keydate => $keydate,
branchcodes => $branchcodes,
branch => $branch,
+ DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar(),
branchname => $branchname
);
use C4::Calendar;
+use DateTime;
-my $input = new CGI;
-my $dbh = C4::Context->dbh();
+my $input = new CGI;
+my $dbh = C4::Context->dbh();
-my $branchcode = $input->param('newBranchName');
-my $originalbranchcode = $branchcode;
-my $weekday = $input->param('newWeekday');
-my $day = $input->param('newDay');
-my $month = $input->param('newMonth');
-my $year = $input->param('newYear');
-my $title = $input->param('newTitle');
-my $description = $input->param('newDescription');
-my $newoperation = $input->param('newOperation');
-my $allbranches = $input->param('allBranches');
+my $branchcode = $input->param('newBranchName');
+my $originalbranchcode = $branchcode;
+my $weekday = $input->param('newWeekday');
+my $day = $input->param('newDay');
+my $month = $input->param('newMonth');
+my $year = $input->param('newYear');
+my $day1;
+my $month1;
+my $year1;
+my $dateofrange = $input->param('dateofrange');
+my $title = $input->param('newTitle');
+my $description = $input->param('newDescription');
+my $newoperation = $input->param('newOperation');
+my $allbranches = $input->param('allBranches');
-my $calendardate = sprintf("%04d-%02d-%02d", $year, $month, $day);
-my $isodate = C4::Dates->new($calendardate, 'iso');
-$calendardate = $isodate->output('syspref');
+my $calendardate = sprintf("%04d-%02d-%02d", $year, $month, $day);
+my $isodate = C4::Dates->new($calendardate, 'iso');
+$calendardate = $isodate->output('syspref');
+my @dateend = split(/[\/-]/, $dateofrange);
+if (C4::Context->preference("dateformat") eq "metric") {
+ $day1 = $dateend[0];
+ $month1 = $dateend[1];
+ $year1 = $dateend[2];
+}elsif (C4::Context->preference("dateformat") eq "us") {
+ $month1 = $dateend[0];
+ $day1 = $dateend[1];
+ $year1 = $dateend[2];
+} else {
+ $year1 = $dateend[0];
+ $month1 = $dateend[1];
+ $day1 = $dateend[2];
+}
$title || ($title = '');
if ($description) {
$description =~ s/\r/\\r/g;
description => $description);
}
- }
+ } elsif ( $newoperation eq 'holidayrange' ) {
+ #Make an array with holiday's days
+ my $first_dt = DateTime->new(year => $year, month => $month, day => $day);
+ my $end_dt = DateTime->new(year => $year1, month => $month1, day => $day1);
+ my @holiday_list = ();
+
+ for (my $dt = $first_dt->clone();
+ $dt <= $end_dt;
+ $dt->add(days => 1) )
+ {
+ push @holiday_list, $dt->clone();
+ }
+
+ foreach my $date (@holiday_list){
+ unless ( $calendar->isHoliday( $date->{local_c}->{day}, $date->{local_c}->{month}, $date->{local_c}->{year} ) ) {
+ $calendar->insert_single_holiday(
+ day => $date->{local_c}->{day},
+ month => $date->{local_c}->{month},
+ year => $date->{local_c}->{year},
+ title => $title,
+ description => $description
+ );
+ }
+ }
+ } elsif ( $newoperation eq 'holidayrangerepeat' ) {
+ #Make an array with holiday's days
+ my $first_dt = DateTime->new(year => $year, month => $month, day => $day);
+ my $end_dt = DateTime->new(year => $year1, month => $month1, day => $day1);
+ my @holiday_list = ();
+
+ for (my $dt = $first_dt->clone();
+ $dt <= $end_dt;
+ $dt->add(days => 1) )
+ {
+ push @holiday_list, $dt->clone();
+ }
+
+ foreach my $date (@holiday_list){
+ unless ( $calendar->isHoliday( $date->{local_c}->{day}, $date->{local_c}->{month}, $date->{local_c}->{year} ) ) {
+ $calendar->insert_day_month_holiday(
+ day => $date->{local_c}->{day},
+ month => $date->{local_c}->{month},
+ title => $title,
+ description => $description
+ );
+ }
+ }
+ }
}
use CGI;
use C4::Auth;
use C4::Output;
+use C4::Review qw/numberofreviews/;
+use C4::Tags qw/get_count_by_tag_status/;
my $query = new CGI;
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
}
);
+my $pendingcomments = numberofreviews(0);
+my $pendingtags = get_count_by_tag_status(0);
+
+$template->param(
+ pendingcomments => $pendingcomments,
+ pendingtags => $pendingtags
+);
+
output_html_with_http_headers $query, $cookie, $template->output;
sub create_template_test {
my $includes = shift;
return sub {
- my $tt = Template->new({ABSOLUTE => 1,
- INCLUDE_PATH => $includes });
- my $vars;
- my $output;
- if ( ! ok($tt->process($_,$vars,\$output), $_) ){
- diag($tt->error);
- }
+ my $tt = Template->new(
+ {
+ ABSOLUTE => 1,
+ INCLUDE_PATH => $includes,
+ PLUGIN_BASE => 'Koha::Template::Plugin',
+ }
+ );
+ my $vars;
+ my $output;
+ if ( !ok( $tt->process( $_, $vars, \$output ), $_ ) ) {
+ diag( $tt->error );
+ }
}
}