Skip to content

Commit

Permalink
Changes to install.pl
Browse files Browse the repository at this point in the history
Changing structure :
adding a marcflavour directory to data/language/
This directory shall have the same subdirectory structure as /data/language
This allows for instance adding optionals CD-Framework or Serials Frameworks
keeping default frameworks mandatory.
install.pl was changed in order to manage those changes.
Could be changed in order to skip marcflavour selection if marcflavour directory is not found.

Signed-off-by: Chris Cormack <[email protected]>
Signed-off-by: Joshua Ferraro <[email protected]>
  • Loading branch information
Henri-Damien LAURENT authored and Joshua Ferraro committed Oct 29, 2007
1 parent d36b48c commit 30e6a55
Show file tree
Hide file tree
Showing 6 changed files with 149 additions and 38 deletions.
136 changes: 107 additions & 29 deletions installer/install.pl
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@
}
elsif ( $step && $step == 2 ) {
#
#STEP 2 Check Database conn~ection and access
#STEP 2 Check Database connection and access
#
$template->param(%info);
my $checkmysql = $query->param("checkmysql");
Expand Down Expand Up @@ -372,29 +372,23 @@
# Framework Selection is achieved through checking boxes.
my $langchoice = $query->param('fwklanguage');
$langchoice = $query->cookie('KohaOpacLanguage') unless ($langchoice);
my $dir = C4::Context->config('intranetdir') . "/installer/data/";
opendir( MYDIR, $dir );
my @listdir = grep { !/^\.|CVS/ && -d "$dir/$_" } readdir(MYDIR);
closedir MYDIR;
my $frmwklangs = getFrameworkLanguages();
my @languages;
map {
push @languages,
{
'dirname' => $_->{'language_code'},
'languagedescription' => $_->{'language_name'},
'checked' => ( $_->{'language_code'} eq $langchoice )
}
if ( $_->{'language_code'} );
} @$frmwklangs;
$template->param( "languagelist" => \@languages );
my $marcflavour = $query->param('marcflavour');
$marcflavour = C4::Context->preference('marcflavour') unless ($marcflavour);
#Insert into database the selected marcflavour
my $request =
$dbh->prepare(
"INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('marcflavour','$marcflavour','Define global MARC flavor (MARC21 or UNIMARC) used for character encoding','MARC21|UNIMARC','Choice');"
);
$request->execute;

undef $/;
$dir =
C4::Context->config('intranetdir') . "/installer/data/$langchoice";
my $dir =
C4::Context->config('intranetdir') . "/installer/data/$langchoice/marcflavour/".lc($marcflavour);
opendir( MYDIR, $dir ) || warn "no open $dir";
@listdir = sort grep { !/^\.|CVS/ && -d "$dir/$_" } readdir(MYDIR);
my @listdir = sort grep { !/^\.|CVS|marcflavour/ && -d "$dir/$_" } readdir(MYDIR);
closedir MYDIR;
my @levellist;

my @fwklist;
my $request =
$dbh->prepare(
"SELECT value FROM systempreferences WHERE variable='FrameworksLoaded'"
Expand All @@ -407,27 +401,74 @@
$frameworksloaded{$_} = 1;
}
foreach my $requirelevel (@listdir) {
$dir =
C4::Context->config('intranetdir')
. "/installer/data/$langchoice/$requirelevel";
opendir( MYDIR, $dir );
opendir( MYDIR, "$dir/$requirelevel" );
my @listname =
grep { !/^\.|CVS/ && -f "$dir/$requirelevel/$_" && $_ =~ m/\.sql$/ }
readdir(MYDIR);
closedir MYDIR;
my %cell;
my @frameworklist;
map {
my $name = substr( $_, 0, -4 );
open FILE, "< $dir/$requirelevel/$name.txt";
my $lines = <FILE>;
$lines =~ s/\n|\r/<br \/>/g;
use utf8;
utf8::encode($lines) unless ( utf8::is_utf8($lines) );
push @frameworklist,
{
'fwkname' => $name,
'fwkfile' => "$dir/$requirelevel/$_",
'fwkdescription' => $lines,
'checked' => (
(
$frameworksloaded{$_}
|| ( $requirelevel =~
/(mandatory|requi|oblig|necess)/i )
) ? 1 : 0
)
};
} @listname;
my @fwks =
sort { $a->{'fwkname'} lt $b->{'fwkname'} } @frameworklist;

# $cell{"mandatory"}=($requirelevel=~/(mandatory|requi|oblig|necess)/i);
$cell{"frameworks"} = \@fwks;
$cell{"label"} = ucfirst($requirelevel);
$cell{"code"} = lc($requirelevel);
push @fwklist, \%cell;
}
$template->param( "frameworksloop" => \@fwklist );
$template->param( "marcflavour" => ucfirst($marcflavour));

$dir =
C4::Context->config('intranetdir') . "/installer/data/$langchoice";
opendir( MYDIR, $dir ) || warn "no open $dir";
@listdir = sort grep { !/^\.|CVS|marcflavour/ && -d "$dir/$_" } readdir(MYDIR);
closedir MYDIR;
my @levellist;
foreach ( split( /\|/, $frameworksloaded ) ) {
$frameworksloaded{$_} = 1;
}
foreach my $requirelevel (@listdir) {
opendir( MYDIR, "$dir/$requirelevel" );
my @listname =
grep { !/^\.|CVS/ && -f "$dir/$_" && $_ =~ m/\.sql$/ }
grep { !/^\.|CVS/ && -f "$dir/$requirelevel/$_" && $_ =~ m/\.sql$/ }
readdir(MYDIR);
closedir MYDIR;
my %cell;
my @frameworklist;
map {
my $name = substr( $_, 0, -4 );
open FILE, "< $dir/$name.txt";
open FILE, "< $dir/$requirelevel/$name.txt";
my $lines = <FILE>;
$lines =~ s/\n|\r/<br \/>/g;
use utf8;
utf8::encode($lines) unless ( utf8::is_utf8($lines) );
push @frameworklist,
{
'fwkname' => $name,
'fwkfile' => "$dir/$_",
'fwkfile' => "$dir/$requirelevel/$_",
'fwkdescription' => $lines,
'checked' => (
(
Expand All @@ -441,7 +482,7 @@
my @fwks =
sort { $a->{'fwkname'} lt $b->{'fwkname'} } @frameworklist;

# $cell{"mandatory"}=($requirelevel=~/(mandatory|requi|oblig|necess)/i);
# $cell{"mandatory"}=($requirelevel=~/(mandatory|requi|oblig|necess)/i);
$cell{"frameworks"} = \@fwks;
$cell{"label"} = ucfirst($requirelevel);
$cell{"code"} = lc($requirelevel);
Expand All @@ -450,6 +491,43 @@
$template->param( "levelloop" => \@levellist );
$template->param( "$op" => 1 );
}
elsif ( $op && $op eq 'choosemarc' ) {
#
#
# 1ST install, 2nd sub-step : show the user the marcflavour available.
#
#

#Choose Marc Flavour
#sql data are supposed to be located in installer/data/<language>/marcflavour/marcflavourname
# Where <language> is en|fr or any international abbreviation (provided language hash is updated... This will be a problem with internationlisation.)
# Where <level> is a category of requirement : required, recommended optional
# level should contain :
# SQL File for import With a readable name.
# txt File taht explains what this SQL File is meant for.
# Could be VERY useful to have A Big file for a kind of library.
# But could also be useful to have some Authorised values data set prepared here.
# Marcflavour Selection is achieved through radiobuttons.
my $langchoice = $query->param('fwklanguage');
$langchoice = $query->cookie('KohaOpacLanguage') unless ($langchoice);
my $dir =
C4::Context->config('intranetdir') . "/installer/data/$langchoice/marcflavour";
opendir( MYDIR, $dir ) || warn "no open $dir";
my @listdir = grep { !/^\.|CVS/ && -d "$dir/$_" } readdir(MYDIR);
closedir MYDIR;
my $marcflavour=C4::Context->preference("marcflavour");
my @flavourlist;
foreach my $marc (@listdir) {
my %cell=(
"label"=> ucfirst($marc),
"code"=>uc($marc),
"checked"=>uc($marc) eq $marcflavour);
# $cell{"description"}= do { local $/ = undef; open INPUT "<$dir/$marc.txt"||"";<INPUT> };
push @flavourlist, \%cell;
}
$template->param( "flavourloop" => \@flavourlist );
$template->param( "$op" => 1 );
}
elsif ( $op && $op eq 'importdatastructure' ) {
#
#
Expand Down
51 changes: 42 additions & 9 deletions koha-tmpl/intranet-tmpl/prog/en/modules/installer/step3.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -80,23 +80,56 @@
<h1>Congratulations, Installation complete</h1>
<p>If this page does not redirect in 5 seconds, click <a href="/">here</a>.</p>
<!--/TMPL_IF-->
<!--TMPL_IF Name="choosemarc"-->
<h2 align="center">Select your MARC flavour</h2>
<form name="frameworkselection" method="post" action="install.pl">
<input type="hidden" name="step" value="3" />
<input type="hidden" name="op" value="selectframeworks" />
<p>
<!--TMPL_LOOP Name="flavourloop"-->
<div>
<!--TMPL_IF Name="checked"-->
<input type="radio" name="marcflavour" value="<!--TMPL_VAR Name="code"-->" checked /> <!--TMPL_VAR Name="label"--> <br/>
<!--TMPl_ELSE-->
<input type="radio" name="marcflavour" value="<!--TMPL_VAR Name="code"-->" /> <!--TMPL_VAR Name="label"--> <br/>
<!--/TMPL_IF-->
</div>
<!--/TMPL_LOOP-->
</p>
<p> Click Next to continue <input value="Next &gt;&gt;" type="submit" /></p>
</form>
<!--/TMPL_IF-->

<!--TMPL_IF Name="selectframeworks"-->
<h2 align="center">Selecting Default Settings</h2>
<form name="frameworkselection" method="post" action="install.pl">
<input type="hidden" name="step" value="3" />
<input type="hidden" name="op" value="addframeworks" />
<p>Each language has a set of default settings that cover a wide range of configuration options. Please select a language from the dropdown or use the default lanaguage already selected.</p>

<p><select name="fwklanguage" onchange="javascript:refresh(this.value)">
<!--TMPL_LOOP Name="languagelist" -->
<!--TMPL_IF Name="checked"--><option value="<!--TMPL_VAR Name="dirname"-->" selected="selected"><!--TMPL_VAR Name="languagedescription"--></option>
<!--TMPL_ELSE--><option value="<!--TMPL_VAR Name="dirname"-->"><!--TMPL_VAR Name="languagedescription"--></option>
<!--/TMPL_IF-->
<h2>MARC Frameworks: <!--TMPL_VAR Name="marcflavour"--></h2>
<!--TMPL_LOOP Name="frameworksloop"-->
<div>
<h3><!--TMPL_VAR Name="label"--></h3>
<!--TMPL_LOOP Name="frameworks"-->
<table style="border:1px;vertical-align:top;">
<tr>
<td style="vertical-align:top;">
<!--TMPL_IF Name="checked"-->
<input type="checkbox" name="framework" value="<!--TMPL_VAR Name="fwkfile"-->" checked="checked" />
<!--TMPl_ELSE-->
<input type="checkbox" name="framework" value="<!--TMPL_VAR Name="fwkfile"-->" />
<!--/TMPL_IF-->
</td>
<td>
<!--TMPL_VAR Name="fwkdescription"-->
<em>(<!--TMPL_VAR Name="fwkname"-->)</em>
</td>
</table>
<!--/TMPL_LOOP-->
</select>
</div>
</p>
<p>
<!--/TMPL_LOOP-->
<h2>Other data</h2>
<!--TMPL_LOOP Name="levelloop"-->
<div>
<h3><!--TMPL_VAR Name="label"--></h3>
Expand Down Expand Up @@ -211,7 +244,7 @@
</p>
<!-- TMPL_ELSE -->
<p>We are ready to do some basic configuration. Please
<a href="install.pl?step=3&amp;op=selectframeworks" class="button">install basic configuration settings</a>
<a href="install.pl?step=3&amp;op=choosemarc" class="button">install basic configuration settings</a>
to continue the installation.
</p>
<!-- /TMPL_IF -->
Expand Down

0 comments on commit 30e6a55

Please sign in to comment.