lilalo
diff l3-frontend @ 71:d499fa3b2af1
Na lilalo@moskau.xt.vpn uspeshno zavelos i\
zarabotalo. + Sohranenie istorii pri vyhode
zarabotalo. + Sohranenie istorii pri vyhode
author | devi |
---|---|
date | Sat Feb 04 00:47:22 2006 +0200 (2006-02-04) |
parents | 8c3d80c4891b |
children | 35e0d61c820d |
line diff
1.1 --- a/l3-frontend Sat Jan 28 09:00:25 2006 +0200 1.2 +++ b/l3-frontend Sat Feb 04 00:47:22 2006 +0200 1.3 @@ -12,6 +12,8 @@ 1.4 our $Mywi_Socket; 1.5 our %Sessions; 1.6 1.7 +our %Files; 1.8 + 1.9 # vvv Инициализация переменных выполняется процедурой init_variables 1.10 our @Day_Name; 1.11 our @Month_Name; 1.12 @@ -38,6 +40,7 @@ 1.13 1.14 sub print_all; 1.15 sub print_command_lines; 1.16 +sub print_files; 1.17 sub print_stat; 1.18 sub print_header; 1.19 sub print_footer; 1.20 @@ -498,8 +501,16 @@ 1.21 # и <tail_lines> нижних строк, 1.22 # если эти параметры существуют 1.23 1.24 + if ($cl->{"last_command"} eq "cat" && !$cl->{"err"} && !($cl->{"cline"} =~ /</)) { 1.25 + my $filename = $cl->{"cline"}; 1.26 + $filename =~ s/.*\s+(\S+)\s*$/$1/; 1.27 + $Files{$filename} = $cl->{"output"}; 1.28 + } 1.29 my @lines = split '\n', $cl->{"output"}; 1.30 - if (($Config{"head_lines"} || $Config{"tail_lines"}) 1.31 + if (( 1.32 + $Config{"head_lines"} 1.33 + || $Config{"tail_lines"} 1.34 + ) 1.35 && $#lines > $Config{"head_lines"} + $Config{"tail_lines"} ) { 1.36 1.37 for (my $i=0; $i<= $#lines && $i < $Config{"head_lines"}; $i++) { 1.38 @@ -513,7 +524,7 @@ 1.39 } 1.40 } 1.41 else { 1.42 - $output .= $cl->{"output"}; 1.43 + $ output .= $cl->{"output"}; 1.44 } 1.45 1.46 # 1.47 @@ -737,9 +748,10 @@ 1.48 my $hint; 1.49 for my $c (reverse sort { $CommandsFDistribution{$a} <=> $CommandsFDistribution{$b} } @new_commands) { 1.50 $hint = make_comment($c); 1.51 + next unless $hint; 1.52 my ($command, $hint) = $hint =~ m/(.*?) \s*- \s*(.*)/; 1.53 next unless $command =~ s/\($entries_class\)//i; 1.54 - $new_commands_section .= "<tr><td valign='top'>$command</td><td>$hint</td></tr>" if $hint; 1.55 + $new_commands_section .= "<tr><td valign='top'>$command</td><td>$hint</td></tr>"; 1.56 } 1.57 } 1.58 return $new_commands_section; 1.59 @@ -761,9 +773,11 @@ 1.60 1.61 my $result; 1.62 my ($command_lines,$toc) = print_command_lines; 1.63 + my $files_section = print_files; 1.64 1.65 $result = print_header($toc); 1.66 $result.= "<h2 id='log'>Журнал</h2>" . $command_lines; 1.67 + $result.= "<h2 id='files'>Файлы</h2>" . $files_section if $files_section; 1.68 $result.= "<h2 id='stat'>Статистика</h2>" . print_stat; 1.69 $result.= "<h2 id='help'>Справка</h2>" . $Html_Help . "<br/>"; 1.70 $result.= "<h2 id='about'>О программе</h2>". $Html_About. "<br/>"; 1.71 @@ -810,16 +824,20 @@ 1.72 } 1.73 1.74 # Управляющая форма 1.75 - my $control_form .= "<table id='visibility_form' class='visibility_form'><tr><td>Видимые элементы</TD></tr><tr><td><form>\n"; 1.76 - for my $element (keys %Elements_Visibility) 1.77 + my $control_form .= "<div class='visibility_form' title='Выберите какие элементы должны быть показаны в журнале'>" 1.78 + . "<span class='header'>Видимые элементы</span>" 1.79 + . "<span class='window_controls'><a href='' onclick='' title='свернуть форму управления'>_</a> <a href='' onclick='' title='закрыть форму управления'>x</a></span>" 1.80 + . "<div><form>\n"; 1.81 + for my $element (sort keys %Elements_Visibility) 1.82 { 1.83 - my @e = split /\s+/, $element; 1.84 + my ($skip, @e) = split /\s+/, $element; 1.85 my $showhide = join "", map { "ShowHide('$_');" } @e ; 1.86 - $control_form .= "<input type='checkbox' name='$e[0]' onclick=\"$showhide\" checked>". 1.87 + $control_form .= "<div><input type='checkbox' name='$e[0]' onclick=\"$showhide\" checked>". 1.88 $Elements_Visibility{$element}. 1.89 - "</input><br>\n"; 1.90 + "</input></div>"; 1.91 } 1.92 - $control_form .= "</form></td></tr></table>\n"; 1.93 + $control_form .= "</form>\n" 1.94 + . "</div>\n"; 1.95 1.96 my $result; 1.97 $result = <<HEADER; 1.98 @@ -881,6 +899,7 @@ 1.99 <ul> 1.100 <li><a href='#log'>Журнал</a></li> 1.101 <ul>$toc</ul> 1.102 + <li><a href='#files'>Файлы</a></li> 1.103 <li><a href='#stat'>Статистика</a></li> 1.104 <li><a href='#help'>Справка</a></li> 1.105 <li><a href='#about'>О программе</a></li> 1.106 @@ -1028,6 +1047,19 @@ 1.107 } 1.108 1.109 1.110 +sub print_files 1.111 +{ 1.112 + my $result = qq(); 1.113 + my @toc; 1.114 + for my $file (sort keys %Files) { 1.115 + my $div_id = $file; 1.116 + $div_id =~ s@/@_@g; 1.117 + push @toc, "<a href='#$div_id'>$file</a>"; 1.118 + $result .= "<div class='filename' id='$div_id'>".$file."</div>\n" 1.119 + . "<div class='filedata'><pre>".$Files{$file}."</pre></div>"; 1.120 + } 1.121 + return "<div class='files_toc'>".collapse_list(\@toc)."</div>".$result; 1.122 +} 1.123 1.124 1.125 sub init_variables 1.126 @@ -1053,9 +1085,9 @@ 1.127 <table> 1.128 <tr class='command'> 1.129 <td class='script'> 1.130 -<pre class='mistyped_cline'> 1.131 +<pre class='_mistyped_cline'> 1.132 \$ l s-l</pre> 1.133 -<pre class='mistyped_output'>bash: l: command not found 1.134 +<pre class='_mistyped_output'>bash: l: command not found 1.135 </pre> 1.136 </td> 1.137 </tr> 1.138 @@ -1069,7 +1101,7 @@ 1.139 <table> 1.140 <tr class='command'> 1.141 <td class='script'> 1.142 -<pre class='wrong_cline'> 1.143 +<pre class='_wrong_cline'> 1.144 \$ test 5 -lt 4</pre> 1.145 </pre> 1.146 </td> 1.147 @@ -1085,7 +1117,7 @@ 1.148 <table> 1.149 <tr class='command'> 1.150 <td class='script'> 1.151 -<pre class='interrupted_cline'> 1.152 +<pre class='_interrupted_cline'> 1.153 \$ find / -name abc</pre> 1.154 <pre class='interrupted_output'>find: /home/devi-orig/.gnome2: Keine Berechtigung 1.155 find: /home/devi-orig/.gnome2_private: Keine Berechtigung 1.156 @@ -1266,7 +1298,7 @@ 1.157 <p> 1.158 LiLaLo (L3) расшифровывается как Live Lab Log.<br/> 1.159 Программа разработана для повышения эффективности обучения Unix/Linux-системам.<br/> 1.160 - (c) Игорь Чубин, 2004-2005<br/> 1.161 + (c) Игорь Чубин, 2004-2006<br/> 1.162 </p> 1.163 ABOUT 1.164 $Html_About.='$Id$ </p>'; 1.165 @@ -1337,15 +1369,17 @@ 1.166 ); 1.167 1.168 %Elements_Visibility = ( 1.169 - "note" => "замечания", 1.170 - "diff" => "редактор", 1.171 - "time" => "время", 1.172 - "ttychange" => "терминал", 1.173 - "wrong_output wrong_cline wrong_root_output wrong_root_cline" 1.174 - => "команды с ошибками", 1.175 - "interrupted_output interrupted_cline interrupted_root_output interrupted_root_cline" 1.176 + "0 new_commands_table" => "новые команды", 1.177 + "1 diff" => "редактор", 1.178 + "2 time" => "время", 1.179 + "3 ttychange" => "терминал", 1.180 + "4 wrong_output wrong_cline wrong_root_output wrong_root_cline" 1.181 + => "команды с ненулевым кодом завершения", 1.182 + "5 mistyped_output mistyped_cline mistyped_root_output mistyped_root_cline" 1.183 + => "неверно набранные команды", 1.184 + "6 interrupted_output interrupted_cline interrupted_root_output interrupted_root_cline" 1.185 => "прерванные команды", 1.186 - "tab_completion_output tab_completion_cline" 1.187 + "7 tab_completion_output tab_completion_cline" 1.188 => "продолжение с помощью tab" 1.189 ); 1.190