Bug 30952: Fix patroninfo-section alignment
[koha-ffzg.git] / admin / library_groups.pl
index e506d48..5284a88 100755 (executable)
 use Modern::Perl;
 use CGI qw ( -utf8 );
 use C4::Context;
-use C4::Auth;
-use C4::Output;
+use C4::Auth qw( get_template_and_user );
+use C4::Output qw( output_html_with_http_headers );
 
 use Koha::Libraries;
 use Koha::Library::Group;
 use Koha::Library::Groups;
 
-my $cgi = new CGI;
+my $cgi = CGI->new;
 
 my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
     {
         template_name   => "admin/library_groups.tt",
         query           => $cgi,
         type            => "intranet",
-        authnotrequired => 0,
-        flagsrequired   => { parameters => 'parameters_remaining_permissions' },
-        debug           => 1,
+        flagsrequired   => { parameters => 'manage_libraries' },
     }
 );
 
 my $action = $cgi->param('action') || q{};
+my @messages;
 
 if ( $action eq 'add' ) {
     my $parent_id   = $cgi->param('parent_id')   || undef;
     my $title       = $cgi->param('title')       || undef;
     my $description = $cgi->param('description') || undef;
     my $branchcode  = $cgi->param('branchcode')  || undef;
+    my $ft_hide_patron_info    = $cgi->param('ft_hide_patron_info')    || 0;
+    my $ft_search_groups_opac  = $cgi->param('ft_search_groups_opac')  || 0;
+    my $ft_search_groups_staff = $cgi->param('ft_search_groups_staff') || 0;
+    my $ft_local_hold_group = $cgi->param('ft_local_hold_group') || 0;
 
-    my $group = Koha::Library::Group->new(
-        {
-            parent_id   => $parent_id,
-            title       => $title,
-            description => $description,
-            branchcode  => $branchcode,
+    if ( !$branchcode && Koha::Library::Groups->search( { title => $title } )->count() ) {
+        $template->param( error_duplicate_title => $title );
+    }
+    else {
+        my $group = eval {
+            Koha::Library::Group->new(
+                {
+                    parent_id              => $parent_id,
+                    title                  => $title,
+                    description            => $description,
+                    ft_hide_patron_info    => $ft_hide_patron_info,
+                    ft_search_groups_opac  => $ft_search_groups_opac,
+                    ft_search_groups_staff => $ft_search_groups_staff,
+                    ft_local_hold_group    => $ft_local_hold_group,
+                    branchcode             => $branchcode,
+                }
+            )->store();
+        };
+        if ($@) {
+            push @messages, { type => 'alert', code => 'error_on_insert' };
         }
-    )->store();
-
-    $template->param( added => $group );
+        else {
+            $template->param( added => $group );
+        }
+    }
 }
 elsif ( $action eq 'edit' ) {
     my $id          = $cgi->param('id')          || undef;
     my $title       = $cgi->param('title')       || undef;
     my $description = $cgi->param('description') || undef;
+    my $ft_hide_patron_info    = $cgi->param('ft_hide_patron_info')    || 0;
+    my $ft_search_groups_opac  = $cgi->param('ft_search_groups_opac')  || 0;
+    my $ft_search_groups_staff = $cgi->param('ft_search_groups_staff') || 0;
+    my $ft_local_hold_group = $cgi->param('ft_local_hold_group') || 0;
 
     if ($id) {
         my $group = Koha::Library::Groups->find($id);
@@ -71,6 +93,10 @@ elsif ( $action eq 'edit' ) {
             {
                 title       => $title,
                 description => $description,
+                ft_hide_patron_info      => $ft_hide_patron_info,
+                ft_search_groups_opac    => $ft_search_groups_opac,
+                ft_search_groups_staff   => $ft_search_groups_staff,
+                ft_local_hold_group   => $ft_local_hold_group,
             }
         )->store();
 
@@ -97,6 +123,6 @@ elsif ( $action eq 'delete' ) {
 
 my $root_groups = Koha::Library::Groups->get_root_groups();
 
-$template->param( root_groups => $root_groups, );
+$template->param( root_groups => $root_groups, messages => \@messages, );
 
 output_html_with_http_headers $cgi, $cookie, $template->output;