Bug 35681: Allow for ANSI color in database updates

This patch adds support for colored output in database updates.

Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
This commit is contained in:
Martin Renvoize 2024-01-02 15:56:12 +00:00 committed by Katrin Fischer
parent 3929d64084
commit 0612c0402d
No known key found for this signature in database
GPG Key ID: 0EF6E2C03357A834
2 changed files with 26 additions and 4 deletions

View File

@ -23,6 +23,7 @@ use diagnostics;
use C4::InstallAuth qw( get_template_and_user );
use CGI qw ( -utf8 );
use POSIX;
use HTML::FromANSI::Tiny;
use C4::Context;
use C4::Output qw( output_html_with_http_headers );
@ -420,6 +421,7 @@ elsif ( $step && $step == 3 ) {
my $fh;
open( $fh, "<:encoding(utf-8)", $logfilepath )
or die "Cannot open log file $logfilepath: $!";
my @report = <$fh>;
close $fh;
if (@report) {
@ -456,6 +458,8 @@ elsif ( $step && $step == 3 ) {
my $atomic_update_files = get_atomic_updates;
my $atomic_update_report = run_atomic_updates( $atomic_update_files );
colorize($report);
colorize($atomic_update_report);
$template->param(
success => $report->{success},
error => $report->{error},
@ -561,3 +565,21 @@ sub chk_log { #returns a logfile in $dir or - if that failed - in temp dir
}
return $fn;
}
sub colorize {
my ($report) = @_;
my $h = HTML::FromANSI::Tiny->new(
auto_reverse => 0, background => 'white', foreground => 'black',
inline_style => 1, no_plain_tags => 1
);
my @states = ( 'success', 'error' );
for my $state (@states) {
for my $result ( @{ $report->{$state} } ) {
#@{ $result->{output} } = map { s/^\t+//; $h->html($_) } @{ $result->{output} };
for my $output ( @{ $result->{output} } ) {
$output = $h->html($output);
}
}
}
}

View File

@ -381,7 +381,7 @@
<ul>
[% FOR s IN success %]
[% FOR o IN s.output %]
<li>[% o | html %]</li>
<li>[% o | $raw %]</li>
[% IF s.output.size > 1 %]
[% IF loop.first %]<ul>[% ELSIF loop.last %]</ul>[% END %]
[% END %]
@ -395,7 +395,7 @@
<ul>
[% FOR s IN atomic_updates.success %]
[% FOR o IN s.output %]
<li>[% o | html %]</li>
<li>[% o | $raw %]</li>
[% IF s.output.size > 1 %]
[% IF loop.first %]<ul>[% ELSIF loop.last %]</ul>[% END %]
[% END %]
@ -423,7 +423,7 @@
<li class="update_error">
[% o | html %]
<br/>
ERROR: [% e.error | html %]
ERROR: [% e.error | $raw %]
[% IF e.output.size > 1 %]
[% IF loop.first %]<ul>[% ELSIF loop.last %]</ul>[% END %]
@ -443,7 +443,7 @@
<li class="update_error">
[% o | html %]
<br/>
ERROR: [% e.error | html %]
ERROR: [% e.error | $raw %]
[% IF e.output.size > 1 %]
[% IF loop.first %]<ul>[% ELSIF loop.last %]</ul>[% END %]