Navigation

The banned_links, max_anonymous_links and max_identified_links
properties are no longer supported. Instead, at edit time Zwiki
attempts to read a global blacklist of zwiki-specific spam patterns
from zwiki.org. This feature aims to stop the most common zwiki spam
for all Zwiki users with minimum maintenance effort. For added
protection, you can block known spammer ip addresses with
http://repel.in-progress.com (see also http://betabug.ch/wiki/HoneyPotBL.)

This is a prototype. For now, a http get attempt to
http://zwiki.org/spampatterns.txt with 1-second timeout is made at
each edit. The feature is on by default. Todo: follow suggested
caching interval.

To disable use of the global blacklist, add a local “spampatterns”
lines property on or above your wiki folder. You can leave it empty
or paste in the contents of your old banned_links property.

new archive feature, to help with cleanup of large wikis

This aims to reduce info-clutter and improve wiki resource usage and
performance, in situations where you’re not willing to delete content
entirely, eg because of historical interest. To enable this feature,
create an “archive” folder within your wiki, or visit
SOMEOLDPAGE/archive once, and make sure you have Deleteobjects
permission. An archive button will be added to the page management
form. This moves the current page, its subtopics, and their edit history
to the archive folder.

Pages in the archive may still be viewed, but they are considered
read-only and inaccessible to search bots (but this is not yet enforced
- adjust permissions on the archive folder to make it so.).

zope 2.12 requires a change to the standard_error_message object, otherwise
errors will appear as a blank page. Delete yours using the ZMI and recreate
it with SOMEPAGE/setupDtmlMethods (or /upgradeAll).

