The most interesting things happening to Everyting2's code this month were OldMiner's heroic efforts to keep it afloat. May he reap the rewards prescribed by all applicable religions. My consequent tweaks have been adequately addressed in his root log.

But even if the ship is going down, the deck chairs still need arranging. And I made some contributions, too:

New features

Easy new categories

It is now possible to create a new category on the fly from the 'add to category' form. So when you are inspired to put something into a whole new category, you no longer have to go to Create Category to do so. This required patches to categoryform to provide the option and to category to do the business.

Advanced publish options

You can publish a draft to a writeup. Fine. But editors can create documents as well, and it's useful to polish a document up before revealing it to the masses. So editors had a 'publish as document' button in their Master Control. Which wasn't a good place, since everything else you can do with a draft is under it. So setdraftstatus was patched to provide a 'Publish as Document' button for Editors. So that it would work, publishdrafttodocument had to be changed to take a 'node_id' parameter instead of 'draft_id'. Then the old button could be taken out of admin toolset.

The special user account 'everyone' is there for anonymous writeups, or writeups for which people do not want to reap the benefits of upvotes. To publish a writeup as 'everyone' you had to ask alex for the password, or ask an editor to change the author of one of your existing works. This was all rather cumbersome and not very anonymous. So now users of level 1 and above have an 'Advanced option(s)' button at the bottom of their drafts pages, which when clicked reveals an option to publish as a different user. Most users only have the option to publish anonymously as 'everyone', members of e2docs can also publish as Virgil, and editors can publish as various other special accounts they will probably never need. (The 'Advanced options(s) button also reveals their 'publish as document' button, hence the '(s)'.)

The option to publish as a different user required a fair amount of plumbing to work:

canpublishas
This new htmlcode has two related functions: when passed a name, it returns '1' if the user can publish under the account with this name. When called without an argument it returns a form control to choose to publish anonymously or under a different account.
publishdraft
This opcode turns a draft into a writeup before it is attached to an e2node. If a user tries to publish under a different user account, it checks canpublishas to check that they are allowed to do so, and checks that the other account is allowed to publish to the target e2node. If the user is creating a new e2node, it sets a parameter to change its creator to the other account. Finally, it sets the author_user of the writeup to the user_id of the alternate account.
publishwriteup
This attaches a new writeup to an e2node and does any necessary housekeeping, such as adjusting the user's XP. Which it will now not do for anonymous publication
parentdraft
This provides the options to choose a parent e2node when a draft is to be published. As long as the user has previously chosen to publish as a different user and as long as they are allowed to, it calls canpublishas to provide the form control to maintain or reverse that choice.
setdraftstatus
This creates the controls shown under drafts to set their status, attach them to e2nodes and publish them, and now also provides the advanced publishing options when asked nicely.

Bug fixes

If you have searched for something with a particular title and do not find it, you are offered an opportunity to create it yourself. You are invited to correct the spelling and capitalisation of the title while doing so. Unfortunately, your corrections were ignored. This was because the form containing the corrected title was sent to an address including the uncorrected title, which led to the 'node' parameter being passed to the everything2 engine containing the wrong one. So on OldMiner's prompting I fixed e2createnewnode to send the form to the address '/', which the code does not do anything with.

In the course of tidying up the admin tools for editors I had lost sight of which were where with what options active. With the result that two site admins were missing some of their vital buttons. Fixing admin toolset gave them their 'reparent writeup' and 'change author' links back.

As a result of a small change to settings script, if you are using Chrome or Safari you can now add and remove nodelets at Nodelet Settings, as well as moving them around.

General tidiness

If you did a full-text search from the search box, you were taken to Google Search Beta. Since this page had been working without bugs for some years, there was no reason to call it 'beta'. There was another page, E2 Full Text Search, which had consisted of a promise to start working soon for most of the last decade. So now the working code is there, while the 'Beta' page shows a link to it.

zensearchform now fills in the title of the page you just came from in the search box whether or not a softlink has been made.

One of OldMiner's site-rescuing changes was caching user's stylesheets in static files, updated from time to time. Stylesheet authors may appreciate having the latest up to date version of their stylesheets. linkStylesheet will now give them it.