Monday, November 08, 2010 at 12:02 AM.
system.verbs.builtins.Frontier.tools.commands.addLink
<<Add a link to a headline.
<<Changes:
<<08/14/00; 10:41:04 PM by PBS
<<Turn off display, set the refcon, then turn display back on -- this causes the note icon to be drawn immediately.
<<08/16/00; 6:47:45 PM by JES
<<Encode the url using string.urlEncode, but not the /, ?, &, $ and = characters.
<<Mon, Sep 11, 2000 at 2:41:22 AM by JES
<<Don't url-encode the + character.
<<Thu, Sep 21, 2000 at 12:34:09 PM by JES
<<Don't url-encode the % character
<<10/16/00; 2:22:52 PM by JES
<<Don't url-encode the # character
<<01/04/01; 2:19:27 AM by JES
<<If the clipboard contains a URL, make it the default URL for adding a link.
<<01/08/01; 2:52:43 PM by JES
<<Make sure that user.playlist.prefs.lastUrlToLinkTo is defined.
<<3/18/01; 4:39:29 PM by PBS
<<Provide a better error message when the link is in an incorrect form. Can't add link because the URL is not of the form 'http://www.server.com/hello.html.'
<<8/3/01; 10:51:07 PM by JES
<<Allow relative links.
if not defined (user.tools.prefs.lastUrlToLinkTo) {
user.tools.prefs.lastUrlToLinkTo = "http://"};
local (url = user.tools.prefs.lastUrlToLinkTo);
local (clipboardValue = clipboard.getValue (stringType));
if string.lower (clipboardValue) beginswith "http://" {
url = clipboardValue};
if op.attributes.getOne ("url", @url) {
user.tools.prefs.lastUrlToLinkTo = url};
if dialog.ask ("Link \"" + op.getlinetext () + "\" to what URL?", @url) {
<<if not (url contains "://")
<<url = "http://" + url
user.tools.prefs.lastUrlToLinkTo = url;
local (atts);
new (tabletype, @atts);
atts.type = "link";
local (urlParts);
if url contains "://" {
try {
urlParts = string.urlSplit (url)}
else {
try { //add a trailing slash
urlParts = string.urlSplit (url + "/")}
else {
scriptError ("Can't add link because the URL is not of the form 'http://www.server.com/hello.html.'")}};
local (path = urlParts[3]);
bundle { // properly encode the path part
path = string.urlEncode (path);
path = string.replaceAll (path, "%2F", "/");
path = string.replaceAll (path, "%3F", "?");
path = string.replaceAll (path, "%26", "&");
path = string.replaceAll (path, "%24", "$");
path = string.replaceAll (path, "%3D", "=");
path = string.replaceAll (path, "%2B", "+");
path = string.replaceAll (path, "%25", "%");
path = string.replaceAll (path, "%23", "#")};
atts.url = urlParts[1] + urlParts[2] + "/" + path}
else {
atts.url = url};
op.setDisplay (false); //PBS 08/14/00: turn off display -- this will cause the note icon to get drawn when display is turned back on
op.attributes.addGroup (@atts);
op.setDisplay (true)} //PBS 08/14/00: turn on display -- and the note icon gets drawn
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.