[pmwiki-users] Announcing: WikiSh release 2008-08-01

Peter Bowers pbowers at pobox.com
Fri Aug 1 16:57:05 CDT 2008

I normally don't announce WikiSh releases on this list, but there are
some significant developments in this one as well as some required
configuration changes any existing users should be aware of when they

(1) WikiSh now makes use of SecLayer security layer.  This is fairly
extensively documented in the installation & configuration
instructions on the main WikiSh page as well as on WikiShConfig (lots
of examples).  The important thing you need to know is that if you
have an existing installation of WikiSh you will need to do more than
just copy in the WikiSh.php file in order to upgrade.  (There is
SIGNIFICANTLY greater flexibility with the new SecLayer recipe.)

(2) The control panel / command line form has been moved from
WikiSh.php to WikiShCL.php.  This allows administrators to limit who
can use this functionality and where it can be used.  Again, if you
have an existing installation of WikiSh and you use the control panel
you will need to include this new PHP file when you upgrade.  (If you
use WikiSh but haven't used the control panel you really ought to try
it - it will save you a ton of time!)

(3) In the past WikiSh has been a bit "counter-cultural" in terms of
the overall philosophy of pmwiki.  In particular the apparent
complexity of scripts could be off-putting for non-technical authors.
With this release the notion of functions has been added, allowing
most complexity to be hidden on other pages and only the function call
itself to appear on the main page.

For instance, there has been a bit of discussion just recently on this
list about being able to create pages and pre-populate a (:title ...:)
directive.  Below you can see the source from the main page where the
form will exist (i.e., what an author would see):

===(snip Test.MkNewPage)===
{(wikish MkNewPage)}
Make new page: (:input text name=pn:)
(:input submit name=submit value=Create:)

List of pages created:\\
(:include Test.NewPageList:)

As you can see, the only non-core markup on this page is {(wikish
MkNewPage)} which is the call to the function MkNewPage.  That
function has been defined in the page WikiSh.Test-MkNewPage (it only
gets loaded for this particular page).  If you're interested you can
see the solution documented (including the "behind-the-scenes"
function definition) at
or you can see it operational at

This effectively remove any complexity (beyond normal markup) from the
page where an author (non-technical) might be editing or making
changes.  In fact, IMHO it is actually simpler than vanilla core since
the usual form setup (hidden fields, form initialization, etc) is
handled behind the scenes as well...

(4) A new MX has been added named "chmod".  It allows passwords and
other authorizations (whatever is normally done through ?action=attr)
to be changed from the command line (control panel).  In particular
there is one capability which is provided here which is not possible
through the form interface (as far as I can see): using chmod you can
ADD a password (or user ID) to existing passwords for a given
page/authorization level.  Thus if I already have abc, def, and ghi as
3 edit passwords for this page I can add "jkl" without having to keep
track of and re-enter the already-existing passwords (see the
documentation under the -a flag for how this can be done)

(5) WikiSh can now be used to write PTVs and sections:
   echo "section" >Group.Page#section
   echo "deflist PTV" >Group.Page$::varA
   echo "text PTV" >Group.Page$:varB
   echo "hidden PTV" >Group.Page$varC

(6) Looping capabilities have been enhanced with "continue" and
"break" functionality.

(7) Various other expanded capabilities and bug-fixes...

Enjoy!  Let me know if you have any difficulties...


More information about the pmwiki-users mailing list