Monday, November 08, 2010 at 12:03 AM.
system.verbs.builtins.html.data.standardMacros.bodyTag
on bodyTag (pagetable=nil) { // Build a body tag, with background image and text atts.
<<Call this macro from your pageheader attribute to automatically build your body tag.
<<Example of a #pageHeader outline.
<<<html>
<<<head>
<<<title>
<<{title}
<<</title>
<<</head>
<<{bodyTag ()}
<<Monday, January 05, 1998 at 4:17:30 PM by PBS
<<Changes 4/6/98:
<<Added support for onload and onunload parameters.
<<Use #onload and #onunload directives.
local (htmltext, bgref, oneatt);
local (attslist = {"bgcolor", "alink", "vlink", "link", "text", "topmargin", "leftmargin", "marginheight", "marginwidth", "onload", "onunload"});
if pagetable == nil {
pagetable = html.getPageTableAddress ()};
on add (s) {
htmltext = htmltext + s};
<<Add background image.
bgref = html.data.standardMacros.bgImageRef (pagetable:pagetable);
if bgref != "" {
add (" " + bgref)};
<<Add bgcolor, link, alink, vlink, text, topmargin, and leftmargin attributes.
for oneatt in attslist {
if defined (pagetable^.[oneatt]) {
local (s = pagetable^.[oneatt]);
if {"alink", "bgcolor", "text", "link", "vlink"} contains oneatt {
if s beginsWith "#" {
s = string.popLeading (s, '#')};
if s contains "," {
local (r = string.nthField (s, ',', 1));
local (g = string.nthField (s, ',', 2));
local (b = string.nthField (s, ',', 3));
s = "";
on pushhex (gun) {
local (hexs = string.hex (gun));
hexs = string.delete (hexs, 1, 2); <<pop off 0x
<<hexs = string.mid (hexs, 1, 2) <<keep 2 most significant digits
<<JimC - above was wrong - this works for 255 based colors
hexs = string.mid (hexs, string.length(hexs)-1, 2); <<keep 2 most significant digits
s = s + hexs};
pushhex (r);
pushhex (g);
pushhex (b)}
else {
if not (s beginsWith "0") { <<leave number values alone
try {s = evaluate (s)}}};
s = "#" + s};
add (" " + oneatt+ "=\"" + s + "\"")}};
return ("<body" + htmltext + ">")};
bodyTag (@websites.["#data"])
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.