Entwickleroption "debug.auto_reload_resources" implementiert
authorMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 27 Feb 2013 08:38:29 +0000 (09:38 +0100)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 27 Feb 2013 13:21:42 +0000 (14:21 +0100)
Fügt einen zufälligen GET-Parameter an jeden JavaScript-/CSS-Link
hinzu, der via $layout->use_javascript()/use_stylesheet() ausgegeben
wird. Sorgt dafür, dass der Browser Resourcen jedes Mal neu lädt.

Hilfreich, wenn man gerade CSS oder JavaScript bastelt und nicht
dauernd F5 drücken möchte.

SL/Form.pm
SL/Layout/Base.pm
config/kivitendo.conf.default

index f406817..e7d1425 100644 (file)
@@ -490,10 +490,12 @@ sub header {
     push @header, "<meta http-equiv='refresh' content='$refresh_time;$refresh_url'>";
   }
 
-  push @header, map { qq|<link rel="stylesheet" href="$_" type="text/css" title="Stylesheet">| } $layout->stylesheets;
+  my $auto_reload_resources_param = $layout->auto_reload_resources_param;
+
+  push @header, map { qq|<link rel="stylesheet" href="${_}${auto_reload_resources_param}" type="text/css" title="Stylesheet">| } $layout->stylesheets;
   push @header, "<style type='text/css'>\@page { size:landscape; }</style> "                     if $self->{landscape};
   push @header, "<link rel='shortcut icon' href='$self->{favicon}' type='image/x-icon'>"         if -f $self->{favicon};
-  push @header, map { qq|<script type="text/javascript" src="$_"></script>| }                    $layout->javascripts;
+  push @header, map { qq|<script type="text/javascript" src="${_}${auto_reload_resources_param}"></script>| }                    $layout->javascripts;
   push @header, $self->{javascript} if $self->{javascript};
   push @header, map { $_->show_javascript } @{ $self->{AJAX} || [] };
 
index cd5ace9..de94ee0 100644 (file)
@@ -4,9 +4,10 @@ use strict;
 use parent qw(SL::Controller::Base);
 
 use List::MoreUtils qw(uniq);
+use Time::HiRes qw();
 
 use Rose::Object::MakeMethods::Generic (
-  'scalar --get_set_init' => qw(menu),
+  'scalar --get_set_init' => [ qw(menu auto_reload_resources_param) ],
   'scalar'                => qw(focus),
   'array'                 => [
     'add_stylesheets_inline' => { interface => 'add', hash_key => 'stylesheets_inline' },
@@ -30,6 +31,11 @@ sub init_menu {
   Menu->new('menu.ini');
 }
 
+sub init_auto_reload_resources_param {
+  return '' unless $::lx_office_conf{debug}->{auto_reload_resources};
+  return sprintf('?rand=%d-%d-%d', Time::HiRes::gettimeofday(), int(rand 1000000000000));
+}
+
 ##########################################
 #  inheritable/overridable
 ##########################################
index 2f4c88a..875cfe0 100644 (file)
@@ -293,3 +293,9 @@ file_name = /tmp/kivitendo-debug.log
 # If set to 1 then the installation will be kept unlocked even if a
 # database upgrade fails.
 keep_installation_unlocked = 0
+
+# If set to 1 then all resource links (JavaScript, CSS files) output
+# via $::request->{layout}->use_stylesheet() / use_javascript() will
+# be made unique by appending a random GET parameter. This will cause
+# the web browser to always reload the resources.
+auto_reload_resources = 0