|
|
|
|
|
|
|
|
|
|
|
|
|
|
constant cvs_version = "$Id: killframe.pike,v 1.28 2000/03/09 09:05:18 mast Exp $"; |
constant thread_safe=1; |
|
#include <module.h> |
inherit "module"; |
|
void create() |
{ |
defvar( "killindex", 1, "Kill trailing 'indexfiles'?", TYPE_FLAG, |
"When set, the killframe module will remove occurrences of " |
"'indexfiles' (as set in the active directory module) from " |
"the end of the URL, leaving only a slash." ); |
} |
|
constant module_type = MODULE_PARSER; |
constant module_name = "Killframe tag"; |
constant module_doc = "This module defines a the tag <killframe> that " |
"adds some java script that will prevent others " |
"from putting your page in a frame. It can " |
"also strip any occurrences of 'indexfiles' " |
"from the end of the URL."; |
|
TAGDOCUMENTATION |
#ifdef manual |
constant tagdoc=(["killframe":"<desc tag>"+module_doc+"</desc>" |
"<attr name=killindex>Removes trailing index.html from the URL</attr>"]); |
#endif |
|
string tag_killframe( string tag, mapping m, object id ) |
{ |
NOCACHE(); |
|
if( !id->supports->javascript ) return ""; |
|
string javascript; |
|
while( id->misc->orig ) |
id = id->misc->orig; |
|
|
string tmp; |
string prestate; |
string my_url = id->conf->query("MyWorldLocation"); |
|
|
if( sscanf(id->raw_url, "/(%s)", tmp) ) |
prestate = "("+ tmp +")/"; |
|
if( sscanf(my_url, "%s:80/", tmp ) ) |
my_url = tmp +"/"+ (prestate?prestate:"") + id->not_query[1..]; |
else |
my_url += (prestate?prestate:"") + id->not_query[1..]; |
|
|
|
if( query("killindex") || m->killindex ) |
{ |
|
array indexfiles = ({}); |
if( id->conf->dir_module ) |
indexfiles = id->conf->dir_module->query("indexfiles"); |
|
int l=strlen(my_url)-1; |
|
foreach( indexfiles, string index ) |
if( my_url[l-strlen(index)..] == "/" +index ) |
my_url = my_url[..l-strlen(index)]; |
} |
|
|
if(id->query) |
my_url += "?"+ id->query; |
|
|
|
if( id->client && id->client[0][..8] == "Mozilla/3" ) |
javascript = ( " if(top.location != \""+ my_url +"\")\n" |
" top.location = \""+ my_url +"\";\n" ); |
else |
javascript = ( " if(top.frames.length>1)\n" |
" top.location = \""+ my_url +"\";\n" ); |
|
return("<script language=\"javascript\"><!--\n" |
+ javascript |
+ "//--></script>\n"); |
} |
|
|