Only Manila Has Edit This Page?

Dave Winer falsely claims,

It’s very gratifying to see Scott promoting Edit This Page. An important group of features that only Manila has. Super-high value for users.

That’s odd, because I use a couple of content management systems, including Conversant in which every bit of text, etc., has an “Edit Me” link that opens the text in a browser text area, lets me change the, and then instantly updates it.

Maybe Dave means that Manila is the only Userland product that has this feature.

An Example of the Flexibility of Conversant’s Metadata Tools

One of the reasons I and others swear by Conversant to manage our web sites it that 90 percent of the time if I think of a really cool feature I’d like to have, I can create it myself without having to know any programming or having to hope enough other people want it to make it worth the developer’s time to code it.

For example, here’s a problem I run into repeatedly. Whenever I write an article I usually list all of the sources I used for the article at the very end. The problem is that more often than not those particular articles are 404 even just a month after I’ve posted. If I want to go back and reference those articles again, I have to hope their in Google’s cache or that somebody else might have a copy.

So it hit me the other day that the obvious way to prevent this problem in the future would be to simply store copies of any articles used as sources along with the article itself. That took me about 15 minutes to set up.

First, I created a custom field called “Sources_Full_Text.” This created a basic text field that is assigned to every post included in the database.

Second, I modified the message editing template so that administrators (i.e. me) now have an additional text entry box called “Sources.” All I have to do is copy and paste the text of source articles into there.

Third, I don’t want to get into legal trouble by giving everyone access to this material — this is really only for my later potential use. So, I used a conditional macro that checks to see a) does a particular article have anything in the sources_full_text field and b) if so, is the person viewing the article and administrator. If both of those are true, then there is a link added at the very bottom of the article to a page that will display the text included in that field.

Total time to add this feature: about 15 minutes.

Total additional cost: $0

Never having to worry about those articles going 404 again: priceless.

The More Metadata, The Merrier

Macrobyte recently added a few features to Conversant (the CMS/groupware system that drives this web site) that I had requested. The one that made the biggest difference on this site was an additional field of metadata for directories.

A brief re-cap here: everything on this site is saved as an entry in a database. Various macros are then used to build page templates and manipulate the various entries six-ways-to-Sunday. Each page on this site has a number of user-created metadata fields as well as some system-specific metadata, including a Navigation Title and Page Title (i.e., so you could sort on the Navigation Title but display the Page Title). Unfortunately, directories only had the Navigation Title.

That was a problem on this site, because I ended up with directories that I wanted to sort in one way but display in another. For example, this list of Wizard of Oz books on this site should sort “The Wizard of Oz” as “Wizard of Oz, The”. Before, it could not do that. Now it handles it just fine. Now, my complete site map is a thing of beauty.

I also should add that I am constantly amazed at the ease-of-use of Conversant’s redirect feature. As other recent discussions about creating a taxonomy for weblogs have noted, coming up with a taxonomy is an enormous undertaking, and I tend to organize mine haphazardly. The ability to move an entire directory and then redirect the old pages to the new ones quickly and easily is extraordinarily helpful. This way I can change and revise my categories anytime I please without worrying about creating lots of 404 errors for users.

ActiveWords + Conversant

Last year I wrote about ActiveWords, which is hands down one of the best Windows utilities I’ve ever used. ActiveWords makes it easy to trigger relatively complex sequences of events just by typing a keyword into any text entry box.

I mostly use it to handle many of the repetitive tasks that are involved in maintaining my Conversant-based web sites. Conversant itself is pretty straightforward, but I’ve got so many different things going on — and a tendency to do things the hard way — that ActiveWords offers an excellent interface for many of these procedures.

Here’s a basic example. I’ve got close to 1,500 topical pages. Each of those topical pages has an associated RSS feed and features an XML icon with a link to the RSS feed. Each topical page has a hidden field that has the location of the RSS feed (there is an easier way to do this, but like I said, I like to be difficult). So whenever I create a new topical page I simply plant the cursor in the text entry box for the RSS field, type "RSS" followed by the F8 key which runs this basic text substitution script, (the greater than and less than signs are represented by the GT and LT tags).

<lt>!–#siteurl–<gt>index/rss/channel/

which would output:

<!–#siteurl–>index/rss/channel/

then I just have to tack on whatever this particular RSS feed is called and I’m done. It makes it a lot easier to do that then either a) having to remember this format all the time or b) sticking it in a text file, loading the file, and then copying and pasting.

