Debug Menü im HTML Menü. FCGI Entwicklung leicht gemacht.
authorSven Schöling <s.schoeling@linet-services.de>
Fri, 13 May 2011 09:17:23 +0000 (11:17 +0200)
committerSven Schöling <s.schoeling@linet-services.de>
Fri, 13 May 2011 09:17:23 +0000 (11:17 +0200)
SL/Controller/DebugMenu.pm [new file with mode: 0644]
SL/LXDebug.pm
bin/mozilla/kopf.pl
config/lx_office.conf.default
templates/webpages/menu/header.html [new file with mode: 0644]

diff --git a/SL/Controller/DebugMenu.pm b/SL/Controller/DebugMenu.pm
new file mode 100644 (file)
index 0000000..d612d37
--- /dev/null
@@ -0,0 +1,24 @@
+package SL::Controller::DebugMenu;
+
+use strict;
+use parent qw(SL::Controller::Base);
+
+# safety
+__PACKAGE__->run_before(sub { die 'not allowed in config' unless $::lx_office_conf{debug}{show_debug_menu}; });
+
+sub action_reload {
+  my ($self, %params) = @_;
+
+  print $::cgi->redirect('kopf.pl');
+  exit;
+}
+
+sub action_toggle {
+  my ($self, %params) = @_;
+
+  $::lxdebug->level_by_name($::form->{level}, !$::lxdebug->level_by_name($::form->{level}));
+  print $::cgi->redirect('kopf.pl');
+  return;
+}
+
+1;
index 1f0110f..4e77907 100644 (file)
@@ -296,4 +296,20 @@ sub file {
   @_ == 2 ? $_[0]->{file} = $_[1] : $_[0]->{file};
 }
 
+sub _by_name {
+  my ($self, $level) = @_;
+  my $meth = $self->can(uc $level);
+  die 'unknown level' unless $meth;
+  $meth->();
+}
+
+sub level_by_name {
+  my ($self, $level, $val) = @_;
+  if (@_ == 3) {
+    $global_level |=  $self->_by_name($level) if  $val;
+    $global_level &= ~$self->_by_name($level) if !$val;
+  }
+  return $global_level & $self->_by_name($level);
+}
+
 1;
index ed11e52..0228566 100644 (file)
 #!/usr/bin/perl
-#
-
-#$| = 1;
-
-#use CGI::Carp qw(fatalsToBrowser);
 
 use strict;
