Release Notes

Version 2.0.beta37 (26-May-2005)

This version performs some minor bug fixes and improvements:

  • Changed the location in which $SearchIncl, $SearchExcl, and $SearchGroup are set
  • Fixed bug in setting of $SearchExcl
  • Added filesize check after new page is written to disk but before replacing existing page
  • Added $LinkUrl and $LinkAlt to urlapprove.php

Version 2.0.beta36 (30-Apr-2005)

This release fixes a rather large bug with excluded terms in the pagelist code, and a very minor bug with generating cells if there are spaces after the final '||' in a simple table.

Version 2.0.beta35 (24-Apr-2005)

This release fixes some bugs in the new pagelist code.

Version 2.0.beta34 (23-Apr-2005)

Version 2.0.beta33 (22-Apr-2005)

This release introduces a major redesign to the functionality and speed of scripts/pagelist.php, which provides the support for (:pagelist:) and (:searchresults:) markups. This version now supports a link= parameter to return pages with links to some target page (i.e., "backlinks"). We also now have "order=" and "count=" parameters that can be used to sort the listed pages and limit the length of the display.

However, the changes also mean that it's possible that any local customizations or cookbook recipes that depended on the previous pagelist code will no longer work, so be careful when upgrading.

This release also optimizes the rendering of page links and fixes a performance bug in the FmtPageName() function. These changes have been observed to improve page rendering times by up to 40%.

What remains before the 2.0 official release: redesign of the edit page form, addition of a "comments" feature, and fixing PmWiki documentation.

Lastly, the trailing ?> sequences have been removed from all scripts to simplify installations on VMS and other environments that have trouble with newlines after the closing ?>.

Version 2.0.beta32 (17-Apr-2005)

Version beta32 adds the $RCLinesMax variable, which limits the maximum number of lines that are saved in RecentChanges files. The default is set to zero, meaning "no limit".

Version 2.0.beta31 (15-Apr-2005)

This release adds the ability to store and serve attachments (uploads) from directories that is not directly accessible to the webserver. The "download" action (?action=download) tells PmWiki to retrieve an attachment associated with the current page. This can be used for protecting attachments via a page's passwords, or for working around webservers that cannot access files in the PmWiki-created uploads/ directories.

Setting $EnableDirectDownload=0; tells PmWiki to generate links to ?action=download to retrieve attachments instead of accessing the attachments directly through the webserver. Note that this setting by itself may not be enough to protect uploads; one may need also need to to configure the webserver or uploads/ directory to block direct requests to the webserver for attachment files.

This release also adds $EnableFixedUrlRedirect. When PmWiki receives a url with a "partial pagename" (such as the name of a WikiGroup), it first determines the correct "full name" for the page. Normally PmWiki then issues a "redirect" to the browser requesting the browser to reload the page with its full, "official" url, but setting $EnableFixedUrlRedirect to zero will suppress the reload so that the determined page is sent immediately (and keeps the same url used to access the page).

Version 2.0.beta30 (14-Apr-2005)

This release works around some problems with PHP sessions resulting in deadlocked web processes. The changes to the authorization code in 2.0.beta29 greatly increased the likelihood of such deadlocks, so all sites running 2.0.beta29 are encouraged to upgrade to this one.

This release also changes the wikiword-handling functions so that wikiwords are no longer spaced if $LinkWikiWords is disabled.

Finally, this release adds $PageTextStartFmt and $PageTextEndFmt to allow local customization of the container surrounding <!--PageText?--> in skin templates.

Version 2.0.beta29 (11-Apr-2005)

This release incorporates some significant changes in the authorization and page storage code, so production-level sites might want to wait for any new bugs to found and fixed before upgrading. Or, go ahead and upgrade but be prepared to revert back to beta28 or earlier if you start to notice problems.

However, I do need lots of testers for the new code in this release, of which there's a fair bit. Thus, I'd greatly appreciate any help people can provide with testing the new system and suggesting improvements. I'm particularly looking for suggestions about how the interfaces can be made easier to understand.

The Page Attributes form (reached via ?action=attr and used to set passwords) has been improved so that it's now possible to see which passwords have been set, and if those passwords are coming from the group or site defaults. For an example, see http://www.pmwiki.org/wiki/Test/AttrExample?action=attr . These prompts are not yet internationalized -- I want to get the english interface finalized first and then we'll make the i18n strings for it.