I use a slightly more advanced script to deal with setting up the topical pages themselves. The way the topical pages work is that each article I write is tagged with various keywords that I’ve set up. The topical page simply returns a set of query results that find all articles tagged with a specific keyword or group of keywords. Conversant has a special macro, InsertQuery, that inserts the results from its Advanced Query Page into a regular page. So I’ve set up a script that is triggered when I type "AQP"+F8,

<LT>!–#insertquery aqppath="" cache="true" cacheExpires="720"–<gt>[LEFT:30]

This returns,

<!–#insertquery aqppath="" cache="true" cacheExpires="720"–>

and the [LEFT:30] portion at the end moves the cursor back to between the quote marks after the aqppath="" so I can go ahead and type in the path for the Advanced Query Page that I want to use for this topical page.

I’ve got about 6 ActiveWord scripts that perform actions like this. This way I can set these up the HTML code/Conversant macros like I want, simply remember the ActiveWords token I’m using, and then free up that space in my brain for other purposes.

Something else I’ve been doing for awhile for my web site is adding public domain e-texts to the site. This is part of my obssessive-compulsive personality. I have a page on my personal site about Darwinian evolution, for example. So it’s only logical that I also need to have e-texts of all of the books that Darwin ever wrote on the site as well.

But just having the texts there is kind of boring, so I’ve taken stuff that |Seth Dillingham| and Steve Ivy developed and added paragraph-level anchors so that if I (or anyone else wanted to), you could use a URL to bring up specific paragraphs. Moreover, I’m using a Javascript that Seth wrote to highlight the selected paragraph if you’re using the anchor, and a Cookie-based system to let the user make the permalinks visible or invisible (did I say I was obssessive?) For an example, see this chapter from a book by Frederick Douglass — play with the “Show/Hide Permalinks” option in the right-hand column to see how this works.

So the first thing I need to do is go through a book and add permalinks to every paragraph. I use Textpad 4.7 for all of my text editing, and this ActiveWords script triggered by "permalinks"+F8 to add the permalinks,

<CTRL><HOME></CTRL><lt>p<gt><CTRL><END> </CTRL><lt>/p<gt><CTRL><HOME></CTRL><F8>
\n\n<TAB><LT>/p<GT>\n\n<LT>p<GT><ALT>a</ALT>
<SHIFT><TAB></SHIFT><LT>P<GT><TAB><LT> a name="p\i(1)"<GT><LT>/a<GT> <LT>p id="mp\i(1)"<GT><ALT>a</alt>

This script goes through and adds an opening paragraph tag at the beginning of the document and a closing paragraph tag at the end of the document, then adds paragraph tags at the beginning and end of every other paragraph. Then it goes through and adds a named anchor at the beginning of every paragraph along with a paragraph ID tag that the Javascript highlighter needs as well.

Conversant Gets WYSIWYG

A few weeks ago, Macrobyte added a WYSIWYG textbox editor to Conversant. Works really nice, and the addition has made a lot of my users happier.

I, on the other hand, really don’t like WYSIWYG boxes for routine editing, although it does come in handy in some situations. One of the nice things about Conversant is it makes it very easy to configure the WYSIWYG box so each user can choose to turn it on or off as they see fit.

It’s always nice to give users as much control as possible over things like that.

Conversant and My Ever Changing Mind

The last couple weeks I have been doing a lot of behind-the-scenes organizing/reorganizing of this web site. The biggest change has been with category pages. I’ve been adding different categories right and left lately, and at the moment there are almost 300 categories and subcategories to which articles can be assigned, each with its own category page like this one.

The problem I have with this site is a lot of times I have no idea where to put a particular category. For example, I’ve written a couple articles about Arnold Schwarzenegger in the past, and am likely to write a few more in the next few weeks, so lets go ahead and make a page just for the Schwarzengger articles. But where do I put Ahnuld? Since he’s best known as an actor, should he be somewhere in the Film category? Or since most of my comments about him deal with his political career, should he be sandwiched somewhere in the Politics section? Then again, Schwarzengger got his start as a body builder so maybe he belongs somehwere in the Sports section.

I’m not even going to waste any time debating this — I’ll just put the page in the Miscellaneous section and move it out of there if I ever suddenly see a compelling reason to slot it somewhere else.

Coversant lets me punt on these decisions now because it is extremely easy to relocate the page and create a redirect if I ever can make up my mind. For example, for a long time I had no idea where to put my 9/11 page, so it’s sat in the Miscellaneous category for almost two years. It finally hit me the other day that the best place for it would be as a subcategory in a Law–> Crime–> Terrorism page.

Moving it there and making sure that anyone who visits the old location gets redirected to the new location will take about 5 minutes.