+use DateTime;
 
 sub run {
   my $session_result = shift;
-  %::myconfig = $::auth->read_user($::form->{login})  if  $::form->{login};
-  $::locale   = Locale->new($::myconfig{countrycode}) if $::myconfig{countrycode};
-
-my $form     = $main::form;
-my $locale   = $main::locale;
-
-$form->header;
-my $paramstring = $ENV{"QUERY_STRING"};
-my @felder = split "&", $paramstring;
-my ($name, $wert);
-foreach (@felder) {
-  ($name, $wert) = split "=", $_;
-  $wert =~ tr/+/ /;
-  $name = $wert;
-}
-my $login =
-    "". $locale->text('User') . ": " . $form->{login}
-  . "  [<a href=\"login.pl?action=logout\" target=\"_top\" title=\"". $locale->text('Logout now') . "\">"
-  . $locale->text('Logout')
-  . "</a>] ";
-my ($Sekunden, $Minuten,   $Stunden,   $Monatstag, $Monat,
-    $Jahr,     $Wochentag, $Jahrestag, $Sommerzeit)
-  = localtime(time);
-my $CTIME_String = localtime(time);
-$Monat     += 1;
-$Jahrestag += 1;
-$Monat     = $Monat < 10     ? $Monat     = "0" . $Monat     : $Monat;
-$Monatstag = $Monatstag < 10 ? $Monatstag = "0" . $Monatstag : $Monatstag;
-$Jahr += 1900;
-my @Wochentage = ("Sonntag",    "Montag",  "Dienstag", "Mittwoch",
-                  "Donnerstag", "Freitag", "Samstag");
-my @Monatsnamen = ("",       "Januar",    "Februar", "M&auml;rz",
-                   "April",  "Mai",       "Juni",    "Juli",
-                   "August", "September", "Oktober", "November",
-                   "Dezember");
-my $datum =
-    $Wochentage[$Wochentag] . ", der "
-  . $Monatstag . "."
-  . $Monat . "."
-  . $Jahr . " - ";
-
-#$zeit="<div id='Uhr'>".$Stunden.":".$Minuten.":".$Sekunden."</div>";
-my $zeit = "<div id='Uhr'>" . $Stunden . ":" . $Minuten . "</div>";
 
-print qq|
-<script type="text/javascript">
-<!--
-var clockid=new Array()
-var clockidoutside=new Array()
-var i_clock=-1
-var thistime= new Date()
-var hours= | . $Stunden . qq|;
-var minutes= | . $Minuten . qq|;
-var seconds= | . $Sekunden . qq|;
-if (eval(hours) <10) {hours="0"+hours}
-if (eval(minutes) < 10) {minutes="0"+minutes}
-if (seconds < 10) {seconds="0"+seconds}
-//var thistime = hours+":"+minutes+":"+seconds
-var thistime = hours+":"+minutes
-
-function writeclock() {
-  i_clock++
-  if (document.all \|\| document.getElementById \|\| document.layers) {
-    clockid[i_clock]="clock"+i_clock
-    document.write("<font family=arial size=2><span id='"+clockid[i_clock]+"' style='position:relative'>"+thistime+"</span></font>")
-  }
-}
-
-function clockon() {
-  thistime= new Date()
-  hours=thistime.getHours()
-  minutes=thistime.getMinutes()
-  seconds=thistime.getSeconds()
-  if (eval(hours) <10) {hours="0"+hours}
-  if (eval(minutes) < 10) {minutes="0"+minutes}
-  if (seconds < 10) {seconds="0"+seconds}
-  //thistime = hours+":"+minutes+":"+seconds
-  thistime = hours+":"+minutes
-
-  if (document.all) {
-    for (i=0;i<=clockid.length-1;i++) {
-      var thisclock=eval(clockid[i])
-      thisclock.innerHTML=thistime
-    }
-  }
-
-  if (document.getElementById) {
-    for (i=0;i<=clockid.length-1;i++) {
-      document.getElementById(clockid[i]).innerHTML=thistime
-    }
-  }
-  var timer=setTimeout("clockon()",60000)
-}
-window.onload=clockon
-//-->
-</script>
-|;
+  %::myconfig = $::auth->read_user($::form->{login})  if $::form->{login};
+  $::locale   = Locale->new($::myconfig{countrycode}) if $::myconfig{countrycode};
 
-print qq|
-<body bgcolor="#ffffff" text="#ffffff" link="#ffffff" vlink="#ffffff" alink="#ffffff" topmargin="0" leftmargin="0"  marginwidth="0" marginheight="0" style="background-image: url('image/fade.png'); background-repeat:repeat-x;">
-<script language='JavaScript' src='js/switchmenuframe.js'></script>
-<table border="0" width="100%" background="image/bg_titel.gif" cellpadding="0" cellspacing="0">
-  <tr>|;
-   if ( !($ENV{HTTP_USER_AGENT} =~ /links/i) ) {    # do not show the the links in case of "links" in HTTP_USER_AGENT
-      print qq|
-       <td  style="color:white; font-family:verdana,arial,sans-serif; font-size: 12px;" nowrap>
-       [<a href="JavaScript:Switch_Menu();" title="| . $locale->text('Switch Menu on / off') . qq|">| . $locale->text('Menu') . qq|</a>]
-       &nbsp;[<a HREF="login.pl" target="_blank" title="| . $locale->text('Open a further Lx-Office Window or Tab') . qq|">| . $locale->text('New Win/Tab') . qq|</a>]
-       &nbsp;[<a href="JavaScript:top.main_window.print();" title="| . $locale->text('Hardcopy') . qq|">| . $locale->text('Print') . qq|</a>]
-       &nbsp;[<a href="Javascript:top.main_window.history.back();" title="| . $locale->text('Go one step back') . qq|">| . $locale->text('Back') . qq|</a>]
-       &nbsp;[<a href="Javascript:top.main_window.history.forward();" title="| . $locale->text('Go one step forward') . qq|">| . $locale->text('Fwd') . qq|</a>]
-      </td>|;
-   }
-   print qq|
-    <td align="right" style="vertical-align:middle; color:white; font-family:verdana,arial,sans-serif; font-size: 12px;" nowrap>|
-  . $login . $datum . qq| <script>writeclock()</script>&nbsp;
-    </td>
-  </tr>
-</table>
-</body>
-</html>
-|;
+  $::form->header;
+  print $::form->parse_html_template('menu/header', {
+    now        => DateTime->now,
+    show_debug => $::lx_office_conf{debug}{show_debug_menu},
+    lxdebug    => $::lxdebug,
+    is_links   => ($ENV{HTTP_USER_AGENT} =~ /links/i),
+  });
 }
 
 1;
