Monday, November 08, 2010 at 12:05 AM.
system.verbs.builtins.radio.images.systemImageUrl
on systemImageUrl (imgpath, adradrimage=nil, flFileUrl=false) { <<Changes: <<1/22/02; 8:17:35 PM by JES <<Optimization: Don't call radio.userInterface.saveImages here. Images are now installed by radio.thread.agents.installer. <<1/9/02; 12:37:00 PM by PBS <<user.radio.prefs.flUseFileUrls can over-ride the flFileUrl parameter. This way someone using Mozilla or Netscape on OS X can say no to file:/// URLs. <<11/25/01; 3:16:26 AM by JES <<Implemented a workaround for the character-case issue on Windows, since converting to a filespec doesn't fix the character-case of the filename. <<11/23/01; 9:07:51 PM by JES <<Convert the image file path to a filespec, so we have the correct character-case. <<9/2/01; 11:38:27 PM by JES <<Pass the URL through radio.images.imageFlowBottleneck before returning it. Done in a try block, since imageFlowBottleneck will error outside the website framework context. bundle { //PBS 01/09/02: check pref, possibly over-ride flFileUrl if flFileUrl { if not user.radio.prefs.flUseFileUrls { flFileUrl = false}}}; if imgpath beginswith "/" { imgpath = string.delete (imgpath, 1, 1)}; local (origimgpath = imgpath); local (folder, adr); bundle { //set folder and adr <<folder = radio.userInterface.saveImages () folder = radio.file.getSubFolder (radio.data.folderNames.wwwSystemSubfolderName + "/images/", false); adr = @radio.userInterface.images; local (ctparts = string.countfields (imgpath, "/"), i, s); for i = 1 to ctparts - 1 { s = string.nthfield (imgpath, "/", i); folder = folder + s + file.getpathchar (); adr = @adr^.[s]}; imgpath = string.nthfield (imgpath, "/", ctparts); adr = @adr^.[imgpath]; if adradrimage != nil { adradrimage^ = adr}}; local (extension); case getbinarytype (adr^) { 'gif ' { extension = ".gif"}; 'GIFf' { extension = ".gif"}; 'JPEG' { extension = ".jpg"}}; local (f = folder + imgpath + extension, url, pc = file.getPathChar ()); if system.environment.isMac { //MacOS -- convert to a filespec to fix the filename's character-case f = string (filespec (f))} else { //workaround for windows: use fileloop (f in f) {} to fix the filename's character-case fileloop (f in f) {}}; origimgpath = string.replaceAll (string.delete (f, 1, sizeOf (user.radio.prefs.wwwfolder + radio.data.folderNames.wwwSystemSubfolderName + "/images/")), pc, "/"); if flFileUrl { <<return (html.getFileUrl (f)) url = html.getFileUrl (f)} <<url = file.fileToUrl (f) else { url = "/" + radio.data.folderNames.wwwSystemSubfolderName + "/images/" + origimgpath}; try { //this fails if called outside the website framework context url = radio.images.imageFlowBottleneck (f, url)}; return (url)} <<bundle //test code <<local (pt) <<new (tabletype, @pt) <<new (tabletype, @pt.radioResponder) <<pt.radioResponder.flsamemachine = false <<html.setpagetableaddress (@pt) <<webbrowser.displaytext (imageUrl ("icons/brain")) <<bundle //more test code <<systemImageUrl ("weblogDefault/userland", flFileUrl:true)
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.