X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=edithelp.pl;h=362f678e86045c61b70bd813f17444a07c361152;hb=830620ea1b50e207e5e585a5456a6b9beabf2c22;hp=0d20d7d7d0de0bfe557425bde5babd32b910307a;hpb=154a01077a471bddcebf2b4557c10a8010f4d5f6;p=koha.git diff --git a/edithelp.pl b/edithelp.pl index 0d20d7d7d0..362f678e86 100755 --- a/edithelp.pl +++ b/edithelp.pl @@ -22,12 +22,20 @@ use C4::Output; use C4::Auth; use CGI; -my $input = new CGI; +use vars qw($debug); + +BEGIN { + $debug = $ENV{DEBUG} || 0; +} + +our $input = new CGI; my $type = $input->param('type'); my $referer = $input->param('referer'); my $oldreferer = $referer; my $help = $input->param('help'); +# strip any DOS-newlines that TinyMCE may have sneaked in +$help =~ s/\r//g; my $error; my ( $template, $loggedinuser, $cookie ) = get_template_and_user( @@ -52,77 +60,56 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( } ); +sub _get_filepath ($;$) { + my $referer = shift; + $referer =~ /.*koha\/(.+)\.pl.*/; + my $from = "help/$1.tmpl"; + my $htdocs = C4::Context->config('intrahtdocs'); + my ($theme, $lang) = themelanguage( $htdocs, $from, "intranet", $input ); + $debug and print STDERR "help filepath: $htdocs/$theme/$lang/modules/$from"; + return "$htdocs/$theme/$lang/modules/$from"; +} + if ( $type eq 'addnew' ) { $type = 'create'; } elsif ( $type eq 'create' || $type eq 'save' ) { - $referer =~ /.*koha\/(.*)\.pl.*/; - my $from = "help/$1.tmpl"; - my $htdocs = C4::Context->config('intrahtdocs'); -# my ( $theme, $lang ) = themelanguage( $htdocs, $from, "intranet" ); - my $theme = C4::Context->preference('template'); - my $lang = C4::Context->preference('language') || 'en'; - - # if (! -e "$htdocs/$theme/$lang/$from") { - # doesnt exist - eval { - open( OUTFILE, ">$htdocs/$theme/$lang/modules/$from" ) || die "Can't open file"; - }; - if ($@) { - $error = "Cant open file $htdocs/$theme/$lang/modules/$from"; - } - else { - + my $file = _get_filepath($referer); + unless (open (OUTFILE, ">$file")) {$error = "Cannot write file: '$file'";} else { + #open (OUTFILE, ">$file") or die "Cannot write file: '$file'"; # unlikely death, since we just checked # file is open write to it - print OUTFILE "\n"; - if ($type eq 'create'){ - print OUTFILE "
\n"; - } - print OUTFILE "$help\n"; - if ($type eq 'create'){ - print OUTFILE "
\n"; - } - print OUTFILE "\n"; + print OUTFILE "\n"; + print OUTFILE ($type eq 'create') ? "
\n$help\n
" : $help; + print OUTFILE "\n\n"; close OUTFILE; print $input->redirect("/cgi-bin/koha/help.pl?url=$oldreferer"); } - - - # } - + } elsif ( $type eq 'modify' ) { - # open file load data, kill include calls, pass data to the template - $referer =~ /.*koha\/(.*)\.pl.*/; - my $from = "help/$1.tmpl"; - my $htdocs = C4::Context->config('intrahtdocs'); - my ( $theme, $lang ) = themelanguage( $htdocs, $from, "intranet" ); - eval { - open( INFILE, "$htdocs/$theme/$lang/modules/$from" ) || die "Can't open file"; - }; - if ($@) { - $error = "Cant open file $htdocs/$theme/$lang/modules/$from"; - } - my $help; - while ( my $inp = ) { - if ( $inp =~ /TMPL\_INCLUDE/ ) { - } - else { - $help .= $inp; - } - } - close INFILE; - $template->param( 'help' => $help ); - - $type = 'save'; + my $file = _get_filepath($referer, 1); # 2nd argument triggers themelanguage call + if (! -r $file) { + $error = "Cannot read file: '$file'."; + } else { + (-w $file) or $error = + "WARNING: You will not be able save, because your webserver cannot write to '$file'. Contact your admin about help file permissions."; + open (INFILE, $file) or die "Cannot read file '$file'"; # unlikely death, since we just checked + my $help = ''; + while ( my $inp = ) { + unless ( $inp =~ /TMPL\_INCLUDE/ ) { + $help .= $inp; + } + } + close INFILE; + $template->param( 'help' => $help ); + $type = 'save'; + } } $template->param( 'referer' => $referer, 'type' => $type, - 'error' => $error, - ); - +($error) and $template->param('error' => $error); output_html_with_http_headers $input, "", $template->output;