# HG changeset patch # User devi # Date 1151178817 -10800 # Node ID c41cc9a4b5ea9574ce314bfa93a6a766d66a0f2a # Parent 2c00c61f2d7bec98f2b0342a152449ff145d345b * Пофиксил ошибку с неправильной кодировкой mywi-хинтов. * Подготовил к переходу в иерархию /l3/ ** Исправил пути для стилей, ** Забацал красивый l3-cgi-lite l3-cgi-lite пока что не доделан до нужного уровня, но я его скоро дорисую. Уже сейчас это намного более качественный скрипт через уродский l3-cgi Он, конечно, поработал в свое время, но лучше его заменить l3-cgi-lite Из функционала добавилось: * Кэширование страниц в html * Навигация по каталогам * Навигационная строка в журнале сверху diff -r 2c00c61f2d7b -r c41cc9a4b5ea l3-cgi-lite --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/l3-cgi-lite Sat Jun 24 22:53:37 2006 +0300 @@ -0,0 +1,174 @@ +#!/usr/bin/perl + +use strict; +use CGI qw(:standard); +use utf8; + +BEGIN { + chdir("/home/devi/cvs/lilalo"); + require l3config; + l3config::init_config(); +}; + +sub path_is_correct($); +sub error($); +sub remove_extra_slashes_from($); +sub print_header($); +sub print_footer; +sub nav_bar; + +my $print=""; +my $path = $ENV{PATH_INFO}; +remove_extra_slashes_from($path); + +my $real_path = $l3config::Config{"backend_datadir"} ; +my $cgi_path = $l3config::Config{"cgi_path"} ; +my $style_files = $l3config::Config{"frontend_files"} ; +my $frontend_css = $l3config::Config{"frontend_css"} ; +my $data_file = "data.xml"; + +path_is_correct($path) + or error ("Путь $path содержит недопустимые символы или комбинации символов."); + +$real_path .= $path; +remove_extra_slashes_from($real_path); + +# Чувак, ты хотел бы посмотреть на журнал $path +# Он должен находиться в каталоге $real_path файловой системы\n"; + +(-d $real_path) + or error("Каталог $real_path не существует. Проверьте, пожалуйста, URL\n"); + +if (-e $real_path."/$data_file") { + +# В каталоге есть файл $data_file +# Отлично! Сейчас будем показывать журнал + +# Если существуют html и xml файлы, +# html файл новее чем xml, +# и CGI-скрипту не передано дополнительных параметров, +# используем html файл, иначе перегенируем его + + unless ( -e "$real_path/$data_file" + && -e "$real_path/index.html" + && (stat("$real_path/index.html"))[9] > (stat("$real_path/$data_file"))[9] ) { + + my $l3_frontend = "/home/devi/cvs/lilalo/l3-frontend --backend_datafile $real_path/$data_file --output $real_path/index.html"; + system($l3_frontend) == 0 + or error("Файл журнала найден, но возникла ошибка при его обработке:
$!"); + $print .= "(перегенирован)
"; + } + + { + local $/; + open(HTML, "<:utf8", "$real_path/index.html"); + my $html = ; + +# Добавим в начало документа навигационную строку + my $nav_bar = nav_bar; + $html =~ s/(]*>)/$1$nav_bar/; + + $print .= $html; + close(HTML); + } + +} +else { + +# В этом каталоге нет файла data.xml +# Но в нём должны быть подкаталоги! +# Если и их тут нет, то тут вообще делать нечего + + $print .= nav_bar; + + my @dirs = glob("$real_path/*"); + my $folder_link = "$cgi_path/$path"; + remove_extra_slashes_from($folder_link); + + $folder_link =~ s@/[^\/]*/?$@@; + if ($folder_link) { + $print .= "..
"; + } + + for my $dir (@dirs) { + next unless (-d $dir); + my ($folder_name) = $dir =~ m@.*/(.*)@; + $folder_link = "$cgi_path/$path/$folder_name"; + $folder_link =~ s@//@/@g; + $print .= "$folder_name
"; + } + + $print = print_header("LiLaLo -- ".remove_extra_slashes_from("$cgi_path/$path")) + .$print + .print_footer; +}; + +binmode STDOUT, ":utf8"; +print header(-charset => "utf-8"); +print $print; +exit(0); + +#---------------------------------------------- + + +sub error($) +{ +my $message = $_[0]; + +binmode STDOUT, ":utf8"; +print header(-charset => "utf-8"); + +my $print = "

Извините, произошла ошибка

"; +$print .= $message; + +print $print; +exit(0); +} + + +sub path_is_correct($) +{ + my $path = $_[0]; + return 0 if $path =~ m@/../@; + return 0 unless $path =~ m@^[a-zA-Z0-9./\@\-]*$@; + return 1; +} + +sub remove_extra_slashes_from($) +{ + while ($_[0] =~ s@//@/@g) {1;}; + return $_[0]; +} + +sub print_header($) +{ + my $title = $_[0]; + "" + ."" + ."" + ."" + ."$title" + ."" +} + +sub print_footer() +{ + ""; +} + +sub nav_bar() +{ + my $nav_bar=""; + my $skip_first=1; + my $current_path=""; + for my $path_part (split("/", remove_extra_slashes_from("$cgi_path/$path"))) { + if ($skip_first) { + $skip_first--; + next; + } + $current_path .= "/$path_part"; + $nav_bar .= "/$path_part"; + } + return ""; +} + diff -r 2c00c61f2d7b -r c41cc9a4b5ea l3-frontend --- a/l3-frontend Wed Jun 14 21:37:22 2006 +0300 +++ b/l3-frontend Sat Jun 24 22:53:37 2006 +0300 @@ -174,16 +174,18 @@ sub mywi_client { - return ""; + #return ""; my $query = $_[0]; my $mywi; open_mywi_socket; if ($Mywi_Socket) { + binmode ":utf8", $Mywi_Socket; local $| = 1; local $/ = ""; print $Mywi_Socket $query."\n"; $mywi = <$Mywi_Socket>; + utf8::decode($mywi); $mywi = "" if $mywi =~ /nothing app/; } close_mywi_socket; @@ -1049,6 +1051,7 @@ .$SetCursorPosition_JS ."" ."" + ."
" ."

Журнал лабораторных работ. Правка

" ."
" ."" @@ -1056,6 +1059,7 @@ ."
" ."

Внимательно правим, потом сохраняем

" ."

Строки, начинающиеся символами #l3: можно трогать, только если точно знаешь, что делаешь

" + ."
" ."" .""; @@ -1205,6 +1209,7 @@ $title +
@@ -1289,7 +1294,7 @@ sub print_footer_html { - return "\n\n"; + return "
\n\n"; } diff -r 2c00c61f2d7b -r c41cc9a4b5ea l3.css --- a/l3.css Wed Jun 14 21:37:22 2006 +0300 +++ b/l3.css Sat Jun 24 22:53:37 2006 +0300 @@ -313,4 +313,25 @@ } +.nav_bar { + font-size: 80%; + color: #222222; + background-color: #eeeeee; +} +/* +.nav_bar a { + color: #222222; + padding-left: 1pt; + padding-right: 1pt; +} +*/ +body { + margin:0; + padding:0 0 15px 0; + +} +.body { + margin: 10; + padding: 10; +} diff -r 2c00c61f2d7b -r c41cc9a4b5ea l3config.pm --- a/l3config.pm Wed Jun 14 21:37:22 2006 +0300 +++ b/l3config.pm Sat Jun 24 22:53:37 2006 +0300 @@ -54,7 +54,9 @@ "output" => "/tmp/report.html", "output_mask" => "INDEX", "output_format" => "html", - "frontend_css" => "/l3/l3.css", + "cgi_path" => "/l3", + "frontend_files" => "/l3files", + "frontend_css" => "/l3files/l3.css", "l3shot_path" => "/l3shot/", "l3shot_suffix" => ".png", "frontend_google_ico" => "/l3/google.ico", diff -r 2c00c61f2d7b -r c41cc9a4b5ea labmaker.conf --- a/labmaker.conf Wed Jun 14 21:37:22 2006 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ -## Specify configurable parameters here -## in form -## variable = value -#terminal_width=100 diff -r 2c00c61f2d7b -r c41cc9a4b5ea ug2db --- a/ug2db Wed Jun 14 21:37:22 2006 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -#!/bin/sh - -from=$1 -to=$2 -xsl=ug.xsl -xsltproc -o $to $xsl $from -