diff --git a/cataloguing/additem.pl b/cataloguing/additem.pl
index 6287982c49..60ca31efd5 100755
--- a/cataloguing/additem.pl
+++ b/cataloguing/additem.pl
@@ -186,7 +186,7 @@ my $use_template_for_session = $input->param('use_template_for_session') || $inp
my $template_id = $input->param('template_id') || $input->cookie('ItemEditorSessionTemplateId');
if ( $delete_template_submit ) {
my $t = Koha::Item::Templates->find($template_id);
- $t->delete if $t && $t->borrowernumber eq $loggedinuser;
+ $t->delete if $t && ( $t->borrowernumber eq $loggedinuser || haspermission( $uid, { 'editcatalogue' => 'manage_item_editor_templates' } ) );
$template_id = undef;
$use_template_for_session = undef;
}
@@ -276,15 +276,17 @@ if ($op eq "additem") {
if ($replace_template_id) {
my $template = Koha::Item::Templates->find($replace_template_id);
- if ($template) {
- $template->update(
- {
- id => $replace_template_id,
- is_shared => $template_is_shared ? 1 : 0,
- contents => $item->unblessed,
- }
- );
- }
+ $template->update(
+ {
+ id => $replace_template_id,
+ is_shared => $template_is_shared ? 1 : 0,
+ contents => $item->unblessed,
+ }
+ ) if $template && (
+ $template->borrowernumber eq $loggedinuser
+ ||
+ haspermission( $uid, { 'editcatalogue' => 'manage_item_editor_templates' } )
+ );
}
else {
my $template = Koha::Item::Template->new(
diff --git a/installer/data/mysql/atomicupdate/bug_24606.pl b/installer/data/mysql/atomicupdate/bug_24606.pl
index 76406122d9..18b0eba217 100755
--- a/installer/data/mysql/atomicupdate/bug_24606.pl
+++ b/installer/data/mysql/atomicupdate/bug_24606.pl
@@ -19,6 +19,11 @@ return {
CONSTRAINT `bn` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
});
+
+ $dbh->do(q{
+ INSERT IGNORE INTO permissions (module_bit, code, description) VALUES
+ ( 9, 'manage_item_editor_templates', 'Update and delete item editor template owned by others');
+ });
}
},
};
diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc
index c071e1a2b0..336021f500 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc
+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc
@@ -361,6 +361,11 @@
Create, update and delete item groups, add or remove items from an item group
([% name | html %])
+ [%- CASE 'manage_item_editor_templates' -%]
+
+ Create, update and delete item editor templates owned by others
+
+ ([% name | html %])
[%- CASE 'remaining_permissions' -%]
Remaining permissions for managing fines and fees
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt
index 47286abb90..57676fc2f4 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt
@@ -169,18 +169,26 @@
@@ -262,10 +270,17 @@