lilalo
diff l3-cgi @ 30:f5f07049bd4f
l3-agent:
Исправлен баг с инициализацией session_id
l3-cgi:
* Добавлена поддержка index-страницы.
При обращении на /cgi-bin/l3/index показывается таблица
с ссылками на журналы всех тренингов
В самом журнале корректно показывается информация
о курсе.
* Поскольку термин "class" перегружен, вместо него теперь
используется термин "training".
В дальнейшем такая замена произойдёт во всём коде.
* Теперь l3-cgi использует конфигурационный модуль l3config.pm
Загрузка выполняется с помощью require на этапе исполнения
l3config.pm:
Перенесены конфигурационные параметры lm.
ОСТОРОЖНО! Сам lm ПОКА ЧТО не использует l3config.pm для конфигурирования.
Исправлен баг с инициализацией session_id
l3-cgi:
* Добавлена поддержка index-страницы.
При обращении на /cgi-bin/l3/index показывается таблица
с ссылками на журналы всех тренингов
В самом журнале корректно показывается информация
о курсе.
* Поскольку термин "class" перегружен, вместо него теперь
используется термин "training".
В дальнейшем такая замена произойдёт во всём коде.
* Теперь l3-cgi использует конфигурационный модуль l3config.pm
Загрузка выполняется с помощью require на этапе исполнения
l3config.pm:
Перенесены конфигурационные параметры lm.
ОСТОРОЖНО! Сам lm ПОКА ЧТО не использует l3config.pm для конфигурирования.
author | devi |
---|---|
date | Tue Nov 08 12:16:20 2005 +0200 (2005-11-08) |
parents | b3f5f5560802 |
children | 196c82b6e538 |
line diff
1.1 --- a/l3-cgi Mon Nov 07 13:28:15 2005 +0200 1.2 +++ b/l3-cgi Tue Nov 08 12:16:20 2005 +0200 1.3 @@ -2,29 +2,98 @@ 1.4 1.5 use strict; 1.6 use CGI qw(:standard); 1.7 +use XML::Simple; 1.8 + 1.9 +BEGIN { 1.10 + chdir("/home/devi/cvs/lilalo"); 1.11 + require l3config; 1.12 +}; 1.13 1.14 my $value = param('PARAM'); 1.15 1.16 +my %Trainings; 1.17 +my $XMLTraining; 1.18 +my %Machines; 1.19 + 1.20 +sub load_training 1.21 +{ 1.22 + my $classfile = 1.23 + $_[0]|| 1.24 + $l3config::Config{"classfile"} || 1.25 + $l3config::Config{"path_classes"}."/".$l3config::Config{"class"}.$l3config::Config{"class_suffix"}; 1.26 + 1.27 + my $XMLTraining = XMLin($classfile , ForceArray => [ 'student' ] ) 1.28 + or die "Can't open file of the class ",$classfile,"\n"; 1.29 + 1.30 + for my $student (@{$XMLTraining->{"student"}}) { 1.31 + $XMLTraining->{host}->{$student->{"host"}}=$student; 1.32 + } 1.33 + return $XMLTraining; 1.34 +} 1.35 + 1.36 print header( 1.37 -charset => "utf-8", 1.38 ); 1.39 -chdir("/home/devi/cvs/lilalo"); 1.40 1.41 -# Вызов производится по URL 1.42 -my ($skip, $course, $host, $user) = split /\//,$ENV{PATH_INFO},4; 1.43 1.44 -my @args=( 1.45 - "--output" => "-", 1.46 - "--show_comments" => "no", 1.47 - "--course-center" => "\"Сетевые Технологии\"", 1.48 - "--course-trainer" => "\"Игорь Чубин\"", 1.49 - "--course-student" => "\"$user\@$host\"", 1.50 - "--course-code" => "\"$course\"", 1.51 -); 1.52 +if ($ENV{PATH_INFO} eq "/index") { 1.53 + # Показываем индекс курсов 1.54 + my @training_files = glob($l3config::Config{"path_classes"}."/*".$l3config::Config{"class_suffix"}); 1.55 + if (@training_files) { 1.56 + for my $training_file (@training_files) { 1.57 + my $training = load_training($training_file); 1.58 + $Trainings{$training->{"date"}}=$training; 1.59 + } 1.60 + print "<table>\n"; 1.61 + for my $tdate (reverse sort keys %Trainings) { 1.62 + my $t = $Trainings{$tdate}; 1.63 + print "<tr>"; 1.64 + print "<td>".$t->{date}."</td>"; 1.65 + print "<td>".$t->{course}."</td>"; 1.66 + print "</tr>\n"; 1.67 + print "<tr>"; 1.68 + print "<td/>"; 1.69 + print "<td><pre>"; 1.70 + for my $host (sort keys %{$t->{host}}) { 1.71 + my $h = $t->{host}->{$host}; 1.72 + print "$host"; 1.73 + print " ".$h->{firstname}." ".$h->{surname}." "; 1.74 + print "<a href='/cgi-bin/l3/".$tdate."/".$host."/root'>root</a> "; 1.75 + print "<a href='/cgi-bin/l3/".$tdate."/".$host."/".$h->{user}."'>".$h->{user}."</a> "; 1.76 + print "\n"; 1.77 + } 1.78 + print "</pre><td>"; 1.79 + print "</tr>\n"; 1.80 + } 1.81 + print "</table>\n"; 1.82 + } 1.83 + else { 1.84 + print "No training-files found<br/>\n"; 1.85 + print "Template to load files: ".$l3config::Config{"path_classes"}."*".$l3config::Config{"class_suffix"}."\n" 1.86 + } 1.87 +} 1.88 +else { 1.89 + # Вызов производится по URL 1.90 + my ($skip, $course, $host, $user) = split /\//,$ENV{PATH_INFO},4; 1.91 1.92 -open (FRONTEND, "./l3-frontend ".join(" ",@args)." |"); 1.93 -while (<FRONTEND>) { 1.94 - print; 1.95 + $l3config::Config{"class"}=$course; 1.96 + $XMLTraining = load_training; 1.97 + 1.98 + my @args=( 1.99 + "--output" => "-", 1.100 + "--show_comments" => "no", 1.101 + "--course-center" => $XMLTraining->{center}, 1.102 + "--course-trainer" => $XMLTraining->{instructor}->{firstname}." ".$XMLTraining->{instructor}->{surname}, 1.103 + "--course-student" => $XMLTraining->{host}->{$host}->{firstname}." ".$XMLTraining->{host}->{$host}->{surname}, 1.104 + "--course-code" => $XMLTraining->{course}, 1.105 + "--course-date" => $XMLTraining->{date}, 1.106 + "--backend_datafile" => "/var/lilalo/lablogs-xml/$course/$host/$user.xml", 1.107 + ); 1.108 + 1.109 + open (FRONTEND, "./l3-frontend ".join(" ",map("\"$_\"",@args))." |"); 1.110 + while (<FRONTEND>) { 1.111 + print; 1.112 + } 1.113 + close(FRONTEND); 1.114 } 1.115 -close(FRONTEND); 1.116