f27cc8 | 1998-11-04 | Peter Bortas | |
|
57f45e | 1996-11-27 | Per Hedbor | |
|
f27cc8 | 1998-11-04 | Peter Bortas | | constant cvs_version = "$Id: indirect_href.pike,v 1.8 1998/11/04 20:28:09 peter Exp $";
|
07bf51 | 1997-08-31 | Peter Bortas | | constant thread_safe=1;
|
b1fca0 | 1996-11-12 | Per Hedbor | | #include <module.h>
inherit "module";
inherit "roxenlib";
mapping hrefs;
string tagname;
void create()
{
defvar( "hrefs", "", "Indirect hrefs", TYPE_TEXT_FIELD,
|
f27cc8 | 1998-11-04 | Peter Bortas | | "Syntax:<br>\n"
|
57f45e | 1996-11-27 | Per Hedbor | | "[name] = [URL]\n" );
|
f27cc8 | 1998-11-04 | Peter Bortas | |
defvar( "tagname", "ai", "Tagname", TYPE_STRING|VAR_EXPERT,
"Name of the tag\n"
|
57f45e | 1996-11-27 | Per Hedbor | | "<tag name=[name]>foo</tag> will be replaced with\n"
|
f27cc8 | 1998-11-04 | Peter Bortas | | "<a href=[URL]>foo</a>"
"if the name is changed, the module has to be reloaded for the "
"namechange to take effect)" );
|
b1fca0 | 1996-11-12 | Per Hedbor | | }
|
57f45e | 1996-11-27 | Per Hedbor | | array (mixed) register_module()
|
b1fca0 | 1996-11-12 | Per Hedbor | | {
|
07bf51 | 1997-08-31 | Peter Bortas | | return ({ MODULE_PARSER, "Indirect href",
|
f27cc8 | 1998-11-04 | Peter Bortas | | "Indirect href. Adds a new container <tt><ai></tt>"
", with a single argument, "
"name=string. It then uses the name to index a database of "
"URLs, and inserts a <a href=...> tag instead. This can "
"be very useful, since you can move all links to a document at "
"once. It also allows the special case 'name=random'. If this "
"is used, a random link will be selected from the database. "
"Example:<pre>"
" roxen=http://www.roxen.com/\n"
" idonex=http://www.idonex.se/</pre>", });
|
b1fca0 | 1996-11-12 | Per Hedbor | | }
void start()
{
|
57f45e | 1996-11-27 | Per Hedbor | | array (string) lines, foo;
string line;
string variable, value;
|
b1fca0 | 1996-11-12 | Per Hedbor | | string dir = "";
mapping all = ([ ]);
hrefs = ([ ]);
if (lines = query( "hrefs" ) /"\n")
foreach (lines, line)
if (sscanf( line, "%s=%s", variable, value ) >= 2)
hrefs[ variable - " " - "\t" ] = value - " " - "\t";
tagname = query( "tagname" );
}
string tag_newa( string tag, mapping m, string q, mapping got )
{
if (m[ "name" ] && hrefs[ m[ "name" ] ])
return "<a href=" + hrefs[ m[ "name" ] ] + ">" + q + "</a>";
else if (m[ "random" ])
return "<a href=" + values( hrefs )[ random( sizeof( hrefs ) ) ] + ">"
+ q + "</a>";
else
return q;
}
mapping query_container_callers()
{
return ([ tagname : tag_newa ]);
}
|