bd8fa31998-04-03Peter Bortas /* This is a roxen module. Copyright © 1997, 1998, Idonex AB.
2b004e1997-01-25Peter Bortas  * * Adds some java script that will prevent others from putting * your page in a frame. *
bd8fa31998-04-03Peter Bortas  * Will also remove occuranses of "indexfiles" from the end of the URL.
2b004e1997-01-25Peter Bortas  *
0247a31998-03-11David Hedbor  * made by Peter Bortas <peter@idonex.se> Januari -97
aa899c1997-11-14Peter Bortas  *
bd8fa31998-04-03Peter Bortas  * Thanks for suggestions and bugreports: * Barry Treahy <treahy@allianceelec.com> * Chris Burgess <chris@ibex.co.nz>
2b004e1997-01-25Peter Bortas  */
e859de1998-04-03Peter Bortas constant cvs_version = "$Id: killframe.pike,v 1.17 1998/04/03 19:20:53 peter Exp $";
07bf511997-08-31Peter Bortas constant thread_safe=1;
6677ac1997-08-31Peter Bortas 
2b004e1997-01-25Peter Bortas #include <module.h> inherit "module";
93f8551998-04-03Peter Bortas void create() { defvar( "killindex", 1, "Kill trailing 'indexfiles'?", TYPE_FLAG|VAR_MORE,
e859de1998-04-03Peter Bortas  "When set, the killframe module will remove occurrences of "
93f8551998-04-03Peter Bortas  "'indexfiles' (as set in the active directory module) from " "the end of the URL, leaving only a slash." ); }
2b004e1997-01-25Peter Bortas 
e859de1998-04-03Peter Bortas mixed register_module()
2b004e1997-01-25Peter Bortas { return ({ MODULE_PARSER, "Killframe tag", ("Makes pages frameproof." "<br>This module defines a tag," "<pre>" "&lt;killframe&gt;: Adds some java script that will prevent others\n" " from putting your page in a frame.\n\n"
e859de1998-04-03Peter Bortas  " Will also strip any occurrences of 'indexfiles'\n" " from the end of the URL."
2b004e1997-01-25Peter Bortas  "</pre>" ), ({}), 1, }); } string tag_killframe( string tag, mapping m, object id ) {
93f8551998-04-03Peter Bortas  string javascript;
8756ae1998-03-08Per Hedbor  if(m->help) return register_module()[2];
93f8551998-04-03Peter Bortas  array indexfiles; if( id->conf->dir_module ) indexfiles = id->conf->dir_module->query("indexfiles");
0cbd1a1997-08-12Peter Bortas 
93f8551998-04-03Peter Bortas  while( id->misc->orig ) id = id->misc->orig;
07bf511997-08-31Peter Bortas 
93f8551998-04-03Peter Bortas  if( query("killindex") ) { string tmp; /* Links to index.html are ugly. */ string my_url = id->conf->query("MyWorldLocation"); if( sscanf(my_url, "%s:80/", tmp ) ) my_url = tmp +"/"+ id->not_query[1..]; else my_url += id->not_query[1..]; int l=strlen(my_url)-1; foreach( indexfiles, string index ) if( my_url[l-strlen(index)..] == "/" +index ) my_url = my_url[..l-strlen(index)]; javascript = ( " if(top.location != \""+ my_url +"\")\n" " top.location = \""+ my_url +"\";\n" ); } else javascript = ( " if (self != top) top.location = self.location;\n" );
2b004e1997-01-25Peter Bortas  if (id->supports->javascript)
93f8551998-04-03Peter Bortas  return("<script language=javascript><!--\n" + javascript + "//--></script>\n");
1e84351997-08-27Henrik Grubbström (Grubba)  return "";
2b004e1997-01-25Peter Bortas } mapping query_tag_callers() { return ([ "killframe" : tag_killframe ]); }