|
|
|
|
|
|
|
|
|
|
|
|
|
|
constant cvs_version = "$Id: killframe.pike,v 1.35 2001/09/21 15:58:16 jhs Exp $"; |
constant thread_safe=1; |
|
#include <module.h> |
inherit "module"; |
|
void create() |
{ |
defvar( "killindex", 1, "Remove index files from the URL", TYPE_FLAG, |
"If set, the module will remove occurrences of any index file from " |
"the end of the URL, leaving only a slash. The index file " |
"definition is taken from the active directory module." ); |
} |
|
constant module_type = MODULE_TAG; |
constant module_name = "Tags: Kill frame"; |
constant module_doc = "This module defines a the tag <killframe> that " |
"adds some JavaScript that will prevent others " |
"from putting the page in a frame. It can " |
"also strip any occurrences of index files, like <tt>index.html</tt>, " |
"from the end of the URL."; |
|
TAGDOCUMENTATION |
#ifdef manual |
constant tagdoc=(["killframe":#"<desc tag='tag'><p><short> |
This tag adds some JavaScript that will prevent others from putting |
the page in a frame.</short> It can also strip any occurrences of |
index files, like <ext>index.html</ext>, from the end of the |
URL.</p></desc> |
|
<attr name='killindex'><p> |
Removes trailing index.html from the URL.</p> |
</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"); |
} |
|
|