Bugzilla – Attachment 116849 Details for
Bug 27510
Download the report in HTML format
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
Bug 27510: Download the report in HTML format.
Bug-27510-Download-the-report-in-HTML-format.patch (text/plain), 6.90 KB, created by
Ivan Dziuba
on 2021-02-12 20:26:52 UTC
(
hide
)
Description:
Bug 27510: Download the report in HTML format.
Filename:
MIME Type:
Creator:
Ivan Dziuba
Created:
2021-02-12 20:26:52 UTC
Size:
6.90 KB
patch
obsolete
>From 46289ab828640f06b73b0ab5cbec23712c006845 Mon Sep 17 00:00:00 2001 >From: Ivan Dziuba <ivan.dziuba@inlibro.com> >Date: Thu, 21 Jan 2021 20:23:27 -0500 >Subject: [PATCH] Bug 27510: Download the report in HTML format. > >--- > ...bug_27510_download_report_html_format.perl | 8 +++ > installer/data/mysql/mandatory/sysprefs.sql | 3 +- > .../prog/en/includes/reports-toolbar.inc | 1 + > .../admin/preferences/staff_interface.pref | 6 ++ > reports/guided_reports.pl | 59 +++++++++++++++++++ > 5 files changed, 76 insertions(+), 1 deletion(-) > create mode 100644 installer/data/mysql/atomicupdate/bug_27510_download_report_html_format.perl > >diff --git a/installer/data/mysql/atomicupdate/bug_27510_download_report_html_format.perl b/installer/data/mysql/atomicupdate/bug_27510_download_report_html_format.perl >new file mode 100644 >index 0000000000..643eebe12f >--- /dev/null >+++ b/installer/data/mysql/atomicupdate/bug_27510_download_report_html_format.perl >@@ -0,0 +1,8 @@ >+$DBversion = 'XXX'; # will be replaced by the RM >+if( CheckVersion( $DBversion ) ) { >+ # you can use $dbh here like: >+ $dbh->do(q{INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type) VALUES ('ReportUserCSS','',NULL,'','free')}); >+ >+ # Always end with this (adjust the bug info) >+ NewVersion( $DBversion, 27510, "Download the report in HTML format"); >+} >diff --git a/installer/data/mysql/mandatory/sysprefs.sql b/installer/data/mysql/mandatory/sysprefs.sql >index eab5e66838..3aa7a4cd1e 100644 >--- a/installer/data/mysql/mandatory/sysprefs.sql >+++ b/installer/data/mysql/mandatory/sysprefs.sql >@@ -722,5 +722,6 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` > ('XSLTListsDisplay','default','','Enable XSLT stylesheet control over lists pages display on intranet','Free'), > ('XSLTResultsDisplay','default','','Enable XSL stylesheet control over results page display on intranet','Free'), > ('z3950AuthorAuthFields','701,702,700',NULL,'Define the MARC biblio fields for Personal Name Authorities to fill biblio.author','free'), >-('z3950NormalizeAuthor','0','','If ON, Personal Name Authorities will replace authors in biblio.author','YesNo') >+('z3950NormalizeAuthor','0','','If ON, Personal Name Authorities will replace authors in biblio.author','YesNo'), >+('ReportUserCSS','',NULL,'Add CSS to be included on the report in HTML format.','free') > ; >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/reports-toolbar.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/reports-toolbar.inc >index 305de93f34..689d49df6b 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/reports-toolbar.inc >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/reports-toolbar.inc >@@ -97,6 +97,7 @@ > <li><a id="csv" href="/cgi-bin/koha/reports/guided_reports.pl?reports=1&phase=Export&format=csv&report_id=[% id | html %]&reportname=[% name |uri %][% PROCESS params %]">[% PROCESS 'delimiter_text.inc' %]</a></li> > <li><a id="tab" href="/cgi-bin/koha/reports/guided_reports.pl?reports=1&phase=Export&format=tab&report_id=[% id | html %]&reportname=[% name |uri %][% PROCESS params %]">Tab separated text</a></li> > <li><a id="ods" href="/cgi-bin/koha/reports/guided_reports.pl?reports=1&phase=Export&format=ods&report_id=[% id | html %]&reportname=[% name |uri %][% PROCESS params %]">Open Document Spreadsheet</a></li> >+ <li><a id="html" href="/cgi-bin/koha/reports/guided_reports.pl?reports=1&phase=Export&format=html&report_id=[% id | html %]&reportname=[% name |uri %][% PROCESS params %]">Document HTML</a></li> > [% IF (results.json) %] > <li><a id="download-chart" href="#">Chart (.svg)</a></li> > [% END %] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/staff_interface.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/staff_interface.pref >index 30132b35fc..e65d99b186 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/staff_interface.pref >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/staff_interface.pref >@@ -188,3 +188,9 @@ Staff interface: > yes: "Don't allow" > no: Allow > - staff to login by means other than shibboleth. >+ - >+ - "Include the following CSS on the report in HTML format:" >+ - pref: ReportUserCSS >+ type: textarea >+ syntax: css >+ class: code >diff --git a/reports/guided_reports.pl b/reports/guided_reports.pl >index 20abc890fd..13f10af973 100755 >--- a/reports/guided_reports.pl >+++ b/reports/guided_reports.pl >@@ -39,6 +39,8 @@ use Koha::Libraries; > use Koha::Patron::Categories; > use Koha::SharedContent; > use Koha::Util::OpenDocument; >+use HTML::Table; >+use utf8; > > =head1 NAME > >@@ -952,6 +954,10 @@ elsif ($phase eq 'Export'){ > $content .= $_ while <$ods_fh>; > unlink $ods_filepath; > } >+ elsif ( $format eq 'html' ) { >+ $type = 'text/html'; >+ $content = _to_html($sth, $input); >+ } > } > print $input->header( > -type => $type, >@@ -1123,3 +1129,56 @@ sub get_prepped_report { > } > return $sql,$headers; > } >+ >+sub _to_html { >+ my ($sth, $input) = @_; >+ my $header_type = "application/x-download"; >+ my $rep_name = Encode::encode_utf8($input->param('reportname')); >+ my $file = $rep_name . ".html"; >+ my $html_start = >+ "<!DOCTYPE html> >+ <html> >+ <head> >+ <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"> >+ <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"> >+ <title>$rep_name - Koha</title>"; >+ my $html_end = >+ "\n</body> >+ \n</html>"; >+ my $h1 = "\n<h1>" . $rep_name . "</h1>"; >+ my @head = header_cell_values($sth); >+ my $con = join(" ", @head); >+ my $cols = scalar @head; >+ >+ my $css = C4::Context->preference('ReportUserCSS'); >+ if ($css eq ''){ >+ $css = >+ "\ntable, th, td { >+ border: 1px solid black; >+ } >+ table { >+ border-collapse: collapse; >+ }"; >+ } >+ my $content = $html_start; >+ $content .= >+ "\n<style>" . >+ $css . >+ "\n</style>" . >+ "\n</head> >+ \n<body>"; >+ my $table = HTML::Table->new( >+ -cols => $cols, >+ ); >+ $table->addSectionRow('thead', 0, @head); >+ $table->setSectionRCellsHead('thead', 0, 1); >+ my ($tmp_str, @tmp_arr); >+ while (my $row = $sth->fetchrow_arrayref()) { >+ $tmp_str = join ('*replace*', @$row); >+ $tmp_str = Encode::encode_utf8($tmp_str); >+ @tmp_arr = split (/\*replace\*/, $tmp_str); >+ $table->addSectionRow( 'tbody', 0, @tmp_arr); >+ } >+ $content .= $h1 . $table . $html_end; >+ return $content; >+} >-- >2.17.1
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 27510
:
115696
|
115702
|
116079
|
116091
|
116849
|
116850
|
146135
|
146142