Monday, November 08, 2010 at 12:05 AM.
system.verbs.builtins.radio.theme.create.images
on images (adrTheme) { <<Changes <<1/24/02; 5:10:50 PM by JES <<Add images referenced by imageRef macros, used in the day- and item-level permalinks, and the source and enclosure image prefs. <<12/31/01; 7:26:34 PM by JES <<Set pagetable.processMacrosInHtmlTags to true, so we pick up images referenced by URL inside the tags. <<12/30/01; 5:50:38 PM by JES <<Simulate rendering of the templates stored in adrTheme, in order to get a table of all the image files, and then load the image files into the Theme table at adrTheme. <<Call this script after calling radio.theme.loadTextFiles. local (adrImages = @adrTheme^.images); new (tableType, adrImages); local (pc = file.getPathChar (), imageFileList = {}); on getImagePathsFromTemplate (adrTemplate) { local (s = string (adrTemplate^)); local (pagetable); new (tableType, @pageTable); bundle { //process macros in the template to get the image file paths pagetable.macroStartCharacters = "<%"; pagetable.macroEndCharacters = "%>"; pagetable.processMacrosInHtmlTags = true; pagetable.adrObject = @radio.data.website.default; new (tableType, @pagetable.radioResponder); pagetable.radioResponder.flImagePatching = true; pagetable.radioResponder.flSameMachine = true; local (oldPta); try { oldPta = html.getPageTableAddress ()}; html.setPageTableAddress (@pageTable); s = html.processMacros (s, true, @pagetable); html.deletePageTableAddress (); if oldPta != nil { html.setPageTableAddress (oldPta)}}; local (systemFolderRelPath = radio.data.folderNames.wwwSystemSubfolderName + pc); if defined (pagetable.radioResponder.imageFiles) { local (adrfile); for adrfile in @pagetable.radioResponder.imageFiles { local (relpath = nameOf (adrfile^)); if not (relpath beginsWith systemFolderRelPath) { if not (imageFileList contains relpath) { imageFileList = imageFileList + relpath}}}}; return (imageFileList)}; local (adrTemplate, adrTemplates = @adrTheme^.textFiles); for adrTemplate in adrTemplates { getImagePathsFromTemplate (adrTemplate)}; bundle { //get images referenced in weblogData.prefs local (adrblog = radio.weblog.init ()); getImagePathsFromTemplate (@adrblog^.prefs.archiveLinkImgTag); getImagePathsFromTemplate (@adrblog^.prefs.itemPermaLinkImgTag); getImagePathsFromTemplate (@adrblog^.prefs.enclosureImgTag); getImagePathsFromTemplate (@adrblog^.prefs.sourceImgTag)}; local (relpath); for relpath in imageFileList { local (f = user.radio.prefs.wwwFolder + relPath); local (slashDelimitedPath = string.replaceAll (relPath, pc, "/")); local (adrimage = @adrImages^.[slashDelimitedPath]); new (tableType, adrimage); adrimage^.bits = file.readWholeFile (f); adrimage^.timeCreated = file.created (f); adrimage^.timeModified = file.modified (f)}; return (true)}; bundle { //test code local (adrTheme = @scratchpad.testTheme); images (adrTheme); edit (adrTheme)}
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.