index ef620c0..e4991fd 100644 (file)
@@ -222,6 +222,9 @@ global_level = NONE
 # default.
 watch_form = 0
 
+# Im HTML Menü ein Hilfsmenü zur Debugsteuerung zeigen.
+show_debug_menu = 0
+
 # If you want to debug the creation of LaTeX files then set this to 1.
 # That way the temporary LaTeX files created during PDF creation are
 # not removed and remain in the "users" directory.
diff --git a/templates/webpages/menu/header.html b/templates/webpages/menu/header.html
new file mode 100644 (file)
index 0000000..359c940
--- /dev/null
@@ -0,0 +1,41 @@
+[%- USE T8 %]
+<style type='text/css'>
+  body { margin: 0; color: white; background: url('image/fade.png') repeat-x; }
+  a:link, a:visited, a:hover, a:active { color:white }
+  body > * { font-size: 12px; font-family:verdana,arial,sans-serif; vertical-align:middle; }
+  table { border:0; width: 100%; background: url('image/bg_titel.gif'); border-spacing:0; }
+  td { padding: 0 }
+</style>
+<script language='javascript' src='js/switchmenuframe.js'></script>
+<body>
+ <table>
+  <tr>
+[% UNLESS is_links %]
+   <td nowrap>
+    [<a href="JavaScript:Switch_Menu();" title="[% 'Switch Menu on / off' | $T8 %]">[% 'Menu' | $T8 %]</a>]
+    [<a HREF="login.pl" target="_blank" title="[% 'Open a further Lx-Office Window or Tab' | $T8 %]">[% 'New Win/Tab' | $T8 %]</a>]
+    [<a href="JavaScript:top.main_window.print();" title="[% 'Hardcopy' | $T8 %]">[% 'Print' | $T8 %]</a>]
+    [<a href="Javascript:top.main_window.history.back();" title="[% 'Go one step back' | $T8 %]">[% 'Back' | $T8 %]</a>]
+    [<a href="Javascript:top.main_window.history.forward();" title="[% 'Go one step forward' | $T8 %]">[% 'Fwd' | $T8 %]</a>]
+   </td>
+[%- END %]
+[% IF show_debug %]
+   <td align='center' nowrap>
+    Debug:
+    [<a href='controller.pl?action=DebugMenu/reload']>FCGI Reload</a>]
+    [<a href='controller.pl?action=DebugMenu/toggle&level=request_timer'>[% IF lxdebug.level_by_name('request_timer') %]<b>Timing</b>[% ELSE %]Timing[% END %]</a>]
+    [<a href='controller.pl?action=DebugMenu/toggle&level=trace'>[% IF lxdebug.level_by_name('trace') %]<b>Trace</b>[% ELSE %]Trace[% END %]</a>]
+    [<a href='controller.pl?action=DebugMenu/toggle&level=query'>[% IF lxdebug.level_by_name('query') %]<b>Query</b>[% ELSE %]Query[% END %]</a>]
+   </td>
+[%- END %]
+   <td align="right" nowrap>
+    [% 'User' | $T8 %]:
+    [% login %]
+    [<a href="login.pl?action=logout" target="_top" title="[% 'Logout now' | $T8 %]">[% 'Logout' | $T8 %]</a>]
+    [% now.to_lxoffice %] -
+    [% now.hms %]
+   </td>
+  </tr>
+ </table>
+</body>
+</html>