to work around incomplete unicode support in Zope, a zwiki page’s
__str__ method now returns a utf-8 encoded string. This fixes
the ZMI manage_main view on a zwiki page object (#1450).

also, you’ll need to set a string property in the properties tab of
your wiki or zope root folder: management_page_charset: UTF-8.
(The capitalisation may matter in some cases.) This fixes the ZMI
manage_main view on a zwiki folder, eg (#1459).

however, non-ascii zwiki page content may render incorrectly in the ZMI,
and you should not edit zwiki pages in the ZMI, or they may become
misencoded. (If it happens, visiting PAGE/fixEncoding or /upgradeAll may
fix it.)

This is the first release of Zwiki 2, formerly the ZWiki-unstable branch.
To recap, on 2009/01/30 I renamed the old Zwiki stable and unstable repos,
and we now have:

http://zwiki.org/repos/ZWiki1 - the classic Zwiki 0.x branch, aka
Zwiki 1. This version stores text as utf-8 and supports Zope versions
up to 2.11. Barring some unusual need, this will receive no further
development. At the time of writing the last release in this line is
Zwiki 0.61.0, 2008/10/24.

http://zwiki.org/repos/ZWiki - the new main line of Zwiki
development, aka Zwiki 2. This version stores text as unicode,
reorganizes skins, drops some non-essential features and adds support
for Zope 2.12 and python 2.6. Older zopes are still supported, at least
in the 2.0 release.

The biggest change in Zwiki 2 is that we now work internally with unicode
rather than utf8-encoded text. Encoding-related errors in non-ascii wikis
are hard to prevent; this change will help us stamp them out. Also this
will permit accurate searching of non-ascii content. Thanks to
Wirtschaftsuniversität Wien (Vienna University of Economics and Business)
and Willi Langenberger for funding part of this work. There has also been
a lot of skins and code cleanup.

Upgrade notes

With an existing wiki containing non-ascii wiki content, you will probably
notice new encoding-related errors. (Eg try searching for some non-ascii
text.) In this case you need to convert all wiki content from utf-8 to
unicode. To do this, visit SOMEPAGE/upgradeAll as manager.

As usual, if you have a lot of content this can take several minutes; set
your logging level to BLATHER (in zope.conf) and watch the event.log to
see progress and be sure it completes successfully.

Afterward, most encoding-related errors should be gone (try the search
again). If not: first try upgradeAll a second time, then please report
(eg to sm on #zwiki) for investigation.

Also, if you have custom skin templates they will likely need updating
(see eg the note below about lastEditor). It’s probably best to move them
out of the way and deal with that later, or re-apply your customisations
to the latest templates.

Browsing

show a “created” timestamp at top right, like Michael Haubenwallner’s
on the zope3 wiki

1414 - indentation was not displayed in literal code blocks (betabug)

minor css fixes (betabug)

Fixed the display of non-ascii search expressions on the search form (betabug)

when there are multiple mailhosts, choose the one with alphabetically
first id This lets you use a zope 2.11 “MailHost” when you have a
“MaildropHost” still kicking around, may be useful for someone else
testing mailhosts.

drop mailin’s unused spam-reporting feature

General

Unicodegeddon! A big set of changes switching to unicode for internal
text handling. Many were committed as a single mega-patch from the the
early unicode branch. Noteworthy details:

for proper operation, wiki content should be converted from utf-8
to unicode, a one-way upgrade step. See upgrade notes above.

skin templates should use (lastEditor(), lastEditTime() etc.)
methods, not properties. If you have customised editform, history,
or RecentChanges, they may need to be updated accordingly.
Also catalog page brains now contain lastEditor, not last_editor.

we use unicode-aware ZCTextIndexes in the wiki catalog by
default. SOMEPAGE/upgradeAll (or /setupCatalog) upgrades old
TextIndex-based indexes if present. (betabug)

we use a simple unicode-aware splitter, based on code by Stefan
Holek. The following code is mostly taken from the
UnicodeLexicon product by Stefan H. Holek (ZPL) which can be found
at: http://www.zope.org/Members/shh/UnicodeLexicon . Many thanks to
you Stefan! We are using this here, so people with minimal needs
don’t have to install extra products. If you need more than this
install a more specific splitter (e.g. a CJK splitter) create a new
“ZCTextIndex Lexicon” and recreate the “SearchableText” and “Title”
indexes with your new lexicon. (betabug)

preserve unicode when evaluating DTML (#1411)

Many other unicode-related changes/fixes (simon, betabug)

Skin cleanups: rearrange templates, provide nav links and access keys
more consistently, skin machinerys, basic support for alternate
filesystem skins. Many of these were committed as a single mega-patch.
Noteworthy details:

include either pageheader or wikiheader in every view, for
appropriate links, access keys, etc. Show all nav links
everywhere.

avoid duplicate access key definitions so you don’t have to press
enter in firefox 3

drop the s for search form access key, so s for save edit works without enter

some skin machinery cleanup and basic support for alternate
filesystem skins, selectable by “skin” property or request var

939 - suppress “e” access key when already in edit form. (betabug)

1361 - check permission for the edit form more carefully; the edit
form should be viewable also in the case that the user has “Add”
rights on the wiki. E.g. going through the “add” form on a
restricted page, then clicking on the “Preview” button raised
Unauthorized before this fix. (betabug)

add /index as an alias for the /index_object page method, drop /updateCatalog

#1272 - create PageBrain only for Zwiki Pages. Since we are now
ensuring that there is always a catalog in a Zwiki, the method
metadataFor() shouldn’t be needed any more. But I’m still adding this
patch (credits and thanks to koegler), in case some code hits on it in
the time between an upgrade and running the /upgradeAll
method. (Sascha Welter)

Rewrote the rating module to use a BTree to store votes, instead of a
dictionary. Saves some kB writing to Data.fs and avoids
conflicts. (Sascha Welter)

code review and cleanup. All significant methods in Editing have now
been reviewed (by Simon) and tightened up

make lastLog more robust to prevent possible page view breakage

pages now returns nothing without a fully-configured catalog (to avoid
blowing up zodb cache when viewing old revisions)

Zope >=2.10 users should upgrade to this release to avoid TAL unicode
errors. Also, skin customizers should update their custom templates
to avoid the same errors. See #1330 below.

Plone 3/CMF 2.1 users should upgrade to this release

Plone 2.x users will not be able to install this release in sites, see #1322 below

skin customizers should note the wiki navigation links are now in the wikipage template

a wiki catalog is no longer optional, and will be added if missing

Installing

#1322: Plone 3 & CMF 2.1 compatibility. Warning, this version of Zwiki
uses GenericSetup and is not compatible with older versions of
Plone/CMF. This could be tackled in a future release if there is
demand. See the issue page for discussion and possible workarounds.

#1041, #1145: ensure a catalog and an outline cache are always present.

Browsing

make the home link, wiki logo and index_html use the default page url
consistently

hide the prefix in mailto: email hyperlinks

change long-standing links order: contents before changes, help after
options

#1348 - redirect to original page after useroptions We are always
calling FrontPage/useroptions to limit bot traffic. Now we are
carrying the redirectURL through the REQUEST, so we know where to
redirect in the end. (Sascha Welter)

#570 - Ensure valid id with file uploads. But meanwhile try to mess
with uploaded file’s names as little as possible. We check first if
the name is acceptable to Zope, and only if it isn’t we change
it. (Sascha Welter)

#1085 - Comments are now properly formatted in HTML pagetype. Now
it’s possible to use comments in HTML pagetype pages and have the
comments still properly formatted after page edits. Similar to #1079
and therefore again credits and thanks to Martijn Pieters. We are in
the same manner using preRenderMessages to add the comments. (Sascha
Welter)

#1079 - Plaintext comments work now. Commenting on plaintext pages
would work until you edited the page itself, then the prerendering
method lost the comment rendering. Credits go to Martijn Peters for
this patch, a bit adapted to code that had moved on. I had to tweak
the output test, as the exact placement of blank lines at end of the
page content has changed minimally. (Sascha Welter)

refuse any incoming text that’s not ascii or utf-8, to avoid problems
later

createform and create now look only at folder permissions, not the
current page, to be consistent with the page management form. The
‘Zwiki: Add pages’ permission is meaningful only on folders, and
ignored on pages.

Replace hasattr() with safe_hasattr() everywhere. Problem with
hasattr() is that it masks exceptions, which is known to be
problematic. “Our” new safe_hasattr() is from
http://www.zope.org/Collectors/Zope/742 - with thanks and credits to
Dieter Maurer. (Sascha Welter)

#1365 use talsafe() on newname in /editform to avoid
UnicodeDecodeError. This problem appeared in localized browsers only
for some reason, but the fix likely is necessary for 2.10 too. (Sascha
Welter)

#1330: a better fix for these unicode errors. Zope 2.10 expects TAL
data to be unicode, older zopes do not. This can lead to many obscure
unicode errors depending on your system locale, wiki content, cookies,
phase of the moon etc. This fix aims to make all the standard
templates robust against this. Wikis with old customized templates
will still be vulnerable to this problem after upgrading to zope 2.10,
until those templates are updated.

#1332 - fix for the fix + default wiki_type is “basic”. We’re now not
trying to grab the REQUEST from self any more – just doesn’t make
sense to me. Also we have now the default wiki_type as
“basic”. (Sascha Welter)

#1332 - make manage_addWiki more programmatic + test. We still
grabbed the REQUEST and thus got a redirect at the 2nd chance. Now
we’re doing the same check as on the 1st test and also return the new
id if we don’t redirect. Added a test too. (Sascha Welter)

Recursively add files/folders on addWikiFromFs. This is used for
“nautica” style templates. It’s now possible to use templates
e.g. from openwebdesign.org without having to “unroll” images into a
flat structure. Also we now can set document titles and parents from
the filesystem pages. (Sascha Welter)

#1331, #1186 - last_edit_date / creation_date timestamps now in
ISO6801. We changed the timestamp format for last_edit_date and
creation_date to conform to ISO8601, in order to save time zone
information along with it. Special care is taken to upgrading old
timestamps in Zope’s DateTime’s ISO() format. (Sascha Welter)

Catchup since the last release in november: a truckload of bugfixes
from Sascha Welter, Frank Laurijssens and many others (YAY!), support
for conditional http get, skins code cleanup, translation updates and
more.

Upgrade notes

The standard issuetracker and filterissues pages now support sorting
on issue name and reverse sorting (#14). To enable sorting by name,
visit SOMEPAGE/setupTracker (as manager) to add a required catalog
field.

If you have customized IssueTracker and/or FilterIssues pages, you
might want to replace them with the latest code. To do this, review
and back up the changes you made. Then delete both pages, reinstall
them with SOMEPAGE/setupTracker?pages=1 (as manager), and re-apply
your customizations.

reparent now obeys the edits_need_username option, so reparenting will
require a username when that property is true

#1077 implement Conditional HTTP Get handling (aka If-modified-since /
304) for pages, stylesheet and RSS feeds. This feature makes zwiki
pages more browser- and spider-cache friendly, which can potentially
greatly reduce page rendering time and load on your zope server. It
is off by default as it doesn’t yet work with Firefox’s default
settings (requiring a reload after each edit). See
http://zwiki.org/HowToEnableConditionalHTTPGET (Sascha Welter)

#974 Property to ignore certain WikiNames Credits to Matt Kunze from
DataSplice. Patch logic is from him, I just simplified it a bit and
tested it. This has yet to be documented somewhere. (Sascha Welter)

#1304 last-edited-by is not shown when user ID is numerical
(Sascha Welter)

#1303 Illegal utf-8 handling in Utils.py summary - Credits go to Hideo
at Yokohama! This patch had us worried about performance, since taking
a summary of a long wiki page might be slow. Some preliminary testing
showed that the performance price is rather low, but for sites with
non-ascii content the patch is really worth it. Not only will it stop
producing illegal utf-8, but without the patch the length of the
summary will never be right. (Sascha Welter)

#1186 fix for last_edited_date losing time zone information -
converting to UTC. This might be only relevant at hosts that do
not have locale support on their operating system (e.g. BSD, Mac
OS X). Further tests in that direction might be necessary. It
definitely fixes the problem on Mac OS X. (Sascha Welter)

Mail

#1299 - mail out in plone works, could use more error handling though
(Sascha Welter)

Feeds

#1083 escape html in rss feeds (Sascha Welter)

#1294 - changes to get rss feeds to validate. pages_rss and changes_rss
now validate with feedvalidator.org.

#1281 Frank’s patch to set up dtml for IssueTracker pages with extra
check (Sascha Welter)

#1043 Color issue links in “backlinks” (Frank Laurijssens)

#1008 show issue form on plaintext issues, patch from Bill Page
(Sascha Welter)

General

make skin/template/macro handling more general, add support for
alternate filesystem skins, rewrite skin system developer docs

clean up stylesheet lookup: look for a template named “stylesheet.css”
or “stylesheet” in that order

siblingsAsList can include current page + sorting optional. This is
useful mainly for “nautica” style wikipage.pt. In those one often
wants to make a list of pages “on the same level” as the current
page. That list usually includes the current page and is not sorted
alphabetically, but instead left in the order defined in the
/backlinks page. (Sascha Welter)

many fixes to make Zwiki’s exception handling more precise. This may
reveal some new failure scenarios which were previously hidden
(Sascha Welter)

If you have a very old zwiki relying on standard_wiki_header &
standard_wiki_footer dtml methods, these will now be ignored; you
must use a wikipage page template to customise the skin. I don’t
think this will affect anyone (let me know if it did!)

CMF/Plone users: the zwiki_standard and zwiki_plone skin layers have
been replaced by a single zwiki layer. Re-install Zwiki in your
CMF/Plone sites, using Plone’s add/remove products or CMF’s
quickinstaller, to register the new skin layer. Also remove the
zwiki_standard and zwiki_plone skin layers from your skins in
portal_skins -> Properties.

Installing

cleaned up ZMI Add ZWiki and Add ZWiki Page forms

remove _getViewFor import that broke with CMF 2.0

fix upgradeAll’s batch option

Browsing

/myvotes view shows your votes in this wiki

highlight your current vote for this page, if any

Editing

support a max_identified_links property also, for
cookie-identified users (for now)

edit history enhancements, a more useful diff browser and more
powerful revert methods. Renames can now be reverted, reverting
is more reliable, and appropriate mail notifications are sent.

General

replace zwiki_standard and zwiki_plone with just skins/zwiki

Views code cleanup

simplify definition of view macros and make them refresh
immediately in debug mode

If you installed 0.52 in a CMF or Plone site for the first time, the
zwiki_standard skin layer may not have been installed and some
images may appear broken. If so, uninstall and reinstall Zwiki in
add/remove products.

Installing

fix backwards compatibility for old custom templates like
editform (#1241)

the zwiki_standard layer was not being registered during
cmf/plone installation; don’t add the unnecessary “Zwiki” skin
any more

Add Zwiki was not setting page type based on the file suffix
(#1247)

Configuring

don’t html-quote the site header, if configured (#1240)

Browsing

fix blank lines in RST page comments (#1248)

don’t show wiki logo in plone skin

show document actions instead of zwiki search form in plone skin

don’t show page hierarchy list bullets in plone skin

don’t make context links smaller in plone skin

use h1 instead of big for page name

add more whitespace between header and content in plone skin

Editing

when creating pages, use epoz based on the new page’s type, not
the parent page’s (#1243)

Mail

subscribe form fixes for cmf/plone sites: fall back to zwiki
options cookie when not logged in, don’t subscribe Anonymous
User, more help for logged in users (Jens Nachtigall, Simon
Michael, #878, #1203)

fix too-small headings on RST pages, and don’t show so many RST
warnings (#1224)

work better with plone livesearch

UserOptions.dtml was missing a > (Andrew Milton)

remove unneeded styling of external editor icon

remove unnecessary inconsistent-looking access key on logo

show a heading on all views except editform

Editing

make restructured text the default page type, change page type
order in editform. (AdoptRestructuredText)
“As of today, RST is the default page type. Hurrah! And three
cheers for trusty old STX, which served us well. It is still the
page type of choice when you want to do stuff with embedded DTML
or HTML.”

fix error displayed on first comment to an RST page (#1233)

show “HTML (WYSIWYG)” in the editform when Epoz is available

remove editform’s hard-coded gray background

Page hierarchy

make backlinks form smarter

make singletons have same style as other links in contents

Issue tracking

don’t bother showing “(property change)” in issue mailouts

provide a link to issuebrowser by default

make IssueBrowser show categories more usefully out of the box

Translations

Thai translation started (Bunyawat Singchai)

update po files from rosetta and code, simplify file names

General

namegeddon. File and class renames and re-ordering for clarity
and better organization eg in wing ide

major refactoring of skin templates using macros, the same
templates are now used for standard & plone skins (ViewGeddon)

document skin code in Views.py

use PageTemplateFile so view templates will reload in debug mode
(macros still don’t)

move all images to skins dir, use the standard zwiki page icon in plone

make links in contents, eg to pages with brackets in the name,
more robust

Mail

mailouts from issue pages - except for the creation mailout -
now just include the issue number, not the full page name, in
the subject. This can be turned off by setting a
‘mail_issue_names’ boolean property. (Simon Michael, Frank
Laurijssens)

make Zwiki startup more robust with strange locales/strange pythons (#1158)

make zmi add wiki form use a btreefolder

don’t break when adding a wiki with id home (#591)

drop unnecessary loading plugins message at startup

don’t log a warning at startup when the system locale is None

clarify missing PTS warning at startup

make fit import failure warning at startup less troubling

fix a case where a page upgrade wouldn’t get logged

don’t break when displaying a page whose page type has been uninstalled

Configuring

wiki subscriber mail-out, rss feeds and blog listings will
ignore boring pages TestPage, SandBox and their offspring, by
default. You can configure different pages in a boring_pages lines
folder property, one per line. An isBoring index has been added to
the standard catalog fields, run /setupCatalog to add it.

set a true use_double_parenthesis_links property to enable
Wicked-style double parenthesis syntax for freeform wiki links.
This is for world users who can’t easily type [].

rename and delete no longer check for a username in addition to
the permissions (though the skin may still hide them without a
username.)

Browsing

the /changes_rss feed now shows the edit diff

misc_/* image paths are now relative to be more robust with vhosting (#689)

Editing

be sure to create our own recycle_bin even if the parent folder has one

purple numbers now disabled by default

allow create to be called directly by page management form

Mail

add “all edits” checkboxes to subscribeform. Zwiki can now send
comments to some, edits to others.

reparent now also sends a mailout

remove (new), add (edit) in mailout subjects for clarity

just say “links updated” in rename mailout subject

Issue tracking

use more consistent (property change) in issue mailouts, and don’t say it if no property changed

/issuebrowser was showing filter issues form

General - skins

big skins reorganization to reduce duplication

use a separate createform skin template for creating pages if present

hide most of the wiki action links by default in standard skin

tweak page management form layout in standard skin

drop unnecessary extra text from page management form in cmf/plone

remove old _ and = access keys from /showAccessKeys

register just the zwiki_standard skin with FilesystemSiteDirectory when installed

italicise log notes in recent changes

if a ‘favicon’ object is present, set it as the page icon in the standard skin

You might want to delete the “outline” object using the ZMI,
allowing Zwiki to create a more ZMI-compliant one. Note this will
lose any manual re-ordering of subtopics you may have done.

The default colour for “serious” issues is lighter. This will take
effect for each issue page as it is edited. To make all pages show
the correct colour right away, visit SomePage/upgradeAll in your
browser.

Customized skins which use the old wikipage_macros template will
stop working with this release, as discussed in the 0.42 upgrade
notes. If this affects you, you’ll need to make the changes
described there now.

Page hierarchy

clarify updateWikiOutline and call it on every page view to
avoid out of date contents and hopefully avoid the need to call it
manually

The following CSS class has been renamed, you’ll need to update
any customised zwiki stylesheets accordingly:

quicklinks -> wikilinks

Also a few macros and classes that no-one was using have been
removed. I expect to remove the backwards compatibility support
for old macros in the next release or three.

The standard skin directory has been renamed to zwiki_standard.
In CMF/Plone sites, you should uninstall and re-install Zwiki in
plone setup (the upgrade link may not work) so that zwiki_standard
appears in the portal_skins tool. You can then delete
portal_skins/standard and portal_skins/zmi in the ZMI.

Editing

be more robust when saving a page with undated comments (#1103)

after voting, redirect to the referer instead of the rated page

Page hierarchy

make subtopics template-driven, selectable via subtopics_style
property, and dtml-aware. Two styles are now included: “outline”
and “board”. The latter shows view counts if mxmCounter is
installed. See admin guide.

add “Revert to this” button in plone diff form as in standard
skin (Jens Nachtigall)

clarify revert button wording in both skins

don’t call pageUrl so many times in wikipage
Bob was able to measure some speedup from doing this. I’ve
redone his patch for the cleaned up template. However I believe
it’s necessary to define pageurl again in each macro where it’s
used, so it’s in scope for other templates using the macro, so
it’s still called a few times per page view. (Bob McElrath,
Simon Michael)

hide some urls and things when pages are printed, (anonymous, #1110)

add a pagesByType pythonscript to content/misc

General

fix and update broken/failing tests, make all tests pass again
(#1104, #1049)

fix a TypeError and AttributeError when CMFMember is used
(Jens Nachtigall)

br_for_subscribed_pages_list_on_subscribeform (Jens Nachtigall)
If one is subscribed to several pages, theses pages are
on the same line, which looks confusing. Now it is done as
with the page_subscribers list on the very same subscribeform,
ie an “<br />” is inserted between each page name.

General - i18n

regenerate pot and po files, and this time with up-to-date
Default comments (#1093, SM, Jens Nachtigall)

no bogus property change. Some very aggressive search engines
(spiders) seem to be following form action=”xxxx” references in
pages as well as the usual href links. As a result probes by
such greedy theives can cause unexpected changes to wiki web
pages. One such example recently has been the triggering of the
Change button on the Issue pages. The script
changeIssueProperties should be more careful not to record any
change if the Change action is triggered with no actually
changes. (Bill Page)

There have been changes to the zwiki catalog fields. After
upgrading, if your wikis use a catalog or are in a CMF/plone site,
visit FRONTPAGE/setupCatalog, or if issue tracking is enabled, visit
FRONTPAGE/setupTracker, to ensure your catalog is configured for
best large-wiki performance.

index_object’s arguments have changed and the reindex_object and
updateCatalog methods are deprecated.

As noted below, free form links no longer try so hard to find
old-style IssueNo issue pages, so if you have broken links of this
kind, upgrade your issue page names (/upgradeAll).

Configuring

fix dependency on /setupTracker for good large-wiki performance;
/setupCatalog is now sufficient (#993)

be compatible with plone’s default_page lines property (#914)

Browsing

preliminary built-in RSS support - FRONTPAGE/pages_rss, /changes_rss

freeform links no longer look for both old and new-style issues;
a slight (20%) speedup for rendering freeform links

Issue tracking

fix sorting issues by number (#934)

issuebrowser/IssueBrowser form for reviewing open issues

make closed issues greener.. may be different on your screen,
feedback welcome

hide zeros to make filter issues matrix clearer

try to improve spacing glitch with dtml-translate on filter issues

Fit tests

just log a fit import warning instead of displaying on the page

General - i18n

i18n (global and french) for issue tracker in plone -
i18n in plone skin require some i18n elements (for instance the
so called ‘contentaction’ items) to be in zwiki-plone-* as well
(huron)

make updateWikiOutline redirect to the updated contents view, and
provide an easier alias: updatecontents

don’t log a traceback when deleting a page with out-of-date outline cache

Editing

avoid creating both pages when you rename during page creation
drop the leaveplaceholder and updatebacklinks arguments from
create(). Changing the page name in the create form now always
updatesbacklinks, never leaves a placeholder.

Rating

new compact rating form at top right. Unrated pages now have
rating 1 by default.

Hide web only elements when printing from plone (Michael Twomey)
When printing from plone certain elements are visible on the
printed page, especially the access links. With the default
plone print style
(plonePrint.css) all links get expanded to full URLs which
results in a lot of useless junk at the top of the screen. This
patch adds a few plone related CSS classes to certain sections
of the page which in turn ensures they aren’t visible when
printed. This has no effect on browsers which aren’t aware of
the print style sheet. The access keys still work fine in
FireFox 1.0.

Allow empty RemoteWikiURL name (Bill Page)
It is sometimes useful to allow the remoteURLname to be
empty. That is we give a WikiName that looks like it is
remote but really it is not (at least not yet ... :).
The old code caused a : to be inserted.

comment out unused code breaking mailout (IssueNo0890)

also check comment subjects and log notes for urls from the
banned_links list

likely fix for false contents in new wikis (IssueNo0903)

Skins and content

make hidden access-key links conditional like the visible ones
avoids errors in the logs due to spiders viewing non-existent tracker, eg

let next/prev access keys wrap around when on last/first page

show “last edited by” in minimal mode

make the discussion link look for UserDiscussion before GeneralDiscussion

mailin: more code cleanup, add experimental spam url reporting.
Sending mail to a mailin address of the form spam@... will add all
urls found in the message to the banned_links folder property, if
there is one.

don’t catch and display skin template errors any longer; zope’s
own traceback is much better

default, plone subscribeform: clean up the subscribeform a bit
and make consistent in both skins. Display a message when there
is no email address. We now try to hide the email field and
button when we can use the CMF member email property
instead. The logic here is a bit rough and may not work in all
situations.

do not produce an empty stylesheet, which confuses Firefox
EditCSS (Bob McElrath)

use a single contents URL (based on the default page) to reduce
robot activity

make subtopics & comments headings bold, remove overline

moved subscribe back to the page tabs area to create better
visual separation of “page” and “wiki” operations

don’t show the subscribe tab in plone if mailout is not enabled

basic: default page cleanups

include print.dtml, toc.py, view_source.dtml scripts in misc

Mail and messages

performance fix: usernamesFrom was too expensive, occasionally
causing plone.org to max out cpu for 10 minutes at a time with
it’s 7000 users. So now, we don’t try so hard to match up email
addresses with CMF member ids - subscribers should use one or
the other. This should fix it.
(Alan & plone team, Simon)

correctly render pages containing only messages (Bob McElrath)

Tracker

a tracker created with zope 2.7 would not sort issues (IssueNo0720).
Note if you have already created a tracker with 2.7, to fix sorting
you’ll need to visit PAGEURL/index_object on each issue page.

don’t break if plone 2’s document_actions is not present
(IssueNo0701)

improve robot robustness for large public wikis by 1. removing
potentially expensive clearCache and print links from the skins,
and 2. making scroll-to-current-page in contents (with it’s
consequent many unique expensive urls) optional and off by
default (IssueNo0699)

If you have non-ascii characters in your page names or content: the
default skin used to specify iso-8859-1 character encoding; it now
specifies utf-8. So your wiki’s character encoding may change, and
non-ascii characters may no longer display correctly. You’ll have to
convert these manually (see http://zwiki.org/IssueNo0682 for tips).

If you were running the 0.27cvs code: you might be unable to view or
add pages after upgrading to 0.27 final. To fix, visit
SOMEPAGE/updateWikiOutline, or /upgradeAll. (If this happens to you
and you weren’t running 0.27cvs, I’d like to hear from you).

General

page hierarchy is now cached in a wiki Outline object, stored as
a (hidden) folder attribute, instead of being generated from the
page parents attribute every time. All hierarchy operations
should now be fast (so it’s safe to enable show_subtopics and
show_navlinks in large wikis) and hopefully scalability (eg
conflict errors) is no worse.

upgradeAll now checks each page’s parents information and
repairs it if necessary; it also regenerates the saved wiki
outline. This restores any pages missing from the contents view.
You can also visit /checkParents to fix a single page.

the default skin now specifies the utf-8 charset, like
zwiki_plone, and the wikiname regular expressions can now handle
multi-byte utf-8 encoding. This may cause some page names or
wiki content to be displayed incorrectly after upgrading, but we
don’t attempt any automatic migration right now. (Simon,
traldar, Samotnik)

added a number of access keys, following w3c guidelines, and
made them work in all views, both default and plone skin. Alt-0
displays a list.

default, zwiki_plone: the editform now uses Epoz 0.x, if
installed, to edit HTML-only pages in WYSIWYG fashion. To see
this, install the Epoz 0.x product; edit one of your pages and
change it’s type to HTML; edit again to see the new form. See
http://zwiki.org/ZwikiAndEpoz for more.

default: streamline editform and other forms’ layout (remove
editform tabindex attributes, they only add confusion; make page
type more prominent at top right; add cancel button; remove
unnecessary large headings)

default: include backlinks & diff links in the links panel.
It now includes pretty much all site and page views.

Many changes, you may want to hold off and watch KnownIssues for a
week or two.

The page_type property is no longer a simple string. Customized skin
templates should continue to work. Downgrading from this release may
cause temporary problems.

If you have DTML-using wikis, you will need to take steps to
re-enable DTML pages after this upgrade. You can either:
1. re-enable DTML: set the allow_dtml property as described below;
or 2. become a non-DTML wiki: remove or rename your RecentChanges,
SearchPage, UserOptions, IssueTracker or FilterIssues pages. If
you’re using the default skin, the site navigation links will adjust
automatically; if you’re using the zwiki_plone skin you’ll need to
make such links yourself.

This release includes additional CMF/Plone action links; re-install
Zwiki in your CMF/Plone site to see these (or add them manually in
portal_types -> Wiki Page -> actions).

General

no DTML by default

DTML is off again by default, for real this time. (These days
it’s too great a surprise for people who just want a wiki.) To
enable DTML in pages you must now set a true ‘allow_dtml’
property on your wiki folder or above. (A ‘no_dtml’ property,
any value, will override this and disable all DTML as before.)
See also “new skin-based views” below.

new page type objects

Pages now store their type as a PageType object, rather than a
string. These encapsulate behaviours that are specific to each
page type. The page_type attribute is no longer accessible via
the ZMI, and it is no longer a simple string, though in simple
DTML usage it will return the same value as before (DTML and
skin authors take note). Legacy skin templates should continue
to work.

search has been enhanced; it now lists matching page names and
prints text excerpts, with or without a catalog
(Dean Goodmanson, Simon Michael)

comments no longer re-render the whole page, so are much quicker
on large pages

when enabled (via show_subtopics property), subtopics are now
always displayed, except in minimal display mode. This makes
hierarchy more useful, but also will make large wikis slower and
use more cpu time when bots crawl the wiki.

By default, don’t leave placeholder pages when renaming any
more; configurable in Default.py

permissions fix: since splitting out the UI class, methods such
as editform were not respecting permissions

we no longer need to set up an allowed_page_types property to
disable WWML in plone

a SITE_CATALOG property no longer causes problems for setupCatalog
(it will use the specified catalog name)

fix a missing import which allowed problem pages to stop upgradeAll

code refactoring: extract Editing and Utils mixins, many
cleanups.

new defaultPage, defaultPageId, defaultPageUrl methods look for a
default_page property, or a page named “FrontPage”, or the first
page in the folder. Other new methods include: pageCount,
pageIdsMatching, pageNamesMatching, *Url helper methods for the
site navigation links

reparenting cleanup, bugfixes

allow creation of new pages from a webdav-locked page

cleanups, bugfixes, speedups for rename & delete plus some new
utility methods. rename was doing an unnecessary updatebacklinks
pass and reparenting all offspring not just it’s children and
just generally trying too hard.

set correct last editor when updating backlinks during rename

found the bugger that was leaving all those placeholder pages
when renaming

log more verbosely during renames to show what’s going on.

add update backlinks functionality to delete, similar to rename,
so you can enter a name in the page management form to have all
links redirected there after deletion (a “replacement page”).

default, zwiki_plone: new skin-based views - instead of the
DTML-based RecentChanges, SearchPage, UserOptions, IssueTracker
and FilterIssues pages, new wikis now use skin-based views
(similar to editform etc) by default: recentchanges, searchwiki,
useroptions, issuetracker and filterissues. As usual, these can
be changed by customizing the page template of the same name, in
the wiki folder or in the CMF or SkinnedFolder skins tool. If
you later want to switch back to page-based versions, eg for
easier tweaking, you can call /setupDtmlPages and /setupTracker.

default: the main wikipage template has been completely redone
using METAL macros and CSS (Dan McMullen)

default: the default skin uses a new UI method, stylesheet, to
find it’s stylesheet. This can be customized with a File named
either “stylesheet” or “stylesheet.css”. A page template or dtml
method may also be used, in which case the stylesheet will be
dynamic and will be reloaded for each page view.

default: adopt the latest zwiki.org look as default - use a
sans-serif font by default, use full browser window, indent page
content, cleaner/more styled context and subtopics. Has been
tested only with mozilla 1.6; assume other browsers can cope.

default: smarter site navigation links; work with page-based or
skin-based views as appropriate; show issues link only if there
are issues

make our skin directories available to FileSystemSite if
installed, to support a SkinnedFolder setup

contextX and renderNestingX are skinnable versions of context
and renderNesting, which may be used to present page hierarchy
in more flexible ways. (Dan McMullen)

fix an obsolete try except that was hiding errors in the default
wikipage template, show such errors in the browser as elsewhere

Reminder: the plone skin disables DTML-based pages (like
RecentChanges) by default now. If you wish to enable those you’ll
need to remove the ZWiki/skins/zwiki_plone/no_dtml.dtml file after
an upgrade.

hide the WWML page type option by default in cmf/plone, by
installing an allowed_page_types property on the portal folder
during install (for limi)

make new hierarchy methods more robust when a page has bogus
parents; also, check new parents more carefully. reparent() now
also accepts fuzzy page names & ids, removes duplicates, and
leaves parents sorted. The backlinks form’s parent text field
now interprets the string as a single page name, like the page
management form. (IssueNo0633, IssueNo0634)

context(with_siblings=1) no longer includes the current page’s
children, which I think was a regression. (IssueNo0629)

fix missing import that confused error messages during upgrades

log individual page upgrade errors in upgradeAll rather than
aborting the whole process

log STX rendering errors (eg from tables) rather than breaking
the page

added/cleaned up tests, all tests pass again, the
CMF/Plone-specific tests now work with (and require) plone 2 and
all it’s dependencies.

dublin core fixes, so wiki pages should show correct
modification time, ownership etc. in CMF/Plone

Skins and content

allow access to diff screens (but not full history button)
without ‘View history’ permission

Three permissions have been renamed, and wherever you have
configured these (‘Add ZWiki Webs’, ‘Add ZWiki Pages’ & ‘Zwiki: Add
comments to pages’) you’ll have to set them again with the new
names. You may want to review your settings before upgrading.
Sorry; it should be easy to write a script to automate this, I don’t
have one.

As usual, but especially if upgrading from a very old version, it
doesn’t hurt to visit SOMEPAGE/upgradeAll once as manager (except,
it may be slow in large wikis). This will ensure all your pages have
the latest attributes and have been rendered with the latest
code. Do this if you want to use the subtopics display option below.

From any page, visit these urls as manager to quickly set up
standard wiki features:

setupPages - install default wiki pages (like Add Wiki in the ZMI)

setupDtmlMethods - install index_html and standard_error_message

setupCatalog - install or configure a wiki catalog, with
appropriate configuration for optimizing large wikis.
CMF/Plone notes: this one is called automatically by the CMF
install script, to simplify installation. It adds all the
indexes and metadata that Zwiki expects from a catalog (see
setupCatalog or http://zwiki.org/ZwikiAndZCatalog for a
list). NB these will apply for all catalogable plone objects,
not just zwiki pages, but will (hopefully) be empty/harmless
for the non-pages.

These also work inside CMF/Plone, except for setupDtmlMethods
which may not work there.

pages() now always returns brains with complete metadata, even
when a partial catalog is present. This allows a number of
things, eg creating/renaming in a cmf/plone site where
setupCatalog has not been called, to keep working, at the cost
of more zodb access (IssueNo0623 and others)

Hierarchy navigation links and subtopics links

If your wiki folder has a true ‘show_navlinks’ boolean property,
the default skin in full mode will show a navigation links panel.
These are GNU Info-style next/previous/up links, with N/P/U quick
access keys respectively. See zwiki.org for an example.

If your wiki folder has a true ‘show_subtopics’ boolean property,
and the user is currently in full mode (their zwiki_displaymode
cookie is “full”): pages with children will have a “subtopics”
panel displayed, after the document part and before any
messages. (This will appear after the next edit, or after running
upgradeAll.)

Subtopics display can also be turned permanently on or off for a
specific page, and all pages below it in the hierarchy, by setting
an option in the default skin’s editform (requires ‘Zwiki:
Reparent pages’ permission). We may find a way to simplify this
later, ideas welcome.

Both of these options (navlinks and subtopics) are expensive in a
large wiki, even if you set up a catalog to optimize it (and you
should). When active they will slow page rendering down a lot
(ballpark figure: zwiki.org FrontPage goes from 0.1 to ~1 second).

regulations support dropped - this has been broken for some
time, and noone used it anyway because it makes life too
complicated. I’ll be removing and mothballing the code next
month, assuming no-one steps forward to make it worth
keeping. We might revive it in a simpler form later.

there is a new PREFER_USERNAME_COOKIE global option in
Defaults.py; set this true to allow username cookie to override
authenticated name. Useful for a simple community wiki protected
by a single shared login.

STX footnote links were broken by 0.22’s refactoring (IssueNo0605)

disable iframe tags by default, like javascript (IssueNo0588)

wiki link regexp tweak: remove unnecessary restriction on the
end character of bare urls, and allow single-character remote
parts in interwiki links

fix a bug in rename where children’s parents field was not
updated, leading to an error when you tried to view that child

make renaming’s update backlinks pass more robust and more
verbose (IssueNo0594, James Collier)

make post-delete redirect work when the parent is freeform-named

saving a page via ftp or webdav after removing the blank line
between headers and text was giving an error. (Dan McMullen)
This should fix the error (but may not do what’s wanted..)

convert more unit tests to ZopeTestCase; make MockZWikiPage a
bit more useful; first unit tests for cmf/plone and page
hierarchy functionality

Skins and content

default: the default skin has been rearranged somewhat, as at
zwiki.org; cf recent GeneralDiscussion. Less gray, widgets
grouped into panels, site links moved to top, annoying quote and
user bookmarks dropped, navigation links support. Note the
various site links appear only if you have a corresponding page,
following the names used at zwiki.org.

default wikipage: freeform names now work when reparenting via
the page management form. Only a single parent can be set there
now.

default, zwiki_plone editform: when creating a new page, default
to the wiki’s default page type, not the parent page’s type

default editform: fix an editform breakage with zope 2.5,
apparently due to a TAL difference

default, zwiki_plone backlinks: make the reparent form action
url more robust, to fix reparenting in CMF/Plone (IssueNo0610)

default backlinks: always explicitly list a page’s parents, as
well as it’s backlinks; don’t show reparent controls if user
does not have permission

a wikipage() UI method has been added, which you can use (in
portal_types -> Wiki Page -> actions -> view) to allow a non-CMF
skin like CommonPlace to be used inside a CMF/Plone
site. Possibly just a temporary hack.

quick access keys in the default skin have been rearranged - see
QuickReference

RecentChanges: latest zwiki.org code,
catalog-optimization-compatible, comment out old brute-force
code which should no longer be needed, fix last edit times when
there is no timezone cookie

UserOptions: make it function inside a CMF/Plone site too
(useful with alternate skins); remove no longer used quote &
bookmarks options; include valid Pacific timezones (except for a
couple which DateTime doesn’t support)
(IssueNo0595, James Collier)

SearchPage: catalog search improvements: make help text always
visible, search only within current wiki, also show page title
hits (but the default code assumes Title index is a TextIndexNG2
with left globbing and case folding enabled, otherwise may not
work so well)

zwiki_plone: the experimental skin-based versions of DTML pages
are now generated automatically and the tracker has been added
(untested). These are: recentchanges, searchwiki, useroptions,
issuetracker, filterissues.

Mail and messages

mailout signatures now include the precise message url

a whitespace + horizontal rule separator is inserted before the
messages section. You’ll see this after next page edit or
upgradeAll.

Control of page types and DTML has been simplified. NB in this
release wikis tend to allow embedded DTML by default. To disallow
it, add a ‘no_dtml’ property as described below.

The backlinksFor() and pages() methods have changed; Title() is now
preferred instead of title_or_id(); and RESPONSE is no longer
provided in the default namespace for skin templates (see below).
If you have DTML pages or customized skin templates using these
things, they may need to be updated.

If using a catalog, you should add the Title field to your metadata
if not already present. Use of title_or_id is being phased out but
you may want to leave it in your catalog until Zwiki 0.23 to be
safe.

General

page type cleanups and DTML changes: deprecated page types have
been removed, as have the non-DTML-supporting STX and HTML types.
DTML is now controlled as follows: a ‘no_dtml’ property (value
doesn’t matter) on page or folder will disable Zwiki’s DTML
functionality below that point. You can set this on the root
folder to disable it server-wide.

NB: non-CMF wikis, and CMF/Plone wikis which don’t use the
zwiki_plone skin, are DTML-enabled by default for the moment. The
zwiki_plone skin includes an empty ‘no_dtml’ method which disables
DTML. To enable it in all your CMF/Plone wikis, you need to remove
ZWiki/skins/zwiki_plone/no_dtml.dtml and restart zope, (or switch
to a similar skin without that file).

the ‘allowed_page_types’ lines property is supported again. It
does not prevent setting any type, but is used to restrict the
types offered in the default edit form. All supported types are
offered by default. The type of new pages, if unspecified, now
defaults to the first of the wiki’s allowed page types. The
‘standard_page_type’ property is no longer supported.

zodb caching improvements for large wikis: many operations which
used to load all or many pages into cache will no longer do so if
a suitably configured catalog is available. This can greatly
reduce cache activity and peak per-transaction memory usage for
large wikis, improving performance and server uptime. Renaming and
deleting are still relatively memory-expensive; more optimizations
to come. To fully benefit, you should have a wiki catalog with
meta_type, id, Title, path, canonicalLinks, isIssue indexes and
id, Title, issueColour, parents, links metadata (IIRC). NB most
wikis don’t need to worry about this. See
http://zwiki.org/MemoryUsage for some more details.

the pages() method now returns catalog brains if possible,
otherwise brain-like objects (if there is no catalog), rather than
(expensive) page objects. It will also pass keyword arguments to
the catalog, if there is one, so is convenient for searching among
the pages of the current wiki (only). pageObjects() provides the
old behaviour.

likewise, backlinksFor() now returns either catalog results or
similar brain-like objects. Old custom backlinks templates should
still work without upgrading, except in this (unlikely) case: when
there is a catalog with meta_type, path, and canonicalLinks
indexes but without page_url and linkTitle metadata.
(with help from Magog)

the rendering code uses a simpler, more memory-efficient
pre-rendering and pre-linking scheme. The relative_urls property
is no longer supported.

DTML-enabled pages now invoke DTML only when there is code in
the page, to avoid unnecessary parsing and reduce our memory
footprint.

wiki link titles (last edited info in tooltips) have been
disabled for the moment.

three new boolean properties are supported, on page or folder:
use_wikiname_links, use_bracket_links, use_doublebracket_links,
for configuring your linking syntax of choice (lightly tested).
You’ll need to run /clearCache or /upgradeAll after changing these.

be smarter about choosing where to store uploaded files - when
checking for the “uploads” subfolder, make sure it is a subobject
of the wiki folder, and make sure it is folderish.

pages are now reindexed after being reparented, when a catalog
is present

catalog lookup behaviour has changed:
“By default, Zwiki looks for an object named ‘Catalog’ in this wiki
folder (will not acquire) or a ‘portal_catalog’ (can acquire).
If a SITE_CATALOG property exists (can acquire), Zwiki will look
for an object by that name (can acquire); if no such object
exists, or SITE_CATALOG is blank, no catalog will be used.”

new catalogId() method returns id of the catalog in use, or
NONE. Requires ‘Manage properties’ permission.

hasCatalog() is now public

getPath() is now supported

Title() is now always provided and is equivalent to pageName().
Use of title_or_id is now deprecated; DTML pages and skin
templates should use Title instead, to take best advantage of
future catalog optimizations etc.

ChangeLog is no longer provided in releases for the moment, to
simplify maintenance

Skins and content

RESPONSE is no longer provided in the namespace for DTML Method
skin templates; they must use REQUEST.RESPONSE (code simplification)

new methods recentchanges(), searchwiki(), useroptions() provide
experimental skin-based implementations of these wiki pages, which
can be used when DTML pages are not allowed. The included
implementations are preliminary and unskinned (but customizable);
they are DTML methods so as to reuse code from the evolving
page-based implementations, but you can also use page templates.

if a SiteMap page exists, the “site contents” link in full mode
will point there instead. Also contents() now accepts a ‘here’
page name argument to allow this page to control the “you are
here”. See http://zwiki.org/SiteMap for an example.

default skin: reduce subject field width again to “fix” too-wide
comment form

default editform: show the page rename field as in the plone skin
(but display only if the user has rename permission)

default search field & SearchPage: use GET when searching, for
more useful URLs

default, zwiki_plone editform: show the STX and HTML page types
with “(+ DTML)” when DTML is allowed

default, zwiki_plone editform: clear the “sticky” last log note when
creating a page

default, zwiki_plone: make the editform’s non-allowed page type
warning show the developer name again, not the end-user name

default, zwiki_plone: if a user edits a page again within 24
hours, re-use their last log note by default (idea: Dean
Goodmanson)

default, zwiki_plone skins: editform code cleanups. The options
used by the editform template are now ‘page’, ‘text’ and ‘action’
as described in the comments. ‘id’ and ‘oldid’ options are no
longer used (but are still provided by Zwiki, for backwards
compatibility with old templates).

zwiki_plone editform rename support: you can now rename a page
via the edit form. A placeholder page will be left behind and
links on other pages will be updated if possible (this may need to
be made more robust). This ensures Zwiki-compliant page ids,
makes wiki page renaming possible in plone and makes wiki page
creation via the CMF/Plone content management interface work
better. Also, as a special case, if you are editing the sole page
in the wiki the page name field will default to “FrontPage”, which
latest Plone will display by default. To support this, edit() and
create() now also do a rename if a new name is passed in the
“title” argument (so named for backwards compatibility).
(idea: Alexander Limi)

Page types have been simplified and renamed (both the end-user and
developer names) as mentioned below. If you have standard_page_type
or allowed_page_types properties on your wiki folders, you should
update them to the latest types (in the left column below):

I have dropped python 1.5.2 compatibility as of this release; this
allows us to use more up-to-date python 2.1 features and means zwiki
0.20 and later won’t run on very old zope installations.

The comment method’s arguments have changed.

General

more page type simplifications:
As shipped, Zwiki now supports four main wiki page types and
three non-wiki page types:

A wiki will offer a restricted subset of these in the editform:
Structured Text, reStructured Text, WikiWikiWeb markup, and HTML
by default. To offer other types, set a custom
allowed_page_types lines property on your wiki folder (or change
ALLOWED_PAGE_TYPES in Defaults.py).

new message storage format:
Comments are now stored as rfc2822-style messages in mbox format
(think of a wiki page with an mbox stuck on the end). This looks
more verbose in the page source, but allows rich message data to
be stored in a standard way. Messages must begin with “strict”
mbox-style ‘From ‘ separators. (If you ever need to add these,
upgradeMessages may help.) Messages stored in this way are
formatted for display with numbers and named anchors
(#msgN, #msgidXXX, #messages). Message bodies are formatted with
the usual text formatting rules. Message-id and in-reply-to
headers are stored and threads are preserved when posting via
web. This behaviour has been added to all the main page types, but
some features require STX mode at present.

fill paragraphs in mailouts, finally. Also wrap at column 70,
not 78. (IssueNo0340)

try to preserve indentation in mailouts somewhat. Each paragraph
will be re-indented as per it’s first line. This means indentation
within a paragraph will be lost, and a paragraph with only it’s
first line indented will become wholly indented. Hopefully this
will be better than the old policy of throwing away all
indentation. (IssueNo0538)

prevent duplicates when integrated with a mailing list, by
excluding the address in the X-BeenThere header from mailout.
(comment’s do_mailout argument replaced with exclude_address)
(IssueNo0519)

a true auto_subscribe folder property will cause any commenters
to a page to be subscribed there (authenticated/usernamed
commenters, at least)

exclude a page named “TestPage” from whole-wiki subscription.
Page subscribers will still receive mail from it.

Tracker

supply default categories, severities, statuses lists for the
issue properties form if they have not been defined. This should
allow “IssueNoXXXX ...” pages to work in any wiki without
additional setup.

tolerate whitespace in the issue_colours list

Skins and content

zwiki_plone: added the last basic elements of the Plone styling,
cosmetic change to footer, external edit link moved to header.
(Alexander Limi)

default, zwiki_plone: make editform tolerate an out-of-date
allowed_page_types property (if allowed_page_types contains type
that no longer exists, we just list it with the others and rely on
auto-upgrade to fix the page); also tolerate whitespace there

preliminary reStructured Text support, based on Andreas’ and
Richard’s work.

page types cleanup. Retired a bunch of old types, added new ones.
Fit tests and issue properties form support is now standard.

New allowedPageTypes method returns the allowed page types for
the wiki, defined in Defaults.py or an allowed_page_types
folder lines property. Only these types can be selected when changing
the page type (except in ZMI). Note: at present a new wiki will not
allow DTML-enabled types, so if a user edits one of the DTML pages
like RecentChanges it’s type will change, disabling it. The edit form
gives a warning in this situation.

when creating pages, don’t inherit page type from the parent -
use either the wiki’s standard_page_type, the specified type, or
the zwiki default. Should make administration simpler.

creationTime and lastEditTime now always return a valid DateTime

new page methods: ageInDays, lastEditIntervalInDays

standard_error_message was getting instantiated as a wiki page in CMF
(IssueNo0510)

If you have a cmf_install_zwiki external method, refresh it after
installing this release (by saving it, or restarting zope).

The new zwiki_plone skin replaces the zwiki_cmf skin; although the
latter is still shipped it will hopefully go away soon. An existing
CMF zwiki should keep working as before. To change it over to the
zwiki_plone skin, do this:

2. in the properties tab, remove zwiki_cmf (and zwiki_orig) from
all skins

run the install method again (CMFSITEURL/cmf_install_zwiki)

Structured text headings will get bigger next time you save the page
(or visit SOMEPAGEURL/upgradeAll to re-render all pages).

General

structured text headings now start at H2 not H3

when using regulations, don’t require change regulations
permission just to comment (IssueNo0485)

be more robust displaying pages with old-style page ids that
have not yet been upgraded (IssueNo0495)

use precise links in contents, rather than depending on
standard_error_message (IssueNo0454, Leslie Barnes)

when saving a page via external editor/ftp/webdav, don’t require
a space after the : in the safety belt/type/log headers. Was
causing a name error with external editor + emacs whitespace mode
(IssueNo0438, Andrew Burrow)

if there is an id renaming collision during upgradeAll, just log
the error and continue (IssueNo0483)

edit conflict & lock dialogs were giving NameErrors

new method: ancestorsAsList

Skins and content

a fully functional Plone (and CMF) skin, at last! The
zwiki_plone skin provides most current features of Zwiki’s default
skin, within the standard plone UI. It should also be functional
for CMF sites, allowing zwiki_cmf to be retired. (Alexander Limi
funded by Walt Ludwick, with Simon Michael, Sidnei da Silva, Alan
Runyan)

skin code fixes; Zwiki accepts Page Templates, Filesystem Page
Templates, and DTML Methods as skin objects, and will warn if any
other type is found.

UserOptions was not honouring the redirectURL argument if just
clearing cookies

tweaked blank subject comment heading format.. not happy with it
yet

Mail

mailouts were failing when creating a page with no initial text

make comment mailout work when there is no subject_heading field
(IssueNo0481, az` on irc)

Tracker

when changing issue properties, add a user-supplied or default
comment to the page recording what was done (DeanGoodmanson)

If you have pages with punctuation in the names, or zwiki tracker
issues, you’ll need to change their id/name. See below.

If you have a tracker in your wiki, you’ll also need to install the
latest IssueTracker/FilterIssues pages and add a new ‘isIssue’
FieldIndex to your catalog. Also, in a large wiki you may find
changing issue descriptions is much slower than before. See below.

issuedtml and stxprelinkdtmlhtml pages will be auto-upgraded to the
new stxprelinkdtmlfitissuehtml type.

The CMF install method in Extensions has been renamed to Install.py.

General

Simpler page ids

Page ids are now always derived from the name (title). This
improves performance, removes a source of confusion, but means
pages can no longer have a totally different title and id (like
tracker issues used to). Also, page ids no longer include
punctuation, and fuzzy links now ignore punctuation.

Pages with old-style ids should be renamed so that wiki links to
them will work. You can upgrade these pages and update links
throughout the wiki by visiting SOMEPAGEURL/upgradeAll. This
may take a long time; you can watch progress in the debug
log. It’s safe to run this more than once. Alternately, you can
visit SOMEPAGE/upgradeId to rename and relink a single page.

Some incoming links may break due to url changes; having the
zwiki standard_error_message installed will help.

Improved performance and memory efficiency

Link rendering is faster due to the new ids and code
refactoring.
(Unscientific ab test: roughly a 4x speedup rendering a
normal page and 20x for a long one.) Also, zwiki is no longer
so eager to load all pages into the zodb cache. Certain
operations will still trigger this (search, rename) but in
general use, a zope serving large wikis should now use less
memory. This may also help your performance and reduce “first
page render” delay.

new/improved page lookup methods: pages, pageIds, pageNames,
pageIdsStartingWith, pageNamesStartingWith,
firstPageIdStartingWith, firstPageNameStartingWith, pageWithId,
pageWithName, pageWithNameOrId, pageWithFuzzyName. Use these in
your DTML code when possible as they will be optimized. pageWith*
now return a correct acquisition wrapper (fixes IssueNo0472).
pageWithFuzzyName’s ignore_case has no extra cost now and is
always on. The argument is left in place for backwards
compatibility for the moment. Also this may have been acquiring
pages, fixed.

new general-purpose page type incorporating issue and fit
support: stxprelinkdtmlfitissuehtml. stxprelinkdtmlhtml and
issuedtml pages are auto-upgraded to this. This page type
displays an issue properties form if the page name begins with
IssueNo. Also, any tables whose first cell begins with “fit.” or
“fittests.” are run as fit tests at page view time.

Intuitive fixed-width tables using | as a column delimiter. I
purely hate the STX tables, which do everything except the most
obvious formatting everybody wants.

Ability to use images as page names with [image-url]

Ability to generate blockquotes by using = instead of *

Ability to force a BR in definitions using \

Probably some other things I’ve forgotten.

Skins and content

the latest zwiki.org RecentChanges: fix a mispaced try which
allowed errors, be less chatty about brute force/catalog, move
note field next to page name, drop the “use table” option and the
T issue indicator.

edit form layout improvements

lose the gray title background and use site logo on all “form” pages

Made the diff form skinnable: support a ‘diffform’ page template
or dtml method accepting two arguments: ‘revA’ and ‘difftext’.

don’t send mailouts from a page named TestPage, whether or not it has
[test] subject; log discarded [test] mailouts

CMF

cmf_install_zwiki.py has been renamed to Install.py (IssueNo0460)

Tracker

Issue pages have a new naming scheme to conform with the new
page ids: “IssueNoNNNN issue description”. upgradeAll will take
care of this for you. Old IssueNoXXXX urls will still work if
you have standard_error_message installed. You need updated
IssueTracker/FilterIssues pages which can be found in
ZWiki/content/tracker. A new ‘isIssue’ FieldIndex is required in
the catalog.

changeProperties has been replaced by changeIssueProperties.
This does a full page rename, with link updating, when changing
an issue description (slow).

The ‘issuedtml’ page type is deprecated; the new combined
‘stxprelinkdtmlfitissuehtml’ type is used instead. Old issue
pages will be auto-upgraded. See also HowToInstallAZwikiTracker.

If you use the new page type throughout, you can change an
ordinary page into an issue by renaming it “IssueNo...” and vice
versa.

don’t store page names in recipient real name. This seems to
create more confusion than it solves. mailin.py’s checkrecipient
option is now off by default, and the line in Mail.py:sendMailTo()
which puts the page name in mailouts’ reply-to is commented out.

don’t recognize bare wiki names in mailin subjects - only page
names enclosed in brackets. Explicit is better than implicit.
More details on http://zwiki.org/WikiMailDiscussion, please
comment there if you don’t agree with these changes.

non-headed comments were sending error reports to mail_admin
if configured

Skins and content

default: some fixes for valid HTML (Pieter Biemond, IssueNo0399)

default, zwiki_orig: increase max quote size in header to 300

zwiki_orig: get rid of the javascript double-click

General

leave unknown link titles blank instead of showing “xxx zwiki bug”

a comment’s subject (explicit from a field or inlined) is now
used for the transaction log regardless of the use_heading checkbox.

If you don’t use mailin, no need to upgrade. After installing this
you’ll want to click your external method’s save button to update
it. Note this version of mailin.py drops the special virtual host
support.

If you have mailin set up and find replies going to the default page
instead of the originating page, see IssueNo0376.

CMF

rename CMFInstall.py to cmf_install_zwiki.py

CMF skin support. zwiki_cmf is a lightweight CMF skin for zwiki;
zwiki_orig is a CMF skin that looks like zwiki’s standard UI

fix edit permission in CMF (IssueNo0366)

fix a timezones error when in CMF

make wiki folder & page management work in cmf/plone

catalog lookup changed: look for a CMF portal_catalog;
look for SITE_CATALOG on page and containing folder only

when creating a Wiki Page in CMF, allow the standard_page_type
folder property to control it’s page_type.

hide user options when in CMF

Mail

look up destination page in the recipient’s real name (first);
mailouts will encode the source page in the reply-to’s real name.
This should make addressing and replying more natural.

allow subject headings in mail and web comments. (To set the subject
from a web comment, use an initial one-line paragraph that is bold
(using ‘** or < b>’) and no longer than 100 characters.)
Subjects are saved as edit log note and vice versa.

generate a mailout when pages are created

mailin page creation fixes

mailin: handle freeform page names

mailin: work even when default page is not found, as long as
there’s at least one wiki page in the folder.

mailin: add some failure logging

look for ‘mailin_policy’ property instead of ‘posting_policy’;
the latter is still supported but deprecated

See Regexps.py for notes on configuring international page names.
When running large & extensively cataloged wikis, you might notice
this version being more memory intensive than 0.10 (which itself may
be more memory hungry than 0.9.9). This release should coexist with
CMFWiki without problems. Otherwise the usual, see
http://zwiki.org/TenMinuteZwikiUpgradeGuide &
http://zwiki.org/HowToUpgradeZwiki for more.

Misc

better support for (single-byte) international characters in
page names & ids; enable out of the box, with or without a locale
set up (IssueNo0257)

support page templates as well as dtml methods for editform,
subscribeform, backlinks and for main page layout (a page template
named wikipage will take precedence over standard_wiki_header &
standard_wiki_footer dtml methods). The page body is passed to in
wikipage as options/body. The following additional options are
passed to editform: page, text, action, id, oldid.

built-in defaults are now read from the filesystem. Defaults
for standard_wiki_header/standard_wiki_footer are still provided
but no longer quite as up-to-date and probably will be deprecated.

display a convenient page rename/reparent/delete form in the
footer in full mode if the user has a username (and permissions)

external editor support

make backlinks dtml more robust (IssueNo0210); fixed a case
where the parent checkbox didn’t show up; now uses a catalog if
available to provide accurate fuzzy backlinks

upload permission was incorrect in editform (IssueNo0178)

removed “Show advanced edit form” option

ensure comment form depends solely on Add comments permission

fix white space in center of footer in NS 4.7

don’t show “sp” for spacer image in text-mode browsers

a missing slash caused edits to fail in netscape 4.7

added secret AnnoyingQuote edit link

better support for web robots - removed robot-excluding meta tag
from standard_wiki_header/wikipage, added robot exclusion tag to
editform/subscribeform/backlinks; use form buttons instead of
links to keep robots out of page history etc.

Pre-rendering support: new page types (used by default) process
text formatting rules and wiki linking rules once at edit time.
This makes rendering of large pages much faster (possibly at the
expense of quicker zodb growth). Also allows us to accurately
catalog links.

Better freeform page names - square brackets now allow almost
any page name, not just those with url- and zope-id-safe
characters. Freeform names are converted to wikiname-like page ids
and either may be used for linking, supporting co-existence of
freeform and wikiname pages.

wikimail/editform/subscribeform/backlinks page templates will be
used in preference to standard_wiki_header/standard_wiki_footer/
editform/subscribeform/backlinks DTML methods. The page body is
passed to wikipage as options/body. These options are passed to
editform: page, text, action, id, oldid.

page types renamed. Here is the current list of page types (see
AllAboutPageTypes for details):

You’ll need to make a note of your zwiki permissions settings before
upgrading and recreate them after this upgrade. You’ll find all the
new permissions at the bottom of the security page, aside from the
Add permissions which are unchanged. Also you may have dtml which
checks for the old permissions and needs to be updated. For example,
the wiki templates refer to the permissions by name in
standard_wiki_header, standard_wiki_footer and editform.

zwiki page ‘subscribers’ property replaced by ‘subscriber_list’
property; the folder also now exposes this in the ZMI. Upgrade
notes: old pages will be upgraded as needed, this will affect
the last-modified times.

wikimail: mailout now requires either a ‘mail_from’ or
‘mail_replyto’ folder property. If ‘mail_from’ is present, always
use that for the From: field. Otherwise, show the poster’s email
address or user name. (closes IssueNo0122)

auto-cataloging no longer requires DTMLDocumentExt and adding a
zwiki page no longer gives “AttributeError: index_object” if it’s
not present. (IssueNo0054). Zwiki uses the catalog specified by
the SITE_CATALOG property, or “Catalog”, or none.

the add zwiki web form complained “list.remove(x): x not in list”
due to missing ZWiki/wikis/DEFAULTS, fixed (IssueNo0043)

includes the experimental ‘issuedtml’ render method used by
ZwikiTracker

zwikidotorg template: UserOptions was not displaying the
username field properly

a somewhat important change that also went in last release:
responsibility for generating the page header and footer
has been moved into the render_* methods

another zwikiwebs change. The ‘Add ZWiki Web’ form now looks
for wiki templates in both the filesystem (.../ZWiki/wikis/) and
the ZODB (/Control_Panel/Products/ZWiki/), with filesystem taking
precedence. The zwikidotorg template is shipped (via filesystem)
as the default; additional templates can be installed in either
place, or not, at user discretion. Auto-import of zexp’s has been
disabled. (credits-to: CMFWiki)

new comment method added, just like append but convenient for
adding standard comment headings

long lines are wrapped before diffing, and long diff chunks are
abbreviated, for better readability in email. Currently it
displays up to 10 deleted lines and up to 50 added lines.
(credits-to: Hamish Lawson’s TextFormatter)

lasttext and the diff methods accept one or more revision arguments
(counted backwards from the latest revision).

the old html-format diff has been demoted to oldDiff. The new one
colourizes textDiff’s output and adds whizzy navigation links for
stepping through the edits. (Click on the page timestamp).

zwikidotorg template: automatic comment headings now available on
all pages and enabled by default on *Discussion pages; horizontal
rules now used

moved zwiki web creation into core python product, so the manual
ZWikiWebs import is no longer needed. The sample wikis are now
shipped as individual zexp’s in ZWiki/import, and are
automatically imported to /Control_Panel/Products/ZWiki at product
startup. (Install your own sample wikis there as
well). /Control_Panel/Products/ZWikiWebs can be deleted.

creating/editing/deleting pages with eg spaces in the name has
been broken for a while, it seems - made some fixes in this area

made the edit conflict message more helpful

relaxed edit conflict checking: if your username & ip address
match the last editor’s, the timestamp will be ignored. In other
words, you can no longer have an edit conflict with yourself.
This means eg you can backtrack in your browser, edit and click
Change again. This change may disable conflict checking amongst
anonymous users coming through a proxy.

renamed the “username” property to “last_editor”, added
“last_editor_ip”, made these read-only in the mgmt. interface.
Existing zwiki pages are upgraded when viewed. dtml-var username is
still supported for backwards compatibility, but deprecated; use
dtml-var last_editor_or_ip by preference.

ZWiki is now zope 2.2-compatible (Garth Kidd) and -requiring,
and benefits from the 2.2 security model. Executable dtml pages
now run with those permissions that are common to both the
page-viewing user and the wiki web’s owner. Set the folder’s
owner to limit the permissions of executable pages.