About this page...
As I make changes and add features I put notes into this outline. I try to be verbose and helpful, realizing that there aren't any other docs for the software at this time. Please check here regularly if you're using Clay to manage websites. You might find the fact you're looking for.
November 19, 1995 DWSee the Bugs page for a list of outstanding issues and needed fixes. And use the Mailing List for your questions, suggestions and bug reports.
Thanks!
Dave
PS: This would be a good page to add to your Bookmarks menu.
Get our Finder act cleaned up
November 18, 1995 DW -- 1.0b7
This is part of the process of getting the Install Files situation flowing smoothly.
The point:Background: When Apple released System 7.0, the Finder had a very minimal set of Apple Events. You could open a folder, highlight something, and with a hack or two you could figure out what files and folders were selected. They promised to implement full scriptability and recordability in the Finder, and with the release of System 7.5 they delivered on that promise.
Problem: The Aretha release of Frontier supports the old klunky version of the Finder, there is no support built-in for the new scripting features in System 7.5's Finder.
A little history: About the time I was getting ready to do the Aretha release, John Baxter was finishing a new install file for the Finder. So our paths crossed. Now I want to get them to join up.
It's designed to be a full scripting kit for the System 7.5 Finder.
The Finder's menu bar is the command line of the Macintosh.
The package includes:Now you can add your own commands to the Finder's menu bar.
With the new scriptable Finder in System 7.5, there's much more you can do.
New power for script writers.
Coooooool!
A new system.verbs.apps.Finder table.
InstallingThe OSA Menu extension written by Leonard Rosenthol which enables the Finder for menu sharing.
A new system.verbs.apps.FinderMenu table containing verbs that scripts running from the Finder's menu bar can call.
A new menu object, system.menubars.MACS, containing sample scripts that run from the Finder's menu bar. You can edit this menu to add your own commands. Coooool.
DocServer text for all the Finder verbs, updated by Baxter in April.
Instead of writing an installer script for this package, I'm going to give *you* instructions. What people want to do here varies so much, and you have to be a fairly sophisticated user to gain a benefit from this stuff, so it's better to tell you what to do rather than do it for you in a script.
First, copy the OSA Menu extension into your System Folder, Extensions sub-folder. If you have a previous version of FinderMenu installed, please move it out of the Extensions folder. Restart your Mac.
Open the Install Files sub-folder from this package and double-click on each of the scripts. Click on OK in each of the dialogs. You may need to increase the memory on the Frontier app before running these scripts. I give Frontier 2000K and everything works fine.
Launch DocServer and double-click on the DocServer Text file. Now you have the docs where you want them.
Switch into the Finder. You should see two new menus, Scripts and DW. The DW menu contains commands that I like to have around. This is an invitation to add your own menus after these, or to change DW to your initials. It's *your* menu bar now. Have fun with it!
Release Clay Basket 1.0b7.
November 14-17, 1995 DWNow available thru the Download Page.
Option to bring Netscape to the front on Preview Page
November 13, 1995 DW -- 1.0b6
New item in the Netscape Prefs dialog.
Only generate <p>s if new checkbox is turned on in the Page Info window.
Even better -- I broke the <p> subsitution out into a separate pass, so it only adds <p>s to the body text. It was embarassing that it was adding them after to all the non-body text.
2click on the icon to edit the text file linked to a pageEliminated the paragraph markers, we weren't using them.
Hold down the option key to edit the template.
If password is empty, prompt before uploadingNice!
This will make it possible for me to share the Yabbadabba site. I won't have to store the password in the file.
When building, only deal with files of type TEXT
New error dialog, when we encounter a non-text-file, Can't process the file "xxx" because it is not a text file.
Only one kind of macro from now onInclude GIFs using a {mediaObject ("gif name")} macro.
In previous versions of Clay Basket we'd accept two forms of macros, ones embedded in HTML comments like this: <--#macro--> and embedded in curly braces -- {macro}.
Building a page from a CGI scriptThis created a conflict with Mason Hale's scripting CGI framework for WebStar, which uses the <--#macro--> form. We want the same text to work in both places, and also allow macros that evaluate at build time and macros that evaluate at "read-time." So, in this release, we step out of the way and only accept curly braces macros.
Sorry for the discontinuity. If you were using the other form, it's only going to be slightly painful to transition, since I provided a script in this release that does the replacement for you. Just open the outline for your website, make sure it's in front, then switch into Frontier, Cmd-J to clay.utilities.siteReplaceAll. Run it. It changes all your macros to the curly brace format.
It would definitely be a good idea to backup your Input Folder before running this script.
New Apple Event in Clay, glue script is at clay.website.buildPage. Takes two parameters, a file, the outline file for the website; and a string, the title of the page you want to build. It renders the page, and returns the HTML text it built.
Removed the following options from the Page Info window:Note: the implementation of this verb is not streamlined inside Clay. It can probably be made much faster.
Also added new verb, clay.website.openToPage. It takes a file and a page name and opens the outline and puts the cursor on the page.
Sort order, Include calendar info, Subs on same page
Media objects bugThe first two were there to support DaveNet. I was able to accomplish better results with the use of a macro in the new version of DaveNet. If anyone was depending on these options, I'll be happy to upload the DaveNet site in Clay Basket form so you can copy what I did.
Subs on same page was a half-finished feature. I thought I would need it to do the websites I wanted to do, but it turns out I didn't. It doesn't match any of the feature requests I've received, so I reclaimed the space in the window.
It isn't copying them sometimes. I see what the problem is, it isn't happening when a text window is frontmost. Easily solved by moving the handler for this event to a different switch statement.
Why is the Edit menu getting disabled?I see another problem -- it's popping the numbers out of the names of gif files. This is definitely wrong, and I'm getting bit by this bug. I fixed it.
Per dbruns suggestion -- we now allow you to include the .gif extension in calls to the mediaObject macro and in the icon field of the Page Info window.
One more thing -- we now look at mod dates of gif files. If the dates on of the input file and the output file don't match we copy, otherwise we don't.
It was being treated differently from all the other menus. It was being tweaked in the eventloopidle callback in claybookmarks.c, and the other menus were being handled in claymenu.c. I made it ordinary, moved it alongside the others and hooked it into their flow. So hopefully now the Edit menu will work for others. It *always* worked on my machine. Please report on the Mailing List how this worked for you. Thanks.
Copy/paste fixes
When you select text in a headline, you shouldn't get the HTML code.
Get and set the text selection from ClayCopying from text windows has never worked.
The code was putting the handle in the wrong place. The result of a hurried conversion a couple of months ago.
The glue scripts are clay.getSelectedText and clay.setSelectedText. An example script is in the shared menu for Clay. It's in the Clay menu, the new sub-menu called Text. Here's a one-line version of the script it runs: clay.setSelectedText (string.upper (clay.getSelectedText ()))
Why is default text font always Geneva 9?Note -- the Apple Events were already there, they're part of the app1 class, and glue scripts are at app.getText and app.putText. Clay implements all the app verbs, they are documented in DocServer. So after say app.start ("clay") you can play with windows and save the file, set fonts, or even find out how much memory is available in the Clay Basket app.
I went to town -- moved the scripts from the Selected Text submenu in Eudora's shared menu over into clay. Tweaked up the Wrap & Indent script to put <br>s at the end of each line. It worked. I didn't like the result, so I instinctively hit cmd-Z. It worked too! (I was surprised, I had forgotten that Undo works across shared scripts, at least for *some* things. Clean living.)
Fixed a bug, it was smashing the default font size and style for every window every time the window was resized. Sometimes more often than that. This is the first app that's ever really used these window fields, so it was a long outstanding bug in the Applet Toolkit.
Allow Clay outline files to be includedChanged the default font to Palatino 12, a more humane choice.
UI for this feature is not finished. You can hack it in thru the Location dialog. Put a clay bookmark file called xxx into your Input Folder. Add a new headline in the outline. Cmd-T. Enter sitefile://xxx. Test it out with Cmd-E. It should open as an outline. Cmd-singlequote will rebuild the page. It may be buggy, didn't have a lot of time to test this.
Find memory leaks in building sites
Display memory available in progress window.
Out of memory on Mailing List page in Yabbadabba OutlineFound a leak -- it's in the call to frontRunPageFilter.
It wasn't disposing of the record returned by Frontier. That happened because the code I cribbed from didn't do it either. Added five calls to AEDisposeRecord.
There are still more leaks.
Watch out for copy that contains the text <body in it. The mailing list text did! It uncovered a signing error in the code that converts PageMill files. Fixed it and added a dialog that announces the error, instead of running out of memory.
If text has a tag...
Only process the text between it and the tag. We were only doing this for PageMill files, but someone we suggested we do it for all text. Makes sense. Makes it work with existing websites. Cooool.
If a file hasn't been saved, error dialog and graceful exitVery nice feature.
We don't want to create Output and Upload folders in random places.
New option in Files dialogAt first I thought I'd do it by disabling menu items, but I thought an error dialog would be more helpful. The dialog says: "You must save the outline file before doing this."
Keep numbers in outgoing filenames, defaults to off.
When Clay munges up a page title to produce an output filename, we used to just drop numeric characters off the string. There must have been a reason for this, but I can't remember it.
A developer had a problem with this, he wanted to have a page for November 3 and a page for November 10, but they were mapping to the same output file name. I think this is legit, so I added a new option to the Files... dialog hanging off the Website menu. If you turn it on, numbers will pass right thru the name munger, otherwise they are stripped.
Release Clay Basket 1.0b6.
November 12, 1995 DW
Do a release script for Clay Basket
November 11, 1995 DWDaveNet out of Clay
Took DaveNet out of the Sample Websites folder. People complained it was too large. I agree.
Option to disable text processing features
Automatic insertion of paragraph tags of all kinds.
Clean up clay.data.macros table
remove references to autoweb
Clean up clay.outliner tablefigure out what to do with the user.web table
You can see some of the test cases on the Lots of Macros page.
There are references to things like clay.go -- should be replaced with clay.outliner.go.
Get Bookmark editing tutorial on the websiteThe only two scripts that were incorrect were clay.outliner.visit and clay.outliner.wipe.
Include Easter Egg for Cool Site of the Day bookmark file.
Handle registered-trademark symbol
When we're processing text, if we encounter an option-r, we generate the registered-trademark symbol ®.
Uploaded new Frontier websiteOther mappings Clay does:
copyright symbol: ©
chevrons: <<hello>>
em dash: --
elipses: ...
a funny space that Word produces:
bullet: o
curly double quotes: "hello"
curly single quotes: 'hello'
Extensive testing of Clay Basket. About 8 hours worth.
Add Page Numbers option in Files dialog
If turned off, Clay won't generate the numeric extensions to file names that keeps things from colliding on the website, like downloadpage_404.html. If you turn this off make sure that you don't have two headlines named Download Page.
If turned on, Clay will automatically add a number to the end of every file name, the number of days since Oct 7 1994 in the date for the page.
A lot of people were asking for this, especially webmasters for sites that are limited to eight.dot.three filenames.
Omit top-level headline in clay.website.getOutlineText macro
November 10, 1995 DW
It was redundant -- it always referred back to the page you were reading from (assuming you put the outline on the top page, as I'm believing is the right place to put it.).
Bugfix in FinderMenu Scripts menu
The Menu Editor command would open the wrong menu, now the shared menu is at system.menubars.MACS, a much more rational place. Fixed it, must re-release the package.
Delivering on the PageMill promise
I've been using BBEdit 3.5 to edit my HTML text. Ever since I heard about PageMill I've wanted to try it for editing my web pages. I got my copy yesterday and started playing with it. It's nice. But I was focused on understanding its file format, to see if it would be possible to use PageMill as the text editor for a Clay Basket website. I'm very pleased to report that it can.
I'm cc'ing this note to both the PageMill and Clay Basket lists, since it talks about the intersection between the two products. I'm also aware that the Adobe people are reading the PageMill list too. Hopefully they will alert me if any of the assumptions I make are incorrect. I've only tested Clay's new reader code with a small number of PageMill-written text files.
Configuration: To set up Clay to use PageMill as the default editor, choose the Choose Editor command from the Gems menu. Choose the PageMill app.
How it works: When you press cmd-E in Clay, we launch PageMill if necessary, and send it a message to open the file containing the text of the page. We mark the headline as having changed, so next time you rebuild the site the page will be processed.
When we're rebuilding a site, there's a new internal filter in the Clay app that recognizes PageMill files and does preliminary processing on the text before passing it back to the site builder. I'm using the same mechanism we use to handle MORE outlines.
Started a new file, claypagemill.c. One routine exported, pagemilltohtml, takes a handle containing the raw file text and returns a handle containing the processed text.
The first step : we pull out the text between the
and tags.I started a new PageMill file and entered some macros and glossary references. At first it wasn't processing the glossary references. Looking at the source of the page, I could see that PM is generating an andpersand-quote-semicolon instead of a double-quote.
Another tweak: We replace all occurrences of andpersand-quote-semicolon with a double-quote. This is necessary for the glossary feature to work.
Another tweak: We disable automatic <p> generation in Clay when processing a PageMill file. No need for it.
This is a very powerful combo. I just indented a block of 10 macro calls in one command. I really like not having to type in <blockquote> and </blockquote>.
Another problem: Apparently when PageMill wraps a line it puts a carriage return in the middle of the text where it wraps. In HTML this is harmless, presumably that's why they did it this way. But if the line ends in the middle of a double-quoted string, Clay won't find it in the glossary. Spaces are important in these places. What to do?
I set up a test case using the sample website that ships with PageMill. I copied the HTML files, EWaccessories.html, EWDummy.html and EWHome.html into my Input Folder. Copied the contents of the images sub-folder into my website's Media Objects folder. Following the directions on page 57 of the PageMill manual, I configured PM to use the Media Objects folder to store images.
Release Netscape 2.0 install file
November 9, 1995Release FinderMenu 4.0b1
New command in Outliner menu
It's called Comment and it turns a headline into a comment.
Single keystroke is cmd-/.
When a page is commented, it doesn't appear in the hieararchy of the website -- the Next and Prev pointers pass over them, when an outline is generated, they are omitted. But you can refer to these pages thru the use of doublequotes. You'll never be able to navigate to the Dave page, but I was able to point you at it by saying Dave.
Added a new template called No Links, suitable for these kinds of pages.
The commenting works as it does in Frontier. When a headline is commented all of its subheads are also commented.
The Comment command is a toggle, to uncomment a commented headline, press cmd-/.
I used this in the Yabbadabba site -- I didn't want all my testing pages to show up in the hierarchy, they are confusing to new people, but I wanted to be able to show you the new stuff from this page.
Cleaned up Netscape shared menu
November 8, 1995 DW
First thing I noticed -- in their 2.0b2 release all hierchic menus are displayed along the top of the menu bar. I actually think this is a bug in the interim release of Frontier that I'm running, not a problem with Netscape's menu sharing code. I saw the same thing in Eudora later today.
Anyway, I made my menu flat, most of the structure was fluff anyway. Renamed it from Scripts to Clay. All the commands in this menu in some way relate to Clay Basket.
I fixed a bug in Clay Basket -- if a text window is the frontmost window, Page Preview from Netscape didn't do anything.
See the "Netscape 2.0 Install File" page to download the new install file and for explanations of the commands in Netscape's shared menu.
Page preview doesn't clear the changed bit on the headline
November 7, 1995 DW
It can only be cleared by a full build or a minimal build.
When doing a build, bring the message window to the frontHeadlines won't turn from red to normal color until they are copied into the Upload folder.
I get irritated when the messages are scrolling by behind the outline window. I think it will also be somewhat irritating to have it come to the front, but less so.
An outline of pointers for the entire website
Everyone wants this, an automatic way to generate an outline of the entire website, one page per line, nicely indented. Makes it easy to spot new pages, since the visited link color can be different from the normal link color.
1.0b6c release goes to members of the Clay Basket mailing listThe way it works -- there's a new verb:
clay.website.getOutlineText (indentstring, outdentstring, linestartstring, lineendstring)
A nice looking outline:
clay.website.getOutlineText ("<ul>", "</ul>", "<li>", "</li>")
There will be two levels to this release, and perhaps subsequent releases too. There is no pointer to 1.0b6c on this website. The FTP address of the archive has been sent to the list. They know where to get it. For the next few days the only legit way to get the release is by joining the mailing list.
Once the bugs are shaken out, and a few more tweaks implemented, I'll put a pointer to Clay 1.0b6 on the website. You can watch the change notes from this page if you like.
I think this works the best for everyone. It assures me that everyone can be aware of all the serious problems. Provides really interested people an incentive to join the list, where communication isn't just one-one. A win-win for all of us, I think.
clay.website.getSiteFile ()
November 4-6, 1995 DW
New verb, gets the filespec for the current website file, the one that's being built. Useful in your pageFilter user script to implement special behavior for different websites.
Add samelevellinks macroTo get the name of the file:
name = file.fileFromPath (clay.website.getSiteFile ())
Generates a list of pointers, separated by pipes, of all the pages at the same level as the current page.
I added it to two templates: No Subs and Default, at the bottom of the pages. With the pageFilter user script you could put them into a table. This would be very nice, I think...
Preferences dialog
November 3, 1995 DW
Goes at the end of the Edit menu
The pageFilter scriptSet default colors for background, text, link, visited link.
New user script -- at clay.data.userscripts.pageFilter, takes no parameters. Before its called, Clay Basket sets up the clay.page table, with all the information about the page it's about to build. There are 15 cells in clay.page, here are their names in alphabetic order: author, bodytext, colorinfo, date, divelinks, homeurl, icon, inputfile, mousetype, nexturl, outputfile, prevurl, surfacelinks, template, title.
The pageFilter script can modify any of these fields, and then return to Clay Basket, which then uses the contents of the clay.page table to build the page.
The net -- you can completely subvert Clay's intentions in Frontier scripts.
Note: the contents of clay.page is still valid when your macros run, so you can refer to other elements in macros. People who wanted a {moddate} macro will be happy -- you can now do that by saying {file.modified (clay.page.inputfile)}. All of Frontier's built-in verbs are available to you.
Note: there's new technology here -- I've got the connection between the object database and a standalone app (Clay) running very smoothly and quickly.
See the New Gymnastics page for examples and more info.
Customizing surface links and dive links
October 29-31, 1995 LDR
New user script, at clay.data.userscripts.linkFilter. Takes two params, the string that Clay Basket generated, with the links separated by pipe characters, and a number indicating whether it's a list of divelinks or surfacelinks. You can process the string in any way you like. Return the processed string, Clay will do the substitution. I'm building this site using ~wiggles~ to separate divelinks and -dashes- to separate surface links. Much fancier things could be done.
Handle wierd case with MORE filesNote that Frontier already has a pair of verbs for quickly processing field-oriented text. They're string.nthField, string.countFields. I bet Scott Lawton's text handling package would be useful here too.
If a file's type is TEXT and creator is TANK, it must begin with .head or we just return the file text without processing it. The dothead parser isn't handling this case at all in 1.0b5.
Extra character at end of MORE files
There's one or more garbage characters at the end of every MORE file I include. Now I can't make it reproduce in the small file, it was doing it before.
Allow ~s in URLsTiny MORE File
123456789
Oh the buzzing of the bees and the sycamore trees.
When clay enables url addresses in the source text, we now allow ~s in the url. Any other common characters we're missing?
Fixed 1-off error in enabling of URLs and in processing macros.
See the Lots of Macros page for details.
Support for macros in templates
I did a major cleanup in macro processing. It was kind of a hodgepodge before, but it was easy to set things right. I'd process macros on the author line to enable the email link. Same for the mousetype. And then do it separately for the body text. All other text was going straight to the output file without any processing, including the template text.
This has become a major deal-stopper in 1.0b5, it will be opened up in 1.0b6.
Now it builds all the text of the page, starting with the template file text, then does the substitutions for all the automatic components, and *then* runs the text thru the macro processor.
I considered upgrading the templates that ship with Clay, but decided not to. I want Clay to be very useful without Frontier or AppleScript and if I include macro calls in my templates, every beginning user will need to have Frontier and have it running. So I'm opting to keep it optional.
Removed the 32K limit from the website builder/macro processor. The routine that was called to delete characters from a handle was using short offsets instead of unsigned longs like everybody else.
October 27, 1995 DW -- 1.0b5tRemoved getdocoptions from clay.web as it was a hold over from autoweb
Fixed a possible bug in iacbinary.c -- now locks down the handle being passed
New verbs in the clay.website table.
Moved patternmatchhandle over to appletmemory & renamed it to handlepatternmatch for consistency.
When a whole menu of items is disabled, we also disable the title. The outline menu has always acted this way, but the Edit, Website, and Windows menus weren't doing so. Now all the menus are consistant
Did a through review of Find/Replace on a complex outline, and it works just fine. Apprently the "ignorecase" option someone got set false on my machine (old prefs format?), and that confused me at first, but it does function properly.
Losing mousetype
October 26, 1995 DW
I'm always getting my mousetype truncated. The problem seems to be with doublequotes. Yessir, if it's a macro, it might contain doublequotes, in fact all mine do. The HTML reader gets confused. Solution: urlencode the script in the file format. No problem with previous file formats, no need for a new version number on the file format.
Hyphens in email addresses
They are legal characters. If it works, this email address will be hot: morty-gunty@komedy-korner.com. It seems in Germany that there are lots of hyphens in email addresses. Any other special characters we should be watching for? As of 1.0b5q we allow dots and hyphens, and break for any other punctuation character.
Text windows and madechanges
Even if I make no changes, clay asks if I want to save the text before closing the window. Fixed by clearing the window's flmadechanges bit after setting up the text buffer.
Crashing with no outline windows open
Need to take care of enabling and disabling of commands in the Website menu. Sorry to have missed this in the initial 1.0b5 release.
Fix ibeam cursor with no windows openThey are enabled if there is at least one bookmarks window open. The commands are responsible for operating on the frontmost one when the command is selected. This allows you to do builds and stuff with a text window as the frontmost one.
Same treatment needed for items in the Gems menu. The following items are only enabled if Frontier is running: Add To Glossary, Open Glossary and the entire Scripts submenu. The following items are only enabled if there's a bookmarks window open: Mark Changed Sites and Clear All Changes. The Choose Text Editor command is always enabled (it just creates an alias in a the Editors folder).
Testing the previous feature uncovered a bug at the Applet Toolkit level -- now when there is no window open we set the cursor to an arrow. None of the idle handers were getting invoked because no windows were open. This bug has been in the toolkit since Day 1.
Activating Update button on pasteAlso -- disable all the commands in the Edit menu.
You create an entry, hit cmd-T to bring up the URL window, paste in a URL instead of typing, and the Update button doesn't activate. You have to type at least one key for it catch on.
The mediaObject macro doesn't copy to the Upload folderEasy fix -- set the runtimevaluechanged card bit in iowaruntime.c.
It actually may be true for all gifs. I'm doing this manually now.
It is true. Added code to copy the file into the upload folder, works with the macro and with any command that generates content for the upload folder.
Free public beta of Native Frontier
October 26, 1995 LDR
See Native Frontier Public Beta page for details.
Important note: there will be an interim release of Clay Basket, version 1.0b5t, just the app, with these fixes and perhaps others, tomorrow, Friday October 27. Watch the main yabbadabba page for news.Let's have fun!
No longer initialize the network at startup
October 25, 1995 DW -- 1.0b5
Users who are not directly connected can now work on their websites without having to be online. When you use the upload or web checking functions, then we'll connect.
Removed calls to the debugger
Users will no longer be greeted with Macsbug (or the Unimplemented Trap bomb) when starting up the computer and having network problems. Instead an alert will come up when there's a networking error.
Binhex files are now correctly uploaded in ASCII mode
FTP client will no longer fail with strange error messages (like 500 MACB) when talking to non-Macintosh FTP servers.
Clay Basket no longer requires the Macintosh Drag Manager. If the DM is not present, we will now do our own dragging.
Note, that without the DM, dragging is only valid within a single window, and you don't get all the cool features like creating a new site by dragging files from the Finder!
When a folder is dragged into a web site outline, the complete hierarchy of that folder will be transfered into the outline. All folders, subfolders, etc.
Added a page linking to the "BBEdit 3.5 Install File"
October 24, 1995 DW
It's being maintained by Bare Bones Software. I have to get in touch with them to get my cmd-singlequote enhancement into their file.
Added a page linking to Mirror SitesIt's in the new "Tools, Scripts & Utilities" sub-page off the yabbadabba home page.
Upload error from hotwired.com
October 21, 1995 DW
I'm getting a fairly consistent error message on the Upload command after about 10 files uploading to hotwired.com.
Added clay.data.macros.standardMousetype
The error message is "Upload cancelled because of error: MACB DISABLE 500 'MACB DISABLE': command not understood. 500 finished at Tue, Oct 24 1995; 5:30 AM."
Not a pretty sight! Yow.
Here's what it generates for the Aretha website:
Bug in 1.0b5 -- gif files are not getting copied into the Upload Folder
© copyright 1995 UserLand Software Inc. All rights reserved.
This page was last updated on Tue, Oct 24, 1995 at 5:24:47 AM. It was created with UserLand Software's Clay Basket website management software.This comment was generated by a Frontier script! Cooooooool.
Ooooops. Or shall I say -- ouch! Gotta fix this one.
Fixed bugs in clay.data.macros table
The docServerLink and dbLink macros both had references to "getscriptgif". Changed these to "clay.data.getscriptgif". Now the Your First Script page in the Aretha website will build correctly.
Release DaveNet pointing to this website
No name yet, but the first draft is written as of 4:52AM.
Update Aretha website
From home page you can now download the entire contents of the website as a StuffIt archive.
Fail case for DMBThis suggests a feature that could automatically be implemented in Clay Basket.
If you evaluate an inline macro it works with the 68K version of Frontier, but fails with the native version. Stack overflow is the failure. To see the failure, create a new website outline, put the cursor on the home headline, press cmd-E to edit the file. Enter a macro: {user.name}. Save. Be sure Netscape 1.1 or greater is running. Press cmd-singlequote. Look at the page. When this correctly displays Doug Baron you'll know it's working. DW
Default font and window position for new text windows
October 19, 1995 DW
Default font should be Palatino 12, not Geneva 12.
Make Page Preview command work with text window in frontWindow should be zoomed on opening if it's a new window. Old windows should open where they were when they were last saved.
Made the website code smarter about which window it pulls stuff from -- now it goes to the frontmost outline window. It used to take info from the frontmost window, a small problem if the front window doesn't contain an outline... Fixed.
Resizing text windows display
If you're growing a text window, the scrollbar display is really ugly. Call resizeappscrollbars from wpresize before redrawing the scrollbars.
Added Easter Egg
In Frontier, try typing this into your Quick Script window (with Clay running of course...): appleevent (clay.id, 'CLAY', '*%&@')
Cursor argument with text windowsSomething interesting and futuristic will happen. ;->
When you have a text window open, even if it's in back, it still sets the mouse cursor. It should only set the mouse cursor if its the frontmost window. [The text editor was hooking into the event loop idle callback, which is called for all open windows all the time. Wrong place.]
Backslash in processing macros
The macro scanner now respects backslashes, skipping the next character after a backslash.
When user changes Bookmarks.html send an AE to NetscapeThis makes it possible for us to write docs that describe how the macro processor works!
Class is 'MOSS', id is 'book'. The direct object is the filespec for the file, if not present it reloads Bookmarks.html.
Add callback to the app record -- aftersavewindowcallback. Hook into that callback from claybookmarks.c.
For this build I'm hardwiring the web browser to 'MOSS'
October 18, 1995 DW
I had difficulty with this because I wasn't using Internet Config right. Clay Basket all of a sudden started creating MacWeb files. I found this very discouraging. So until we have docs and a download for IC, I'm not allowing this to vary. It's much more important that things work.
Bugfix -- 2clicking on a red wedge is broken
The code which was added to support Internet Config isn't working on my machine. Changed the method used -- if it can't be done by IC, we just send the URL to the web browser.
Added fixes to the uploader
Sample Website #1 -- DaveNet
Contains the first year of DaveNet essays.
Sample Website #2 -- ???People can use this site to judge the website-building performance of Clay Basket and its ability to handle large websites.
New command in Gems menu -- Mark Changed Sites
Confirmation dialog: Display all changed http: headlines in green?
Implement the Clay Basket folderIt visits each headline, if it has an http reference in its Location attribute, get the page header from the server using the HTTP client, check the modification date against the mod date in the headline, if it's newer, set a bit in the node record indicating that it should be displayed in green.
When we're doing the research, show what we're doing in the progress window.
Clear the bit when you jump to that page using Clay Basket.
Add another command to the menu called Clear all Changes... with confirmation dialog, asking: Clear the "changes" bit in all http: headlines?
The Clay Basket app lives in its own folder, with a bunch of adjacent folders.
Extras contains stuff that needs to be installed, or optional data files and samples that illustrate how to use Clay Basket.
Website Resources contains global resources, pictures, templates, and other stuff to come, that's available to all websites built with this copy of Clay Basket. When we're looking for a template, we look in this folder.
Find places to set the flneedsbuild bit
October 17, 1995 DW
Like when you edit a text file, for example.
Work on templates
I have a small collection. Do a few more. Then install the result in the resource fork of the CB app. When we create a templates folder as a sub-folder of the Preferences folder (in the user's System Folder) add the templates from the resource fork.
Subs on Same Page option
It's time to work on this. It's how I'm going to do the download page for the Clay Basket website. Each headline has text that describes a specific thing you can download, and includes a line you can click on to download it.
Bug: I'm losing my mousetype all of a sudden
Add command to the Website menu
Check Mod Dates. Confirmation dialog. Sets the flnodeneedsbuild bit on all files whose mod date has changed. Now our builds can really fly.
Save the flnodeneedsbuild bit in the file format.
Amplify the Update button in the Page Info window
If more than one headline is selected in the outline, after confirmation, apply the settings to all the selected lines. If a string is empty, don't change that field. This makes it possible to change the email address without changing the date, for example.
Display headlines that need rebuilding in redGet rid of the Set All button in this window, it was much too crude.
Try doing a few cmd-us and ds. Notice that the headlines around where you moved are now red, their next/prev links changed so a build is needed.
Tell a story in the Progress window -- not
Tell me what file you're looking at, how many files you're going to look at, and which one you're on.
Fixes in dragging moveToo busy! Instead just show the name of the file you're looking at in the window message area of the outline we're processing.
Someday we can add a thermometer to the progress window. We now have enough information to do that.
A bunch of things broke when integrating the Mac Drag Manager with the outliner dragging move. Auto-scrolling during outline dragging now works properly. We no longer show the dragHilite (blue boarder) in the same window where the drag started. Stopping a drag on the source item no longer "moves" it. After moving things around in an outline, we perform a validate on the outline to make sure everything is valid. If not, you'll find out!
Allow partial paths in sitefile:/// references
I want to put all the DaveNet essays in a subfolder of the Input Folder, call it DaveNet Folder.
For example, in the Location dialog, to point at the source file for "The Cute Little Nut", enter: "sitefile:///DaveNet Folder:The Cute Little Nut".
It turned out to be incredibly simple to do this. First I try to form a filespec with the string, if that doesn't work, I insert a colon at the beginning of the file name and try again. The Mac file system figures it out! Yes.
Get the modification date of a page using the HTTP client
October 16, 1995 DW
You can parse the header returned by the server to determine the last modification date for a page. It can be retrieved much more quickly than loading the whole page in the web browser (no graphics to load) and they can all batch up.
Tools menu becomes the Gems menuStill to be determined: in what way does a changed node look different from a not-changed one? What's the command and what menu does it appear in.
Remember the controversy over whether it was going to be Tools or Misc? Neither seemed right. Let's take the high road. These things aren't Goodies (too many characters and too cute) -- they're Gems! (less characters, one syllable, and instead of being orphans (Misc, ugh!) they're cherished.)
Clean up the Netscape menuI like it.
It becomes a submenu of the Gems menu.
Other TweaksRemove the HTML Options command -- it was never implemented!
Add button to Location dialog -- Send to Netscape -- or something like that. Now we can...
Remove Send to Netscape from the Netscape menu. Now the Page Preview command in the Site menu is unambiguous -- it rebuilds the page you're pointing to and sends the result to Netscape for display. This is a major command, possibly *the* major command in Clay Basket. It deserves that kind of prominence.
Upload Options can go away. It's replaced by the Server Info command in the Site menu.
Upload command goes away. This one is not entirely replaced by the comand in the Site menu. I want to look at providing this functionality thru the scripting interface -- need verbs to grab the HTML text from the front window, and then an interface to the built-in FTP client.
Change Edit Text File in Website menu from cmd-T to cmd-E.
Deal with the icon situationChange title of Page Parameters window to Page Info.
Let's try to sort the whole thing out.
Enabling/disabling of menu itemsIn 1.0b5, we introduce a new headline type -- one with a linked Page Info record, which you can see by pressing cmd-I. These nodes will display with a yellow page icon, unless they have subs -- these display with a light blue folder icon.
Lots of dust to settle down here. Do it all in one shot. Now's the time.
New sub-menu for Gems menu -- Scripts
Opens up the startup and shutdown scripts. Maybe others, later. Only enabled if Frontier is running.
Clean up Clay Basket shared menu, do install files
Try running for a few days without the button bar turned on
Dirty bit in each headrecord -- if true, the page must be rebuilt
Some outline operations force a rebuild of the associated web page. Use one of the app bits. Its name is flnodeneedsbuild.
Needed to add a new callback to the outliner, it's called when a node changes. Call it in a bunch of places.
Doing the outliner web browser
October 15, 1995 DW
Created new file, claywebbrowser.c, built a very fancy little system for parsing anchor tags in HTML code, build an outline from the links. Ties into the HTTP client. Had to rewrite urlsplit. To live in this world it has to be prepared for lots of variation, previous version relied on things following a predictable pattern.
Move commands to the Tools menuI'm tabling this for the moment and returning to the end-game for the website building functionality. The outliner-web-browser idea has a lot of merit, especially for browing Clay Basket-generated sites. For now, we're much closer to releasing the building stuff, so that's the way I'm going.
Maybe change it to the "Misc" menu? Something not too respectful about that name. Tools is misleading. Why are these things tools and the other things not? Huh? Ooooughhhh.
Programming team notes from DW
There's a direction called nodirection. Use it instead of 0.
We always elaborate tests. We don't say if (htext), instead we say if (htext != nil). No exceptions.
In a subroutine call there's always a single space between the name and the left paren.
We don't store code in subfolders of the main app folder. Get them to group the way you want by naming them with the same first few letters. What's done is done, the tcp folder remains, as does the Internet Config folder. It makes integration more error prone to have lots of nested folders.
Use setstringlength macro instead of assigning to byte 0 of a Pascal string. Use stringlength macro instead of referencing byte 0.
Integrated changes from LDR
October 14, 1995 DW
He says: "fixed a major memory leak in the tcp code, fixed a bug when dragging in same window, cleaned up source formatting in claytcp.c, I had never installed an "idle handler" to deal with async closes, which is why the memory leak since all the ftp data streams weren't getting closed."
Tweaked the Page Parameters window
It stayed, didn't get broken up. Choose the template from a popup menu. popup.c changed to support the new way of dirtying Update button.
Debug the build/upload process
It's no longer a problem if a headline doesn't have a text file linked to it. The page is generated, it may have subheads that have text files linked to them. Previous versions were terminating the build with an error.
Tweak default colors when a new page is createdWhy isn't index.html being built when you do a full build? Answer: other errors in doing a full build. Made the code much more defensive against incomplete data.
Add connection to internal FTP client.
Disabled the FTP status window. We're already narrating the process in the Progress window.
Need to loop over the folder in reverse order to allow for file deletions which happen as the upload process is running.
backgroundcolor = white
Clean up Info dialogs for Page Parameterstextcolor = black
linkcolor = darkbluecolor
visitedlinkcolor = darkredcolor
Initialize template name to 'default'.
Pass text thru the template processorColor becomes a separate dialog.
Author name/icon/date is a separate dialog.
Template choice and other parameters is a separate dialog. (Or maybe the flags in that dialog are part of the template?)
Allow pages that use the "plain" template to bring in the automatically built elements. Required a cleanup of the website building code to package the processing of automatic elements into a separate routine.
The cleanup was good, but the feature can't go in right now. There's more work than I thought -- so for now this tiny little markup system only operates on the template file.
Next level reorg on the Yabbadabba website
October 13, 1995 DW
Made the home page a derivative of the page at http://www.hotwired.com/userland/. Getting ready for the next version of it. Eventually will deploy on top of the current UserLand directory.
TemplatesThe site has five main branches: Mac Software, DaveNet, Other Sites, People, Scratchpad.
Uploaded the result, which you're looking at now...
Rebuilt the page renderer to run off template files. They're stored in the Templates sub-folder of the Clay Basket Preferences folder. They're HTML text files that can include special markups to indicate where the automatically generated pieces of text should go.
Two new Page ParametersMost users will never see the contents of a template file. They're provided for system managers who want to set standards for web page design within an organization. Users just choose a template name from a popup menu in the Page Parameters window.
Here's a list of all the special markups: title, colorinfo, prevurl, nexturl, homeurl, author, icon, bodytext, divelinks, surfacelinks, mousetype, date. Include the name of the macro in text inside curly braces. Open one of the provided template files for clues on how to build them.
I did two templates to start things off. autoweb, which emulates the page layout implemented by my earlier package of scripts that did website building, and default which is a slightly modernized version of the AutoWeb template.
The next one to do is Plain, which omits most of the automatic information, which I plan to use for my home page, where I really want to control the appearance of things.
If Subs On One Line is true, the links to sub-pages are rendered on a single line, with no line breaks, separated by pipe characters.
No more "bozo@clowns.com"If Surface Links on One Line is true, the links to parent pages are rendered on a single line, with no line breaks, separated by pipe characters
These changes are part of the preparation for page templates. We need to have this determined by a Page Param, there won't be a way to do it in HTML.
Initialize the author info field of the Page Parameters window from the Internet Config interface (now in, after integrating with Leonard's code).
Programming team notes and rules by DWStarted a new struct in clayotherapps.c -- userinfo. So far has two fields, the user's real name (in my case Dave Winer) and mail address (dwiner@well.com).
We're going to need to provide some documentation for Internet Config, and have a download page for the Internet Config app, the one that allows you to change all this stuff. In a calmer moment I'll take a look at the docs for IC.
Indent #ifdefs etc. I have to be able to scroll quickly down the left edge of the source to look for the beginning of routines. Modern compilers don't require that the # be in column 1. We take advantage of that.
Look at the following header files and use the routines in them instead of writing your own: appletstrings.h, applememory.h, appletfiles.h. When in doubt, pick up the phone and call. Almost all file, memory and string ops have already been implemented and debugged. Use this stuff. I don't want to clean up these, but they *have* to be cleaned up.
It's boring, but we *always* refer to fields of handles as (**h).xxx, not (*h)->xxx.
More generally -- please study the layout I use. Check out netscapedatetomacdate in claybookmarks.c, which I cleaned up. Compare this to macdatetonetscapedate, which I didn't.
Don't navigate the outline using opmotionkey. Use oprepeatedbump or related routines. You don't want to move the cursor to find your way around. Use a "nomad" to do this. I'll explain on the phone if this isn't clear.
Change name of Website Doc Options dialog to...
October 12, 1995 DW
"Page Parameters." The name may change again.
Add background color and text color to the Page Parameters window
Supported in file format, observed by the page builder.
Make the Update button hotter in the Page Params windowEnded up adding linkcolor and visitedlinkcolor too.
When you click on it, it updates the view in the web browser window too. Very good for quick iterations and this is probably going to be where the demo killer happens.
Integration Day
October 11, 1995 DW
Leonard and I are integrating our stuff over the next couple of days. I'll have all the communications stuff he's been working on, and he'll have the website building stuff I've been working on.
Clay Basket can now read MORE files!
October 10, 1995 DW
Starting today my project "Change Notes" file will appear on the website.
Clay Basket can only read MORE files that are created in ThinkTank 512 format. It's a much simpler file format than MORE's binary file format. The file format is called "dot-head" and all the old Living Videotext outliners can read and write this format. You have to save the MORE outline as a ThinkTank 512 file, put it in the Input Folder and link it into the outline.
It's a semi-primitive connection, but now MORE can be used to generate content for the web. It's my favorite writing tool, so expect more of my writing to flow thru this connection. DW
Get the Yabbadabba site on the air
October 9, 1995 DW
It's at http://www.hotwired.com/userland/yabbadabba/
Add clay.web.previewPage verb
We can do a page preview from within BBEdit now. It supports menu sharing.
When you read a file in, URL-decode; when you write encode
When you view a file name in the Edit Location dialog it looks normal no %20s in it.
When processing a glossary "term"...
If it doesn't evaluate from the table, search the outline for a headline with that name, and generate a pointer to that page.
The Tools menu
A new menu, after WebSite, called Tools. Many of the commands from the Web menu will migrate to the Tools menu.
Glossary
When a page is rendered, any text appearing in "double quotes" is checked against the glossary. If present the text is substituted. The glossary is stored in a table in Frontier.root at clay.data.glossary. If Frontier isn't running, the feature is disabled. A dialog is added to the Tools menu, and a command to open the glossary table.
Don't elipsize text in the outline window if the frame is turned off
It's really tacky and non-standard behavior.
Horizontal scrolling is buggy
It was in the "supersmartvisi" stuff. I just wired it off. Now it's a little klunky, but a cursor move doesn't cause a scroll if the cursor line doesn't need visi'ing. This is more in line with what you expect. Maybe the super smart stuff can be revisited later, the code is in opdisplay.c.
Tabs getting added to the end of a headline
I think saving and reloading adds them.
Skanky bug fixed in claylinelayout.cThe tabs are not in the file.
Watch the parser as the file is loading.
Nailed it. There was an extra r and t at the end of every string as it was being parsed. Hacked the problem away by trimming trailing whitespace at the end of every headline coming in.
Ooook man it was a toughie. I must have been spacing, in "smashlayoutfields" I was using the wrong pointer to the outline record, so the font, size and background color would change incorrectly (sometimes) if there was more than one outline window open.
Handling more than one open window
I think a bunch of commands guess incorrectly as to which window is the target of a change in a modeless dialog. Check it out in the cmd-E command first.
Respect the "process macros" bit in the Doc Info windowYessss indeed there were many not-provided for situations. Now both cmd-E and cmd-I should handle multiple windows correctly.
Text does not run thru the converter if the bit is off. Allows you to include files that are not processed in any way.
Command to choose your text editor
It's in the Tools menu. I use BBEdit 3.5 to edit my text files.
Try editing text in Clay Basket's editing window
It works. To get this to happen, delete the file in the Editors sub-folder of the Clay Basket Preferences folder.
This page was last built with Frontier on a Macintosh on Mon, Jul 22, 1996 at 10:35:18 PM. Thanks for checking it out! Dave |