Happy New Year. There has been a lot going on. This is only what's my fault:

Visible changes

  1. New page header providing operations to perform on the whole page (bookmark, add to category, add to usergroup, editor cool).
  2. Additional functions added to writeup footers: add to category; for editors: hide/unhide writeup. Add to usergroup function improved. The full list of C!s is available whether a writeup is displayed on its own page or in an e2node.
  3. Said functions removed from the epicenter nodelet/zen epicenter.
  4. All writeups which can't be voted on are flagged 'unvotable'. The reason why they are unvotable appears in a tool tip on mouse hover.
  5. 'marked for destruction' notice removed (redundant: see previous).
  6. Many of these functions are contained in pop-up widgets and are hidden when not in use to save space. They open and close at a click. When scripting is not available, the widget-openers link to a version of the page with an opened widget.
  7. Pages and writeups that are in a user's E2 bookmarks have a note indicating this with a link to the bookmark list (currently the user's homenode, but this may change).
  8. Users can choose which usergroup pages they want to have the option of adding to at a page provided for this purpose, rather than being required to guess the function of 'hideify!' and 'showify!' links. There is a link to this page next to the menu it affects.
  9. Users can simply adjust what is shown in writeup headers and footers at Writeup Settings without completely removing any more refined settings they may have entered at Old Writeup Settings.
  10. Jukka users are missing some functions. They are encouraged to switch to the Zen theme using Jukka emulation and note anything that could be improved with Jukka Emulation to improve their E2 experience at Suggestions for E2. We have enough time to make that work; keeping Jukka itself working would take too much time.

Rationale and history: tidy up and improve the writeup footer.

Writeup footers give readers the opportunity to do something in response to a writeup: say they like it, hate it, or love it, talk to the author about it, bookmark it on a social network, or whatever. Editors can also delete it, protect it from deletion, or remove the protection.

Sometimes people may also want to bookmark a writeup, add it to a usergroup page, or add it to a category. Until this month they had to look elsewhere on the page to find the means to do these things. In the case of categories, they would not have found them. Editors wishing to hide a writeup from the New Writeups list had to turn to the list itself to find the links they needed. The plan was to put all of these functions together in the writeup footer.

The links to add bookmark writeups or add them to usergroups (those 'ify!' links) were in the epicenter nodelet. Obviously, if they were to be moved out of here for writeups, it would be inconsistent to leave them there for everything else. They moved to the top of the page underneath the page title, where they were joined by the other 'full page' functions from the epicenter (favorite noder, editor cool), which would have been lonely without them. Means were also provided to remove the actions for particular nodes or nodetypes. These 'page actions' were first made visible to editors for a transitional period, to allow them to use this function.

The writeup footer was already rather cluttered, particularly for editors. But editor functions are used relatively seldom, so it made sense to hide them when they were not needed. The link used to reveal them evolved into a flag showing the status of the writeup (Public, Hidden, X'ed, Restored, Insured) under the influence of articulate feedback from the users, and acquired those triangle thingies™ to show you where to click. Various improvements and theoretically redundant changes were made so that the widgets would be visible and on the right continent even in minority Scandinavian browsers and would not jump out of the way when tickled in smug shiny browsers.

Once the complaints had died down, enthusiastic suggestions were made to put many more functions, possibly all of them, into the widget. The argument prevailed that since the point of the widget was to save space, it made sense to have something to save space for. For those who wanted the old look to their killing tools, an opt-out was provided at Writeup Settings. Unfortunately, that page destroyed any old-fashioned header/footer options they might have had even if that was all that they changed, so that had to be fixed as well.

Since a writeup is a writeup wherever it is, there seemed to be no good reason to show its C!s differently depending on whether it was alone or in company. But a long C! list takes up space and can uglify your whole footer, so it was hidden in a widget.

The existing usergroup menu was enigmatic and dependent on javascript. It was replaced by a form that works with or without scripting and that tells you what you are doing. This reduces the likelihood of people adding things to usergroups by mistake, but if they do they are informed of what they have done and are given the option of undoing it.

The usergroup form was tidied away in a pop-up widget. Following a suggestion from Oolong, this widget also contains a bookmarking link and a form to add a writeup to a category. Categories are a much underused feature of E2, partly due to their almost complete invisibility. Now that they are more visible, it is to be hoped that the users will clamour for for more and better category functionality, and coders will enthusiastically respond. The results of this could include:

  • Tools to reorder the nodes in a category.
  • Options to show all or a part of the content of all of the nodes in a category on a single page.
  • Automatic provision of links at the bottom of a writeup to the series of writeups it belongs to (a category), and to the preceding and following writeups in the sequence.
  • Your idea goes here

At the top of the page, there is more room, so bookmarking, categories and usergroup page functions are shown separately.

Back-end changes to make it all work

(Most links here will only be of use to edev members and staff.)

  • basesheet provides basic styling for widgets.
  • default javascript gives the widgets their pop-up-ness.
  • voteit provides pop-up killing widget if its parameter & 4.
  • The new htmlcode widget will build you a widget if you ask nicely.
  • openform can take a parameter hash as arguments to put style and class attributes on forms.
  • Slight tweak to async voting to adapt to new voteit markup and make it possible to pass a writeup id as argument for a quick kill.
  • displaywriteupinfo changed to make voteit return a kill widget if not disabled by the user and to include the new Add to… widget.
  • Writeup Settings checks existing settings against a regex to see if it could have generated them. Provides explicit option to replace them if not. Only adds/removes individual options if this option is not checked.
  • page header provides a page header.
  • page actions provides a list of links and widgets to put in a page header.
  • Disable actions allows staff to remove action links from the page header.
  • disabled actions keeps track of which actions are disabled for what.
  • removeweblog no longer allows (and requires!) a user id as a parameter to remove a document from a usergroup page: access privileges depend on who the user is, not on which parameters they can hack. The user who linked a document can also remove it.
  • Epicenter contains information where the links used to be on where they can be found and how to put them there if they aren't there.

Other changes/fixes

The New Writeups Atom feed has been optimised to avoid it being truncated. The fix is not 100% bombproof: theoretically, under some very unlikely conditions, it could once again fail. A few more lines of code checking the length and trying again with shorter writeup exerpts if it is over 65000 are still needed.

Writeups are now displayed by a simple htmlcode that uses the show content htmlcode to do the heavy lifting.

CoolUnCoolIt shows C!s on writeups restored from Node Row.

Node Backup will not produce corrupted zip files if your writeup titles contain characters that are not acceptable in operating systems produced in Redmond, Cupertino, or All Over the Place.

Patch importer will still complain if you reload it with a patch id still in the url, but will then go on to show the patch list.

See the top part of the table here for what I've left out above.