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; };