new object $directories: $core;
var $directories default_page = $page_root_index;
var $directories entries = #[["home", $page_home_index], ["bin", $page_bin_index], ["~", $page_home_index], ["desktop", $dir_desktop], ["images", $page_file_index], ["login", $page_login]];
var $directories lock = 0;
var $dmi_data descriptions = #[];
var $root created_on = 863765302;
var $root flags = ['variables, 'methods, 'code, 'core];
var $root inited = 1;
var $root managed = [$directories];
var $root manager = $directories;
public method .build_footer() {
arg header, info, args;
return ["<hr size=1 noshade><a href=\"/\">the Cold Dark</a></body>"];
};
public method .build_header() {
arg header, info, args, @title;
var body;
[(title ?= "the Cold Dark")] = title;
body = "<body bgcolor=\"#ffffff\" text=\"#000000\" link=\"#130191\" vlink=\"#100040\" alink=\"#4000bf\">";
return ["<head>", ("<title>" + title) + "</title>", "</head>", body];
};
root method .core_directories() {
var elem;
for elem in (entries) {
if (!valid(elem[2]))
entries = entries.del(elem[1]);
}
};
public method .default_page() {
return default_page;
};
public method .entry() {
arg str;
return (> entries[str] <);
};
public method .find_page() {
arg orig_url, interface;
var found, script_name, url, dir, page, lock, meth, obj;
script_name = "";
url = orig_url.explode("/");
if ((| ((url[1])[1]) == "~" |))
url = ["~", (url[1]).subrange(2), @url.subrange(2)];
dir = $directories;
page = $directories;
if ((url.length()) == 2) {
if ((| (obj = $object_lib.to_dbref(url[1])) |)) {
page = obj;
script_name += "/" + (url[1]);
url = url.subrange(2);
if ((| (meth = tosym(url[1])) |)) {
if ((| page.find_method(meth) |)) {
interface.set_info('generate, meth);
script_name += "/" + (url[1]);
url = url.subrange(2);
found = 1;
if ((page.is($page)) && (page.get_lock()))
lock = page;
} else {
return 'pagenf;
}
} else {
return 'pagenf;
}
}
}
if (!found) {
if (dir.get_lock())
lock = dir;
catch ~keynf {
while (url && (page.is($directories))) {
page = dir.entry(url[1]);
script_name += "/" + (url[1]);
url = url.subrange(2);
if (page.get_lock())
lock = page;
if (page.is($directories))
dir = page;
}
}
if (page.is($directories)) {
if ((!url) && ((orig_url.last()) != "/")) {
return ['redirect, orig_url + "/"];
} else {
if (url)
return 'pagenf;
page = page.default_page();
if (page.get_lock())
lock = page;
}
}
if (url && (| (meth = tosym(url[1])) |)) {
if ((| page.find_method(meth) |)) {
interface.set_info('generate, meth);
script_name += "/" + (url[1]);
url = url.subrange(2);
} else {
interface.set_info('generate, 'generate);
}
} else {
interface.set_info('generate, 'generate);
}
}
interface.set_info('script_name, script_name);
interface.set_info('path_info, "/" + (url.join("/")));
interface.set_info('directory_object, dir);
interface.set_info('lock_object, lock);
return page;
};
public method .get_lock() {
return lock;
};
public method .get_realm() {
return "the Cold Dark";
};
root method .init_directories() {
entries = #[];
default_page = $page_root_index;
};
root method .uninit_directories() {
lock = 0;
entries = 0;
default_page = 0;
};