[Turn on line numbering]arg url, interface, orig_url; var dir, lock, page, script_name, meth; script_name = ""; dir = $directories; page = $directories; if (dir.get_lock()) lock = dir; catch ~keynf { while (url && page.has_ancestor($directories)) { page = dir.entry(url[1]); script_name += "/" + url[1]; url = url.subrange(2); if (page.get_lock()) lock = page; if (page.has_ancestor($directories)) dir = page; } } if (page.has_ancestor($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); } if (page) { 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; } else { return 'pagenf; }
// Brad Roberts
// Bruce Mitchener, Jr.
// Created 16-May-1997 as a part of ColdCore, see: @help Credit