From 3642e53fcbb31138ad82ab3ab18bc51234ff178d Mon Sep 17 00:00:00 2001 From: short <> Date: Sun, 18 Sep 2005 15:50:34 +0000 Subject: [PATCH] Moved common "Redirect"+"have_js" to their proper "My/" project directory. --- HaveJS.pm | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Makefile.am | 4 ++++ Redirect.pm | 45 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 117 insertions(+) create mode 100644 HaveJS.pm create mode 100644 Redirect.pm diff --git a/HaveJS.pm b/HaveJS.pm new file mode 100644 index 0000000..b68c554 --- /dev/null +++ b/HaveJS.pm @@ -0,0 +1,68 @@ +# $Id$ +# JavaScript detection scriptlet Perl template. +# Copyright (C) 2003-2005 Jan Kratochvil +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; exactly version 2 of June 1991 is required +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +package My::HaveJS; +require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway +our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; }; +our $CVS_ID=q$Id$; +use strict; +use warnings; + +use My::Web; + + +our $HTML_TEST=0; + +sub handler +{ +my $W=My::Web->init(); + + +# Do not: My::Web->heading(); +$W->{"r"}->content_type("text/javascript"); + +# Prevent redirection of some top (referring) foreign webpage as it +# may not pass "have_js=1" to us anyway. (for example Google cache) +print "" + .'if (0'."\n" + ."\t\t".'|| window.location.hostname=="'.$W->{"W"}{"web_hostname"}.'" && window.location.port== 80'."\n" + ."\t\t".'|| window.location.hostname=="'.'localhost' .'" && window.location.port==7680)'."\n"; +print <<'HERE'; + { + var searchN=window.location.search; + if (searchN=="" || searchN=="?") + searchN="?"; + else + searchN+="&"; + searchN+="have_js=1"; + + window.location.href + =window.location.protocol+"//" + +window.location.hostname + +(window.location.port==80 ? "" : ":"+window.location.port) + +window.location.pathname + +window.location.hash + +searchN; + } +HERE + + +# Do not: My::Web->footer(); +exit 0; +} +1; diff --git a/Makefile.am b/Makefile.am index 63b0901..9157b6b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -28,3 +28,7 @@ EXTRA_DIST+= \ arrow-right.png \ arrow-up.png +MODPERL_PM+= \ + HaveJS.pm \ + Redirect.pm + diff --git a/Redirect.pm b/Redirect.pm new file mode 100644 index 0000000..25cbfb5 --- /dev/null +++ b/Redirect.pm @@ -0,0 +1,45 @@ +# $Id$ +# URL redirector of &My::Web::a_href Perl template. +# Copyright (C) 2003-2005 Jan Kratochvil +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; exactly version 2 of June 1991 is required +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +package My::Redirect; +require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway +our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; }; +our $CVS_ID=q$Id$; +use strict; +use warnings; + +use My::Web; +use Apache2::Const qw(HTTP_MOVED_TEMPORARILY); + + +our $HTML_TEST=0; + +sub handler +{ +my $W=My::Web->init( + "header_only"=>1, + "args_check"=>{ + "location"=>'^\w+://', + }, + ); +$W->{"r"}->status(HTTP_MOVED_TEMPORARILY); +$W->{"r"}->headers_out()->{"Location"}=$W->{"args"}{"location"}; + +exit 0; +} +1; -- 1.8.3.1