LP#1350042 browser client apache config additions
authorBill Erickson <berick@esilibrary.com>
Mon, 4 Aug 2014 17:24:37 +0000 (13:24 -0400)
committerBen Shum <bshum@biblio.org>
Fri, 29 Aug 2014 20:12:09 +0000 (16:12 -0400)
* Location configuratoin for /eg/staff templates
* Support for "stop-at-index" in EGWeb, so that navigating to "/eg/foo"
  can result in /eg/index.tt2 getting served.
* Cache and compress additions for /js files.

Signed-off-by: Bill Erickson <berick@esilibrary.com>
Signed-off-by: Ben Shum <bshum@biblio.org>
Open-ILS/examples/apache/eg_vhost.conf.in
Open-ILS/examples/apache_24/eg_vhost.conf.in
Open-ILS/src/perlmods/lib/OpenILS/WWW/EGWeb.pm

index d1b48f0..2f077ea 100644 (file)
@@ -794,6 +794,33 @@ RewriteRule ^/openurl$ ${openurl:%1} [NE,PT]
     </IfModule>
 </Location>
 
+<LocationMatch /eg/staff/>
+    Options -MultiViews
+    PerlSetVar OILSWebStopAtIndex "true"
+
+    # sample staff-specific translation files
+    #PerlAddVar OILSWebLocale "en_ca"                                           
+    #PerlAddVar OILSWebLocale "/openils/var/data/locale/staff/en-CA.po"         
+    #PerlAddVar OILSWebLocale "fr_ca"                                           
+    #PerlAddVar OILSWebLocale "/openils/var/data/locale/staff/fr-CA.po"   
+</LocationMatch>
+
+<Location /js/>
+    <IfModule mod_headers.c>
+        Header append Cache-Control "public"
+    </IFModule>
+    <IfModule mod_deflate.c>
+        SetOutputFilter DEFLATE
+        BrowserMatch ^Mozilla/4 gzip-only-text/html
+        BrowserMatch ^Mozilla/4\.0[678] no-gzip
+        BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
+        SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
+        <IfModule mod_headers.c>
+            Header append Vary User-Agent env=!dont-vary
+        </IfModule>
+    </IfModule>
+</Location>
+
 # Uncomment the following to force SSL for everything. Note that this defeats caching
 # and you will suffer a performance hit.
 #RewriteCond %{HTTPS} off
index f6e65e7..a44b9ad 100644 (file)
@@ -806,6 +806,34 @@ RewriteRule ^/openurl$ ${openurl:%1} [NE,PT]
     </IfModule>
 </Location>
 
+<LocationMatch /eg/staff/>
+    Options -MultiViews
+    PerlSetVar OILSWebStopAtIndex "true"
+
+    # sample staff-specific translation files
+    #PerlAddVar OILSWebLocale "en_ca"                                           
+    #PerlAddVar OILSWebLocale "/openils/var/data/locale/staff/en-CA.po"         
+    #PerlAddVar OILSWebLocale "fr_ca"                                           
+    #PerlAddVar OILSWebLocale "/openils/var/data/locale/staff/fr-CA.po"   
+</LocationMatch>
+
+<Location /js/>
+    <IfModule mod_headers.c>
+        Header append Cache-Control "public"
+    </IFModule>
+    <IfModule mod_deflate.c>
+        SetOutputFilter DEFLATE
+        BrowserMatch ^Mozilla/4 gzip-only-text/html
+        BrowserMatch ^Mozilla/4\.0[678] no-gzip
+        BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
+        SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
+        <IfModule mod_headers.c>
+            Header append Vary User-Agent env=!dont-vary
+        </IfModule>
+    </IfModule>
+</Location>
+
+
 # Uncomment the following to force SSL for everything. Note that this defeats caching
 # and you will suffer a performance hit.
 #RewriteCond %{HTTPS} off
index 0f9e93e..d111cd2 100644 (file)
@@ -239,11 +239,12 @@ sub find_template {
     my $page_args = [];
     my $as_xml = $r->dir_config('OILSWebForceValidXML');
     my $ext = $r->dir_config('OILSWebDefaultTemplateExtension');
+    my $at_index = $r->dir_config('OILSWebStopAtIndex');
 
     my @parts = split('/', $path);
     my $localpath = $path;
 
-    if ($localpath =~ m|opac/css|) {
+    if ($localpath =~ m|/css/|) {
         $r->content_type('text/css; encoding=utf8');
     } else {
         $r->content_type('text/html; encoding=utf8');
@@ -257,9 +258,31 @@ sub find_template {
             if(-r $fpath) {
                 $template = "$localpath.$ext";
                 last;
+            } 
+        }
+        last if $template;
+
+        if ($at_index) {
+            # no matching template was found in the current directory.
+            # stop-at-index requested; see if there is an index.ext 
+            # file in the same directory instead.
+            for my $tpath (@{$ctx->{template_paths}}) {
+                # replace the final path component with 'index'
+                if ($localpath =~ m|/$|) {
+                    $localpath .= 'index';
+                } else {
+                    $localpath =~ s|/[^/]+$|/index|;
+                }
+                my $fpath = "$tpath/$localpath.$ext";
+                $r->log->debug("egweb: looking at possible template $fpath");
+                if (-r $fpath) {
+                    $template = "$localpath.$ext";
+                    last;
+                }
             }
         }
         last if $template;
+
         push(@args, pop @parts);
         $localpath = join('/', @parts);
     }