Monday, November 08, 2010 at 12:06 AM.
system.verbs.builtins.webserver.standardMacros.chooseFolder
on chooseFolder (argTableAdr, openURL, selectURL, cancelURL, rootPath = "", fieldname = "PATH", border = 2, color = nil) { local (htmltext = "", i, pathChar = ':'); if defined (argTableAdr^.[fieldname]) { basePath = argTableAdr^.[fieldname]} else { basePath = rootPath}; on add (s) { htmltext = htmltext + s + cr}; if (color != nil) { add ("<TABLE BORDER=" + border + " BGCOLOR=\"" + color + "\"><TR><TD>")} else { add ("<TABLE BORDER=" + border + "><TR><TD>")}; add ("<FORM METHOD=POST ACTION=\"" + openURL + "\">"); add ("<TABLE BORDER=0>"); add ("<TR><TD ALIGN=LEFT COLSPAN=2>"); if (basePath != "") { bundle { << show folder name add ((file.fileFromPath (basePath) - pathChar) + "<BR>")}} <<bundle << show full path <<add ("<FONT SIZE=-1>" + basePath + "</FONT><BR>") <<bundle << as pop-up list <<add ("<SELECT SIZE=1>") <<for i = 1 to string.countFields (basePath, pathChar) <<if (i == string.countFields (basePath, pathChar)) <<add ("<OPTION SELECTED>" + string.nthField (basePath, pathChar, i)) <<else <<add ("<OPTION>" + string.nthField (basePath, pathChar, i)) <<add ("</SELECT><BR>") <<bundle << show as hierarchy <<add ("<FONT SIZE=-1>") <<for i = 1 to string.countFields (basePath, pathChar) <<add (string.filledString (" ", 2* (i - 1)) + string.nthField (basePath, pathChar, i) + "<BR>") <<add ("</FONT>") else { add ("Select a volume<BR>")}; add ("</TD></TR>"); add ("<TR><TD VALIGN=TOP ALIGN=CENTER>"); add ("<SELECT NAME=\"" + fieldname + "\" SIZE=7>"); if (basePath != rootPath) { add ("<OPTION VALUE=\"" + file.folderFromPath (basePath) + "\">[up a level]")}; fileloop (fname in basePath) { if !file.isVisible (fname) { continue}; if file.isFolder (fname) { add ("<OPTION VALUE=\"" + fname +"\">" + (file.fileFromPath (fname) - ":"))}}; add ("</SELECT>"); add ("</TD>"); add ("<TD VALIGN=TOP ALIGN=CENTER>"); if (basePath != "") { add ("<B>" + (file.volumeFromPath (basePath) - pathChar) + "</B><BR>"); add ("<HR SIZE=1>")}; add ("<INPUT TYPE=BUTTON VALUE=\"Cancel\" onClick=\"location='" + cancelURL + "';\"><BR>"); add ("<INPUT TYPE=SUBMIT VALUE=\"Open\">"); add ("</TD></TR>"); add ("</TABLE>"); add ("</FORM>"); if (basePath != "") { add ("<TR><TD COLSPAN=2 ALIGN=CENTER>"); add ("<FORM METHOD=POST ACTION=\"" + selectURL + "\">"); add ("<INPUT TYPE=HIDDEN NAME=\"" + fieldname + "\" VALUE=\"" + basePath + "\">"); add ("<INPUT TYPE=SUBMIT VALUE=\"Select " + (file.fileFromPath (basePath) - pathChar) + "\">"); add ("</FORM>"); add ("</TD></TR>")}; add ("</TD></TR></TABLE>"); return (htmltext)}
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.