Monday, November 08, 2010 at 12:03 AM.
system.verbs.builtins.Frontier.tools.windowTypes.commands.openManilaSite
on openManilaSite (siteurl=nil, adradrwindow=nil) {
<<If there were any callbacks for this command, they'd be called here.
<<Since there were never any user.pike.commandCallbacks scripts, we'd only need to call callbacks at user.tools.commandCallbacks.openManilaSite.
<<But there aren't any, so we just look for a windowType which defines a script to handle this command.
local (flConfirmUrl=false);
if siteurl == nil { //default to the site to which the front window belongs
local (type, adrinfo);
if window.attributes.getOne ("type", @type) {
if type != "manilaSite" {
if window.attributes.getOne ("adrSiteInfo", @adrinfo) {
siteurl = nameOf (adrinfo^);
local (parts = string.urlSplit (siteurl));
if parts[2] contains ":" {
if string.nthField (parts[2], ':', 2) == "80" {
siteurl = parts[1] + string.nthField (parts[2], ':', 1) + "/" + parts[3]}};
flConfirmUrl = true}}}};
if siteurl == nil { //didn't get it from the front window -- default to the last opened site
if defined (user.manila.prefs.lastSiteUrl) {
siteurl = user.manila.prefs.lastSiteUrl}
else {
siteurl = "http://"};
flConfirmUrl = true};
if flConfirmUrl { //ask the user what site to open
if not (dialog.ask ("Manila Site URL:", @siteurl)) {
return (false)}};
bundle { //make sure the url starts with http:// and ends with /
if not (siteurl beginsWith "http://") {
siteurl = "http://" + siteurl};
if not (siteurl endsWith "/") {
siteurl = siteurl + "/"}};
bundle { //look for a windowType that handles this command
on runTypes (adrTypes) {
local (adrType, flConsumed=false);
for adrType in adrTypes {
try {
while typeOf (adrType^) == addressType {
adrType = adrType^};
if defined (adrType^.openManilaSite) {
try {
flConsumed = adrType^.openManilaSite (siteurl, adradrwindow:adradrwindow)};
if flConsumed {
return (true)}}}};
return (false)};
if runTypes (@user.tools.windowTypes) {
user.manila.prefs.lastSiteUrl = siteurl;
return (true)};
if runTypes (@Frontier.tools.data.windowTypes) {
user.manila.prefs.lastSiteUrl = siteurl;
return (true)}};
return (false); //command not handled
};
<<bundle //old code
<<return (playlist.manila.commands.openManilaSite ())
<<bundle //testing
<<openManilaSite ()
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.