@@ -, +, @@ 1) Apply patch 2) Run updatedatabase.pl 3) Map a nonrepeatable field/subfield to biblio.branchcode Pro-tip: Use the authorised value 'branches' to get a pulldown of libraries instead of entering the branchcode manually. 4) Edit a record, and add a branchcode. 5) Log in as a non-superlibrarian with cataloging priveleges 6) Change the logged in branch to a branch other than the one you entered in the record. 7) You should note the 'edit' pulldown for the record is missing the "Edit record" and "Delete record" options. 8) Switch the logged in branch to match the branchcode of the record. 9) You should now see the edit and delete options for that record. able to. --- C4/Auth.pm | 1 + C4/Biblio.pm | 21 ++++++++++++---- catalogue/detail.pl | 2 + installer/data/mysql/kohastructure.sql | 2 + installer/data/mysql/updatedatabase.pl | 25 ++++++++++++++++++++ .../intranet-tmpl/prog/en/includes/cat-toolbar.inc | 21 ++++++++++++---- .../prog/en/modules/admin/preferences/admin.pref | 7 +++++ 7 files changed, 68 insertions(+), 11 deletions(-) --- a/C4/Auth.pm +++ a/C4/Auth.pm @@ -186,6 +186,7 @@ sub get_template_and_user { # to create the template's parameters that will indicate # which menus the user can access. if ( $flags && $flags->{superlibrarian}==1 ) { + $template->param( CAN_user_superlibrarian => 1 ); $template->param( CAN_user_circulate => 1 ); $template->param( CAN_user_catalogue => 1 ); $template->param( CAN_user_parameters => 1 ); --- a/C4/Biblio.pm +++ a/C4/Biblio.pm @@ -2955,12 +2955,16 @@ sub _koha_add_biblio { seriestitle = ?, copyrightdate = ?, datecreated=NOW(), - abstract = ? + abstract = ?, + branchcode = ? "; my $sth = $dbh->prepare($query); $sth->execute( - $frameworkcode, $biblio->{'author'}, $biblio->{'title'}, $biblio->{'unititle'}, $biblio->{'notes'}, - $biblio->{'serial'}, $biblio->{'seriestitle'}, $biblio->{'copyrightdate'}, $biblio->{'abstract'} + $frameworkcode, $biblio->{'author'}, + $biblio->{'title'}, $biblio->{'unititle'}, + $biblio->{'notes'}, $biblio->{'serial'}, + $biblio->{'seriestitle'}, $biblio->{'copyrightdate'}, + $biblio->{'abstract'}, $biblio->{'branchcode'}, ); my $biblionumber = $dbh->{'mysql_insertid'}; @@ -2997,15 +3001,20 @@ sub _koha_modify_biblio { serial = ?, seriestitle = ?, copyrightdate = ?, - abstract = ? + abstract = ?, + branchcode = ? WHERE biblionumber = ? " ; my $sth = $dbh->prepare($query); $sth->execute( - $frameworkcode, $biblio->{'author'}, $biblio->{'title'}, $biblio->{'unititle'}, $biblio->{'notes'}, - $biblio->{'serial'}, $biblio->{'seriestitle'}, $biblio->{'copyrightdate'}, $biblio->{'abstract'}, $biblio->{'biblionumber'} + $frameworkcode, $biblio->{'author'}, + $biblio->{'title'}, $biblio->{'unititle'}, + $biblio->{'notes'}, $biblio->{'serial'}, + $biblio->{'seriestitle'}, $biblio->{'copyrightdate'}, + $biblio->{'abstract'}, $biblio->{'branchcode'}, + $biblio->{'biblionumber'} ) if $biblio->{'biblionumber'}; if ( $dbh->errstr || !$biblio->{'biblionumber'} ) { --- a/catalogue/detail.pl +++ a/catalogue/detail.pl @@ -61,6 +61,8 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user( my $biblionumber = $query->param('biblionumber'); my $record = GetMarcBiblio($biblionumber); +$template->param( biblio => GetBiblio( $biblionumber ) ); + if ( not defined $record ) { # biblionumber invalid -> report and exit $template->param( unknownbiblionumber => 1, --- a/installer/data/mysql/kohastructure.sql +++ a/installer/data/mysql/kohastructure.sql @@ -126,6 +126,7 @@ CREATE TABLE `biblio` ( -- table that stores bibliographic information `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$a in MARC21) + `branchcode` VARCHAR( 10 ) NULL DEFAULT NULL, -- branchcode for the opationl 'owner' of this record. PRIMARY KEY (`biblionumber`), KEY `blbnoidx` (`biblionumber`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; @@ -612,6 +613,7 @@ CREATE TABLE `deletedbiblio` ( -- stores information about bibliographic records `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$a in MARC21) + `branchcode` VARCHAR( 10 ) NULL DEFAULT NULL, -- branchcode for the opationl 'owner' of this record. PRIMARY KEY (`biblionumber`), KEY `blbnoidx` (`biblionumber`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; --- a/installer/data/mysql/updatedatabase.pl +++ a/installer/data/mysql/updatedatabase.pl @@ -6818,6 +6818,31 @@ if ( CheckVersion($DBversion) ) { 'YesNo' ) }); + + $dbh->do(q{ + INSERT INTO systempreferences ( + variable, + value, + options, + explanation, + type + ) VALUES ( + 'IndependentBranchesMarcEditing', + '0', + '', + "If on, this preference disallows the editing of a bibliographic record unless the logged in library's branchcode matchs the branchcode stored in biblio.branchcode.", + 'YesNo' + ) + }); + + $dbh->do(q{ + ALTER TABLE biblio ADD branchcode VARCHAR( 10 ) NULL DEFAULT NULL + }); + + $dbh->do(q{ + ALTER TABLE deletedbiblio ADD branchcode VARCHAR( 10 ) NULL DEFAULT NULL + }); + SetVersion ($DBversion); } --- a/koha-tmpl/intranet-tmpl/prog/en/includes/cat-toolbar.inc +++ a/koha-tmpl/intranet-tmpl/prog/en/includes/cat-toolbar.inc @@ -1,3 +1,5 @@ +[% USE Koha %] +