# HG changeset patch
# User devi
# Date 1139309463 -7200
# Node ID 35e0d61c820d62d32e61e781d15d92d8cbb51f6d
# Parent  0ffdebbccfce7f9c2c65621caa8619b00520396e
Добавлены ссылки на файлы.
Если в ходе работы в консоли показать файл с помощью команды cat,
он будет показан в конце журнала в секции "Файлы"
(дальше, возможно, для этого будет нужно ставить дополнительную пометку #)

Теперь можно щёлкнуть на ссылку рядом с файлом
и увидеть, откуда он взялся в журнале.

diff -r 0ffdebbccfce -r 35e0d61c820d l3-agent
--- a/l3-agent	Sat Feb 04 00:54:17 2006 +0200
+++ b/l3-agent	Tue Feb 07 12:51:03 2006 +0200
@@ -489,9 +489,9 @@
 
         my $output="";
 
-        if (!grep ($_ eq $cl{"last_command"}, @{$Config{"full_output_commands"}})
+        if (!grep ($_ eq $cl->{"last_command"}, @{$Config{"full_output_commands"}})
             && ($Config{"head_lines"} 
-            || $Config{"tail_lines"})) 
+            || $Config{"tail_lines"})) { 
             # Partialy output
             my @lines = split '\n', $cl->{"output"};
             # head
@@ -510,7 +510,7 @@
                 $mark=0;
             }   
             $output .= $Config{"skip_text"}."\n" if $mark;
-            for (my $i=$start; $i<= $#lines; $i++) {
+            for ($i=$start; $i<= $#lines; $i++) {
                 $output .= $lines[$i]."\n";
             }
         } 
diff -r 0ffdebbccfce -r 35e0d61c820d l3-frontend
--- a/l3-frontend	Sat Feb 04 00:54:17 2006 +0200
+++ b/l3-frontend	Tue Feb 07 12:51:03 2006 +0200
@@ -301,6 +301,8 @@
 
         next if !$cl;
 
+        $$cl->{id} = $$cl->{"time"};
+
         $$cl->{err} ||=0;
 
         # Класс команды
@@ -310,7 +312,8 @@
                         :   $$cl->{"err"}        ?  "wrong"
                         :                           "normal";
 
-        if ($$cl->{"cline"} =~ /[^|`]\s*sudo/
+        if ($$cl->{"cline"} && 
+            $$cl->{"cline"} =~ /[^|`]\s*sudo/
             || $$cl->{"uid"} eq 0) {
             $$cl->{"class"}.="_root";
         }
@@ -504,7 +507,8 @@
         if ($cl->{"last_command"} eq "cat" && !$cl->{"err"} && !($cl->{"cline"} =~ /</)) {
             my $filename = $cl->{"cline"};
             $filename =~ s/.*\s+(\S+)\s*$/$1/;
-            $Files{$filename} = $cl->{"output"};
+            $Files{$filename}->{"content"} = $cl->{"output"};
+            $Files{$filename}->{"source_command_id"} = $cl->{"id"}
         }
         my @lines = split '\n', $cl->{"output"};
         if ((
@@ -604,7 +608,7 @@
                              .  "</td></tr>\n";
         }
 
-        $this_day_result .= "<tr class='command'>\n";
+        $this_day_result .= "<tr class='command' id='command:".$cl->{"id"}."'>\n";
                         
 
 # CONSOLE CHANGE
@@ -1052,11 +1056,12 @@
     my $result = qq(); 
     my @toc;
     for my $file (sort keys %Files) {
-          my $div_id = $file;
+          my $div_id = "file:$file";
           $div_id =~ s@/@_@g;
           push @toc, "<a href='#$div_id'>$file</a>";
           $result .= "<div class='filename' id='$div_id'>".$file."</div>\n"
-                  .  "<div class='filedata'><pre>".$Files{$file}."</pre></div>";
+                  .  "<div class='file_navigation'><a href='#command:".$Files{$file}->{source_command_id}."'>"."&gt;"."</a></div>"
+                  .  "<div class='filedata'><pre>".$Files{$file}->{content}."</pre></div>";
     }
     return "<div class='files_toc'>".collapse_list(\@toc)."</div>".$result;
 }