my $module_infos = {
cur_ver => 0,
- min_ver => $reqs->requirements_for_module($module),
required => $type eq 'requires',
};
+ my $vers = $reqs->structured_requirements_for_module($module);
+ for my $req (@$vers) {
+ if ( $req->[0] eq '>=' || $req->[0] eq '>' ) {
+ $module_infos->{min_ver} = $req->[1];
+ } elsif ( $req->[0] eq '<=' || $req->[0] eq '<' ) {
+ $module_infos->{max_ver} = $req->[1];
+ } else {
+ push @{$module_infos->{exc_ver}}, $req->[1];
+ }
+ }
+
my $attr;
$Readonly::XS::MAGIC_COOKIE="Do NOT use or require Readonly::XS unless you're me.";
current => ($pm_type eq 'current_pm' ? 1 : 0),
require => $stats->{'required'},
reqversion => $stats->{'min_ver'},
+ maxversion => $stats->{'max_ver'}
}
);
}
my $perl_modules = C4::Installer::PerlModules->new;
$perl_modules->versions_info;
- my $modules = $perl_modules->get_attr('missing_pm');
- if ( scalar(@$modules) ) {
- my @components = ();
- foreach (@$modules) {
+ my $missing_modules = $perl_modules->get_attr('missing_pm');
+ my $upgrade_modules = $perl_modules->get_attr('upgrade_pm');
+ if ( scalar(@$missing_modules) || scalar(@$upgrade_modules) ) {
+ my @missing = ();
+ my @upgrade = ();
+ foreach (@$missing_modules) {
my ( $module, $stats ) = each %$_;
$checkmodule = 0 if $stats->{'required'};
push(
- @components,
+ @missing,
{
name => $module,
- version => $stats->{'min_ver'},
+ min_version => $stats->{'min_ver'},
+ max_version => $stats->{'max_ver'},
require => $stats->{'required'}
}
);
}
- @components = sort { $a->{'name'} cmp $b->{'name'} } @components;
+ foreach (@$upgrade_modules) {
+ my ( $module, $stats ) = each %$_;
+ $checkmodule = 0 if $stats->{'required'};
+ push(
+ @upgrade,
+ {
+ name => $module,
+ min_version => $stats->{'min_ver'},
+ max_version => $stats->{'max_ver'},
+ require => $stats->{'required'}
+ }
+ );
+ }
+ @missing = sort { $a->{'name'} cmp $b->{'name'} } @missing;
+ @upgrade = sort { $a->{'name'} cmp $b->{'name'} } @upgrade;
$template->param(
- missing_modules => \@components,
+ missing_modules => \@missing,
+ upgrade_modules => \@upgrade,
checkmodule => $checkmodule,
op => $op
);
<ul>
[% FOREACH missing_module IN missing_modules %]
<li><strong>[% missing_module.name | html %]</strong> [% IF ( missing_module.require ) %]<span class="label label-danger">Required</span>[% END %]
- <br /> Version: [% missing_module.version | html %]
+ <br /> Version: [% missing_module.min_version | html %]
+ </li>
+ [% END %]
+ </ul>
+ [% END %]
+
+ [% IF ( upgrade_modules ) %]
+ <h2>Web installer › Perl modules due for upgrade</h2>
+ <p>Some Perl modules require upgrade. <span class="label label-danger">Important: </span>Required modules must be installed at the correct version before you may continue.<br />
+ <ul>
+ [% FOREACH upgrade_module IN upgrade_modules %]
+ <li><strong>[% upgrade_module.name | html %]</strong> [% IF ( upgrade_module.require ) %]<span class="label label-danger">Required</span>[% END %]
+ <br /> Installed version: [% upgrade_module.version | html %]
+ <br /> Minimum version: [% upgrade_module.min_version | html %]
+ <br /> Maximum version: [% upgrade_module.max_version | html %]
</li>
[% END %]
</ul>