X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=edithelp.pl;h=de4e9b12c1b53622da96be498f5a49baefcd1f55;hb=3910d5e8b4f982b53f7aebd484a8d12fb42b1a52;hp=af3a09704f00d5a01dfc0a8060bce7f15d67482f;hpb=b8250afa53ad393fc0ee6a92be3dde23b8a49197;p=koha.git diff --git a/edithelp.pl b/edithelp.pl index af3a09704f..de4e9b12c1 100755 --- a/edithelp.pl +++ b/edithelp.pl @@ -13,26 +13,36 @@ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR # A PARTICULAR PURPOSE. See the GNU General Public License for more details. # -# You should have received a copy of the GNU General Public License along with -# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place, -# Suite 330, Boston, MA 02111-1307 USA +# You should have received a copy of the GNU General Public License along +# with Koha; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. use strict; use C4::Output; +use C4::Templates; use C4::Auth; use CGI; +use warnings; -my $input = new CGI; +use vars qw($debug); -my $type = $input->param('type'); -my $referer = $input->param('referer'); +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'); +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( { - template_name => "help/edithelp.tmpl", + template_name => "help/edithelp.tt", query => $input, type => "intranet", authnotrequired => 0, @@ -52,77 +62,55 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( } ); -if ( $type eq 'addnew' ) { - $type = 'create'; -} -elsif ( $type eq 'create' || $type eq 'save' ) { - $referer =~ /.*koha\/(.*)\.pl.*/; - my $from = "help/$1.tmpl"; +sub _get_filepath ($;$) { + my $referer = shift; + $referer =~ /koha\/(.*)\.pl/; + my $from = "help/$1.tt"; 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/$from" ) || die "Can't open file"; - }; - if ($@) { - $error = "Cant open file $htdocs/$theme/$lang/$from"; - } - else { + my ($theme, $lang, $availablethemes) = C4::Templates::themelanguage( $htdocs, $from, "intranet", $input ); + $debug and print STDERR "help filepath: $htdocs/$theme/$lang/modules/$from"; + return "$htdocs/$theme/$lang/modules/$from"; +} +$type = 'create' if $type eq 'addnew'; +if ( $type eq 'create' || $type eq 'save' ) { + my $file = _get_filepath($referer); + open my $fh, ">", $file; + if ( $fh ) { # 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"; - close OUTFILE; + print $fh + " [% INCLUDE 'help-top.inc' %]\n", + $type eq 'create' ? "
\n$help\n
" : $help, + "\n[% INCLUDE 'help-bottom.inc' %]\n"; + close $fh; print $input->redirect("/cgi-bin/koha/help.pl?url=$oldreferer"); } - - - # } - + else { + $error = "Cannot write file: '$file'"; + } } 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/$from" ) || die "Can't open file"; - }; - if ($@) { - $error = "Cant open file $htdocs/$theme/$lang/$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 to save, because your webserver cannot write to '$file'. Contact your admin about help file permissions."; + open (my $fh, '<', $file) or die "Cannot read file '$file'"; # unlikely death, since we just checked + my $help = ''; + while ( <$fh> ) { + $help .= /\[% INCLUDE .* %\](.*)$/ ? $1 : $_; + } + close $fh; + $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;