Monday, November 08, 2010 at 12:04 AM.
system.verbs.builtins.mainResponder.members.linkToMember
on linkToMember (groupName, memberKey, hideEmail=false, adrMembers=nil, pta=nil, urlprefix="", useMap=false) { <<Changes <<4/18/03; 4:18:44 PM by JES <<Member links are now numeric -- this prevents spammers from mining Manila sites for the email addresses of their members. <<We store a number associated with each member in the usersMap sub-table of the #membershipGroup table, and look up the member's email address using the number. <<8/14/02; 8:25:54 PM by JES <<New optional parameter, urlPrefix. <<9/26/01; 6:17:50 PM by PBS <<New optional parameter: adrMembers is the address of the membership group. <<pta is now an optional parameter for performance reasons. <<10/08/00; 4:08:26 AM by JES <<Added optional parameter, hideEmail, which causes email addresses to be obscured with elipses. <<11/14/99; 5:55:31 PM by PBS <<adrMember^.personalInfo.name may exist yet be blank: if so, just return the member key (the email address). <<3/4/99; 02:56:16 GMT by AR <<Removed reference to config.mainResponder.urls on getUsersMapKey (adrmember) { if not defined (adrMembers^.usersMap) { new (tableType, @adrMembers^.usersMap)}; if not defined (adrmember^.usersMapKey) { local (ix = sizeOf (adrMembers^.usersMap) + 1); adrmember^.usersMapKey = ix; adrMembers^.usersMap.[ix] = nameOf (adrmember^)}; return (adrmember^.usersMapKey)}; on obscureEmail (key, link=true) { if hideEmail { if key contains '@' { local (part1 = string.nthField (key, '@', 1)); local (part2 = string.nthField (key, '@', 2)); if link { return ("<a href=\"mailto:" + key + "\">" + part1 + "@" + part2[1] + "...</a>")} else { return (part1 + "@" + part2[1] + "...")}}}; return (key)}; try { if adrMembers == nil { adrMembers = mainResponder.members.getMembershipTable (groupName)}; local (adrmember = mainresponder.members.getmembertable (groupname, memberkey, adrMembers)); local (name = ""); if defined (adrmember^.personalInfo.name) { name = adrmember^.personalInfo.name}; if string.trimWhiteSpace (name) == "" { name = obscureEmail (memberKey)}; if pta == nil { pta = html.getpagetableaddress ()}; local (url = urlprefix); if url == "" { url = pta^.responderAttributes.urls^.profilesHome + "$"}; url = string.replace (url, "[[group]]", groupName); if useMap { local (usersMapKey = getUsersMapKey (adrmember)); return ("<a href=\"" + url + usersMapKey + "\">" + name + "</a>")} else { return ("<a href=\"" + url + memberKey + "\">" + name + "</a>")}} else { return (obscureEmail (memberKey))}} <<bundle //test code <<local (adrsite = @jaketest2ManilaWebsite) <<local (adrmembers = jaketest2Members) <<local (groupName = "jaketest2Members") <<local (memberKey = "jake@userland.com") <<dialog.notify (linkToMember (groupName, memberKey, adrmembers:adrmembers))
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.