Porting install.pl over to use C4::Installer::PerlModules --- installer/install.pl | 148 ++++---------------- .../prog/en/modules/installer/step1.tmpl | 39 ++---- 2 files changed, 42 insertions(+), 145 deletions(-)
diff --git a/installer/install.pl b/installer/install.pl index 80df97f..437d03f 100755 --- a/installer/install.pl +++ b/installer/install.pl @@ -4,16 +4,15 @@ use strict; use warnings; use diagnostics; -# use Install; use InstallAuth; +use CGI; +use IPC::Cmd; + use C4::Context; use C4::Output; use C4::Languages qw(getAllLanguages getTranslatedLanguages); use C4::Installer; -use CGI; -use IPC::Cmd; - my $query = new CGI; my $step = $query->param('step'); @@ -57,126 +56,35 @@ if ( $step && $step == 1 ) { #Checking ALL perl Modules and services needed are installed. #Whenever there is an error, adding a report to the page $template->param( language => 1 ); - my $problem; + $template->param( 'checkmodule' => 1 ); # we start with the assumption that there are no problems and set this to 0 if there are unless ( $] >= 5.006001 ) { # Bug 179 - $template->param( "problems" => 1, "perlversion" => 1 ); - $problem = 1; - } - - # We could here use a special find - my @missing = (); - unless ( eval { require ZOOM } ) { - push @missing, { name => "ZOOM" }; - } - unless ( eval { require YAML::Syck } ) { - push @missing, { name => "YAML::Syck" }; - } - unless ( eval { require LWP::Simple } ) { - push @missing, { name => "LWP::Simple" }; - } - unless ( eval { require XML::Simple } ) { - push @missing, { name => "XML::Simple" }; - } - unless ( eval { require MARC::File::XML } ) { - push @missing, { name => "MARC::File::XML" }; - } - unless ( eval { require MARC::File::USMARC } ) { - push @missing, { name => "MARC::File::USMARC" }; - } - unless ( eval { require DBI } ) { - push @missing, { name => "DBI" }; - } - unless ( eval { require Date::Manip } ) { - push @missing, { name => "Date::Manip" }; - } - unless ( eval { require DBD::mysql } ) { - push @missing, { name => "DBD::mysql" }; - } - unless ( eval { require HTML::Template::Pro } ) { - push @missing, { name => "HTML::Template::Pro" }; - } - unless ( eval { require Date::Calc } ) { - push @missing, { name => "Date::Calc" }; - } - unless ( eval { require Digest::MD5 } ) { - push @missing, { name => "Digest::MD5" }; - } - unless ( eval { require MARC::Record } ) { - push @missing, { name => "MARC::Record" }; - } - unless ( eval { require Mail::Sendmail } ) { - push @missing, { name => "Mail::Sendmail", usagemail => 1 }; - } - unless ( eval { require List::MoreUtils } ) { - push @missing, { name => "List::MoreUtils" }; - } - unless ( eval { require XML::RSS } ) { - push @missing, { name => "XML::RSS" }; - } - unless ( eval { require CGI::Carp } ) { - push @missing, { name => "CGI::Carp" }; + $template->param( problems => 1, perlversion => 1, checkmodule => 0 ); } + my $perl_modules = C4::Installer::PerlModules->new; + $perl_modules->version_info; -# The following modules are not mandatory, depends on how the library want to use Koha - unless ( eval { require PDF::API2 } ) { - if ( $#missing >= 0 ) { # only when $#missing >= 0 so this isn't fatal - push @missing, { name => "PDF::API2", usagebarcode => 1 }; - } - } - unless ( eval { require GD::Barcorde } ) { - if ( $#missing >= 0 ) { # only when $#missing >= 0 so this isn't fatal - push @missing, - { name => "GD::Barcode", usagebarcode => 1, usagespine => 1 }; - } - } - unless ( eval { require GD } ) { - if ( $#missing >= 0 ) { # only when $#missing >= 0 so this isn't fatal - push @missing, - { name => "GD", usagepatronimages => 1 }; - } - } - unless ( eval { require Graphics::Magick } ) { - if ( $#missing >= 0 ) { # only when $#missing >= 0 so this isn't fatal - push @missing, - { name => "Graphics::Magick", usagepatroncards => 1 }; - } - } - unless ( eval { require Data::Random } ) { - if ( $#missing >= 0 ) { # only when $#missing >= 0 so this isn't fatal - push @missing, { name => "Data::Random", usagebarcode => 1 }; - } - } - unless ( eval { require PDF::Reuse::Barcode } ) { - if ( $#missing >= 0 ) { # only when $#missing >= 0 so this isn't fatal - push @missing, { name => "PDF::Reuse::Barcode", usagebarcode => 1 }; - } - } - unless ( eval { require PDF::Report } ) { - if ( $#missing >= 0 ) { # only when $#missing >= 0 so this isn't fatal - push @missing, { name => "PDF::Report", usagebarcode => 1 }; - } - } - unless ( eval { require Algorithm::CheckDigits } ) { - if ( $#missing >= 0 ) { # only when $#missing >= 0 so this isn't fatal - push @missing, { name => "Algorithm::CheckDigits", usagebarcode => 1 }; - } - } - unless ( eval { require GD::Barcode::UPCE } ) { - if ( $#missing >= 0 ) { # only when $#missing >= 0 so this isn't fatal - push @missing, { name => "GD::Barcode::UPCE", usagepine => 1 }; - } - } - unless ( eval { require Net::LDAP } ) { - if ( $#missing >= 0 ) { # only when $#missing >= 0 so this isn't fatal - push @missing, { name => "Net::LDAP", usageLDAP => 1 }; + my $modules = $perl_modules->get_attr('missing_pm'); + if (scalar(@$modules)) { + my @components = (); + my $checkmodule = 1; + foreach (@$modules) { + my ($module, $stats) = each %$_; + $checkmodule = 0 if $stats->{'required'}; + push( + @components, + { + name => $module, + version => $stats->{'min_ver'}, + require => $stats->{'required'}, + usage => $stats->{'usage'}, + } + ); } + @components = sort {$a->{'name'} cmp $b->{'name'}} @components; + $template->param( missing_modules => \...@components, checkmodule => $checkmodule ); } - $template->param( missings => \...@missing ) if ( scalar(@missing) > 0 ); - $template->param( 'checkmodule' => 1 ) - unless ( scalar(@missing) && $problem ); - } elsif ( $step && $step == 2 ) { # diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/installer/step1.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/installer/step1.tmpl index 3226622..23ecb65 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/installer/step1.tmpl +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/installer/step1.tmpl @@ -31,32 +31,19 @@ listed, please inform your systems administrator.</p> <!--/TMPL_UNLESS--> <!--TMPL_IF Name="language"--> <!--TMPL_UNLESS Name="checkmodule"--> - <!--TMPL_IF Name="missing"--> - <p>Some perl modules are missing.<br /> + <!--TMPL_IF Name="missing_modules"--> + <p>Some perl modules are missing. Modules in red <b>must</b> be installed before you may continue.<br /> <ul> - <!--TMPL_LOOP Name="missing"--> + <!--TMPL_LOOP Name="missing_modules"--> + <!--TMPL_IF Name="require"--> + <li style="color:#FF0000;font-weight:bold;"><!--TMPL_VAR Name="name"--> + <!-- TMPL_ELSE --> <li><!--TMPL_VAR Name="name"--> - <!--TMPL_IF Name="usagemail"--> - <br /> This module is used whenever Koha has to send email. - <!--TMPL_ELSIF Name="usagebarcode"--> - <br /> This module is needed if you intend to print barcodes. - <!--TMPL_ELSIF Name="usagespine"--> - <br /> This module is needed if you intend to print spine labels. - <!--TMPL_ELSIF Name="usageLDAP"--> - <br /> This module is needed if you intend to use LDAP for authentication. - <!--TMPL_ELSIF Name="usagepatronimages"--> - <br /> This module is needed if you intend to use patron images. - <!--TMPL_ELSIF Name="usagepatroncards"--> - <br /> This module is needed if you intend to use the patron card creator. <!--/TMPL_IF--> + <br /> Version: <!--TMPL_VAR Name="version"--> + <br /> Usage: <!--TMPL_VAR Name="usage"--> </li> <!--/TMPL_LOOP--> - Please consider installing these modules before continuing. - <pre> - <!--TMPL_LOOP Name="missing"--> - perl -MCPAN -e "install <!--TMPL_VAR Name="name"-->"; - <!--/TMPL_LOOP--> - </pre> <!--/TMPL_IF--> <!--TMPL_IF Name="problems"--> <p>I encountered some problems.</p> @@ -68,13 +55,15 @@ listed, please inform your systems administrator.</p> </ul> <!--/TMPL_IF--> <!--/TMPL_UNLESS--> - <!--TMPL_IF Name="checkmodule"--> <form name="checkmodules" action="install.pl"> -<p> All dependencies installed. -</p> +<!--TMPL_IF Name="checkmodule"--> <input type="hidden" name="step" value="2" /> +<p> All dependencies installed.</p> <p>Please click next to continue <input value="Next >>" type="submit" /></p> +<!-- TMPL_ELSE --> +<input type="hidden" name="step" value="1" /> +<p>Click to recheck dependencies <input value="Recheck" type="submit" /></p> +<!--/TMPL_IF--> </form> - <!--/TMPL_IF--> <!--/TMPL_IF--> <!-- TMPL_INCLUDE name="intranet-bottom.inc" --> -- 1.7.0.4 _______________________________________________ Koha-patches mailing list Koha-patches@lists.koha.org http://lists.koha.org/mailman/listinfo/koha-patches