X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=patroncards%2Fimage-manage.pl;h=2c0812342710ecfa268852845288737a0cb22416;hb=refs%2Fheads%2Fkoha_ffzg;hp=f9f7eac984aacd77fecbf468532cb03556e7249e;hpb=31a0ed0a43bb4ecfde0b762eb6e654c51da6f66e;p=koha.git diff --git a/patroncards/image-manage.pl b/patroncards/image-manage.pl index f9f7eac984..2c08123427 100755 --- a/patroncards/image-manage.pl +++ b/patroncards/image-manage.pl @@ -1,12 +1,10 @@ #!/usr/bin/perl -use warnings; -use strict; +use Modern::Perl; -use CGI; +use CGI qw ( -utf8 ); use Graphics::Magick; use POSIX qw(ceil); -use autouse 'Data::Dumper' => qw(Dumper); use C4::Context; use C4::Auth; @@ -18,7 +16,7 @@ use C4::Patroncards; my $cgi = CGI->new; my ($template, $loggedinuser, $cookie) = get_template_and_user({ - template_name => "patroncards/image-manage.tmpl", + template_name => "patroncards/image-manage.tt", query => $cgi, type => "intranet", authnotrequired => 0, @@ -26,17 +24,18 @@ my ($template, $loggedinuser, $cookie) = get_template_and_user({ debug => 0, }); -my $image_name = $cgi->param('image_name') || ''; my $file_name = $cgi->param('uploadfile') || ''; +my $image_name = $cgi->param('image_name') || $file_name; my $upload_file = $cgi->upload('uploadfile') || ''; my $op = $cgi->param('op') || 'none'; -my @image_ids = $cgi->param('image_id') if $cgi->param('image_id'); +my @image_ids = $cgi->multi_param('image_id') if $cgi->param('image_id'); my $source_file = "$file_name"; # otherwise we end up with what amounts to a pointer to a filehandle rather than a user-friendly filename my $display_columns = { image => [ #{db column => {label => 'col label', is link? }}, {image_id => {label => 'ID', link_field => 0}}, {image_name => {label => 'Name', link_field => 0}}, + {_delete => {label => 'Delete', link_field => 0}}, {select => {label => 'Select', value => 'image_id'}}, ], }; @@ -46,60 +45,72 @@ my $image_limit = C4::Context->preference('ImageLimit') || ''; my $errstr = ''; # NOTE: For error codes see error-messages.inc if ($op eq 'upload') { - if (!$upload_file) { - warn sprintf('An error occurred while attempting to upload file %s.', $source_file); - $errstr = 301; + # Checking for duplicate image name + my $dbh = C4::Context->dbh; + my $query = "SELECT COUNT(*) FROM creator_images WHERE image_name=?"; + my ( $exists ) = $dbh->selectrow_array( $query, undef, $image_name ); + if ( $exists ) { + $errstr = 304; $template->param( IMPORT_SUCCESSFUL => 0, SOURCE_FILE => $source_file, IMAGE_NAME => $image_name, TABLE => $table, - error => 1, - $errstr => 1, + error => $errstr, ); - } - else { - my $image = Graphics::Magick->new; - eval{$image->Read($cgi->tmpFileName($file_name));}; - if ($@) { - warn sprintf('An error occurred while creating the image object: %s',$@); - $errstr = 202; + } else { + if (!$upload_file) { + warn sprintf('An error occurred while attempting to upload file %s.', $source_file); + $errstr = 301; $template->param( IMPORT_SUCCESSFUL => 0, SOURCE_FILE => $source_file, IMAGE_NAME => $image_name, TABLE => $table, - error => 1, - $errstr => 1, + error => $errstr, ); } else { - my $errstr = ''; - my $size = $image->Get('filesize'); - $errstr = 302 if $size > 500000; - $image->Set(magick => 'png'); # convert all images to png as this is a lossless format which is important for resizing operations later on - my $err = put_image($image_name, $image->ImageToBlob()) || '0'; - $errstr = 101 if $err == 1; - $errstr = 303 if $err == 202; - if ($errstr) { + my $image = Graphics::Magick->new; + eval{$image->Read($cgi->tmpFileName($file_name));}; + if ($@) { + warn sprintf('An error occurred while creating the image object: %s',$@); + $errstr = 202; $template->param( IMPORT_SUCCESSFUL => 0, SOURCE_FILE => $source_file, IMAGE_NAME => $image_name, TABLE => $table, - error => 1, - $errstr => 1, - image_limit => $image_limit, + error => $errstr, ); } else { - $table = html_table($display_columns->{'image'}, get_image(undef, "image_id, image_name")); # refresh table data after successfully performing save operation - $template->param( - IMPORT_SUCCESSFUL => 1, - SOURCE_FILE => $source_file, - IMAGE_NAME => $image_name, - TABLE => $table, - ); + my $errstr = ''; + my $size = $image->Get('filesize'); + $errstr = 302 if $size > 500000; + $image->Set(magick => 'png'); # convert all images to png as this is a lossless format which is important for resizing operations later on + my $err = put_image($image_name, $image->ImageToBlob()) || '0'; + $errstr = 101 if $err == 1; + $errstr = 303 if $err == 202; + if ($errstr) { + $template->param( + IMPORT_SUCCESSFUL => 0, + SOURCE_FILE => $source_file, + IMAGE_NAME => $image_name, + TABLE => $table, + error => $errstr, + image_limit => $image_limit, + ); + } + else { + $table = html_table($display_columns->{'image'}, get_image(undef, "image_id, image_name")); # refresh table data after successfully performing save operation + $template->param( + IMPORT_SUCCESSFUL => 1, + SOURCE_FILE => $source_file, + IMAGE_NAME => $image_name, + TABLE => $table, + ); + } } } } @@ -120,8 +131,7 @@ elsif ($op eq 'delete') { DELETE_SUCCESSFULL => 0, IMAGE_IDS => join(', ', @image_ids), TABLE => $table, - error => 1, - $errstr => 1, + error => $errstr, image_ids => join(',',@image_ids), ); } @@ -149,8 +159,7 @@ else { # to trap unsupported operations SOURCE_FILE => $source_file, IMAGE_NAME => $image_name, TABLE => $table, - error => 1, - $errstr => 1, + error => $errstr, ); }