Multiple passwords (separated by spaces) can now be set on pages and groups, thus entering "one two" for an edit password will means that either "one" or "two" will be accepted. Because of this, passwords cannot contain spaces (I hope this won't be a major loss -- let me know if it will).

The password request field now appears within a normal skin layout (i.e., with header, sidebar, footer); previously requests for passwords were undecorated forms that appeared alone in the browser window.

There is an (:if auth ...:) conditional markup available for processing depending on the current authorizations in effect. For example, one can create a bullet list with

    
    (:if auth read:)* [[View page -> {$Name}?action=browse]]
    (:if auth edit:)* [[Edit page -> {$Name}?action=edit]]
    (:if auth upload:)* [[Attachments -> {$Name}?action=upload]]
    (:if auth attr:)* [[Page Attributes -> {$Name}?action=attr]]
    (:if auth admin:)* You're logged in as admin
    (:ifend:)
    

and only those items corresponding to the user's current authorizations will appear. This should be very useful in creating action buttons.

Assuming there's already some mechanism in place for identifying and authenticating someone, pages can specify a password field of "id:xyz", which means to allow only user "xyz" the specified access. For example, specifying an edit password of "id:alice" means that only user "alice" (and the admin) is allowed to edit the page. Multiple ids can be specified as either "id:alice,bob,carol" or "id:alice id:bob id:carol". The special value "id:*" is used to mean any authenticated user, and users can be excluded via the minus sign, as in "id:-eve,*".

User-based authentication can completely coexist and mix freely with password-based authentication, thus an edit password of "id:alice glorp" will allow Alice and anyone who knows the password "glorp" to edit the page.

2.0.beta29 supports only REMOTE_USER authentication; future releases will add other authentication mechanism.

Version 2.0.beta28 (27-Mar-2005)

This release makes some substantial improvements to the attachments/uploads feature in PmWiki. The specific enhancements include:

  • The Attach: markup can now be used to reference attachments on other pages; the syntax is Attach:pagename/file.ext. The "pagename" can refer to pages in other groups.

  • Attachments automatically have the file extension (if any) converted to lowercase.

  • The (:attachlist:) markup now accepts parameters; ext= can be used to limit the list of attachments to specific extensions, and one can supply a page's name to obtain a list of attachments for that page (e.g., (:attachlist Group.PageName:).

Version 2.0.beta27 (26-Mar-2005)

This release makes a number of minor changes and bugfixes. The more significant changes are listed below.

  • The localmap.txt and farmmap.txt files can now contain $-variable substitutions (same as any variables available through FmtPageName).

  • Most built-in directives are now case insensitive.

  • The (:markup:) directive now has a (:markup:) ... (:markupend:) version. The previous (:markup:) [=...=] syntax is still supported, but may change in future releases.

  • A bug was fixed with preformatted text eating the leading whitespace character.

  • Added the missing {$FullName} markup.

  • Fixed a bug in the handling of $MetaRobots.

Version 2.0.beta26 (5-Mar-2005)

This release adds support for edit page templates; i.e., site administrators can specify the default text for new pages. More details are available at Cookbook:EditTemplates.

Version 2.0.beta25 (2-Mar-2005)

Version 2.0.beta24 (1-Mar-2005)

This release contains an important correction to the processing of QUERY_STRING parameters, and changes to the way that PageNotFound messages are generated. These are needed to prevent webcrawlers (notably the one used by inktomi) from generating long sequences of links to non-existent pages.

This release also adds a ParseArgs() function to make it easier for cookbook recipes and other components to parse directive arguments. Documentation for the function will be forthcoming at Cookbook:ParseArgs.

List and heading markups have been changed to consume any single space character that follows the list or heading marker.

A $EnablePostAttrClearSession switch has been added to control whether or not changing a page's attributes causes any existing passwords to be forgotten. The default is that changing attributes forgets any passwords entered; this can be changed by setting $EnablePostAttrClearSession to zero.

Version 2.0.beta23 (24-Feb-2005)

This release adds a couple of improvements.

First, the passwording system has been improved slightly to hopefully make passwords a little less confusing (although more improvements are coming). Previously PmWiki would remember all passwords previously entered during the current browser session. In this release, changing a page's password causes PmWiki to "forget" all of the previously entered passwords, thus eliminating the confusion that arose when a page would appear unprotected when in fact a previously entered password was authorizing access.

This release also adds as $EnablePageListProtect option. When set, the (:pagelist:) and (:searchresults:) directives will exclude pages for which the browser does not have read authorization.

Version 2.0.beta22 (23-Feb-2005)

This release makes some feature enhancements and some bugfixes.

The skins loading code has undergone some enhancements and substantial rewriting, but it should have no negative impacts on existing skins. The $BasicLayoutVars variable has been deprecated and is no longer needed. This version introduces a SetTmplDisplay?() function that makes it easier for local customizations to disable sections of a skin template.

The password prompt form has been customized so that the cursor is automatically placed in the form when the page is loaded.

The ?action=source action has been fixed for pages with characters outside of ASCII.

The graphical button bar can now be used for buttons with arbitrary HTML elements (e.g., "save" and "preview" buttons).

Other changes are noted in the ChangeLog.

Version 2.0.beta21 (13-Feb-2005)

This version has a number of changes. The major change that could (but shouldn't) affect some sites is that PmWiki has changed its default umask from 000 to 002, which will improve the default permissions for files and directories created by PmWiki for some sites, while (hopefully) not affecting others.

Many of you probably don't know (or care) what a umask is. If everything still works after upgrading to this version, you can continue to not know or care. However, if after upgrading to this version you start seeing file permission errors where you weren't seeing them before, try adding the line

    umask(0);

to your local/config.php and things should work again. (And be sure to report that you ran into trouble so we can investigate and improve things for the next version!)

This release also changes the <title> tag generated by ?action=rss to properly honor the (:title:) setting on various pages.

Finally, the release fixes some minor bugs in the HTML generation for simple tables, corrects some bugs with settings for $AuthorPage and $AuthorLink, and makes some cookbook-related additions to the v1 conversion script.

For more details, see the ChangeLog.

Version 2.0.beta20 (30-Jan-2005)

This version has a number of relatively minor changes.

First, the $UrlLinkFmt variable has been modified so that links to external urls automatically have a rel='nofollow' attribute added to them, to help combat wiki spam as described in http://www.google.com/googleblog/2005/01/preventing-comment-spam.html. Site administrators can customize $UrlLinkFmt and $UnapprovedLinkFmt to supply or omit rel='nofollow' as appropriate.

The algorithm for creating page names from [[free links]] has been modified slightly. First, letters following a hyphen are no longer automatically capitalized, thus [[page-link]] refers to a page named "Page-link" and not "Page-Link". This is more compatible with version 1's naming syntax. Also, single quotes don't promote the following letter to uppercase, thus [[John's page]] now links to JohnsPage and not JohnSPage.

Sites that want to keep PmWiki 2's prior behavior can do so with the following:

    
    $PageNameChars = '-[:alnum:]';
    $MakePageNamePatterns = array(
      "/[^$PageNameChars]+/" => ' ',
      "/(\\b\\w)/e" => "strtoupper('$1')",
      "/ /" => '');
    

The localmap.txt InterMap file can now contain comments (denoted by leading '#' in the file).

Headings (!! markup) can now have block wikistyles.

More information is available in the PmWiki.ChangeLog.

Version 2.0.beta19 (17-Jan-2005)

PmWiki uses PHP's sessions for tracking passwords and page authorizations; however, if a session times out (or is otherwise lost) while an author is in the middle of editing a password-protected page, the author's edits may be lost when re-prompted for the password. This release fixes this problem by preserving the edit text and other posted form variables when prompting for a password.

Version 2.0.beta18 (17-Jan-2005)

This release makes improvements to the gui buttons, fixes some bugs, and minor other improvements and changes.

Alternate text is now valid inside of WikiTrails; i.e., one can use <<|[[TrailPage | alternate text]]|>> to change the text of the link to the trailpage.

The GUI button module has a number of changes.

  • New images are provided for lists, indentation, headings, and tables, and the sample-config.php file has examples for configuring these additional buttons into the bar.
  • The "Heading 3" button has now been changed into separate "Heading" and optional "Subheading" buttons.
  • The "Attach:" (paperclip) button appears in the bar only if uploads are enabled for that page.
  • For browsers that support it, clicking one of the buttons that adds text will leave the text highlighted (to make it easier to replace the text).

This release also eliminates the <p>...</p> tags that were being generated around markup lines that contained other HTML block markups (e.g., search results, page listings, forms). As a result, these pages are now valid HTML and pass the W3C validator.

$HTMLHeaderFmt has been changed so that skin designers can completely turn off the inline-styles mechanism used by PmWiki and other cookbook modules. To disable the inline styles, use $HTMLHeaderFmt['styles'] = ''; .

Finally, this release fixes a call to setlocale() which was supposed to only return the current locale but instead was causing the locale to change.

Version 2.0.beta17 (12-Jan-2005)

This release simply makes some minor bug fixes to wikistyles (colors set in wikistyles extend to anchor tags), arrays of default passwords, and advanced table handling.

Version 2.0.beta16 (11-Jan-2005)

Version 2.0.beta15 (10-Jan-2005)

The major feature of this release is the addition of the graphical buttons in the edit page. By default this feature is disabled -- to enable it, use the following in config.php.

    $EnableGUIButtons = 1;

If your site customizes the $PageEditFmt variable, then note that the buttons are placed at the end of the $EditMessageFmt and that the <textarea> needs to have id='edit' in order for the buttons to work.

The rss.php script has also been improved -- it now automatically translates named character entities (from HTML 4) into their numeric equivalents. This eliminates a lot of feed validation errors and problems in specific RSS feed consumers.

This release adds a $Titlespaced variable and {$Titlespaced} markup; $Titlespaced is replaced by either a page's title (if defined by the (:title:) directive) or by the spaced version of the page's name.

Finally, a number of WikiStyles bugs have been fixed.

Version 2.0.beta14 (28-Dec-2004)

This release introduces a number of relatively minor optimizations and improvements, summarized below. If you don't understand what any of these mean, they probably don't affect you. :-)

  • PmWiki's <img ...> tags now use style='border:0px;' instead of border='0'.

  • PrintFmt() now calls Lock(0) to release any locks prior to sending output to the browser. This is important because some webservers (notably Apache) sometimes get stuck when they're unable to send output to the browser, and thus inadvertently lock others from being able to edit/post pages.

  • $PageEditFmt now includes id='text' to make for easier styling/referencing.

  • MarkupToHTML()'s "posteval" code has been changed considerably.

  • PageExists() now caches results of checking for page existence.

  • Page urls are now automatically url-encoded as needed.

  • Many of PmWiki's internal regex patterns have been optimized to (hopefully) improve matching speed.

  • Comparisons to substr() have been replaced with more efficient comparison functions.

Version 2.0.beta13 (22-Dec-2004)

This release fixes a bug introduced in 2.0.beta7 that prevented the refcount.php (for ?action=refcount) from generating links correctly. It also cleans up the handling of wikistyles and %-in-urls (which is what 2.0.beta7 was supposed to fix).

In general, all sites using the 2.0.betaXX series are recommended to upgrade to this latest release.

Version 2.0.beta12 (21-Dec-2004)

This release adds a number of <div> tags and identifiers around the various forms that PmWiki produces (e.g., uploads, search results, attribute pages, etc.). This makes such forms easier to style in CSS.

In addition, this release adds some functionality to the urlapprove.php script to limit the number of unapproved urls that can be saved in a page (helps to combat wikispam).

Finally the release adds the (:description:) markup for generating <meta name='description' ... /> tags in the output. (:description:) may also get used for other features later on (e.g., excerpts in search results, etc.).

Version 2.0.beta11 (19-Dec-2004)

This release primarily cleans up a number of items in the handling of uploads:

  1. A new $LinkUpload variable has been defined for $...Fmt strings -- it contains the URL of the upload page for the current attachment
  2. (:attachlist:) automatically adds "replace-attachment" links (denoted by triangles) to the items in the list
  3. After performing an upload, the "upload name" field is automatically cleared
  4. Fixed error message when upload exceeds maximum allowed by PHP

This release also changes the StopWatch() function (used internally for benchmarking/timing PmWiki performance) to only have an effect when $EnableStopWatch is set to 1 (wall clock timings only) or 2 (wall clock and user-process timings).

Version 2.0.beta10 (14-Dec-2004)

This release makes some substantial improvements in the installation procedure. First, the installation steps have been simplified, and PmWiki provides accurate instructions when it encounters a PHP "safe_mode" environment.

The release also provides better handling of the '.flock' file -- if PmWiki discovers it cannot open an existing .flock file for writing, it removes the file and tries again rather than complaining about it. This makes the system more robust when page directories are going through backup+restore.

Version 2.0.beta9 (14-Dec-2004)

This release provides some very minor bugfixes to the [[target |#]] markup, to the appearance of $...variables in documentation, and extends uploads.php to be able to work better with url rewriting.

Version 2.0.beta8 (13-Dec-2004)

This release makes a number of reasonably significant changes. First and foremost, it changes the ?pagename= uri syntax to be ?n=, and installation now defaults to $EnablePathInfo = 0; to make better compatibility.

Sites which wish to continue using the .../Main/HomePage form of uri instead of ?n=Main.HomePage should set $EnablePathInfo = 1 in config.php.

This release also fixes a probable bug in the handling of author names which was causing spaces to be incorrectly removed.

2.0.beta8 includes features for advanced CSS styling of simple tables via the $TableRowAttrFmt and $TableCellAttrFmt variables, more description will be forthcoming in a Cookbook recipe.

Also, this release includes vastly improved support for UTF-8 sites, including the ability to have UTF-8 characters in pagenames and [[utf-8 links]]. We're still working out the details to be able to support UTF-8 wikiwords -- PHP's functions don't provide good support for this. See scripts/xlpage-utf-8.php for more information on UTF-8.

Finally, the Q: and A: markups are back, and a few other minor bug fixes and documentation improvements have been included.

Version 2.0.beta7 (8-Dec-2004)

This release has a number of improvements and changes to it. First, this release provides a scripts/xlpage-utf-8.php file, which adapts PmWiki to be able to work somewhat with utf-8 characters in pagenames. Since PHP's preg_* functions seem to be unable to detect UTF-8 alphanumeric characters, the trade-off at the moment is that WikiWord links are limited to the ASCII character set. We're working on ways to get around this restriction, however.

The xlpage-utf-8.php script can be automatically loaded by any XLPage translation that specifies 'xlpage-i18n' => 'utf-8'.

This release also:

  • fixes up the .htaccess files that are placed in local/ and wiki.d/
  • changes the default textarea size for the pmwiki skin,
  • restores the link/citation markup ([[target |#]])
  • fixes the default value of $DefaultPageTextFmt (note this may change again)
  • automatically converts instances of $Newline in posted text

Version 2.0.beta6 (5-Dec-2004)

This release contains a number of relatively minor bugfixes (see the ChangeLog), and it also restores the $WikiWordCount functionality from PmWiki 1 in which the wiki administrator can limit the number of conversions for each WikiWord.

The sample-config.php file has been updated with more comments and suggestions for customizations.

Finally, this release increases the default value of $MaxIncludes to 50 (and provides better documentation of the $MaxIncludes variable).

Version 2.0.beta5 (1-Dec-2004)

Version 2.0.beta4 (1-Dec-2004)

These releases fix a number of bugs introduced by the changes in 2.0.beta3. Users of 2.0.beta3 are encouraged to upgrade directly to this release.

Version 2.0.beta3 (30-Nov-2004)

This release provides a simple version of the (:attachlist:) markup (different sorting orders are not available yet as the syntax is likely to change), as well as fixes the PmWiki.EditQuickReference and PmWiki.UploadQuickReference pages. It also provides default pages to lock passwords in the Main and PmWiki groups and adds uppercase versions for ".GIF", ".JPG", and ".PNG" files.

Internally, this release also changes the edit page sequence to use the $_POST autoglobal instead of $_REQUEST (i.e., posting edits is only allowed via method='post' and not via query string parameters).

Version 2.0.beta2

This release fixes the bug that caused $PageTemplateFmt to no longer work in pmwiki-2.0.beta1.

Version 2.0.beta1

This release marks PmWiki 2.0 as entering "beta" status, as it finally begins moving towards official release. The major change for this release is in the skins code -- previous versions of PmWiki used $PageTemplateFmt to specify the location of the template file to be used; newer versions now use the $Skin variable to specify the location of the skins directory (in pub/skins/) that contains the skin template file, php configuration script, and other files.

In general, if you previously had $PageTemplateFmt set to "pub/skins/myskin/myskin.tmpl", then you now simply set $Skin='myskin'; to get things to work. See PmWiki.LayoutBasics for more details.

Version 2.0.devel releases

These are the release notes for the development releases of PmWiki 2.0.

First, this is definitely still in the development stages, so many things are likely to change between now and the official releases.

Second, at present there's not a good way to upgrade from PmWiki 1.0 to PmWiki 2.0, although upgrade support is expected to arrive in future (development) releases. So, you can use this version just to see the new developments and gain some experience, but migrating from 1.0 to this version is still likely to be a bit of a chore.

Bugs and other requests can be reported to the PmWiki Issue Tracking System at http://www.pmwiki.org/wiki/PITS/PITS. Any help in testing, development, and/or documentation is greatly appreciated.